JavaTM 2
Platform
Std.  Ed.  v1. 4.0

javax.sound.sampled
클래스 AudioFormat

java.lang.Object 
  |
  +--javax.sound.sampled.AudioFormat

public class AudioFormat
extends Object

AudioFormat 는 사운드 스트림내에서 데이터의 특정의 배열을 지정하는 클래스입니다. 오디오 형식에서 저장되고 있는 정보를 참조하면(자), 바이너리 사운드 데이터내의 비트의 해석 방법을 알 수 있습니다.

모든 데이터 라인에는 그 데이터 스트림에 관련한 오디오 형식이 있습니다. 소스 (재생) 데이터 라인의 오디오 형식은 데이터 라인이 출력용으로 수신하는 데이터의 종류를 나타냅니다. 타겟 (취득) 데이터 라인의 경우, 오디오 형식은 그 라인으로부터 읽어들일 수 있는 데이터의 종류를 지정합니다. 당연, 사운드 파일에도 오디오 형식이 있습니다. AudioFileFormat 클래스는 다른 파일 고유의 정보 이외에 AudioFormat 를 캡슐화합니다. 같이AudioInputStream 에도 AudioFormat 가 있습니다.

AudioFormat 클래스에는 펄스부호변조 (PCM), mu-law 인코딩, a-law 인코딩등의, 많은 공통 사운드 파일 encode 수법이 포함되어 있습니다. 이러한 encode 수법은 사전에 정의되고 있습니다만, 서비스 프로바이더는 새로운 인코딩 타입을 작성할 수가 있습니다. 특정의 형식에서 사용되는 인코딩은 그 encoding 필드에 의해 지정됩니다.

오디오 형식에는 인코딩 이외에도 데이터의 정확한 배열을 보다 상세하게 지정하는 다른 프로퍼티도 있습니다. 이러한 프로퍼티에는 채널수, 샘플 레이트, 샘플 사이즈, 바이트 순서, frame rate, frame size등이 있습니다. 사운드에는 물건용으로 1 kr, 스테레오용으로 2 kr 등, 다른 수의 오디오 채널이 있는 경우가 있습니다. 샘플 레이트는 사운드 압력의 「snapshot」 (샘플)을, 채널 마다 1 초 당 몇kr 취할 수 있는지 측정합니다. 사운드가 물건은 아니고 스테레오의 경우는 실제로 2 개의 샘플이 순간 마다 측정됩니다. 이 경우 1 kr은 왼쪽 채널용으로, 이제(벌써) 1 kr은 오른쪽 채널용입니다. 다만, 샘플 레이트는 1 채널 당의 수도 측정하기 위해(때문에), 채널수에 관계없이 레이트는 같게 됩니다. 이것은 샘플 레이트의 표준적인 사용법입니다. 샘플 사이즈는 각 snapshot를 저장하는 경우에 사용되는 비트수를 나타냅니다. 8 및 16 이 통상의 값입니다. 16 비트의 샘플 그 외 1 바이트보다 큰 사이즈의 샘플의 경우, 바이트 순서는 중요합니다. 각 샘플의 바이트는 「little endian」형식 또는 「빅 endian」형식의 어느 쪽인지로 배열됩니다. PCM 와 같은 인코딩의 경우는 1 개의 프레임이 지정된 시점의 모든 채널의 샘플세트로 구성되어 frame size (바이트수)는 항상 샘플 사이즈 (바이트 단위)와 같게 됩니다. 다만, 다른 종류의 인코딩의 경우, 프레임에 일련의 샘플 전체의 대량의 압축 데이터 이외에, 샘플 이외의 추가 데이터도 포함할 수가 있습니다. 그러한 인코딩에서는 샘플 레이트 및 샘플 사이즈는 데이터를 PCM 에 복호화(decode) 하고 나서 참조하기 위해(때문에), 샘플 레이트나 샘플 사이즈는 frame rate나 frame size와는 완전히 다른 것이 됩니다.

도입된 버젼:
1.3
관련 항목:
DataLine.getFormat() , AudioInputStream.getFormat() , AudioFileFormat , FormatConversionProvider

