3

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

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

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

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

    1 回答 1

    2

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

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

    有关此示例,请参阅Java Sound API 的公认答案 - 捕获麦克风。
    如果您想更好地控制使用哪条数据线,您可以枚举所有混音器及其支持的数据线,然后选择您想要的。以下是有关如何执行此操作的更多信息:Java - 从混音器录制

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

    于 2012-12-20T13:50:27.583 回答