我在两个地方备份了一些音频文件,并在一个备份中添加了 ID3 标签,但没有在另一个备份中添加,随着时间的推移,我自己的记忆已经模糊了这两个备份是否真的相同,但现在一个有 ID3 数据,另一个没有,基本的二进制比较就会失败,检查也会很麻烦。
是否有一种工具可以比较 mp3、flac 文件和其他使用标头数据(如 ID3)的文件中音频数据(而不是标头,ID3)。
在这里开启了一篇关于无可比拟的讨论: http://www.scootersoftware.com/vbulletin/showthread.php?t=7413
会考虑其他可以完成此任务的比较软件
答案1
啊,这真是一个永恒的困境。我自己也为这个问题苦苦挣扎了很久,尝试了很多重复文件查找应用程序,最后我放弃了,决定自己写一个。然后我发现全部重复。
AllDup 让我无限期地搁置了自己的项目,因为它是一个快速地DFF 能够比较 MP3 和 JPEG 文件,分别忽略它们的 ID3 标签和 Exif 数据。更棒的是,Michael Thummerer 对反馈反应非常迅速,可以快速修复错误并实施建议(您可以建议忽略 FLAC 标头)。最重要的是,AllDup 是免费的。
答案2
这是在 shell 上执行此操作的一种方法。您需要avconv
,在 Debian/Ubuntu 中位于libav-tools
。
$ avconv -i INPUT_FILE -c:a copy -f crc - 2>/dev/null | grep CRC
你会得到如下一行:
CRC=0xabfdfe10
这将比较音频数据的每一帧并为其生成 CRC。因此,这样的命令可以比较多个文件:
for f in *.mp3 ; do echo -n "$f: "; avconv -i "$f" -f crc - 2>/dev/null | grep CRC; done
因为avconv
现在已经死了(有很好的stackoverflow 上关于 ffmpeg 和 avconv 的总结),以下是ffmpeg
版本:
for f in *.mp3 ; do echo -n "$f: "; ffmpeg -nostdin -i "$f" -c:a copy -f crc - 2>/dev/null ; done
如果您不想使用基本 CRC,但希望使用其他格式,请使用-f md5
MD5 和-f hash
SHA256。这将显示所有可用的哈希格式:
ffmpeg -formats 2>/dev/null | grep testing
答案3
Foobar2000与二进制比较器插件将会做到这一点。
答案4
我也在 Beyond Compare 论坛上问过这个问题,正如问题中提到的那样 - 而且 Beyond Compare 也提供了解决方案:
http://www.scootersoftware.com/vbulletin/showthread.php?t=7413
这两种方法都值得考虑:
如果您不关心目录文件夹树中保留了哪些文件副本以及丢弃了哪些文件副本,并且您想要运行重复检查的同一文件夹中混合了标记文件和未标记文件,那么 AllDup 解决方案是最好的。
如果您想保留目录/文件夹树并比较两个单独的文件夹/目录结构,Beyond Compare 是最好的选择,也可以通过使用即时非破坏性扁平树选项来提供帮助