JavaTM Platform
Standard Ed. 6

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 エンコーディングなどの、多くの共通サウンドファイル符号化手法が含まれています。これらの符号化手法は事前に定義されていますが、サービスプロバイダは新しいエンコーディング型を作成することができます。特定の形式で使用されるエンコーディングは、その encoding フィールドによって指定されます。

オーディオ形式には、エンコーディング以外にもデータの正確な配列をより詳細に指定するその他のプロパティーもあります。これらのプロパティーには、チャネル数、サンプルレート、サンプルサイズ、バイト順序、フレームレート、フレームサイズなどがあります。サウンドには、モノ用に 1 つ、ステレオ用に 2 つなど、異なる数のオーディオチャネルがある場合があります。サンプルレートは、サウンド圧力の「スナップショット」 (サンプル) を、チャンネルごとに 1 秒あたりいくつとれるか測定します。サウンドがモノではなくステレオの場合は、実際に 2 つのサンプルが瞬間ごとに測定されます。この場合 1 つは左チャネル用で、もう 1 つは右チャンネル用です。 ただし、サンプルレートは、1 チャネルあたりの数も測定するため、チャネル数に関係なくレートは同じになります。これは、サンプルレートの標準的な使用法です。サンプルサイズは、各スナップショットを格納する場合に使用されるビット数を示します。 8 および 16 が通常の値です。16 ビットのサンプルその他 1 バイトよりも大きいサイズのサンプルの場合、バイト順序は重要です。 各サンプルのバイトは、「リトルエンディアン」形式または「ビッグエンディアン」形式のどちらかで配列されます。PCM のようなエンコーディングの場合は、1 つのフレームが指定された時点のすべてのチャンネルのサンプルのセットで構成され、フレームサイズ (バイト数) は、常にサンプルサイズ (バイト単位) と同じになります。ただし、ほかの種類のエンコーディングの場合、フレームに一連のサンプル全体の大量の圧縮データ以外に、サンプル以外の追加データも含むことができます。そのようなエンコーディングでは、サンプルレートおよびサンプルサイズは、データを PCM に復号化してから参照するため、サンプルレートやサンプルサイズは、フレームレートやフレームサイズとはまったく異なるものになります。  

AudioFormat オブジェクトには、プロパティーセットを含めることができます。1 つのプロパティーは、鍵と値のペアから成ります。鍵は String 型で、対応するプロパティー値は任意のオブジェクトです。プロパティーは、圧縮形式のビットレートなど、追加の形式仕様を指定し、主に、サービスプロバイダとオーディオ形式の追加情報をやりとりするための手段として使用されます。したがって、プロパティーは matches(AudioFormat) メソッド内では無視されます。ただし、(AudioFormat, AudioFormat) isConversionSupported など、インストール済みサービスプロバイダに依存するメソッドは、そのサービスプロバイダ実装によって、プロパティーを考慮する場合があります。  

次の表に、サービスプロバイダが使用する (適用可能な場合) 一般的なプロパティーのいくつかを一覧表示します。

プロパティーのキー 値の型 説明
"「bitrate」" Integer 平均ビットレート (ビット/秒)
"「vbr」" Boolean ファイルが可変ビットレート (VBR) で符号化されている場合は true
"「quality」" Integer 符号化/変換の品質 (1 〜 100)
 

サービスプロバイダ (プラグイン) のベンダーは、サードパーティープラグイン内にすでに確立されているその他のプロパティーの情報を探し、同じ規則に従うことをお勧めします。

導入されたバージョン:
1.3
関連項目:
DataLine.getFormat(), AudioInputStream.getFormat(), AudioFileFormat, FormatConversionProvider

入れ子のクラスの概要
static class AudioFormat.Encoding
          Encoding クラスは、オーディオストリームに使用されるデータ表現の特定の種類を指定します。
 
フィールドの概要
protected  boolean bigEndian
          オーディオデータをビッグエンディアンあるいはリトルエンディアンのどちらの順序で格納するかを示します。
protected  int channels
          この形式のオーディオチャネル数 (モノ用に 1 つ、ステレオ用に 2 つ) です。
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(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map<String,Object> properties)
          パラメータを指定して AudioFormat を構築します。
AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
          リニア PCM エンコーディングおよび指定されたパラメータを持つ AudioFormat を構築します。
 
