JLayer Mono Mp3 zu PCM Decodierung

Ich arbeite derzeit an der MP3-Decodierung mit Javalayer 1.1.

Ich möchte also die PCM-Rohdaten von meinen 44100 Hz, 16 Bit, Mp3s empfangen. Es funktioniert perfekt mit Stereo-MP3s, aber ich habe seltsame Probleme mit Mono-MP3s.

Hier etwas Code.

InputStream data = c.getResources().openRawResource(resId);
Bitstream bitstream = new Bitstream(data);
Decoder decoder = new Decoder();
while(thereIsData) {
  Head frameHeader = bitstream.readFrame();
  SampleBuffer buffer = (SampleBuffer) decoder.decodeFrame(frameHeader, bitstream);
  short[] pcmBuffer = buffer.getBuffer();

  // Do some stuff with pcm (For example creating a wav file )

  bitstream.closeFrame();
}

buffer.getChannelCount () == 1, buffer.getFrequency () == 41000

Also ... das Problem ist. Wenn ich ein 44100-Hz-Monokanal-16-Bit-WaveFile erstelle und es in Audacity lege, werden die Wellen angezeigt. Der Sound ist periodisch 0, wie: (200ms Sound) ... (200ms NoSound) ... (200ms Sound) ... (200ms NoSound)

Dies gilt auch für die PCM-Daten vor dem Schreiben in .wav ... (Yeahi syso all das Zeug)

Man könnte also denken, es muss Null-Frames oder etw geben. da drin ... Also habe ich alle Frames mit nur 0 Werten abgeschnitten. Dies führt zu geringfügig kürzeren Nullen in der WAV-Datei. Bedeutet für mich, dass es partielle Null-Frames geben muss. Also habe ich ALLE Nullwerte aus den PCM-Daten herausgeschnitten ... Und so seltsam es auch scheint, das hat funktioniert. Die Datei klingt OK.

Aber das kann nicht die Lösung sein. Ich weiß immer noch nicht, warum es diese falschen Nullwerte gibt. Und ich brauche auch Stille in meinen MP3s.

Ich würde mich über jeden Erklärungshinweis freuen. Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage