【发布时间】:2023-04-07 18:12:01
【问题描述】:
我在使用mpglib 使用libmp3lame 库环境解码MP3 数据时收到几条错误消息。
错误(#1): hip: 无法将流倒带 74 位!
error(#2): hip: 比特流问题,重新同步跳过 10 个字节...
注意:“重新同步”消息表示 10 个字节,即 74 位四舍五入:(74 + 7) / 8 = 10。
我的 MP3 解码器代码遵循 LAME 前端工具中的代码(主要是 frontend/lame_main.c 和 frontend/get_audio.c)。
标头不会产生错误,并且我根据前端工具最多使用 100 个字节(请参阅 get_audio.c 文件中的 lame_decode_initfile() 函数。)我什至尝试在处理标头时一次读取一个字节的数据看看它是否会有所作为......不是真的。
当我在解析标题后开始传递 MP3 数据时发生错误。
知道为什么我会收到这些错误消息吗?
附:当我使用蹩脚的命令行工具解码时,我没有收到错误。
$ 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 是一个估计值,而不是已知的样本数。
【问题讨论】: