public interface TargetDataLine extends DataLine
DataLineです。 もっとも一般的な例は、データをオーディオ・キャプチャ・デバイスから取得するデータ・ラインです。 デバイスはターゲット・データ・ラインに書き込むミキサーとして実装されます。
このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。 アプリケーションから見ると、ターゲット・データ・ラインはオーディオ・データのソースの役割をします。
ミキサーからターゲット・データ・ラインを取得するには、適切なオブジェクトを指定してDataLine.InfoMixerのメソッドを呼び出します。
getLine
TargetDataLineインタフェースは、ターゲット・データ・ラインのバッファから取得したデータを読み込むメソッドを提供します。オーディオを録音するアプリケーションは、バッファがオーバーフローしないようにターゲット・データ・ラインからデータをすばやく読み込みます。オーバーフローすると、取得したデータに不連続部(クリック音に聞こえる)が生じることがあります。 アプリケーションでは、DataLineインタフェースで定義されているメソッドを使用して、データ・ラインのバッファで現在キューに入っているデータの量を判別できます。 バッファがオーバーフローを起こした場合、キューに入っているもっとも古いデータが破棄されて新しいデータに置き換えられます。 available
Mixer、DataLine、SourceDataLineDataLine.Info| 修飾子と型 | メソッド | 説明 |
|---|---|---|
void |
open(AudioFormat format) |
指定されたフォーマットでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。
|
void |
open(AudioFormat format, int bufferSize) |
指定されたフォーマットと指定されたバッファ・サイズでラインを開き、ラインが必要なシステム・リソースを獲得して操作可能になるようにします。
|
int |
read(byte[] b, int off, int len) |
データ・ラインの入力バッファからオーディオ・データを読み込みます。
|
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stopaddLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListenervoid 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()、LineEventvoid 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()、LineEventint read(byte[] b,
int off,
int len)
ブロックされずに読み込めるバイト数は、DataLineインタフェースのメソッドを使って確認できます。 このバイト数はブロックされずに確実に読み込めますが、追加データを読み込もうとしたときにブロックされるかどうかは確実ではありません。
available
読み込まれるバイト数は、次のようにサンプル・フレームの整数値を表す必要があります。
[ bytes read ] % [frame size in bytes ] == 0b - このメソッドが返るときの、要求された入力データを含むバイト配列off - 配列の先頭からの座標、バイト単位len - 読込み要求されたバイト数IllegalArgumentException - 要求されたバイト数がサンプル・フレームの整数値を表さない場合。またはlenが負の値の場合。ArrayIndexOutOfBoundsException - offが負の値の場合、またはoff+lenが配列bの長さより大きい場合。SourceDataLine.write(byte[], int, int), DataLine.available() バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。