如何将从WAV文件读取的数据转换为Java中经过签名的16位原始音频数据的数组?

问题描述 投票:0回答:1

我不知道该怎么做。我已经阅读了几个类似问题的答案,以及一些网站可能在某个地方找到答案的网站,但是我听不懂它们,或者它们不是我要尝试做的。也有可能有人确实给出了答案,但我无法集中精力来解释它。我想要一种方法,该方法可以将WAV文件中签名的16位原始音频数据的数据转换为short []。我希望简短的简单易懂的答案,因为我专注于这些问题的难度会较小。

编辑:有人说这可能是stackoverflow.com/questions/5210147/reading-wav-file-in-java的副本。我对这个问题或其答案的理解不够充分,甚至无法说出它是否与众不同,或者为什么或如何更改我的问题,因此不会为那个问题感到困惑。

java audio wav
1个回答
0
投票

通常用于将数据加载到字节数组中的当前核心Java类是AudioInputStream(javax.sound.sampled.AudioInputStream)。可以在Oracle教程Using Files and Format Converters中找到其用法的示例,并附带说明。示例代码在标题为“读取声音文件”的部分中。请注意以下行中最里面的while循环中的点:// Here, do something useful with the audio data。此时,您将数据加载到数组中。

占用两个字节并将其转换为短字节已经回答了好几次,但是我没有可用的链接。仅发布我使用过的一些代码会更容易。

audioArray[i] = ( buffer[bufferIdx] & 0xff )
                        | ( buffer[bufferIdx + 1] << 8 ) ;

...,其中audioArray可能是short []。 (在我的代码中,我使用float []并执行下一步以将值缩放到-1到1。)

这是从github上的库AudioCue中摘录而来,经过稍加修改,引用了第391-393行。

© www.soinside.com 2019 - 2024. All rights reserved.