我的收藏中包含一些存在一些故障的 MP3,例如:
- 加载时显示错误的持续时间
- 小跳跃
- 尽管时间还剩一分钟,但突然结束
- 噪音
我正在寻找一种可以检测尽可能多的这些故障并修复那些可以修复的故障的工具(显然,例如在大多数情况下噪音不能简单地被消除)。
答案1
命令行工具mp3值可以快速扫描并选择性修复 mp3 文件中的结构缺陷。我尝试按照“不会造成损害”的原则检查我收藏的几乎所有文件。它可以识别出大量表面上没有问题的文件,但缺陷从无关紧要到严重不等。
mp3val 尤其擅长识别和纠正标头缺陷,例如 VBR 文件中缺少 VBR 标头(大多数错误持续时间和搜索问题的根源)。但它也会清除垃圾/损坏的音频帧数据,如果文件中留有无法使用的垃圾,某些播放器可能无法很好地处理它们。
它甚至可以被告知运行整个 mp3 目录,仅修复发现问题的文件、保留备份(或可选不保留)、保留时间戳(可选)以及将会话记录到文本文件(可选)。
而且它是免费和开源的!(链接至其 sourceforge 项目。)
编辑:最后还有一件事我忘了提。“但是 mp3val 自 2009 年以来就没有更新过!!”,我听到了你的抱怨。这非常真的! 它已经工作正常自 2009 年以来,无需更新。(毕竟,MP3 文件格式在过去 2 年里没有任何变化!)
答案2
答案3
麥克适用于 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
答案4
更简单的方法是使用 ffmpeg 从 ID3 标签中时长错误的文件中复制该文件。这样它就会写入正确的信息。
ffmpeg -i "audio.mp3" -acodec copy "audio_fixed.mp3"
由于它使用复制,因此它所花费的时间只是原始编码所花费时间的一小部分。对于一首歌曲来说,这几乎不明显,但对于 7 小时的有声读物,你真的会感激它。重新编码后,ID3 标签现在具有正确的信息。