|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sound.sampled
接口 Clip
-
public interface Clip
- extends DataLine
Clip
接口表示特殊种类的数据行,该数据行的音频数据可以在回放前加载,而不是实时流出。
因为数据是提前加载的且具有已知长度,所以可以设置一个剪辑,以便在其音频数据中的任何位置开始播放。也可以创建一个循环,以便在播放剪辑时该循环重复播放。使用起始和结尾示例帧以及应该播放循环的次数指定循环。
剪辑可以从支持此类型的行的
中获得。打开剪辑时,将数据加载到剪辑中。Mixer
音频剪辑的回放可以使用 start
和 stop
方法开始和终止。这些方法不重新设置介质的位置;start
导致从回放最后停止的位置继续回放。要从剪辑的音频数据的开头重新启动回放,只需通过 setFramePosition(0) 调用
即可,该方法可将介质重绕到剪辑的开头。stop
- 从以下版本开始:
- 1.3
嵌套类摘要 |
---|
从接口 javax.sound.sampled.DataLine 继承的嵌套类/接口 |
---|
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) 设置介质位置(以微秒为单位)。 |
从接口 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 |
字段详细信息 |
---|
LOOP_CONTINUOUSLY
static final int LOOP_CONTINUOUSLY
方法详细信息 |
---|
open
void open(AudioFormat format, byte[] data, int offset, int bufferSize) throws LineUnavailableException
-
打开剪辑,意味着它应该获得所有所需的系统资源并变得可操作。使用所指示的格式和音频数据打开剪辑。如果此操作成功,则将行标记为 open 且向行的侦听器指派一个
事件。OPEN
在已经打开的行上调用此方法是非法的,可能导致 IllegalStateException。
注意,有些行一旦关闭,无法重新打开。试图重新打开这样的行将始终导致
。LineUnavailableException
-
-
- 参数:
-
format
- 所提供的音频数据的格式 -
data
- 包含要加载到剪辑中的音频数据的字节数组 -
offset
- 开始复制的点,用数组开头处的字节 表示 -
bufferSize
- 从数组加载到剪辑的数据的字节 数。 - 抛出:
-
LineUnavailableException
- 如果因资源限制而无法打开行 -
IllegalArgumentException
- 如果缓冲区大小不表示整数示例帧,或者如果未完全指定format
或其无效 -
IllegalStateException
- 如果已经打开行 -
SecurityException
- 如果因安全限制而无法打开行 - 另请参见:
-
Line.close()
,Line.isOpen()
,LineListener
open
void open(AudioInputStream stream) throws LineUnavailableException, IOException
-
使用出现在所提供的音频输入流中的格式和音频数据打开剪辑。打开剪辑意味着它应该获得所有所需的系统资源并变得可操作。如果此操作输入流。如果此操作成功,则将行标记为 open 并向行的侦听器指派一个
事件。OPEN
在已经打开的行上调用此方法是非法的,可能导致 IllegalStateException。
注意,有些行一旦关闭,无法重新打开。试图重新打开这样的行将始终导致
。LineUnavailableException
-
-
- 参数:
-
stream
- 从中将音频数据读入剪辑的音频输入流 - 抛出:
-
LineUnavailableException
- 如果因资源限制而无法打开行 -
IOException
- 如果在读取流的过程中发生 I/O 异常 -
IllegalArgumentException
- 如果未完全指定流的音频格式或其无效 -
IllegalStateException
- 如果已经打开行 -
SecurityException
- if 如果因安全限制而无法打开行 - 另请参见:
-
Line.close()
,Line.isOpen()
,LineListener
getFrameLength
int getFrameLength()
- 获得介质长度(以示例帧为单位)。
-
-
- 返回:
-
介质长度(以示例帧为单位);如果未打开行,则返回
AudioSystem.NOT_SPECIFIED
。 - 另请参见:
-
AudioSystem.NOT_SPECIFIED
getMicrosecondLength
long getMicrosecondLength()
- 获得介质持续时间(以微秒为单位)
-
-
- 返回:
-
以微秒表示的介质持续时间;如果未打开行,则返回
AudioSystem.NOT_SPECIFIED
。 - 另请参见:
-
AudioSystem.NOT_SPECIFIED
setFramePosition
void setFramePosition(int frames)
-
设置介质位置(以示例帧为单位)。该位置从零开始;第一帧的帧数为零。剪辑下一次开始播放时,它将通过播放此位置的帧开始。
要获得以示例帧为单位的当前位置,使用
DataLine
的
方法即可。getFramePosition
-
-
- 参数:
-
frames
- 所需新介质的位置(以示例帧表示)
setMicrosecondPosition
void setMicrosecondPosition(long microseconds)
-
设置介质位置(以微秒为单位)。剪辑下一次开始播放时,它将在此位置开始。不保证精度级别。例如,实现可能根据当前帧的位置和音频示例帧速率计算微秒位置。应将以微秒为单位的精度限制为每示例帧的微秒数。
要获得以微秒为单位的当前位置,使用
DataLine
的
方法即可。getMicrosecondPosition
-
-
- 参数:
-
microseconds
- 所需新介质的位置(以微秒表示)
setLoopPoints
void setLoopPoints(int start, int end)
- 设置将在循环中播放的第一个和最后一个示例帧。结束点必须大于或等于起点,并且两者都必须介于加载的介质大小以内。起点为 0 值意味着加载介质的开头。类似地,结束点为 -1 指示介质的最后一帧。
-
-
- 参数:
-
start
- 以示例帧(从零开始)为单位的循环起始位置 -
end
- 以示例帧(从零开始)为单位的循环结束位置,或为 -1 表示最后一帧 - 抛出:
-
IllegalArgumentException
- 如果无法设置请求的循环点,这通常是因为一个或两个请求的点超出介质持续时间,或因为结束点在起点之前