public interface Clip extends DataLine
Clip
接口代表一种特殊的数据线的音频数据可以被加载之前播放,而不是实时流。
由于数据是预先加载的,并且有一个已知的长度,你可以设置一个剪辑开始在它的音频数据中的任何位置开始播放。您还可以创建一个循环,以便在播放剪辑时,它将循环重复。循环中指定了一个开始和结束的示例框架,以及循环应该被播放的次数。
剪辑可以从支持这种类型的线
获得。当打开数据时,数据被加载到一个剪辑中。Mixer
音频剪辑的播放可以启动和停止使用start
和stop
方法。这些方法不会重置的媒体定位;start
原因回放继续从上次停止的位置在播放。重新播放的剪辑的音频数据的开始,只是遵循
与setframeposition调用(0),它将媒体剪辑的开始。stop
DataLine.Info
Modifier and Type | Field and Description |
---|---|
static int |
LOOP_CONTINUOUSLY
一个值表示循环应该继续下去而不是完成一个特定的圈数后。
|
Modifier and Type | Method and Description |
---|---|
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
static final int LOOP_CONTINUOUSLY
loop(int)
,
Constant Field Values
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
如果流读书期间发生的I/O异常
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
-循环的结束位置,在样品架(零基础),或1显示最后一帧
IllegalArgumentException
环点不能设置,通常是因为一方或双方不在媒体的持续时间或因为终点前的起点
void loop(int count)
count
倍,并继续播放到最后的剪辑。
如果当前位置调用此方法时大于循环结束点,播放简单地继续最后的剪辑没有循环。
一个0 count
值表示当前循环停止和播放应该继续最后的剪辑。该方法在循环操作过程中调用任何其他值时,该方法是不定义的。
如果播放期间停止循环,电流环状态被清除;随后的回路和启动请求的行为是不间断循环操作的影响。
count
-次播放数环回从循环的结束位置到循环的起始位置,或
LOOP_CONTINUOUSLY
表明循环继续直到中断
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.