メソッドの概要
 int getChannels()
          チャネル数を取得します。
 AudioFormat.Encoding getEncoding()
          サウンドのエンコーディング型をこの形式で取得します。
 float getFrameRate()
          フレームレートを 1 秒当たりのフレーム数で取得します。
 int getFrameSize()
          フレームサイズをバイト数で取得します。
 Object getProperty(String key)
          キーによって指定されたプロパティー値を取得します。
 float getSampleRate()
          サンプルレートを取得します。
 int getSampleSizeInBits()
          サンプルのサイズを取得します。
 boolean isBigEndian()
          オーディオデータをビッグエンディアンあるいはリトルエンディアンのどちらのバイト順序で格納するかを指定します。
 boolean matches(AudioFormat format)
          この形式が指定された形式と一致するかどうかを示します。
 Map<String,Object> properties()
          変更不可能なプロパティーのマップを取得します。
 String toString()
          「PCM SIGNED 22050 Hz 16 bit mono big-endian」などの、形式を記述する文字列を返します。
 
クラス 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 つ、ステレオ用に 2 つ) です。


frameSize

protected int frameSize
この形式を持つサウンドの各フレームのバイト数です。


frameRate

protected float frameRate
この形式を持つサウンドの、1 秒当たりに再生または録音されたフレーム数です。


bigEndian

protected boolean bigEndian
オーディオデータをビッグエンディアンあるいはリトルエンディアンのどちらの順序で格納するかを示します。

コンストラクタの詳細

AudioFormat

public AudioFormat(AudioFormat.Encoding encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian)
パラメータを指定して AudioFormat を構築します。エンコーディングは、データ表現に使用される規則を指定します。その他のパラメータについては、クラスの説明を参照してください。

パラメータ:
encoding - オーディオエンコーディング手法
sampleRate - 1 秒当たりのサンプル数
sampleSizeInBits - 各サンプルのビット数
channels - チャネル数 (モノ用に 1 つ、ステレオ用に 2 つなど)
frameSize - 各フレームのバイト数
frameRate - 1 秒当たりのフレーム数
bigEndian - 単一サンプルのデータをビッグエンディアンのバイト順序で 格納するかどうかを示す (false は リトルエンディアンを示す)

AudioFormat

public AudioFormat(AudioFormat.Encoding encoding,
                   float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   int frameSize,
                   float frameRate,
                   boolean bigEndian,
                   Map<String,Object> properties)
パラメータを指定して AudioFormat を構築します。エンコーディングは、データ表現に使用される規則を指定します。その他のパラメータについては、クラスの説明を参照してください。

パラメータ:
encoding - オーディオエンコーディング手法
sampleRate - 1 秒当たりのサンプル数
sampleSizeInBits - 各サンプルのビット数
channels - チャネル数 (モノ用に 1 つ、ステレオ用に 2 つなど)
frameSize - 各フレームのバイト数
frameRate - 1 秒当たりのフレーム数
bigEndian - 単一サンプルのデータをビッグエンディアンのバイト順序で 格納するかどうかを示す (false は リトルエンディアンを示す)
properties - 形式のプロパティーを含む Map<String,Object> オブジェクト
導入されたバージョン:
1.5

AudioFormat

public AudioFormat(float sampleRate,
                   int sampleSizeInBits,
                   int channels,
                   boolean signed,
                   boolean bigEndian)
リニア PCM エンコーディングおよび指定されたパラメータを持つ AudioFormat を構築します。フレームサイズは、各チャンネルから 1 つのサンプルを含むために必要なバイト数に設定され、フレームレートは、サンプルレートに設定されます。

パラメータ:
sampleRate - 1 秒当たりのサンプル数
sampleSizeInBits - 各サンプルのビット数
channels - チャネル数 (モノ用に 1 つ、ステレオ用に 2 つなど)
signed - データが符号付きか符号なしかを示す
bigEndian - 単一サンプルのデータをビッグエンディアンのバイト順序で 格納するかどうかを示す (false は リトルエンディアンを示す)
メソッドの詳細

getEncoding

public AudioFormat.Encoding getEncoding()
サウンドのエンコーディング型をこの形式で取得します。

戻り値:
エンコーディング型
関連項目:
AudioFormat.Encoding.PCM_SIGNED, AudioFormat.Encoding.PCM_UNSIGNED, AudioFormat.Encoding.ULAW, AudioFormat.Encoding.ALAW

getSampleRate

public float getSampleRate()
サンプルレートを取得します。圧縮形式では、戻り値は圧縮されていないオーディオデータのサンプルレートです。この AudioFormat をクエリー (AudioSystem.isConversionSupported など) や機能 (DataLine.Info.getFormats など) で使用した場合、サンプルレート AudioSystem.NOT_SPECIFIED は、あらゆるサンプルレートが許容されることを意味します。このオーディオ形式のサンプルレートが未定義のときは AudioSystem.NOT_SPECIFIED も返されます。

戻り値:
1 秒当たりのサンプル数、 または AudioSystem.NOT_SPECIFIED
関連項目:
getFrameRate(), AudioSystem.NOT_SPECIFIED

getSampleSizeInBits

