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 тоже.
Буду признателен за каждую подсказку объяснения. Спасибо