生成视频块时如何加密 ffmpeg 输出?

生成视频块时如何加密 ffmpeg 输出?

我可以用以下方法openssl加密ffmpeg视频流

 ffmpeg -i  video1.mp4-video1.mp4.mp4 -f ogg -  | 
 openssl enc -des3 > outptu.ogg.des3

当生成命令给出的块(例如给定的持续时间)时,您将使用哪种策略来加密 ffmpeg 输出:

ffmpeg -f video4linux2 -s vga -i /dev/video0 -f segment -segment_time 1\
-strftime 1 '%Y-%m-%d_%H-%M-%S.ts'

我需要%Y-%m-%d_%H-%M-%S.ts.des3而不是%Y-%m-%d_%H-%M-%S.ts

我喜欢使用名称管道,但这意味着我必须检测 ffmpeg 生成的每个块的文件头和页脚。

我想最直接的解决方案是运行一个后台脚本来自动加密新检测到的文件。

答案1

您使用了错误的工具来完成这项工作。不要将输出通过管道传输到 OpenSSL,而是将输出写入位于加密文件系统上的文件。加密文件系统是为随机访问而设计的,文件加密工具openssl enc很少这样。

此外,openssl enc这是一种不好的加密货币,永远不应该使用。您使用的是 DES3,尽管某些标准仍然合法地允许 DES3,但强烈反对使用 AES。最糟糕的是,从密码导出密钥的方式openssl非常糟糕——它没有使用正确的密钥按键拉伸功能,因此暴力破解密码很容易。使用openssl命令行工具进行加密很难正确执行,而且永远不是完成这项工作的最佳工具。只需忘记它的openssl存在并使用适当的工具来完成这项工作,例如用于全盘加密的 LUKS、用于主目录加密的 Ecryptfs、用于每个文件加密的 gpg 或 7z。甚至编码文件系统挂载加密目录虽然有缺陷,但比openssl.

相关内容