public interface Clip extends DataLine
Clip
インタフェースは特殊な種類のデータ・ラインを表し、そのオーディオ・データはリアルタイムでストリーム化するのではなく、再生前にロードできます。
データはプリロードされ長さが認識されているため、クリップを設定するとそのオーディオ・データ内の任意の位置から再生を開始できます。また、ループを作成して、クリップを繰返し再生することもできます。ループを設定するには、再生する回数と、開始および終了サンプル・フレームを指定します。
クリップはこのタイプのラインをサポートする
から取得できます。クリップを開くとデータがクリップにロードされます。
Mixer
オーディオ・クリップの再生は、start
およびstop
メソッドを使用して開始および停止できます。これらのメソッドは、メディアの位置をリセットしません。つまり、start
を使用すると、最後に停止した位置から再生が再開されます。クリップのオーディオ・データの先頭から再生を開始するには、
を呼び出した後でsetFramePosition(0)を呼び出すことによりメディアをクリップの先頭に巻き戻します。stop
DataLine.Info
修飾子と型 | フィールドと説明 |
---|---|
static int |
LOOP_CONTINUOUSLY
ループは特定回数くり返し実行されたあとで終了するのではなく無制限に継続することを示す値。
|
修飾子と型 | メソッドと説明 |
---|---|
int |
getFrameLength()
メディアの長さをサンプル・フレーム数で取得します。
|
long |
getMicrosecondLength()
メディア・デュレーションをマイクロ秒単位で取得します。
|
void |
loop(int count)
現在の位置からループ再生を開始します。
|
void |
open(AudioFormat format, byte[] data, int offset, int bufferSize)
クリップを開き、必要なシステム・リソースを獲得して操作可能になっていることを示します。
|
void |
open(AudioInputStream stream)
指定したオーディオ入力ストリーム内に提示されている形式およびオーディオ・データでクリップを開きます。
|
void |
setFramePosition(int frames)
メディアの位置をサンプル・フレーム数で設定します。
|
void |
setLoopPoints(int start, int end)
ループ内で再生される最初および最後のサンプル・フレームを設定します。
|
void |
setMicrosecondPosition(long microseconds)
メディア位置をマイクロ秒単位で設定します。
|
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getLongFramePosition, getMicrosecondPosition, isActive, isRunning, start, stop
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
void open(AudioFormat format, byte[] data, int offset, int bufferSize) throws LineUnavailableException
OPEN
イベントがラインのリスナーにディスパッチされます。
すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、IllegalStateExceptionが表示されることがあります。
ラインによっては、一度閉じると再度開くことができない場合があります。こうしたラインを再度開こうとすると、常に
が表示されます。LineUnavailableException
format
- 指定されたオーディオ・データの形式data
- クリップにロードするオーディオ・データを含むバイト配列offset
- 配列の始めからバイト数で表される、コピーの開始地点bufferSize
- 配列からクリップへロードするデータのバイト数。LineUnavailableException
- リソースの制約のためにラインを開けない場合IllegalArgumentException
- バッファ・サイズがサンプル・フレームの整数値を表さない場合、あるいはformat
の指定が不完全または無効な場合IllegalStateException
- ラインがすでに開いている場合SecurityException
- セキュリティの制約のためにラインを開けない場合Line.close()
, Line.isOpen()
, LineListener
void open(AudioInputStream stream) throws LineUnavailableException, IOException
OPEN
イベントがラインのリスナーにディスパッチされます。
すでに開いているラインでこのメソッドを呼び出すのは不適切なアクションであるため、IllegalStateExceptionが表示されることがあります。
ラインによっては、一度閉じると再度開くことができない場合があります。こうしたラインを再度開こうとすると、常に
が表示されます。LineUnavailableException
stream
- オーディオ・データがクリップに読み込まれるオーディオ入力ストリームLineUnavailableException
- リソースの制約のためにラインを開けない場合IOException
- ストリームの読込み中に入出力例外が発生した場合IllegalArgumentException
- ストリームのオーディオ形式の指定が不完全または無効な場合IllegalStateException
- ラインがすでに開いている場合SecurityException
- セキュリティの制約のためにラインを開けない場合Line.close()
, Line.isOpen()
, LineListener
int getFrameLength()
AudioSystem.NOT_SPECIFIED
。AudioSystem.NOT_SPECIFIED
long getMicrosecondLength()
AudioSystem.NOT_SPECIFIED
。AudioSystem.NOT_SPECIFIED
void setFramePosition(int frames)
現在の位置をサンプル・フレーム数で取得するには、DataLine
の
メソッドを使用します。getFramePosition
frames
- サンプル・フレーム数で表される、必要な新規メディア位置void setMicrosecondPosition(long microseconds)
現在の位置をマイクロ秒数で取得するには、DataLine
の
メソッドを使用します。getMicrosecondPosition
microseconds
- マイクロ秒数で表される、必要な新規メディア位置void setLoopPoints(int start, int end)
start
- ループの開始位置(サンプル・フレーム数、ゼロから始まる)end
- ループの最終位置(サンプル・フレーム数、ゼロから始まる)、または最終フレームを示す場合は -1IllegalArgumentException
- 要求されたループ地点が設定できない場合。通常は、開始と最終の両方またはどちらかがメディアのデュレーション外にあるため、あるいは最終地点が開始ポイントの前にあるのが原因void loop(int count)
count
回戻り、その後はクリップの最後まで再生します。
このメソッドを呼び出したときに現在の位置がループの最終地点よりも大きくなる場合は、ループは実行されず、クリップの最後までそのまま再生されます。
count
値を0にすると、現在のループを停止してクリップの最後まで再生を継続することを示します。ループの操作中にほかの値を指定してこのメソッドを呼び出したときの動作は定義されていません。
ループ中に再生を停止すると、現在のループ状態は解除されます。後続のループと開始要求の動作は、中断されたループ操作によって影響を受けません。
count
- ループの終点からループの始点まで再生をループ・バックする回数、またはループが中断されるまでループを継続する場合はLOOP_CONTINUOUSLY
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.