是否有一个API可以将wav文件读取到一个short[]数组中? 我正在尝试将 wav 文件读入短数组。
我找不到任何内置的 API
最佳答案
通过 AudioInputStream 将其引入,就像通常处理声音一样。
对于从流中获取的每个缓冲区负载,一次迭代两个字节(如果是 16 位编码)并使用您最喜欢的算法将两个字节转换为单个短整型。 (取决于文件是 Big-Endian 还是 Little-Endian。)
然后,通过附加到您喜欢的短数组形式来保存结果,而不是像在更常见的播放情况下那样发布到 SourceDataLine。
引自 Java 教程:
Because the Java Sound API gives you access to the audio data as an array of bytes, you can alter these bytes in any way you choose.
您可以查看此 Java 声音教程中的代码:Using Files and Format Converters ,“读取声音文件”部分并注意注释:“在这里,对现在位于 audioBytes 数组中的音频数据执行一些有用的操作...”
例如,有用的东西可能是:
myShortArray[i] = (short)(( buffer[i*2] & 0xff )|( buffer[i*2 + 1] << 8 ));
buffer = 接收 AudioInputStream 的字节缓冲区。
i = 数组的索引。
关于java - 将 wav/wave 文件读取到短[]数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12314635/