我需要一个视频文件的唯一哈希,它可以处理以下内容:
- 更改文件名
- 更改文件位置
- 文件大小完全相同但内容不同的两个文件(应视为不同文件)
虽然像 md5、sha1 这样的散列算法似乎是一个不错的候选者,但我需要一些只需几分之一秒即可生成的东西。
对于 2GB 的视频文件,生成 md5 校验和值需要 5 秒。
我认为处理时间长是自然的,因为必须读取大视频文件。
有没有我可以使用的东西,专门利用视频文件的属性,也许只使用视频文件头或其他东西进行比较。这里的目标是在几分之一秒内获得唯一的视频 ID。
最佳答案
作为第一种方法,我会考虑从前 10 Mb 加上可能的文件大小中获取 crc32。您将与此方法发生冲突并需要处理它们,但所有哈希算法都会发生冲突。
更新
或者,您可以使用实用程序 ffprobe
(随 ffmpeg
一起提供)获取视频 header 并从中计算 md5。但是作为一个进程运行它会很慢,而且它似乎不存在作为 python 库导入。
关于python - 快速获取视频文件唯一标识的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47009793/