1.通过计算MD5值判断速度上太慢了。
2.ID3V1、V2标签可能在使用中被更改,更改之后MD5值也就变了。
3.通常情况下,两个mp3文件大小完全一样可能性不大,可以考虑!但是修改ID3V2标签信息后文件大小会有变动吗?还不是很清楚
4.考虑过判断文件最后修改时间(精确到毫秒),但是即使不修改文件内容,只要重新写入,那么文件的最后修改时间也就被刷新了。
5一般的修改(如标签信息,嵌入图片等)不会改变mp3数据部分,时间、音质、码率什么的都不会变化,可以判定为“同一个mp3文件”。
如题:希望能商量出一个好的解决思路

解决方案 »

  1.   

    这就需要一个“什么是一样”标准,比如大小一样就算一样,那就比较大小,持续时间算一样就算一样,那就打开文件,查找时间信息。md5慢的话,快速的算法也不适用,因为你涉及文件的信息改变,“标签信息,嵌入图片等”,所以hash, crc等函数都不能用。不知道查找音频部分,比较开头一部分的音频数据等行不行。
      

  2.   

    把两个文件都读取到内存中,然后直接memcmp()就是。
      

  3.   

    比较音频数据应该是不错的一个办法,只不过我目前对mp3文件结构还不是很了解,暂时没研究了我现在用的就是这个方法将就着,但是对文件的tag信息修改后就不行了两个高质量mp3估计要20M+的内存吧
      

  4.   

    我感觉 也是用 memcmp来的直接,管他里面是什么文件呢,直接找不一样的字节,
      

  5.   

    先判断长度长度相同,再用memcmp