2010-05-29 45 views
0

这是一个2部分的问题。首先,是否可以独立于ID3标签访问MP3中的音频数据,其次,是否有任何方法可以使用可用的库?独立于ID3标签访问MP3音频数据?

我最近整理了3台电脑中的音乐收藏,并最终播放了改变ID3标签的歌曲,但音频数据本身未经修改。运行搜索重复文件失败是因为文件因ID3标记更改而更改,但如果我只是使用音频数据运行重复数据删除以进行比较,我认为应该可以识别重复文件。

我知道可以通过文件中的ID3头寻找特定的位置,并直接读取数据,但想知道是否有一个库会暴露音频数据,因此我可以提取数据,在其上运行校验和,并将计算结果存储在某处,然后查找相同的校验和。 (另外,考虑到可变长度标题,我可能必须使用某种类型的库。)

+0

类似的问题,因为似乎没有'链接到不同的问题'框: 阅读ID3标签 - http://stackoverflow.com/questions/1645803/how-to-read-mp3-file-tags(共识:使用库) 标签读者的Java - http://stackoverflow.com/questions/73147/i-need-an-id3-tag-reader-library-for-java-preferably-a-fast-one http://stackoverflow.com/questions/86083/any-good-recommendations-for-mp3-sound-libraries-for-java http://stackoverflow.com/questions/278612/java-mp3-audio-editing-trimming-library – Kyle 2010-05-29 05:18:31

+0

此外,这似乎是我最好的选择,据我所知: http://stackoverflow.com/questions/476227/detect-duplicate-mp3-files-with-different-bitrates-and-or-different-id3-tags – Kyle 2010-05-29 05:19:49

回答

0

巧合的是,我想在前些天做类似的事情。

这里是一个Ruby脚本,我掀起了:

http://code.google.com/p/kodebucket/source/browse/trunk/bin/mp3dump.rb

它转储MPEG帧到标准输出,这样一个可以抓住像这样的校验:

# mp3dump.rb file.mp3 | md5sum

+0

嗯。我在寻找什么,尽管我不知道它在做什么。我会接受它,但我不介意解释它在做什么。我假定除非序列以某种方式过滤出ID3标签,但不能说明如何。链接到你用来创建这个文档的任何文档都会很棒。 :) – Kyle 2010-06-06 13:51:21

+0

是的,它可能有点混乱;意识流编码... 它的要点: 打开一个mp3文件; 读取4个字节; 如果我们读取的字节是一个有效的mp3头,读取帧并将其发送到标准输出; 否则我们倒退3个字节,然后重试,直到我们到达文件末尾。 我用下面的MPEG帧资源:http://www.datavoyage.com/mpgscript/mpeghdr.htm – user358390 2010-06-07 18:43:45

+0

这个脚本已经把我的MP3变成坏了54 KB。 – 2012-08-28 21:13:25