首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java sound API从麦克风中捕获声音?

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

Stack Overflow用户
提问于 2011-06-07 13:52:00
回答 2查看 5.9K关注 0票数 6

教程http://download.oracle.com/javase/tutorial/sound/capturing.html不包括如何选择麦克风。

我使用以下代码枚举混音器

代码语言:javascript
复制
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,我会得到不支持的异常。

那么,该怎么办呢?

EN

回答 2

Stack Overflow用户

发布于 2011-06-07 21:37:04

左外野建议。

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

票数 2
EN

Stack Overflow用户

发布于 2013-04-17 21:08:33

我也在尝试做同样的事情。我还没有找到一个很好的解决方案,但我可以告诉你,这是行不通的,因为你正试图从Port mixer获得一个DataLine。如果我弄清楚了,我一定会让你知道的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6261094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档