2

我有一系列媒体文件,主要是音乐,其中大部分是多年前从 CD 导入的。这个集合已经在不同的媒体播放器、不同的文件系统、不同的计算机等之间传输了很多次。在这个过程中,一些曲目被意外复制了。我还不断尝试整理这些元数据并正确标记所有内容,因为当大部分内容最初是导入时,我没有花哨的媒体播放软件,甚至没有意识到 ID3 标签表明一切都只是“经典专辑“Album”中的曲目 %d”。

这会产生这样一种情况,即我有一些具有最新元数据的文件,但是我想删除的同一媒体文件的“重复”,其元数据尚未正确更新。由于元数据存在于文件中,因此这些文件的内容现在有所不同,并且像liten2这样的工具不起作用。

我的问题是:是否有一个库可以方便地提取文件的媒体内容的唯一标识指纹(可能是某种加密哈希,但这不是硬性要求),而忽略元数据?如果是这样,我该如何使用它?

4

3 回答 3

4

Echoprint是一种通过内容对音频进行指纹识别的免费方式——即它不依赖于元数据,也不依赖于字节精确的数据匹配。他们的常见问题解答有一个条目“我想对一个大集合进行重复数据删除”

我认为它的核心不是 python 本身,而是一个 Web API——但它们提供了 pyechonest库。

于 2012-12-09T22:07:50.750 回答
3

您可能需要深入了解音频文件(mp3、avi、mpg、ogg 等)的文件格式规范。对于 mp3,这将丢弃所有 ID3v2 元数据块。在文件中识别那些实际编码音频信息的块,然后对这些块进行哈希处理以进行比较。请记住,如果您有两个不同格式的同一曲目的文件,它们将不会被识别为同一个文件。此外,如果您有两次相同格式的相同曲目,但比特率不同,它们也不会相同。

于 2012-12-09T19:35:00.050 回答
-1

如何(暂时)将文件转换为 WAV 格式并比较它们的哈希值?ID3 标签应该被剥离。有很多工具可以做到这一点,将这个过程嵌入到脚本中应该不会太困难。

于 2015-04-22T20:51:47.193 回答