我的收藏中包含一些MP3,这些MP3具有一些故障,例如:
- 在加载时显示错误的持续时间
- 小跳
- 尽管持续时间声称还剩下一分钟,但突然结束
- 噪声
我正在寻找一种可以检测出尽可能多的毛刺并修复那些可以修复的毛刺的工具(显然,例如,在大多数情况下,不能简单地消除噪声)。
我的收藏中包含一些MP3,这些MP3具有一些故障,例如:
我正在寻找一种可以检测出尽可能多的毛刺并修复那些可以修复的毛刺的工具(显然,例如,在大多数情况下,不能简单地消除噪声)。
Answers:
命令行工具mp3val可以快速扫描和(可选)修复mp3文件中的结构缺陷。我尝试按照“不会伤害”的原则,对我收藏集中的几乎每个文件运行它。它可以识别数量惊人的表面上不错的文件,其缺陷范围从无关紧要到严重。
mp3val特别擅长识别和纠正标头缺陷,例如VBR文件中缺少VBR标头(大多数错误持续时间和查找问题的源头)。但是,这也会清除垃圾/损坏的音频帧数据,这是无法使用的残骸,有些播放器如果将其保留在文件中,处理起来可能不够优雅。
甚至可以告诉它在mp3的整个目录上运行,仅修复发现问题的那些文件,保留备份(或选择不备份),保留时间戳(可选),并将会话记录到文本文件(可选)。
它是免费和开源的!(链接指向其sourceforge项目。)
编辑:我忘了提到的最后一件事。“但是mp3val自2009年以来就没有更新!!”,我听到你在哭。这是非常真实的!自2009年以来,它一直运行良好,并且不需要更新。(毕竟,在过去的两年中,MP3文件格式没有发生任何变化!)
MP3Diags
能够修复它们(VBR文件上的Xing标头,导致显示错误的持续时间)
mp3val
Fedora 28,它仍然运行良好。它具有的最深奥的库依赖关系为libm.so.6
或libstdc++.so.6
,因此,这似乎不太可能导致不兼容的ABI损坏。不过,只是要检查一下:在默认模式下,它mp3val
不会触摸任何文件,它只会在带有-f
标志的情况下进行修改-即使那样,也只会修改扫描模式记录为WARNING:
或ERROR:
将被修改的文件。如果它没有检测到任何可修复的问题,它将使您的文件保持不变。
mp3val
-但是文件正确-这就是为什么mp3val
从不显示任何警告并且不纠正文件的原因。我不知道播放器为什么显示错误的曲目时间,我将删除之前的评论。
mpck可在Windows和GNU / Linux上使用。
主页:http://checkmate.gissen.nl/
它检测不良帧并生成可选报告。
也有用于Windows的GUI前端。
mpck 0.19 - checks a MP3 file for errors
Usage: mpck [OPTION]... [FILE]...
Verbosity:
-v, --verbose print some extra info
-q, --quiet print only Ok or Bad per file
-B, --badonly only report bad files
Other options:
-R, --recursive check directories recursively
-e, --extention=EXT only check files ending on .EXT
-r short for -R -e mp3
-m, --maxname=NUM report bad for filenames which exceed NUM characters
-n, --namecheck check for strange characters in the filename
-x, --xmloutput output results in XML
-h, --help print this help, then exit
-V, --version print version information
更新:
该程序似乎完全能够处理utf-8文件名,尽管我还没有尝试过日语,中文或更多奇特的字形。
Gentoo(UTF-8)
$ mpck -r 2000\ -\ Завтрак\ на\ траве\ \(USA\)/ | grep SUM
SUMMARY: 2000 - Завтрак на траве (USA)//04-ja-sbrasyvaju-kozhu.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//07-tak-vot-kakaja-ty-demo.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//09-evrej-i-goj.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//06-teplyj-dozhd'-demo.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//01-vse-napominaet-o-tebe.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//02-marsh-novoselov--sf-unplugged.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//05-rubaha.mp3
SUMMARY: 2000 - Завтрак на траве (USA)//03-kalifornia-love.mp3
具有UTF-8语言环境的Cygwin(在Windows中为日本语言环境)
本机Windows二进制文件不知道cygwin,因此我不得不转换输出。
$ mpck.exe -r "2000 - Завтрак на траве (USA)" | grep 'SUM' |
iconv -f CP932 -t UTF-8
SUMMARY: 2000 - Завтрак на траве (USA)\04-ja-sbrasyvaju-kozhu.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\07-tak-vot-kakaja-ty-demo.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\09-evrej-i-goj.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\06-teplyj-dozhd'-demo.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\01-vse-napominaet-o-tebe.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\02-marsh-novoselov--sf-unplugged.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\05-rubaha.mp3
SUMMARY: 2000 - Завтрак на траве (USA)\03-kalifornia-love.mp3
Tësting 1.mp3
Testíng ®eally hµrd.mp3
☭They don't get much weirder☭.mp3
... mp3val没有麻烦正确处理所有这些。
更简单的方法是使用ffmpeg从ID3标签中存在错误持续时间的文件中复制文件。这使它写入正确的信息。
ffmpeg -i "audio.mp3" -acodec copy "audio_fixed.mp3"
因为它使用复制,所以只花费原始编码时间的一小部分。这首歌很难被察觉,但是您会非常喜欢一本长达7小时的有声读物。重新编码后,ID3标签现在具有正确的信息。