我正在使用 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 Sound Audio Engine:org.classpath.icedtea.pulseaudio.PulseAudioMixer@1404d1 Mixer 支持的控件:
TargetLine 可用于此混音器:
=> 接口 TargetDataLine 支持 42 种音频格式,以及 0 到 1000000 字节的缓冲区
Target Line 支持的控件:
其他声音音频引擎:com.sun.media.sound.DirectAudioDevice@13b8dae
混音器支持的控件:
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
混音器支持的控件:
TargetLine 可用于此混音器:
=> 接口 SourceDataLine 支持 24 种音频格式,以及至少 32 字节的缓冲区
Target Line 支持的控件:
=> 支持 24 种音频格式的接口 Clip,以及至少 32 字节的缓冲区
Target Line 支持的控件:
其他声音音频引擎:com.sun.media.sound.PortMixer@17fd320 混音器支持的控件:
TargetLine 可用于此混音器:
=> Mic Boost 源端口
Target Line 支持的控件:
=> 捕获源端口
Target Line 支持的控件:
=> 数字源端口
可能是什么问题?
注意:我不在 Windows 操作系统上,而是在 Xubuntu (linux) 操作系统上。这就是为什么我没有 Java Sound Audio Engine 而是 PulseAudioMixer 的原因。