クラスAudioFormat
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
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス -
フィールドのサマリー
フィールド修飾子と型フィールド説明protected booleanオーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらの順序で格納するかを示します。protected intこの形式のオーディオ・チャネル数(モノの場合は1、ステレオの場合は2)です。protected AudioFormat.Encodingこの形式で使用されるオーディオ・エンコーディング手法です。protected floatこの形式を持つサウンドの、1秒当たりに再生または録音されたフレーム数です。protected intこの形式を持つサウンドの各フレームのバイト数です。protected floatこの形式を持つサウンドの、1秒当たりに再生または録音されたサンプル数です。protected intこの形式を持つサウンドの各サンプルのビット数です。 -
コンストラクタのサマリー
コンストラクタコンストラクタ説明AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian) リニアPCMエンコーディングおよび指定されたパラメータを持つAudioFormatを構築します。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を構築します。 -
メソッドのサマリー
修飾子と型メソッド説明intチャネル数を取得します。この形式のサウンドのエンコーディング・タイプを取得します。floatフレーム・レートを1秒当たりのフレーム数で取得します。intフレーム・サイズをバイト数で取得します。getProperty(String key) キーによって指定されたプロパティ値を取得します。floatサンプル・レートを取得します。intサンプルのサイズを取得します。booleanオーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらのバイト順序で格納するかを指定します。booleanmatches(AudioFormat format) この形式が指定された形式と一致するかどうかを示します。変更不可能なプロパティのマップを取得します。toString()オーディオ形式を説明する次のような文字列を返します: "PCM SIGNED 22050 Hz 16ビット・モノクロ・ビッグ・エンディアン"。
-
フィールド詳細
-
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を構築します。 エンコーディングは、データ表現に使用される規則を指定します。 その他のパラメータについては、class descriptionの説明を参照してください。- パラメータ:
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を構築します。 エンコーディングは、データ表現に使用される規則を指定します。 その他のパラメータについては、class descriptionの説明を参照してください。- パラメータ:
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
-
getSampleRate
public float getSampleRate()サンプル・レートを取得します。 圧縮形式では、戻り値は圧縮されていないオーディオ・データのサンプル・レートです。 このAudioFormatが問合せ(e.g.AudioSystem.isConversionSupported)またはcapabilities (e.g.DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのサンプル・レートは任意のサンプル・レートが許容可能であることを意味します。 このオーディオ形式のサンプル・レートが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。- 戻り値:
- 1秒当たりのサンプル数、または
AudioSystem.NOT_SPECIFIED - 関連項目:
-
getSampleSizeInBits
public int getSampleSizeInBits()サンプルのサイズを取得します。 圧縮形式では、戻り値は圧縮されていないオーディオ・データのサンプル・サイズです。 このAudioFormatが問合せ(e.g.AudioSystem.isConversionSupported)またはcapabilities (e.g.DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのサンプル・サイズは、任意のサンプル・サイズが許容可能であることを意味します。 このオーディオ形式のサンプル・サイズが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。- 戻り値:
- 各サンプルのビット数または
AudioSystem.NOT_SPECIFIED - 関連項目:
-
getChannels
public int getChannels()チャネル数を取得します。 このAudioFormatが問合せ(e.g.AudioSystem.isConversionSupported)またはcapabilities (e.g.DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDの戻り値は、(positive)個のチャネルの数が許容可能であることを意味します。- 戻り値:
- チャネル数(モノの場合は1、ステレオの場合は2など)、または
AudioSystem.NOT_SPECIFIED - 関連項目:
-
getFrameSize
public int getFrameSize()フレーム・サイズをバイト数で取得します。 このAudioFormatが問合せ(e.g.AudioSystem.isConversionSupported)またはcapabilities (e.g.DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのフレーム・サイズは任意のフレーム・サイズが許容可能であることを意味します。 このオーディオ形式のフレーム・サイズが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。- 戻り値:
- 1フレーム当たりのバイト数、または
AudioSystem.NOT_SPECIFIED - 関連項目:
-
getFrameRate
public float getFrameRate()フレーム・レートを1秒当たりのフレーム数で取得します。 このAudioFormatが問合せ(e.g.AudioSystem.isConversionSupported)またはcapabilities (e.g.DataLine.Info.getFormats)に使用される場合、AudioSystem.NOT_SPECIFIEDのフレーム・レートは任意のフレーム・レートが許容可能であることを意味します。 このオーディオ形式のフレーム・レートが未定義のときもAudioSystem.NOT_SPECIFIEDが返されます。- 戻り値:
- 1秒当たりのフレーム数、または
AudioSystem.NOT_SPECIFIED - 関連項目:
-
isBigEndian
public boolean isBigEndian()オーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらのバイト順序で格納するかを指定します。 サンプル・サイズが1バイト以下の場合、戻り値は不適切な値になります。- 戻り値:
- データがビッグ・エンディアンのバイト順序で格納される場合は
true、リトル・エンディアンのバイト順序の場合はfalse
-
properties
変更不可能なプロパティのマップを取得します。 プロパティの概念の詳細は、class descriptionの説明を参照してください。- 戻り値:
- すべてのプロパティを格納する
Map<String, Object>オブジェクト。 プロパティが1つも認識されない場合は、空のマップが返される。 - 導入されたバージョン:
- 1.5
- 関連項目:
-
getProperty
キーによって指定されたプロパティ値を取得します。 プロパティの概念の詳細は、class descriptionの説明を参照してください。指定したプロパティが特定のファイル形式で定義されていない場合、このメソッドは
nullを返します。- パラメータ:
key- 取得したいプロパティのキー- 戻り値:
- 指定されたキーを持つプロパティの値、またはプロパティが存在しない場合は
null - 導入されたバージョン:
- 1.5
- 関連項目:
-
matches
public boolean matches(AudioFormat format) この形式が指定された形式と一致するかどうかを示します。 形式が一致するためには、2つの形式のエンコーディングが同一で、チャネル数、サンプル・レート、サンプル・サイズ、フレーム・レート、およびフレーム・サイズの各値が一致している必要があります。 これらが等しいか、指定された形式にプロパティ値AudioSystem.NOT_SPECIFIEDがある場合は、プロパティの値は一致しています。 バイト順序(ビッグ・エンディアンまたはリトル・エンディアン)は、サンプル・サイズが1バイトより大きい場合に同じである必要があります。- パラメータ:
format- 一致しているか判別する形式- 戻り値:
- 指定された形式がこの形式に一致する場合は
true、そうでない場合はfalse
-
toString
-