Java - 从.wav中删除标头

时间:2009-09-17 17:37:18

标签: java audio wav javasound

我正在使用以下代码将.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 个答案:

答案 0 :(得分:3)

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

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

顺便说一下,除非你的.wav文件非常小,否则只要你对样本进行一次读取,就不会全部完成。您必须将读取放在while循环中,就像上面引用的教程中的第一个代码片段一样。

答案 1 :(得分:2)

如果正确的.wav标题是44个字节长,那么跳过/删除前44个,你就可以了。

虽然不确定。

答案 2 :(得分:1)

答案 3 :(得分:0)

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