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(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
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ビット・モノクロ・ビッグ・エンディアン"。
-
フィールド詳細
-
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
public AudioFormat.Encoding getEncoding()この形式のサウンドのエンコーディング・タイプを取得します。- 戻り値:
- エンコーディング・タイプ
- 関連項目:
AudioFormat.Encoding.PCM_SIGNED
,AudioFormat.Encoding.PCM_UNSIGNED
,AudioFormat.Encoding.ULAW
,AudioFormat.Encoding.ALAW
-
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
- 関連項目:
getFrameRate()
,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
- 関連項目:
getFrameSize()
,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
- 関連項目:
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
- 関連項目:
getSampleSizeInBits()
,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
- 関連項目:
getSampleRate()
,AudioSystem.NOT_SPECIFIED
-
isBigEndian
public boolean isBigEndian()オーディオ・データをビッグ・エンディアンあるいはリトル・エンディアンのどちらのバイト順序で格納するかを指定します。 サンプル・サイズが1バイト以下の場合、戻り値は不適切な値になります。- 戻り値:
- データがビッグ・エンディアンのバイト順序で格納される場合は
true
、リトル・エンディアンのバイト順序の場合はfalse
-
properties
変更不可能なプロパティのマップを取得します。 プロパティの概念の詳細は、class description
の説明を参照してください。- 戻り値:
- すべてのプロパティを格納する
Map<String, Object>
オブジェクト。 プロパティが1つも認識されない場合は、空のマップが返される。 - 導入されたバージョン:
- 1.5
- 関連項目:
getProperty(String)
-
getProperty
キーによって指定されたプロパティ値を取得します。 プロパティの概念の詳細は、class description
の説明を参照してください。指定したプロパティが特定のファイル形式で定義されていない場合、このメソッドは
null
を返します。- パラメータ:
key
- 取得したいプロパティのキー- 戻り値:
- 指定されたキーを持つプロパティの値、またはプロパティが存在しない場合は
null
- 導入されたバージョン:
- 1.5
- 関連項目:
properties()
-
matches
public boolean matches(AudioFormat format)この形式が指定された形式と一致するかどうかを示します。 形式が一致するためには、2つの形式のエンコーディングが同一で、チャネル数、サンプル・レート、サンプル・サイズ、フレーム・レート、およびフレーム・サイズの各値が一致している必要があります。 これらが等しいか、指定された形式にプロパティ値AudioSystem.NOT_SPECIFIED
がある場合は、プロパティの値は一致しています。 バイト順序(ビッグ・エンディアンまたはリトル・エンディアン)は、サンプル・サイズが1バイトより大きい場合に同じである必要があります。- パラメータ:
format
- 一致しているか判別する形式- 戻り値:
- 指定された形式がこの形式に一致する場合は
true
、そうでない場合はfalse
-
toString
public String toString()オーディオ形式を説明する次のような文字列を返します: "PCM SIGNED 22050 Hz 16ビット・モノクロ・ビッグ・エンディアン"。 文字列の内容はJava Soundの実装によって異なります。
-