【问题标题】:java api for comparing MP3 contents?用于比较 MP3 内容的 java api?
【发布时间】:2013-03-06 10:06:21
【问题描述】:

我是新手,不知道该怎么办?我想比较两个 MP3 文件并检查它们是否相同或不同。我想通过它的内容来检查它。请帮我。我到处搜索,但没有得到任何东西。

【问题讨论】:

  • 为什么它必须是一个 mp3 API,你不能只比较文件大小或者文件大小不同但包含相同的歌曲?
  • MP3 contents 是什么意思?身份证3?字节码?
  • 我想检查它们是否包含相同的歌曲
  • 比较音频文件就像比较图像一样,很难。如果单个事物发生变化,例如使用其他设置压缩,重新压缩,字节比较将失败。所以做这种事情的最好方法是寻找可以做到这一点的东西,然后看看如何将它集成到 Java 中。一些介绍见wikipedia

标签: java audio mp3


【解决方案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"));

【讨论】:

  • 或者在没有额外库的情况下计算校验和:stackoverflow.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 APIechoprint

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多