중첩된 클래스의 개요
static class AudioFormat.Encoding
          Encoding 클래스는 오디오 스트림에 사용되는 데이터 표현의 특정의 종류를 지정합니다.
 
필드의 개요
protected  boolean bigEndian
          데이터를 빅 endian 혹은 little endian의 어느 쪽의 순서로 저장하는지를 나타냅니다.
protected  int channels
          이 형식의 오디오 채널수 (물건용으로 1 kr, 스테레오용으로 2 kr)
protected  AudioFormat.Encoding encoding
          이 형식에서 사용되는 오디오 인코딩 수법
protected  float frameRate
          이 형식을 가지는 사운드의, 1 초 당에 재생 또는 녹음된 프레임수
protected  int frameSize
          이 형식을 가지는 사운드의 각 프레임의 바이트수
protected  float sampleRate
          이 형식을 가지는 사운드의, 1 초 당에 재생 또는 녹음된 샘플수
protected  int sampleSizeInBits
          이 형식을 가지는 사운드의 각 샘플의 비트수
 
생성자의 개요
AudioFormat (AudioFormat.Encoding  encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian)
          지정된 파라미터를 가지는 AudioFormat 를 구축합니다.
AudioFormat (float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
          리니어 PCM 인코딩 및 지정된 파라미터를 가지는 AudioFormat 를 구축합니다.
 
메소드의 개요
 int getChannels ()
          채널수를 취득합니다.
 AudioFormat.Encoding getEncoding ()
          사운드의 인코딩 타입을 이 형식에서 취득합니다.
 float getFrameRate ()
          frame rate를 1 초 당의 프레임수로 취득합니다.
 int getFrameSize ()
          frame size를 바이트수로 취득합니다.
 float getSampleRate ()
          샘플 레이트를 취득합니다.
 int getSampleSizeInBits ()
          샘플의 사이즈를 취득합니다.
 boolean isBigEndian ()
          오디오 데이터를 빅 endian 혹은 little endian의 어느 쪽의 바이트 순서로 저장하는지를 지정합니다.
 boolean matches (AudioFormat  format)
          이 형식이 지정된 형식과 일치할지 어떨지를 나타냅니다.
 String toString ()
           「PCM SIGNED 22050 Hz 16 bit mono big-endian audio data」등의, 형식을 기술하는 캐릭터 라인을 돌려줍니다.
 
클래스 java.lang. Object 에서 상속받은 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

필드의 상세

encoding

protected AudioFormat.Encoding  encoding
이 형식에서 사용되는 오디오 인코딩 수법


sampleRate

protected float sampleRate
이 형식을 가지는 사운드의, 1 초 당에 재생 또는 녹음된 샘플수


sampleSizeInBits

protected int sampleSizeInBits
이 형식을 가지는 사운드의 각 샘플의 비트수


channels

protected int channels
이 형식의 오디오 채널수 (물건용으로 1 kr, 스테레오용으로 2 kr)


frameSize

protected int frameSize
이 형식을 가지는 사운드의 각 프레임의 바이트수


frameRate

protected float frameRate
이 형식을 가지는 사운드의, 1 초 당에 재생 또는 녹음된 프레임수


bigEndian

protected boolean bigEndian
데이터를 빅 endian 혹은 little endian의 어느 쪽의 순서로 저장하는지를 나타냅니다.

생성자의 상세

AudioFormat

public AudioFormat(AudioFormat.Encoding  encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian)
지정된 파라미터를 가지는 AudioFormat 를 구축합니다. 인코딩은 데이터를 나타내는 경우에 사용되는 규칙을 지정합니다. 그 외의 파라미터에 대해서는 class description 로 자세하게 설명합니다.

파라미터:
encoding - 오디오 인코딩 수법
sampleRate - 1 초 당의 샘플수
sampleSizeInBits - 각 샘플의 비트수
channels - 채널수 (물건용으로 1 kr, 스테레오용으로 2 kr 등)
frameSize - 각 프레임의 바이트수
frameRate - 1 초 당의 프레임수
bigEndian - 단일 샘플의 데이터를 빅 endian의 바이트 순서로 저장할지 어떨지를 나타낸다 (false 는 little endian를 나타낸다)

AudioFormat

public AudioFormat(float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   boolean signed,
                   boolean bigEndian)
리니어 PCM 인코딩 및 지정된 파라미터를 가지는 AudioFormat 를 구축합니다. frame size는 각 채널로부터 1 개의 샘플을 포함하기 위해서(때문에) 필요한 바이트수로 설정되어 frame rate는 샘플 레이트로 설정됩니다.

파라미터:
sampleRate - 1 초 당의 샘플수
sampleSizeInBits - 각 샘플의 비트수
channels - 채널수 (물건용으로 1 kr, 스테레오용으로 2 kr 등)
signed - 데이터가 부호 첨부나 부호 없음인지를 나타내는
bigEndian - 단일 샘플의 데이터를 빅 endian의 바이트 순서로 저장할지 어떨지를 나타낸다 (false 는 little endian를 나타낸다)
메소드의 상세

getEncoding

public AudioFormat.Encoding  getEncoding()
사운드의 인코딩 타입을 이 형식에서 취득합니다.

반환값:
인코딩 타입
관련 항목:
AudioFormat.Encoding.PCM_SIGNED , AudioFormat.Encoding.PCM_UNSIGNED , AudioFormat.Encoding.ULAW , AudioFormat.Encoding.ALAW

getSampleRate

public float getSampleRate()
샘플 레이트를 취득합니다.

반환값:
1 초 당의 샘플수
관련 항목:
getFrameRate()

getSampleSizeInBits

public int getSampleSizeInBits()
샘플의 사이즈를 취득합니다.

반환값:
각 샘플의 비트수
관련 항목:
getFrameSize()

getChannels

public int getChannels()
채널수를 취득합니다.

반환값:
채널수 (물건용으로 1 kr, 스테레오용으로 2 kr 등)

getFrameSize

public int getFrameSize()
frame size를 바이트수로 취득합니다.

반환값:
1 프레임 당의 바이트수
관련 항목:
getSampleSizeInBits()

getFrameRate

public float getFrameRate()
frame rate를 1 초 당의 프레임수로 취득합니다.

반환값:
1 초 당의 프레임수
관련 항목:
getSampleRate()

isBigEndian

public boolean isBigEndian()
오디오 데이터를 빅 endian 혹은 little endian의 어느 쪽의 바이트 순서로 저장하는지를 지정합니다. 샘플 사이즈가 1 바이트 이하의 경우, 반환값은 부적절한 값이 됩니다.

반환값:
데이터가 빅 endian의 바이트 순서로 저장되는 경우는 true, little endian 바이트 순서의 경우는 false

matches

public boolean matches(AudioFormat  format)
이 형식이 지정된 형식과 일치할지 어떨지를 나타냅니다. 형식을 일치시키기 위해서(때문에)는 2 개의 형식의 인코딩, 채널수, 및 1 샘플 당의 비트수와 1 프레임 당의 바이트수를 동일하게 할 필요가 있습니다. 또, 지정한 형식에, 어느 샘플 레이트에도 합치하는 AudioSystem.NOT_SPECIFIED 가 없는 경우는 2 개의 형식의 샘플 레이트도 동일하게 할 필요가 있습니다. 같이 지정한 형식에, frame rate치 AudioSystem.NOT_SPECIFIED 가 없는 경우는 frame rate도 동일하게 할 필요가 있습니다. 바이트 순서 (빅 endian 또는 little endian)는 샘플 사이즈가 1 바이트보다 큰 경우에 일치시킬 필요가 있습니다.

파라미터:
format - 일치하고 있는지 판별하는 형식
반환값:
지정된 형식이 이 형식에 일치하는 경우는 true, 그렇지 않은 경우는 false

toString

public String  toString()
「PCM SIGNED 22050 Hz 16 bit mono big-endian audio data」등의, 형식을 기술하는 캐릭터 라인을 돌려줍니다. 캐릭터 라인의 내용은 Java Sound 의 구현에 따라서 다릅니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
형식 파라미터를 기술하는 캐릭터 라인

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

버그의 보고와 기능의 리퀘스트
이외의 API 레퍼런스 및 개발자용 문서에 대해서는 Java 2 SDK SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.