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) |
サービス・プロバイダ(プラグイン)のベンダーは、サード・パーティ・プラグイン内にすでに確立されているその他のプロパティの情報を探し、同じ規則に従うことをお勧めします。
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」などの、形式を記述する文字列を返します。
|
protected AudioFormat.Encoding encoding
protected float sampleRate
protected int sampleSizeInBits
protected int channels
protected int frameSize
protected float frameRate
protected boolean bigEndian
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
はリトル・エンディアンを示す)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>
オブジェクトpublic AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
AudioFormat
を構築します。フレーム・サイズは、各チャンネルから1つのサンプルを含むために必要なバイト数に設定され、フレーム・レートは、サンプル・レートに設定されます。sampleRate
- 1秒当たりのサンプル数sampleSizeInBits
- 各サンプルのビット数channels
- チャネル数(モノの場合は1、ステレオの場合は2など)signed
- データが符号付きか符号なしかを示すbigEndian
- 単一サンプルのデータをビッグ・エンディアンのバイト順序で格納するかどうかを示す(false
はリトル・エンディアンを示す)public AudioFormat.Encoding getEncoding()
AudioFormat.Encoding.PCM_SIGNED
, AudioFormat.Encoding.PCM_UNSIGNED
, AudioFormat.Encoding.ULAW
, AudioFormat.Encoding.ALAW
public float getSampleRate()
AudioSystem.isConversionSupported
など)や機能(DataLine.Info.getFormats
など)で使用した場合、サンプル・レートAudioSystem.NOT_SPECIFIED
は、あらゆるサンプル・レートが許容されることを意味します。このオーディオ形式のサンプル・レートが未定義のときもAudioSystem.NOT_SPECIFIED
が返されます。AudioSystem.NOT_SPECIFIED
getFrameRate()
, AudioSystem.NOT_SPECIFIED
public int getSampleSizeInBits()
AudioSystem.isConversionSupported
など)や機能(DataLine.Info.getFormats
など)で使用した場合、サンプル・サイズAudioSystem.NOT_SPECIFIED
は、あらゆるサンプル・サイズが許容されることを意味します。このオーディオ形式のサンプル・サイズが未定義のときもAudioSystem.NOT_SPECIFIED
が返されます。AudioSystem.NOT_SPECIFIED
getFrameSize()
, AudioSystem.NOT_SPECIFIED
public int getChannels()
AudioSystem.isConversionSupported
など)や機能(DataLine.Info.getFormats
など)で使用した場合、戻り値AudioSystem.NOT_SPECIFIED
は、任意の数のチャネル(ただし正の数)が許容されることを意味します。AudioSystem.NOT_SPECIFIED
AudioSystem.NOT_SPECIFIED
public int getFrameSize()
AudioSystem.isConversionSupported
など)や機能(DataLine.Info.getFormats
など)で使用した場合、フレーム・サイズAudioSystem.NOT_SPECIFIED
は、あらゆるフレーム・サイズが許容されることを意味します。このオーディオ形式のフレーム・サイズが未定義のときもAudioSystem.NOT_SPECIFIED
が返されます。AudioSystem.NOT_SPECIFIED
getSampleSizeInBits()
, AudioSystem.NOT_SPECIFIED
public float getFrameRate()
AudioSystem.isConversionSupported
など)や機能(DataLine.Info.getFormats
など)で使用した場合、フレーム・レートAudioSystem.NOT_SPECIFIED
は、あらゆるフレーム・レートが許容されることを意味します。このオーディオ形式のフレーム・レートが未定義のときもAudioSystem.NOT_SPECIFIED
が返されます。AudioSystem.NOT_SPECIFIED
getSampleRate()
, AudioSystem.NOT_SPECIFIED
public boolean isBigEndian()
true
、リトル・エンディアンのバイト順序の場合はfalse
public Map<String,Object> properties()
class description
の説明を参照してください。Map<String,Object>
オブジェクト。プロパティが1つも認識されない場合は、空のマップが返される。getProperty(String)
public Object getProperty(String key)
class description
の説明を参照してください。
指定したプロパティが特定のファイル形式で定義されていない場合、このメソッドはnull
を返します。
key
- 取得したいプロパティのキーnull
。properties()
public boolean matches(AudioFormat format)
AudioSystem.NOT_SPECIFIED
がある場合は、プロパティの値は一致しています。バイト順序(ビッグ・エンディアンまたはリトル・エンディアン)は、サンプル・サイズが1バイトより大きい場合に同じである必要があります。format
- 一致しているか判別する形式true
、そうでない場合はfalse
。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.