如何使用java声音API从麦克风捕获声音?

Dim*_*ims 6 java audio microphone javasound capture

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

即通过麦克风输入的预告.但接下来,有一台调音台,我无法阅读.

如果我使用mixer.getTargetLineInfo(),我会收到一个数组Info,当传递给它时mixer.getLine返回一个类型的对象com.sun.media.sound.PortMixer$PortMixerPort,这个对象没有被贬低.

如果我使用mixer.getTargetLines()我得到一个空数组.

如果我创建自己的DataLine.Info并将其传递给混音器getLine,我会得到不受支持的异常.

那么该怎么办?

And*_*son 2

左外野建议。

在沿着AudioPlotPanel或更简单的RMS 音量线的组件中提供每条声音线的视觉渲染。用户不应该花太长时间来判断他们正在唱的是哪条声音线。;)