public interface DataLine extends Line
DataLine
将媒体相关功能添加到其超级接口, Line
。
此功能包括启动,停止,排除和刷新通过线路的音频数据的传输控制方法。
数据线还可以报告媒体的当前位置,音量和音频格式。
数据线用于通过允许应用程序写入数据的子SourceDataLine
或Clip
来输出音频。
类似地,音频输入由子TargetDataLine
处理,这允许读取数据。
数据线具有内部缓冲器,其中输入或输出音频数据排队。
方法阻塞,直到内部缓冲区变为空,通常是因为已处理所有排队的数据。 drain()
方法从内部缓冲区中丢弃任何可用的排队数据。 flush()
每当数据线开始或停止数据的主动呈现或捕获时,数据线将生成
和START
事件。 这些事件可以根据具体请求生成,也可以由于更少的直接状态更改而生成。 例如,如果在非活动数据线上调用STOP
,并且数据可用于捕获或播放,则当数据播放或捕获实际开始时,将很快生成start()
START
事件。 或者,如果数据到活动数据线的流动被收缩,使得在数据呈现中发生间隙,则生成STOP
事件。
混频器通常支持同步控制多条数据线。 可以通过Mixer界面的
方法建立synchronize
。 请参阅synchronize
Mixer
描述,以获得更完整的描述。 Mixer
LineEvent
Modifier and Type | Interface and Description |
---|---|
static class |
DataLine.Info
除了从其超类继承的类信息,
DataLine.Info 还提供了特定于数据行的附加信息。
|
Modifier and Type | Method and Description |
---|---|
int |
available()
获取应用程序当前可用于数据线内部缓冲区中处理数据的字节数。
|
void |
drain()
通过持续的数据I / O从排队排出数据,直到数据线的内部缓冲区被清空。
|
void |
flush()
从行刷新排队的数据。
|
int |
getBufferSize()
获取将适合数据线内部缓冲区的最大数据字节数。
|
AudioFormat |
getFormat()
获取数据线音频数据的当前格式(编码,采样率,通道数等)。
|
int |
getFramePosition()
获取音频数据中的样本帧中的当前位置。
|
float |
getLevel()
获取该行的当前音量级别。
|
long |
getLongFramePosition()
获取音频数据中的样本帧中的当前位置。
|
long |
getMicrosecondPosition()
以微秒形式获取音频数据中的当前位置。
|
boolean |
isActive()
指示线路是否处于活动I / O(例如播放或捕获)。
|
boolean |
isRunning()
指示该行是否正在运行。
|
void |
start()
允许线路从事数据I / O。
|
void |
stop()
停止线。
|
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener
void drain()
drain()
,则该方法将阻塞,直到该行正在运行,并且数据队列变为空。
如果drain()
被一个线程调用,另一个线程继续填充数据队列,操作将不会完成。
当数据行关闭时,此方法总是返回。
flush()
void flush()
void start()
START
事件。
stop()
, isRunning()
, LineEvent
void stop()
flush
方法。
当音频捕获或播放停止时,会生成一个STOP
事件。
start()
, isRunning()
, flush()
, LineEvent
boolean isRunning()
false
。
当响应于start
方法的调用而stop
第一数据时,开放行开始运行,并且继续直到呈现停止响应于对stop
的调用或者因为播放完成。
boolean isActive()
true
如果线是主动捕获或渲染声音,否则
false
Line.isOpen()
, Line.addLineListener(javax.sound.sampled.LineListener)
, Line.removeLineListener(javax.sound.sampled.LineListener)
, LineEvent
, LineListener
AudioFormat getFormat()
如果该行未打开,并且从未打开,则返回默认格式。 默认格式是实现特定的音频格式,或者如果用于检索DataLine
的DataLine.Info
对象指定了至少一个完全限定的音频格式,则最后一个将被用作默认格式。 用特定音频格式打开行(例如SourceDataLine.open(AudioFormat)
)将覆盖默认格式。
AudioFormat
int getBufferSize()
int available()
请注意,所使用的单位是字节,但总是对应于音频数据的采样帧的整数。
应用程序保证从available()
返回的字节数的读或写操作不会被阻塞; 然而,不能保证读取或写入更多数据的尝试将被阻止。
int getFramePosition()
getLongFramePosition
。
getLongFramePosition()
long getLongFramePosition()
long getMicrosecondPosition()
float getLevel()
AudioSystem.NOT_SPECIFIED