Я получаю пару сообщений об ошибках при использовании mpglib
для декодирования данных MP3 с использованием библиотеки libmp3lame
.
error (# 1): hip: Can'tперемотка потока на 74 бита!
ошибка (# 2): hip: проблема с битовым потоком, пропуск повторной синхронизации 10 байт ...
Примечание: в сообщении «повторная синхронизация» указано 10 байтов, которыена 74 бита округлено: (74 + 7) / 8 = 10
.
Мой код декодера MP3 соответствует коду в инструменте внешнего интерфейса LAME (в основном frontend / lame_main.c и frontend /get_audio.c ).
Заголовок не генерирует ошибок, и я использую до 100 байт согласно инструменту внешнего интерфейса (см. функцию lame_decode_initfile()
в файле get_audio.c
.) Я даже пыталсячитать данные по одному байту за раз при обработке заголовка, чтобы увидеть, будет ли это иметь значение и ... не совсем.
Ошибка возникает, когда я начинаю передавать данные MP3 после анализа заголовка.
Есть идеи, почему я получаю эти сообщения об ошибках?
PS, когда я декодирую, используяХромой инструмент командной строки, я не получаю ошибку.
$ lame --verbose --decode test.mp3 test-lame.wav
input: test.mp3 (44.1 kHz, 2 channels, MPEG-1 Layer III)
output: test-lame.wav (16 bit, Microsoft WAVE)
skipping initial 529 samples (encoder+decoder delay)
Frame# 87426/88167 168 kbps MS
Хотя, кажется, есть расхождение между количеством кадров, но я думаю, это потому, что 88167 был оценочным, а не известным числом.образцов.