是否有一个工具可以检测(并且如果可能的话,修复) MP3 文件中的故障?

是否有一个工具可以检测(并且如果可能的话,修复) MP3 文件中的故障?

我的收藏中包含一些存在一些故障的 MP3,例如:

  • 加载时显示错误的持续时间
  • 小跳跃
  • 尽管时间还剩一分钟,但突然结束
  • 噪音

我正在寻找一种可以检测尽可能多的这些故障并修复那些可以修复的故障的工具(显然,例如在大多数情况下噪音不能简单地被消除)。

答案1

命令行工具mp3值可以快速扫描并选择性修复 mp3 文件中的结构缺陷。我尝试按照“不会造成损害”的原则检查我收藏的几乎所有文件。它可以识别出大量表面上没有问题的文件,但缺陷从无关紧要到严重不等。

mp3val 尤其擅长识别和纠正标头缺陷,例如 VBR 文件中缺少 VBR 标头(大多数错误持续时间和搜索问题的根源)。但它也会清除垃圾/损坏的音频帧数据,如果文件中留有无法使用的垃圾,某些播放器可能无法很好地处理它们。

它甚至可以被告知运行整个 mp3 目录,仅修复发现问题的文件、保留备份(或可选不保留)、保留时间戳(可选)以及将会话记录到文本文件(可选)。

而且它是免费和开源的!(链接至其 sourceforge 项目。)

编辑:最后还有一件事我忘了提。“但是 mp3val 自 2009 年以来就没有更新过!!”,我听到了你的抱怨。这非常真的! 它已经工作正常自 2009 年以来,无需更新。(毕竟,MP3 文件格式在过去 2 年里没有任何变化!)

答案2

我以为你已经尝试过了谷歌上的第一个选项...? 也是一个 perl 脚本,mp3检查器,可能会有用。

编辑:

至于修复你的足迹可能会MP3 诊断(链接至 lifehacker 文章)看一看。

答案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 标签现在具有正确的信息。

相关内容