Dekodowanie JLayer Mono Mp3 na PCM

Obecnie pracuję nad dekodowaniem mp3 z javalayer 1.1.

Chcę więc otrzymywać surowe dane PCM z mojego 44100 Hz, 16 bitów, Mp3. Doskonale działa z stereofonicznymi plikami mp3, ale mam dziwne problemy z plikami mp3.

Oto trochę kodu.

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

Więc ... Problem jest. Jeśli utworzę kanał 44100 Hz mono, 16-bitowy WaveFile i umieścisz go w Audacity, aby zobaczyć fale. Dźwięk jest okresowo 0, jak: (200ms Sound) ... (200ms NoSound) ... (200ms Sound) ... (200ms NoSound)

Dotyczy to również danych pcm przed napisaniem do .wav ... (Yeahi syso wszystkie rzeczy)

Można więc pomyśleć, że musi być zero ramek lub coś. tam ... Więc odciąłem wszystkie ramki z tylko 0 wartościami. Powoduje to nieznaczne krótsze przerwy zerowe w pliku wav. Dla mnie oznacza to, że muszą być częściowe ramki zerowe. Więc wyciąłem WSZYSTKIE zero wartości z danych pcm ... I tak dziwne, jak się wydaje, to zadziałało. Plik brzmi OK.

Ale to nie może być rozwiązanie. Nadal nie wiem, dlaczego są te fałszywe wartości zerowe. I potrzebuję ciszy także w moich mp3.

Byłbym wdzięczny za każdą wskazówkę dotyczącą wyjaśnienia. Dzięki

questionAnswers(2)

yourAnswerToTheQuestion