教程http://download.oracle.com/javase/tutorial/sound/capturing.html
不介绍如何选择麦克风。
我用以下代码枚举混音器
System.out.println("Searching for microphones");
for(Mixer.Info mixerinfo : AudioSystem.getMixerInfo()) {
mixer = AudioSystem.getMixer(mixerinfo);
//System.out.println(mixerinfo.toString());
if( mixer.isLineSupported(Port.Info.MICROPHONE) ) {
mixers.add(mixer);
System.out.println(Integer.toString(mixers.size()) + ": " + mixerinfo.toString());
}
}
即以麦克风输入为前提。但是接下来,有了调音台,我无法朗读。
如果我使用
mixer.getTargetLineInfo()
,则会收到一个包含一个Info
的数组,当将其传递给mixer.getLine
时,该数组将返回com.sun.media.sound.PortMixer$PortMixerPort
类型的对象,该对象未创建。如果我使用
mixer.getTargetLines()
,则会得到一个空数组。如果我创建自己的
DataLine.Info
并将其传递给调音台的getLine
,则会得到不受支持的异常。那么该怎么办?
最佳答案
左场建议。
在沿着AudioPlotPanel或更简单的RMS volume的线的组件中,提供每个声音线的可视化呈现。用户应该花很长时间才能弄清楚他们绕着哪个音线。 ;)