捕捉麦克风的声音

时间:2012-12-20 13:29:39

标签: java audio port javasound jmf

所以,我查看了Java的声音教程,但我发现它并没有那么有用。 无论如何,我从用于录制麦克风声音的教程中理解的是: sound

虽然他们确实展示了如何获取目标数据线等等,但他们并没有告诉你如何实际录制声音[或者我没有把它完全记录下来]。
到目前为止,我的理解是这样的:

  • Mixer可以是声卡或声音软件驱动程序,可用于处理声音,无论是输入还是输出
  • 当您想要将声音输出到计算机时,会使用
  • TargetDataLine。喜欢将其保存到磁盘
  • Port是您连接麦克风等外部设备的地方
  • 仍然存在的问题

  • 如何选择合适的调音台? Java啧啧说你得到了所有可用的混音器,并查询每个混音器,看它是否有你想要的。这对初学者来说非常模糊
  • 如何获得集成麦克风所在的端口?具体来说,我如何从混音器输入?
  • 如何将其输出到磁盘?
  • 1 个答案:

    答案 0 :(得分:2)

    使用AudioSystem.getTargetDataLine(AudioFormat format)方法,您将获得

      

    ...目标数据行,可用于以AudioFormat对象指定的格式录制音频数据。返回的行将由默认的系统混合器提供,或者,如果不可能,则由系统中安装的任何支持匹配的TargetDataLine对象的混音器提供。

    有关此示例,请参阅Java Sound API - capturing microphone的已接受答案 如果您想要更多地控制使用哪条数据线,您可以枚举它们支持的所有混音器和数据线,并选择您想要的数据线。以下是有关如何执行此操作的更多信息:Java - recording from mixer

    获得TargetDataLine后,您应该open(),然后重复调用read()以从该数据行获取数据。每次调用byte[]时填充数据的read()都可以写入磁盘,例如通过FileOutputStream