6

教程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(),我会收到一个数组 one Info,当传递给它时会mixer.getLine返回一个类型为 的对象com.sun.media.sound.PortMixer$PortMixerPort,该对象没有被记录。

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

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

那么该怎么办?

4

2 回答 2

2

左场建议。

在沿AudioPlotPanel或更简单的RMS 音量线的组件中提供每条声音线的可视化渲染。用户不应该花费太长时间来确定他们正在通过哪个声线。;)

于 2011-06-07T13:37:04.457 回答
0

我正在尝试做同样的事情。我还没有找到一个好的解决方案,但我可以告诉你这行不通,因为你正试图从端口混合器中获取数据线。如果我弄清楚了,我一定会告诉你的。

于 2013-04-17T13:08:32.887 回答