我曾经使用ffmpeg在服务器端计算MP3文件的持续时间-这似乎运行良好。但今天我发现一些计算是错误的。不知何故,ffmpeg将会错误计算持续时间,且似乎仅出现在可变比特率的mp3文件中。
在本地测试时,我注意到ffmpeg会打印两行额外的绿色文字。
使用的命令:
ffmpeg -i song_9747c077aef8.mp3
ffmpeg说:
[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
经过一番愉快而热烈的谷歌搜索,我发现了一些相关的帖子,但没有找到解决方案。
然后我尝试增加最大持续时间:
ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3
之后,ffmpeg只返回了第二行:
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
无论哪种情况,所计算的持续时间都是完全错误的。将其与 VLC 进行比较后,我注意到那里的持续时间是正确的。
经过更多的研究,我偶然发现了 mp3info - 我安装并使用了它。
mp3info -p "%S" song_9747c077aef8.mp3
mp3info返回了正确的持续时间,但只是作为一个整数返回,这对我来说不够准确。下面的评论解释了这个问题,用户blahdiblah指出,mp3info只是从文件中提取ID3信息,没有进行任何计算。
我还尝试使用mplayer检索持续时间,但和ffmpeg一样,mplayer也返回了错误的值。