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, 2013, Oracle and/or its affiliates. All rights reserved.