因此,我查看了 Java 的声音教程,但并没有发现它很有帮助。无论如何,我从使用麦克风录制声音的教程中了解到的是:
尽管它们确实展示了如何获取目标数据线等,但它们并没有说明您如何实际录制声音[或者我可能没有完全掌握]。
到目前为止,我的理解是这样的:
Mixer
可以是您的声卡或可用于处理声音(无论是输入还是输出)的声音软件驱动程序TargetDataLine
当您想将声音输出到计算机时使用。喜欢保存到磁盘Port
是连接麦克风等外部设备的位置因此,我查看了 Java 的声音教程,但并没有发现它很有帮助。无论如何,我从使用麦克风录制声音的教程中了解到的是:
尽管它们确实展示了如何获取目标数据线等,但它们并没有说明您如何实际录制声音[或者我可能没有完全掌握]。
到目前为止,我的理解是这样的:
Mixer
可以是您的声卡或可用于处理声音(无论是输入还是输出)的声音软件驱动程序TargetDataLine
当您想将声音输出到计算机时使用。喜欢保存到磁盘Port
是连接麦克风等外部设备的位置使用AudioSystem.getTargetDataLine(AudioFormat format)方法你会得到
... 一个目标数据线,可用于以 AudioFormat 对象指定的格式记录音频数据。返回的行将由默认系统混音器提供,或者,如果不可能,由系统中安装的任何其他支持匹配 TargetDataLine 对象的混音器提供。
有关此示例,请参阅Java Sound API 的公认答案 - 捕获麦克风。
如果您想更好地控制使用哪条数据线,您可以枚举所有混音器及其支持的数据线,然后选择您想要的。以下是有关如何执行此操作的更多信息:Java - 从混音器录制
一旦你获得了 TargetDataLine,你应该得到open()
它,然后重复调用read()以从该数据行获取数据。您在byte[]
每次调用时填充的数据read()
可以写入磁盘,例如通过FileOutputStream。