public interface Mixer
混频器是一个具有一行或多行的音频设备。不需要将它设计用于混合音频信号。实际混合音频的混频器具有多个输入(源)行和至少一个输出(目标)行。前者常常是实现
的类的实例,后者是实现 SourceDataLine
的类的实例。TargetDataLine
对象不是源行就是目标行。通过将其某些源行作为实现 Port
接口的对象的实例,混频器可以接受事先录制的环绕声音作为输入。 Clip
通过 Line
接口(该接口由 Mixer
扩展)的方法,混频器可以提供对该混频器而言全局可用的控件集。例如,该混频器可以有一个主音量控件。这些全局控件与属于该混频器的每个单行的控件明显不同。
有些混频器(特别是那些具有内部数字混音功能的混频器)可能通过实现 DataLine
接口提供其他功能。
混频器可以支持其行的同步。当启动或停止同步组中的一行时,该组中的其他行自动与明显受影响的行同时启动或停止。
嵌套类摘要 | |
---|---|
static class |
Mixer.Info Mixer.Info 类表示关于音频混频器的信息,包括产品的名称、版本和供应商,以及文本描述。 |
方法摘要 | |
---|---|
Line |
getLine(Line.Info info) 获得可供使用并且与指定 Line.Info 对象中的描述匹配的行。 |
int |
getMaxLines(Line.Info info) 获得可以在此混频器上同时打开的所请求类型的行的最大近似数。 |
Mixer.Info |
getMixerInfo() 获得关于此混频器的信息,包括产品名称、版本、供应商,等等。 |
Line.Info[] |
getSourceLineInfo() 获得关于此混频器支持的源行集合的信息。 |
Line.Info[] |
getSourceLineInfo(Line.Info info) 获得关于此混频器支持的特定类型源行的信息。 |
Line[] |
getSourceLines() 获得当前对此混频器打开的所有源行的集合。 |
Line.Info[] |
getTargetLineInfo() 获得关于此混频器支持的目标行集合的信息。 |
Line.Info[] |
getTargetLineInfo(Line.Info info) 获得关于此混频器支持的特定类型目标行的信息。 |
Line[] |
getTargetLines() 获得当前从此混频器打开的所有目标行的集合。 |
boolean |
isLineSupported(Line.Info info) 指示混频器是否支持与指定 Line.Info 对象匹配的一行(或多行)。 |
boolean |
isSynchronizationSupported(Line[] lines, boolean maintainSync) 报告此混频器是否支持指定行集合的同步。 |
void |
synchronize(Line[] lines, boolean maintainSync) 同步两个或多个行。 |
void |
unsynchronize(Line[] lines) 释放指定行的同步。 |
从接口 javax.sound.sampled.Line 继承的方法 |
---|
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener |
方法详细信息 |
---|
Mixer.Info getMixerInfo()
Mixer.Info
Line.Info[] getSourceLineInfo()
Line.Info
对象数组。如果不支持任何源行,则返回一个长度为 0 的数组。
Line.Info[] getTargetLineInfo()
Line.Info
对象数组。如果不支持任何目标行,则返回一个长度为 0 的数组。
Line.Info[] getSourceLineInfo(Line.Info info)
info
- 描述其信息被查询的那些行的
Line.Info
对象
Line.Info
对象数组。如果不支持任何匹配源行,则返回一个长度为 0 的数组。
Line.Info[] getTargetLineInfo(Line.Info info)
info
- 描述查询其信息的行的
Line.Info
对象
Line.Info
对象数组。如果不支持任何匹配的目标行,则返一个回长度为 0 的数组。
boolean isLineSupported(Line.Info info)
Line.Info
对象匹配的一行(或多行)。有些行可能只在此混频器打开时受支持。
info
- 描述查询其是否受支持的行
true
;否则返回
false
Line getLine(Line.Info info) throws LineUnavailableException
Line.Info
对象中的描述匹配的行。
如果请求某一 DataLine
,且 info
是 DataLine.Info
的实例(至少指定一个完全限定的音频格式),则将使用最后一种格式作为所返回 DataLine
的默认格式。
info
- 描述所需的行
LineUnavailableException
- 如果由于资源限制而使匹配行不可用
IllegalArgumentException
- 如果此 mixer 不支持与描述匹配的所有行
SecurityException
- 如果由于安全限制而使匹配行不可用
int getMaxLines(Line.Info info)
Line.Info
对象中提供的描述匹配的任何一行。例如,如果 info 对象表示一个扬声器端口,且该混频器只支持一个扬声器端口,则此方法应该返回 1。 如果 info 对象表示一个源数据行,且该混频器支持同时使用 32 个源数据行,则返回值应该是 32。 如果没有限制,则此方法返回
AudioSystem.NOT_SPECIFIED
。
info
- 描述将查询其受支持实例数的那些行的
Line.Info
AudioSystem.NOT_SPECIFIED
Line[] getSourceLines()
SecurityException
- 如果由于安全限制而使匹配行不可用
Line[] getTargetLines()
SecurityException
- 如果由于安全限制而使匹配行不可用
void synchronize(Line[] lines, boolean maintainSync)
lines
- 应该同步的行
maintainSync
- 如果在执行行操作的过程中必须始终精确地维护同步(即同步必须是样本精确的),则该参数为
true
;如果只在启动和停止操作的过程中需要精确同步,则该参数为
false
IllegalArgumentException
- 如果行无法同步。这可能在行属于不同类型或具有此混频器不支持其同步的不同格式,或在所有指定行不属于此混频器的情况下发生。
void unsynchronize(Line[] lines)
null
,在此情况下,属于此混频器的所有当前同步行都将被解除同步。
lines
- 应该为其释放同步的同步行;对于此混频器的所有同步行,该参数都为
null
。
IllegalArgumentException
- 如果这些行无法解除同步。这可能在指定参数并不完全与已经为其建立同步的行集合匹配的情况下发生。
boolean isSynchronizationSupported(Line[] lines, boolean maintainSync)
lines
- 查询其是否支持同步的那些行的集合
maintainSync
- 如果在指定行操作的过程中始终精确地维护同步(即同步必须是样本精确的),则该参数为
true
;如果只在启动和停止操作的过程中需要精确同步,则该参数为
false
true
;否则返回
false