インタフェースTargetDataLine
- すべてのスーパー・インタフェース:
AutoCloseable,DataLine,Line
DataLineのタイプです。 もっとも一般的な例は、データをオーディオ・キャプチャ・デバイスから取得するデータ・ラインです。 デバイスはターゲット・データ・ラインに書き込むミキサーとして実装されます。
このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。 アプリケーションから見ると、ターゲット・データ・ラインはオーディオ・データのソースの役割をします。
ターゲット・データ行は、適切なDataLine.InfoオブジェクトでMixerのgetLineメソッドを呼び出すことで、ミキサーから取得できます。
TargetDataLineインタフェースは、ターゲット・データ行のバッファから取得されたデータを読み取るためのメソッドを提供します。 オーディオを記録するアプリケーションは、バッファがオーバーフローしないように十分な速さでターゲットのデータ行からデータを読み取る必要があります。これにより、クリックとして認識されるキャプチャされたデータの不連続が発生する可能性があります。 アプリケーションは、DataLineインタフェースで定義されたavailableメソッドを使用して、データ行のバッファに現在キューに入れられているデータの量を判別できます。 バッファがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄されて新しいデータに置き換えられます。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースjavax.sound.sampled.DataLineで宣言されたネストされたクラス/インタフェース
DataLine.Info -
メソッドのサマリー
修飾子と型メソッド説明voidopen(AudioFormat format) 指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。voidopen(AudioFormat format, int bufferSize) 指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。intread(byte[] b, int off, int len) データ・ラインの入力バッファからオーディオ・データを読み込みます。インタフェースjavax.sound.sampled.DataLineで宣言されたメソッド
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stopインタフェースjavax.sound.sampled.Lineで宣言されたメソッド
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
-
メソッドの詳細
-
open
void open(AudioFormat format, int bufferSize) throws LineUnavailableException 指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。バッファ・サイズはバイト単位で指定しますが、サンプル・フレームの整数値を表す必要があります。 リクエストされたバッファ・サイズがこの要件を満たさない場合にこのメソッドを呼び出すと、
IllegalArgumentExceptionが返される可能性があります。 開いたラインの実際のバッファ・サイズは、指定したバッファ・サイズとは異なることがあります。 実際に設定された値は、その後DataLine.getBufferSize()を呼び出して照会することができますこの操作が成功すると、行はオープンとしてマークされ、
OPENイベントが行のリスナーにディスパッチされます。すでに開いているラインでこのメソッドを呼び出すのは不適切であり、
IllegalStateExceptionが表示されることがあります。ラインによっては、一度閉じると再度開けない場合があります。 こうしたラインを再度開こうとすると、常に
LineUnavailableExceptionが表示されます。- パラメータ:
format- 目的のオーディオ形式bufferSize- 必要なバッファ・サイズ(バイト単位)- スロー:
LineUnavailableException- リソースの制約のためにラインを開けない場合IllegalArgumentException- バッファ・サイズがサンプル・フレームの整数値を表さない場合、あるいはformatの指定が不完全または無効な場合IllegalStateException- ラインがすでに開いている場合- 関連項目:
-
open
void open(AudioFormat format) throws LineUnavailableException 指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。バッファ・サイズは実装により選択されます。バッファ・サイズはバイト単位ですが、サンプル・フレームの整数値であることが必要です。 システムが選択したバッファ・サイズは、その後
DataLine.getBufferSize()を呼び出すことによって照会することができますこの操作が成功すると、行はオープンとしてマークされ、
OPENイベントが行のリスナーにディスパッチされます。すでに開いているラインでこのメソッドを呼び出すのは不適切であり、
IllegalStateExceptionが表示されることがあります。ラインによっては、一度閉じると再度開けない場合があります。 こうしたラインを再度開こうとすると、常に
LineUnavailableExceptionが表示されます。- パラメータ:
format- 目的のオーディオ形式- スロー:
LineUnavailableException- リソースの制約のためにラインを開けない場合IllegalArgumentException-formatの指定が不完全または無効な場合IllegalStateException- ラインがすでに開いている場合- 関連項目:
-
read
int read(byte[] b, int off, int len) データ・ラインの入力バッファからオーディオ・データを読み込みます。 要求されたバイト数が、指定された配列の指定されたオフセット位置(バイト単位)を始点として読み込まれます。 このメソッドは、要求された量のデータを読込み終えるまでブロックされます。 ただし、要求された量が読み込まれる前にデータ・ラインがクローズ、停止、排出、またはフラッシュされると、メソッドのブロックが解除され、それまでに読み込まれたバイト数が返されます。ブロックせずに読み取れるバイト数は、
DataLineインタフェースのavailableメソッドを使用して確認できます。 このバイト数はブロックされずに確実に読み込めますが、追加データを読み込もうとしたときにブロックされるかどうかは確実ではありません。読み込まれるバイト数は、次のようにサンプル・フレームの整数値を表す必要があります。
[ bytes read ] % [frame size in bytes ] == 0戻り値は常にこの条件を満たしています。 サンプル・フレームの非整数値を表すバイト数を読み込む要求は実行できず、IllegalArgumentExceptionがスローされる場合があります。
- パラメータ:
b- このメソッドが返るときの、要求された入力データを含むバイト配列off- 配列の先頭からの座標、バイト単位len- 読込み要求されたバイト数- 戻り値:
- 実際に読み込まれるバイト数
- スロー:
IllegalArgumentException- 要求されたバイト数がサンプル・フレームの整数値を表さない場合、またはlenが負の値の場合ArrayIndexOutOfBoundsException-offが負の値の場合、またはoff+lenが配列bの長さより大きい場合- 関連項目:
-