用于比较 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(接口))

word对比功能java调用wps

Javassist/ASM 框架比较

Javassist/ASM 框架比较

java中equals与==的用法比较

Java中怎么比较两个字符串是不是相等?