用于比较 MP3 内容的 java api?
Posted
技术标签:
【中文标题】用于比较 MP3 内容的 java api?【英文标题】:java api for comparing MP3 contents? 【发布时间】:2013-03-06 10:06:21 【问题描述】:我是新手,不知道该怎么办?我想比较两个 MP3 文件并检查它们是否相同或不同。我想通过它的内容来检查它。请帮我。我到处搜索,但没有得到任何东西。
【问题讨论】:
为什么它必须是一个 mp3 API,你不能只比较文件大小或者文件大小不同但包含相同的歌曲?MP3 contents
是什么意思?身份证3?字节码?
我想检查它们是否包含相同的歌曲
比较音频文件就像比较图像一样,很难。如果单个事物发生变化,例如使用其他设置压缩,重新压缩,字节比较将失败。所以做这种事情的最好方法是寻找可以做到这一点的东西,然后看看如何将它集成到 Java 中。一些介绍见wikipedia。
【参考方案1】:
您可以使用Guava Libraries
执行crc32
校验和计算
File myfile1 = new File("file1.mp3");
long checksum1 = Files.getChecksum(myfile1 , new java.util.zip.CRC32());
File myfile2 = new File("file2.mp3");
long checksum2 = Files.getChecksum(myfile2 , new java.util.zip.CRC32());
if (checksum1 == checksum2)
System.out.println(" Both are same ");
// your business logic
如果您对校验和不满意并想要进行sha-256
摘要计算
byte[] digest = Files.getDigest(myfile1 , MessageDigest.getInstance("SHA-256"));
【讨论】:
或者在没有额外库的情况下计算校验和:***.com/a/304350/1165132 原始海报阐明“我想检查它们是否包含相同的歌曲”如果文件相同,则不是,这就是这样做的。 为什么不简单地逐字节比较文件呢?无论如何都必须从磁盘中读取它们,那么为什么还要进行所有额外的数学运算呢?【参考方案2】:你说“我到处搜索,但没有得到任何东西。”如果这是真的,那么你搜索了错误的东西。我刚刚去谷歌并输入“堆栈溢出检查两首歌曲是否相同”并得到以下两个答案:
Is it possible to see if two MP3 files are the same song by analyzing the files' bytes?
Java: Comparing two audio files to see if they are the same "music"
您还可以查看echonest API 和echoprint。
【讨论】:
以上是关于用于比较 MP3 内容的 java api?的主要内容,如果未能解决你的问题,请参考以下文章
Java 的API(API: Application(应用) Programming(程序) Interface(接口))