Menu

Java stream reading

I've used Javazoom project for decode MP3 files:
Decoder decoder = new Decoder();

Next we can get stream of bytes:
Bitstream bs = new Bitstream(fis);

Frame is small part of file, for .wav files a frame is a signal, for .mp3 files signal is encoded, so we can:

read header of frame:

Header header = bs.readFrame();

decode frame:

SampleBuffer sBuffer = (SampleBuffer) decoder.decodeFrame(header, bs);

and close frame:

bs.closeFrame();

Now we can read array of bytes:
short[] buffer = sBuffer.getBuffer();

Voila, buffer[n] is amplitude of wave (from -36k to 36k)

Required imports:
import javazoom.jl.decoder.Bitstream;
import javazoom.jl.decoder.Decoder;
import javazoom.jl.decoder.Header;
import javazoom.jl.decoder.SampleBuffer;

PS. you can download source code

here


Related

Wiki: Dynamic Range Analyzer Wiki

Monday.com Logo