是否有一个工具可以检测(如果可能,修复)MP3文件中的毛刺?[关闭]


31

我的收藏中包含一些MP3,这些MP3具有一些故障,例如:

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

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


听起来像是播放器问题。您确定这些是由您的MP3文件引起的吗?
digitxp 2011年

@digitxp突然结​​束可能是由于文件的某些部分丢失,但是错误显示的时间可能是由VLC引起的。但还是那意味着有一些错误的文件,因为其他文件显示正确的时间。噪音和跳动可能是由于CD读取错误所致,我没有进行
仔细

嗯,错误的持续时间可能源于VBR vs CBR ...所以剩下的问题是不完整和CD读取错误
Tobias Kienzler 2011年

Answers:


35

命令行工具mp3val可以快速扫描和(可选)修复mp3文件中的结构缺陷。我尝试按照“不会伤害”的原则,对我收藏集中的几乎每个文件运行它。它可以识别数量惊人的表面上不错的文件,其缺陷范围从无关紧要到严重。

mp3val特别擅长识别和纠正标头缺陷,例如VBR文件中缺少VBR标头(大多数错误持续时间和查找问题的源头)。但是,这也会清除垃圾/损坏的音频帧数据,这是无法使用的残骸,有些播放器如果将其保留在文件中,处理起来可能不够优雅。

甚至可以告诉它在mp3的整个目录上运行,仅修复发现问题的那些文件,保留备份(或选择不备份),保留时间戳(可选),并将会话记录到文本文件(可选)。

它是免费和开源的!(链接指向其sourceforge项目。)

编辑:我忘了提到的最后一件事。“但是mp3val自2009年以来就没有更新!!”,我听到你在哭。这是非常真实的!自2009年以来,它一直运行良好,并且不需要更新。(毕竟,在过去的两年中,MP3文件格式没有发生任何变化!)


也为您第二次+1 :-)尽管似乎还有一些有效的错误仍在打开 ...
Tobias Kienzler 2011年

1
是的,似乎mp3val在Windows 7下使用一些深奥的文件名确实存在一些实际问题。那真不幸。(现代计算的第一条规则:任何足够大的MP3集合都将包含具有任何给定形式的神秘文件名的文件。)如果有人愿意的话,它可以使用Windows程序员的一些爱![OffTopic:进入mp3val svn并发现最新的补丁来自我-这真是超现实的,尤其是因为我完全忘记了这样做!;-)]
FeRD 2011年

1
不幸的是mp3val无法修复我的一些文件:(。但是MP3Diags能够修复它们(V​​BR文件上的Xing标头,导致显示错误的持续时间)
。– scai

@Marecky这很奇怪。我刚刚尝试过mp3valFedora 28,它仍然运行良好。它具有的最深奥的库依赖关系为libm.so.6libstdc++.so.6,因此,这似乎不太可能导致不兼容的ABI损坏。不过,只是要检查一下:在默认模式下,它mp3val 不会触摸任何文件,它只会在带有-f标志的情况下进行修改-即使那样,也只会修改扫描模式记录为WARNING:ERROR:将被修改的文件。如果它没有检测到任何可修复的问题,它将使您的文件保持不变。
FeRD '18

1
@FeRD-没错,我现在不记得它是哪个程序(Audacious,Gnome MPV或Rhythmbox Music Player),但是在将最后一张CD翻录成CD之后,我将新文件放入其中一个程序的播放列表中,但发现错误跟踪时间-这就是为什么我认为mp3的索引错误(或内部有任何索引)并在其上运行mp3val-但是文件正确-这就是为什么mp3val从不显示任何警告并且不纠正文件的原因。我不知道播放器为什么显示错误的曲目时​​间,我将删除之前的评论。
Marecky

10

我以为您已经在Google上尝试过第一种选择 ...?另外一个perl脚本mp3checker可能很有用。

编辑:

至于修复曲目,可能会给MP3 Diags(指向救生员文章的链接)一个外观。


谢谢,将死是一个识别问题文件的好工具(尽管仍然可以解决问题)
Tobias Kienzler 2011年

1
赞成MP3 Diags。我的mp3播放器出现问题,无法正确报告播放时间。MP3 Diags找到并解决了问题。
David L

4

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            

谢谢,尽管这个答案
Tobias Kienzler

mpck!= mp3check。我错了吗?
ЯрославРахматуллин

不,这是标有“ Google的第一个选项”的链接。但还是要+1,因为您已经详细说明了它的功能
Tobias Kienzler 2013年

啊对。我忽略了这一点。我将检出mp3val,但到目前为止,mpck能够通过mp3-checker满足我的所有需求。
ЯрославРахматуллин

2
在Linux上,对mp3val应用任何变通办法并不一定使我感到惊讶-AFAICT,所引用的错误是仅Windows的问题。(它用于解析命令行或处理文件名的任何功能都不得使用Unicode安全。)在Linux下,我只是手工损坏了(通过用ghex将随机块清零),将mp3文件重命名如下:Tësting 1.mp3 Testíng ®eally hµrd.mp3 ☭They don't get much weirder☭.mp3... mp3val没有麻烦正确处理所有这些。
2013年

0

更简单的方法是使用ffmpeg从ID3标签中存在错误持续时间的文件中复制文件。这使它写入正确的信息。

ffmpeg -i "audio.mp3" -acodec copy "audio_fixed.mp3"

因为它使用复制,所以只花费原始编码时间的一小部分。这首歌很难被察觉,但是您会非常喜欢一本长达7小时的有声读物。重新编码后,ID3标签现在具有正确的信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.