java - 将 wav/wave 文件读取到短[]数组中

标签 java wav javasound

是否有一个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/

相关文章:

java - Java 中的 ArrayList 或 List 声明

java - 读取为数字代码而不是特殊字符

java - Java 中的 JSONArray 中的 JSONArray

java - 正在寻找适用于 Windows DirectSound/WASAPI/的 Java 包装器?声音的

java - ANTLR 4 - 支持空格和特殊字符的字符串语法规则

c# - 如何在 C# 中连接 WAV 文件

audio - 如何将音频x-wav文件转换为常规wav文件

ruby - 用于从频率生成WAV文件的Ruby API?

java - 为什么会收到此LineUnavailableException?

java - 将音乐文件导入到jar文件中