Question

I'm reading a .wav file into a byte array with the following code.

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

Is there a simple way to remove the .wav headers either before or after reading into the byte array?

Was it helpful?

OTHER TIPS

The data from the AudioInputStream read() method is already raw wav data. So there is no need to worry about the .wav header. If you do want to access the header stuff, you would use the AudioFormat object associated with this AudioInputStream.

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

BTW, unless your .wav file is really small, you won't get it all with a single read as you've done with your sample. You will have to put your reads in a while loop, as in the first code snippet in the above cited tutorial.

If correct the .wav header is 44 bytes long, so skip/remove the first 44 and there you have it.

Don't know for sure though.

Is a wav file header a fixed size? If so inputStream.skip?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top