我的音乐库中有很多歌曲的播放时长显示不正确,在Clementine中只能部分播放。在Banshee和其他一些播放器中,它们显示不同的时长,并且有时可以完整播放。
有没有办法修复这个问题,而不必“重新编码”这首歌?
有没有办法修复这个问题,而不必“重新编码”这首歌?
如果您不想安装任何新软件,可以尝试使用ffmpeg:
ffmpeg -i file_orig.mp3 -acodec copy file_fixed.mp3
mp3val
和mp3check
的解决方案无效时。(只是为了确认,它不会重新编码,对吗?) - NoldorinTLEN
标签的值不正确。你可以使用mutagen
软件包中的mid3v2
工具来修复此问题,删除该标签(显然它是可选的)。$ mid3v2 --delete-frames=TLEN filename.mp3
音乐播放器Quodlibet还有一个方便的 "修复MP3时长" 插件,您可以使用它来完成这个操作。
(取自Quodlibet常见问题解答页面:http://quodlibet.readthedocs.org/en/latest/guide/faq.html)
sudo apt-get install mp3check
mp3check {filename or wildcard} --cut-junk-start --cut-junk-end --fix-headers
cat
命令将有声读物的各个部分合并成一个文件(cat 1.mp3 2.mp3 > out.mp3
),这在播放时效果非常好,但几乎每个播放器都会对时间戳产生问题,甚至mediainfo
显示的持续时间也是来自第一个文件而不是合并后的文件。 - blockloopcat
命令的完美选择,除了一些微不足道的副作用,可以通过简单重新评估Xing头数据来解决。即使没有经过mp3val处理,这些文件在我测试的每个播放器中仍然可以正常播放。相比使用ffmpeg重新编码,cat
命令非常高效且速度更快,即使加上mp3val命令也是如此。 - blockloopffmpeg
命令结合concat
和-acodec copy
选项时,不会重新编码音视频流,而是直接复制流(因此速度很快),但会在第一次创建文件时确保生成正确的文件(避免在结果文件中出现多次无用的头部和标签数据)。 - phoibos