使用Python访问MP3音乐数据
我正在尝试写一个Python脚本,用来查找重复的mp3或mp4文件,比较的依据是歌曲的数据。我的情况是有很多文件名相似的mp3和mp4文件,但它们的ID3标签却不同。一开始我尝试通过循环和md5来查找重复文件(不考虑文件名)。当然,当ID3标签不匹配时,这种方法就不管用了。
因此,我想找到一种方法,只提取mp3或mp4中的音乐数据,然后用md5来查找重复的文件。请问有什么好的方法可以做到这一点呢?
3 个回答
0
你问的问题其实涉及到比较高级的模糊逻辑相关内容。
这不是一个直接的回答,但你可以看看这篇文章里的讨论:如何检测不同比特率和/或不同ID3标签的重复MP3文件?(其实这可能算是重复的问题……而且它还特别针对Python。)
1
你可以使用一些指纹算法。你可能听说过 MusicBrainz,他们在 这里 列出了一些指纹算法。目前他们使用的是 AcoustId,这个是你也可以考虑的选择(它很好用而且是免费的)。还有一个叫 Chromaprint 的库,可以用来生成这样的指纹。
我写了一个 Python模块 ffmpeg
,它通过 FFmpeg 来解码,并提供了一个简单的函数来计算 AcoustId 指纹(使用 Chromaprint)。这里 有一个小示例(它甚至可以查询 MusicBrainz 来找这首歌)。
用这些工具来找出重复的音频应该很简单。
如果音频数据完全相同,指纹就会完全一样;如果音频数据相似,指纹也会相似。如果你不只是想检查是否相等,可以查看 AcoustId 的主页,了解如何计算相似度。