public int getSampleSizeInBits()
サンプルのサイズを取得します。圧縮形式では、戻り値は圧縮されていないオーディオデータのサンプルサイズです。この AudioFormat をクエリー (AudioSystem.isConversionSupported など) や機能 (DataLine.Info.getFormats など) で使用した場合、サンプルサイズ AudioSystem.NOT_SPECIFIED は、あらゆるサンプルサイズが許容されることを意味します。このオーディオ形式のサンプルサイズが未定義のときは AudioSystem.NOT_SPECIFIED も返されます。

戻り値:
各サンプルのビット数 または AudioSystem.NOT_SPECIFIED
関連項目:
getFrameSize(), AudioSystem.NOT_SPECIFIED

getChannels

public int getChannels()
チャネル数を取得します。この AudioFormat をクエリー (AudioSystem.isConversionSupported など) や機能 (DataLine.Info.getFormats など) で使用した場合、戻り値 AudioSystem.NOT_SPECIFIED は、任意の数のチャネル (ただし正の数) が許容されることを意味します。

戻り値:
チャネル数 (モノ用に 1 つ、ステレオ用に 2 つなど)、 または AudioSystem.NOT_SPECIFIED
関連項目:
AudioSystem.NOT_SPECIFIED

getFrameSize

public int getFrameSize()
フレームサイズをバイト数で取得します。この AudioFormat をクエリー (AudioSystem.isConversionSupported など) や機能 (DataLine.Info.getFormats など) で使用した場合、フレームサイズ AudioSystem.NOT_SPECIFIED は、あらゆるフレームサイズが許容されることを意味します。このオーディオ形式のフレームサイズが未定義のときは AudioSystem.NOT_SPECIFIED も返されます。

戻り値:
1 フレーム当たりのバイト数、 または AudioSystem.NOT_SPECIFIED
関連項目:
getSampleSizeInBits(), AudioSystem.NOT_SPECIFIED

getFrameRate

public float getFrameRate()
フレームレートを 1 秒当たりのフレーム数で取得します。この AudioFormat をクエリー (AudioSystem.isConversionSupported など) や機能 (DataLine.Info.getFormats など) で使用した場合、フレームレート AudioSystem.NOT_SPECIFIED は、あらゆるフレームレートが許容されることを意味します。このオーディオ形式のフレームレートが未定義のときは AudioSystem.NOT_SPECIFIED も返されます。

戻り値:
1 秒当たりのフレーム数、 または AudioSystem.NOT_SPECIFIED
関連項目:
getSampleRate(), AudioSystem.NOT_SPECIFIED

isBigEndian

public boolean isBigEndian()
オーディオデータをビッグエンディアンあるいはリトルエンディアンのどちらのバイト順序で格納するかを指定します。サンプルサイズが 1 バイト以下の場合、戻り値は不適切な値になります。

戻り値:
データがビッグエンディアンのバイト順序で格納される場合は true、 リトルエンディアンバイト順序の場合は false

properties

public Map<String,Object> properties()
変更不可能なプロパティーのマップを取得します。プロパティーの概念の詳細は、クラスの説明を参照してください。

戻り値:
すべてのプロパティーを含む Map<String,Object> オブジェクト。プロパティーが 1 つも認識されない場合は、空のマップが返される
導入されたバージョン:
1.5
関連項目:
getProperty(String)

getProperty

public Object getProperty(String key)
キーによって指定されたプロパティー値を取得します。プロパティーの概念の詳細は、クラスの説明を参照してください。  

指定したプロパティーが特定のファイル形式で定義されていない場合、このメソッドは null を返します。

パラメータ:
key - 取得したいプロパティーのキー
戻り値:
指定されたキーを持つプロパティーの値、 またはプロパティーが存在しない場合は null
導入されたバージョン:
1.5
関連項目:
properties

matches

public boolean matches(AudioFormat format)
この形式が指定された形式と一致するかどうかを示します。形式を一致させるためには、2 つの形式のエンコーディング、チャネル数、および 1 サンプルあたりのビット数と 1 フレームあたりのバイト数を同一にする必要があります。また、指定した形式に、どのサンプルレートにも合致する AudioSystem.NOT_SPECIFIED がない場合は、2 つの形式のサンプルレートも同一にする必要があります。同様に、指定した形式に、フレームレート値 AudioSystem.NOT_SPECIFIED がない場合は、フレームレートも同一にする必要があります。バイト順序 (ビッグエンディアンまたはリトルエンディアン) は、サンプルサイズが 1 バイトより大きい場合に一致させる必要があります。

パラメータ:
format - 一致しているか判別する形式
戻り値:
指定された形式がこの形式に一致する場合は true、 そうでない場合は false

toString

public String toString()
「PCM SIGNED 22050 Hz 16 bit mono big-endian」などの、形式を記述する文字列を返します。文字列の内容は Java Sound の実装によって異なります。

オーバーライド:
クラス Object 内の toString
戻り値:
形式パラメータを記述する文字列

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。