教程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
类型的对象,该对象不会被删除。< / p>
如果我使用mixer.getTargetLines()
,我会得到一个空数组。
如果我创建自己的DataLine.Info
并将其传递给调音台的getLine
,我将获得不受支持的例外。
那么,该怎么办?
答案 0 :(得分:2)
在AudioPlotPanel或更简单RMS volume的线条组件中提供每条声线的视觉渲染。它不应该让用户太长时间来确定他们正在通过哪条声线。 ;)
答案 1 :(得分:0)
我正在尝试做同样的事情。我还没有找到一个好的解决方案,但我可以告诉你,因为你试图从端口混音器中获取DataLine,所以没有成功。如果我发现它,我一定会让你知道。