-
- すべてのスーパー・インタフェース:
AutoCloseable,DataLine,Line
public interface TargetDataLine extends DataLine
ターゲット・データ線は、オーディオ・データを読み出すことができるDataLineの一種です。 もっとも一般的な例は、データをオーディオ・キャプチャ・デバイスから取得するデータ・ラインです。 デバイスはターゲット・データ・ラインに書き込むミキサーとして実装されます。このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。 アプリケーションから見ると、ターゲット・データ・ラインはオーディオ・データのソースの役割をします。
ターゲット・データ・ラインは、適切な
DataLine.Infoオブジェクトを使用してMixerのgetLineメソッドを呼び出すことによって、ミキサーから取得できます。TargetDataLineインタフェースは、ターゲット・データ・ライン・バッファからキャプチャされたデータを読み取るメソッドを提供します。 オーディオを記録するアプリケーションは、バッファがオーバーフローするのを防ぐのに十分速くターゲット・データ・ラインからデータを読み取る必要があり、キャプチャされたデータがクリックとして認識されて不連続になる可能性があります。 アプリケーションは、DataLineインタフェースで定義されたavailableメソッドを使用して、データ・ライン・バッファに現在キューイングされているデータの量を判断できます。 バッファがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄されて新しいデータに置き換えられます。- 導入されたバージョン:
- 1.3
- 関連項目:
Mixer、DataLine、SourceDataLine
-
-
ネストされたクラスのサマリー
-
インタフェース 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- ラインがすでに開いている場合SecurityException- セキュリティの制約のためにラインを開けない場合- 関連項目:
open(AudioFormat)、Line.open()、Line.close()、Line.isOpen()、LineEvent
-
open
void open(AudioFormat format) throws LineUnavailableException
指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。バッファ・サイズは実装により選択されます。バッファ・サイズはバイト単位ですが、サンプル・フレームの整数値であることが必要です。 システムが選択したバッファ・サイズは、その後
DataLine.getBufferSize()を呼び出すことによって問合せすることができますこの操作が成功すると、その行は開いているとマークされ、
OPENイベントが行リスナーにディスパッチされます。すでに開いているラインでこのメソッドを呼び出すのは不適切であり、
IllegalStateExceptionが表示されることがあります。ラインによっては、一度閉じると再度開けない場合があります。 こうしたラインを再度開こうとすると、常に
LineUnavailableExceptionが表示されます。- パラメータ:
format- 目的のオーディオ形式- 例外:
LineUnavailableException- リソースの制約のためにラインを開けない場合IllegalArgumentException-formatの指定が不完全または無効な場合IllegalStateException- ラインがすでに開いている場合SecurityException- セキュリティの制約のためにラインを開けない場合- 関連項目:
open(AudioFormat, int)、Line.open()、Line.close()、Line.isOpen()、LineEvent
-
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の長さより大きい場合- 関連項目:
SourceDataLine.write(byte[], int, int),DataLine.available()
-
-