JLayer Mono Mp3 в PCM декодирование

В настоящее время я работаю над декодированием mp3 с javalayer 1.1.

Поэтому я хочу получать необработанные данные PCM с моих 441,00 Гц, 16 бит, Mp3s. Он отлично работает со стерео mp3, но у меня странные проблемы с моно mp3.

Здесь немного кода.

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

Итак ... Проблема в том. Если я создам моноканал с 44100 Гц, 16-битный WaveFile и поместу его в Audacity, чтобы увидеть волны. Звук периодически равен 0, например: (звук 200 мс) ... (звук 200 мс) ... (звук 200 мс) ... (звук 200 мс)

Это также относится и к данным PCM перед записью в .wav ... (даао, сисо, все прочее)

Так что можно подумать, ну, должно быть, ноль кадров или что-то еще. там ... Так что я обрезал все кадры только с 0 значениями в нем. Это приводит к небольшим коротким разрывам нуля в файле WAV. Значит для меня должны быть частичные нулевые кадры. Поэтому я вырезал ВСЕ нулевые значения из данных PCM ... И, как ни странно, это сработало. Файл звучит нормально.

Но это не может быть решением. Я до сих пор не знаю, почему существуют эти ложные нулевые значения. И мне нужна тишина в моих mp3 тоже.

Буду признателен за каждую подсказку объяснения. Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос