我有两个包含~20 GB音乐文件的目录(主要是mp3,一些ogg),我想检测所有重复的歌曲。有两个复杂因素:
解决这个问题的好方法是什么?
答案 0 :(得分:4)
我过去的方式是使用来自Music IP的genpuids。无论格式,id3,校验和等,闭源软件都会创建文件的音频指纹。
可以找到更多信息here。
这应该确保最大量的正重复匹配并最小化误报。它还可以正确标记不正确的id3标签。
答案 1 :(得分:2)
这是我将要做的(或以前做过的)......
...瞧! (或者你读过digg:“......获利!”)
/ MP
答案 2 :(得分:1)
ID3 / OGG-equiv艺术家和歌曲元标准是否准确?如果是,你可以使用它们。
编辑:如果他们不是,也许他们可以成为...如果你只处理整个专辑,有几个工具将根据曲目的数量及其他人获得所有标签数据长度。
如果你正在处理专辑和单个文件的混合,那就会变得更加复杂。
答案 3 :(得分:1)
如果您有一个可以解析文件的库,则可以对音频数据运行哈希。如果这首歌是不同的节奏或者已经过重新压缩/转码/等等,这对你没有帮助。
答案 4 :(得分:1)
我确信那里有更优雅的解决方案 - 但如果音频数据相同,那么剥离ID3标签和散列应该可以解决问题。散列后,您可以根据需要放回ID3标签。
答案 5 :(得分:0)
也许Last.fm API会很有用。它包含一个track.getInfo调用,它返回XML,包括曲目的长度,艺术家姓名,曲目编号等。您可以比较曲目并查看它们是否有超过N个等于的字段,如果是,则假设它们是相同的曲目。 / p>
我不知道他们是否可以提交40gb音乐的API请求。
答案 6 :(得分:0)
这样的事情:找到一个库来获取mp3的长度以及指向音频数据的指针(看起来有几个库可以做到这一点),做一个基于歌曲的第一个过滤器长度,以及具有匹配长度的歌曲校验和他们的音频数据。与此script for finding duplicate files / images类似。
答案 7 :(得分:0)
ffTES的某些改编对我来说非常有用,可以完成类似的任务。