有几十万张图片和视频需要去重,日后会持续增加,之前测了 md5 和 sha1 ,虽然也能接受但还是希望更快一些 Cursor 告诉我可以用 xxhash ,测了一下性能确实提升了几十倍,但据说碰撞率比 md5/sha1 更高一些 想问问有没有大佬有没有遇到碰撞的情况? 另外由于有的视频非常大,受限于磁盘性能,无论 md5 sha1 还是 xxhash 都要浪费很多时间 看到了很多取若干个点进行采样的处理方式,来提升效率 想问问这类处理方式,对照片/视频这类文件,碰撞率如何? PS. 文件来源都是可靠的,不存在恶意碰撞的情况
首先,如果两个文件 size 不一样,这两个文件一定不相同,因此可以先根据 size ,做一个 map ; 其次,同一个 size 下的,图片有一个「感知哈希算法」,可以算出一个 64 位向量; 如果 size 相同,向量也相同,再算个 md5 ,就行了 如果是视频,可以用 ffmpeg 提取 10 个 I 帧出来,再比较