我有一个立体声波形文件,我需要仅读取和播放选定的 channel 。实现这一目标的最佳方法是什么?
最佳答案
当您通过 AudioInputStream 引入 wav 文件时,请使用 AudioFileFormat 信息将字节转换为 PCM。左右数据交替。因此,如果线路是 16 位,则每帧将有 4 个字节。前两个将组装到左 channel 中,后两个将组装到右 channel 中。 (反之亦然——我很难记住哪个 channel 是左还是右。)
这是一个很好的教程,其中包含有关如何读取一行的示例: http://docs.oracle.com/javase/tutorial/sound/converters.html
可能需要一些早期教程来帮助澄清。另外,如果您对字节与 PCM 之间的转换有疑问,StackOverflow 上已经有一些解释可供引用。找到它们应该不会太难。
关于JavaSound:提取立体声音频的一个 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776803/