有没有办法从 MP3 中提取实际的音频帧?(这也意味着元数据标签将被切断。)
想象中的命令行:
cat 1.mp3 | mpeg-frames-only > dump
cat 1.mp3 | mpeg-frames-only | md5
PS:我认为对于我的情况来说,将 mpeg 转换为 wav 不是一个好主意。
PPS 如果有多个解决方案可以相互测试就更好了。
答案1
已找到一个解决方案(某些参数可能没有必要)。仍在寻找替代方法。
mplayer 1.mp3 -vo null -dumpaudio -dumpfile dump.mp3
答案2
图书馆libmpg123包含一个执行该任务的示例代码extract_frames.c
。我已经编译了它,它运行良好。
答案3
对于查找重复项和组织您的图书馆,MusicBrainz (http://musicbrainz.org/) 是一个很棒的数据库,并且有一套很棒的工具围绕它构建。Picard (http://musicbrainz.org/doc/MusicBrainz_Picard) 是一个 GUI 应用程序,旨在帮助您组织音乐库,这可能有助于您实现检测重复项的目标。
如果您想尝试自己编写脚本,您可以通过安装libchromaprint-tools
并运行来获取文件的声学指纹fpcalc /path/to/file.mp3
。虽然我还没有找到确切的资料,但我认为两首实际上不同的歌曲具有相同的声学指纹的可能性(尽管很小),因此在删除其中一个文件之前,您应该手动检查两个文件是否确实重复。
关于声学指纹的概述可以在这里找到:http://en.wikipedia.org/wiki/Acoustic_fingerprint
关于 chromaprint 的具体工作原理的详细说明可以在这里找到: http://oxygene.sk/lukas/2011/01/how-does-chromaprint-work/