1
fangpeishi 3 天前
如果重复率不高,可以考虑先用弱 checksum 算法(例如 adler-32 )走一遍,碰撞了再用强算法走一遍(例如 md5 ,sha1 )。参考 rsync 的做法。
|
2
processzzp 3 天前
对于你的用途,xxhash3 够了,放心用,还不放心的话就对重复文件再算一遍 SHA-256 或者 SHA3-256 ,绝对保险
|
3
tool2dx 3 天前
对视频进行关键帧去重呗,全量读取肯定慢,改啥算法都没用。
|
4
lsylsy2 3 天前
都是取舍,换哈希或者采样都是牺牲碰撞率来换取性能。
解决方法很简单:先用快的来,如果发现碰撞了,再只对有重复的算一遍 sha1 |
5
cat OP |
6
pxiphx891 3 天前
首先,如果两个文件 size 不一样,这两个文件一定不相同,因此可以先根据 size ,做一个 map ;
其次,同一个 size 下的,图片有一个「感知哈希算法」,可以算出一个 64 位向量; 如果 size 相同,向量也相同,再算个 md5 ,就行了 如果是视频,可以用 ffmpeg 提取 10 个 I 帧出来,再比较 |