我目前正在使用 LAME 将 pcm 编码为 mp3,但生成的 mp3 的长度更长(并且能够隔离导致此问题的代码部分)。pcm 大约是 4:45 但是当我用设置编码时
///cbr settings
lame_set_VBR(gfp, vbr_off);
lame_set_quality(gfp, 5);
lame_set_preset(gfp, 128);
生成的 mp3 长度约为 11:30。当我使用设置编码时
//vbr settings
lame_set_VBR(gfp, vbr_mtrh);
lame_set_VBR_quality(gfp, 5);
生成的 mp3 长度约为 14:18。但是当我用设置编码时
//abr settings
lame_set_VBR(gfp, vbr_abr);
lame_set_VBR_min_bitrate_kbps(gfp, 128);
生成的 mp3 长度正确为 4:45(但我注意到当我将比特率增加到 188 时,长度上升了大约 5 秒到 4:50)
我真的不知道做错了什么,但似乎只有 abr 导致正确的长度 vbr 而 cbr 不是!
更新:::: 播放这些 mp3 时,它们正常播放并在 4:45 停止,但 windows 媒体播放器及其属性(在 windows 上)仍然读取上述长度
更新::: 通过删除 lame_set_preset 设置使 cbr 设置正常工作。只有 vbr 设置返回不正确的长度。