将 wav/wave 文件读入 short[] 数组

Gil*_*lad 2 java wav javasound

是否有将 wav 文件读入 short[] 数组的 api?我正在尝试将 wav 文件读入短数组。

我找不到任何内置的 API

Phi*_*ner 5

通过 AudioInputStream 将其引入,就像通常的声音一样。

对于从流中获取的每个缓冲区负载,一次迭代两个字节(如果它是 16 位编码)并使用您最喜欢的算法将两个字节转换为单个短整数。(取决于文件是 Big-Endian 还是 Little-Endian。)

然后,通过附加到您喜欢的短数组形式来保存结果,而不是像在更常见的播放情况中那样发布到 SourceDataLine。

引用自 Java 教程:

因为 Java Sound API 允许您以字节数组的形式访问音频数据,所以您可以选择任何方式更改这些字节。

您可以查看此 Java 声音教程中的代码:使用文件和格式转换器,“读取声音文件”部分并注意注释:“在这里,对现在位于 audioBytes 数组中的音频数据进行一些有用的操作...”

例如,有用的东西可能是:

    myShortArray[i] = (short)(( buffer[i*2] & 0xff )|( buffer[i*2 + 1] << 8 ));
Run Code Online (Sandbox Code Playgroud)

buffer = 接收 AudioInputStream 的字节缓冲区。

i = 数组的索引。