【发布时间】:2015-05-19 22:59:16
【问题描述】:
我正在使用 JAVA 声音 API,我正在尝试对混音器和线路进行一些控制(至少是音量),但似乎没有控制。 这是我正在使用的代码的一部分:
for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) {
//System.out.println("MixerInfo : "+mixerInfo.getName());
if (mixerInfo.getName().compareTo("PulseAudio Mixer")==0) {
System.out.println("Java Sound Audio Engine : "+AudioSystem.getMixer(mixerInfo));
mixer=AudioSystem.getMixer(mixerInfo);
System.out.println("\t Controls supported by Mixer:");
for(Control c : mixer.getControls()) {
System.out.println("\t =>" + c);
}
System.out.println("\t TargetLine availabe for this mixer : ");
for (Line.Info i : mixer.getTargetLineInfo()) {
System.out.println("\t => "+i);
System.out.println("\t\t Controls supported by Target Line :");
try {
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println("\t\t =>"+c);
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("--------------------------");
//break;
} else {
//System.out.println("Other Mixer : "+AudioSystem.getMixer(mixerInfo));
System.out.println("Other Sound Audio Engine : "+AudioSystem.getMixer(mixerInfo));
mixer2=AudioSystem.getMixer(mixerInfo);
System.out.println("\t Controls supported by Mixer:");
for(Control c : mixer2.getControls()) {
System.out.println("\t =>" + c);
}
System.out.println("\t TargetLine availabe for this mixer :");
for (Line.Info i : mixer2.getSourceLineInfo()) {
System.out.println("\t => "+i);
System.out.println("\t\t Controls supported by Target Line :");
try {
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println("\t\t =>"+c);
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("--------------------------");
}
}
这是控制台中产生的结果:
Java 声音音频引擎:org.classpath.icedtea.pulseaudio.PulseAudioMixer@1404d1 Mixer 支持的控件:
TargetLine 可用于此混音器:
=> 接口 TargetDataLine 支持 42 种音频格式,以及 0 到 1000000 字节的缓冲区
Target Line 支持的控件:
其他声音音频引擎:com.sun.media.sound.DirectAudioDevice@13b8dae
Mixer 支持的控件:
TargetLine 可用于此混音器:
=> 接口 SourceDataLine 支持 512 种音频格式,缓冲区至少 32 字节
Target Line 支持的控件:
=> 支持 512 种音频格式的接口 Clip,以及至少 32 字节的缓冲区
Target Line 支持的控件:
其他声音音频引擎:com.sun.media.sound.DirectAudioDevice@1cad7c3 Mixer 支持的控件:
TargetLine 可用于此混音器:
=> 接口 SourceDataLine 支持 24 种音频格式,以及至少 32 字节的缓冲区
Target Line 支持的控件:
=> 支持 24 种音频格式的接口 Clip,以及至少 32 字节的缓冲区
Target Line 支持的控件:
其他声音音频引擎:com.sun.media.sound.DirectAudioDevice@1a9cf86
Mixer 支持的控件:
TargetLine 可用于此混音器:
=> 接口 SourceDataLine 支持 24 种音频格式,以及至少 32 字节的缓冲区
Target Line 支持的控件:
=> 支持 24 种音频格式的接口 Clip,以及至少 32 字节的缓冲区
Target Line 支持的控件:
其他声音音频引擎:com.sun.media.sound.PortMixer@17fd320 Mixer 支持的控件:
TargetLine 可用于此混音器:
=> 麦克风增强源端口
Target Line 支持的控件:
=> 捕获源端口
Target Line 支持的控件:
=> 数字源端口
可能是什么问题?
注意:我不是在 Windows 操作系统上,而是在 Xubuntu (linux) 操作系统上。这就是为什么我没有 Java Sound Audio Engine 而是 PulseAudioMixer。
【问题讨论】:
-
那么,我应该尝试“重写”自己需要的功能吗?这些功能是“增益”、“音量”、“静音”、“低音/中音/树形设置”……或者编写它们可能会很麻烦?
标签: java linux controls javasound mixer