3

我正在使用以下代码将 .wav 文件读入字节数组。

AudioInputStream inputStream = 
    AudioSystem.getAudioInputStream(/*my .wav file */);
int numBytes = inputStream.available();
byte[] buffer = new byte[numBytes];
inputStream.read(buffer, 0, numBytes);
inputStream.close();

有没有一种简单的方法可以在读入字节数组之前或之后删除 .wav 标头?

4

4 回答 4

4

AudioInputStream read() 方法中的数据已经是原始 wav 数据。因此无需担心 .wav 标头。如果您确实想访问标题内容,您将使用与此 AudioInputStream 关​​联的 AudioFormat 对象。

http://download.oracle.com/javase/tutorial/sound/converters.html

顺便说一句,除非您的 .wav 文件非常小,否则您不会像对样本所做的那样通过一次读取来获得所有内容。您将不得不将您的读取放在一个while循环中,就像上面引用的教程中的第一个代码片段一样。

于 2011-06-20T09:19:01.063 回答
2

如果正确,.wav 标头的长度为 44 个字节,因此跳过/删除前 44 个字节就可以了。

虽然不确定。

于 2009-09-17T17:42:51.923 回答
1

这是关于波形文件格式的一个很好的参考

于 2009-09-17T20:31:22.147 回答
0

wav 文件头是固定大小的吗?如果是这样inputStream.skip?

于 2009-09-17T17:40:15.367 回答