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

戻り値:
フレームあたりのバイト数、または 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.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 2 Platform
Standard Ed. 5.0

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

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