【问题标题】:Capturing sound from a mic从麦克风捕捉声音
【发布时间】:2012-12-20 13:29:38
【问题描述】:

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

虽然它们确实展示了如何获取目标数据线等,但它们并没有说明您如何实际录制声音 [或者我可能没有完全搞定]。
到目前为止我的理解是这样的:

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

  • 如何选择合适的混音器? Java 的 tut 说您可以获得所有可用的混音器并查询每个混音器以查看它是否具有您想要的。这对于初学者来说是相当模糊的
  • 如何获取集成麦克风所在的端口?具体来说,我如何将其输入到混音器中?
  • 如何将其输出到磁盘?
  • 【问题讨论】:

    标签: java audio port javasound jmf


    【解决方案1】:

    使用AudioSystem.getTargetDataLine(AudioFormat format)方法你会得到

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

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

    一旦你获得了 TargetDataLine,你应该open() 它,然后反复调用read() 以从该数据线获取数据。每次调用read() 时填充数据的byte[] 可以写入磁盘,例如通过FileOutputStream

    【讨论】:

    • 好吧,谢谢你是垃圾邮件,但是嗯。谢谢。这就像我遇到的最好的答案。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多