如何比较文件中的 mp3、flac 音频数据,忽略标题数据(ID3 标签)等?

the*_*now 18 audio id3 file-comparison binary-files beyondcompare

我已经在 2 个地方备份了一些音频文件并将 ID3 标签添加到一个备份中而不是另一个,因为时间过去了,我自己的记忆已经淡化了备份是否实际上相同,但现在一个有 ID3 数据和其他没有,基本的二进制比较将失败,检查将很麻烦。

是否有一种工具可以仅比较 mp3、flac 文件和其他使用标头数据(例如 ID3.0)中的音频数据(而不是标头 ID3)。

在这里开始了一个无法比较的线程:http : //www.scootersoftware.com/vbulletin/showthread.php?t=7413

会考虑执行此任务的其他比较软件

Syn*_*ech 9

啊,永恒的困境。我自己在这个问题上挣扎了很长时间并尝试了很多重复文件查找应用程序,我最终放弃并决定自己编写一个。然后我找到了AllDup

AllDup 让我无限期地推迟我自己的项目,因为它是一个快速的DFF,能够比较 MP3 和 JPEG 文件,分别忽略它们的 ID3 标签和 Exif 数据。更好的是,Michael Thummerer 对反馈非常敏感,并能快速修复错误和实施建议(您可以建议忽略 FLAC 标头)。最重要的是,AllDup 是免费的。


小智 7

这是一种在 shell 上执行此操作的方法。你需要avconv,它在 Debian/Ubuntu 中是在libav-tools.

$ avconv -i INPUT_FILE -c:a copy -f crc - 2>/dev/null | grep CRC
Run Code Online (Sandbox Code Playgroud)

你会得到这样的一行:

CRC=0xabfdfe10
Run Code Online (Sandbox Code Playgroud)

这将比较音频数据的每一帧并为其生成 CRC。所以像这样的命令可以比较多个文件:

ls *.mp3 | while read line; do echo -n "$line: "; avconv -i "$line" -f crc - 2>/dev/null | grep CRC; done
Run Code Online (Sandbox Code Playgroud)

  • @fred727 我检查了 `avconv` 手册页并意识到 `crc` 选项解码音频并计算解码音频的 CRC。但是您可以通过将音频编解码器设置为“copy”来避免这种情况。现在,在我的系统上,命令运行时间为 0.13 秒而不是 1.13 秒。我更新了答案,所以现在您可以避免使用 PHP。:) (4认同)