首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFmpeg:如何制作MP4通用加密视频

FFmpeg:如何制作MP4通用加密视频
EN

Stack Overflow用户
提问于 2017-07-06 11:10:45
回答 2查看 13.7K关注 0票数 12

使用ffmpeg进行CENC加密的正确语法是什么?

FMPEG3.0发行说明包括“通用加密(CENC) MP4编码和解码支持”,而libavformat/movenccenc.h和libavformat/movenccenc.c文件似乎包含了根据通用加密标准加密MP4文件所需的一切。

但是,我在ffmpeg手册页面中找不到任何关于此主题的文档。

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-06 20:39:59

Mulvya的回答涵盖了ffmpeg-options。

我只是添加了一个具体的例子,并讨论了回放,因为我昨天(独立地)做了一些实验。

加密示例

代码语言:javascript
复制
ffmpeg -i SampleVideo_1280x720_1mb.mp4 -vcodec copy -acodec copy -encryption_scheme cenc-aes-ctr -encryption_key 76a6c65c5ea762046bd749a2e632ccbb -encryption_kid a7e61c373e219033c21091fa607bf3b8 SampleVideo_1280x720_1mb_encrypted.mp4

(当然,您的用法可能有所不同;我只是对视频和音频进行了重新复用)

播放/解码

ffplay

代码语言:javascript
复制
ffplay SampleVideo_1280x720_1mb_encrypted.mp4 -decryption_key 76a6c65c5ea762046bd749a2e632ccbb

但由于这或多或少是一个原型播放器,人们可能想要使用更强大的东西。

mpv

代码语言:javascript
复制
mpv --demuxer-lavf-o=decryption_key=76a6c65c5ea762046bd749a2e632ccbb SampleVideo_1280x720_1mb_encrypted.mp4

有一些讨论here,因为我预期的第一个命令行的行为不像预期的那样!

编辑:试图回答雷诺的问题

encryption_key只有128位= 16字节编码为十六进制(遵循AES-128-CTR的usage )。因此,配置为16字节和hex.encoding的random.org将是一个有效的密钥(但我一般不建议信任外部资源)。我使用的是python的secrets module,它可以归结为:secrets.token_hex(16)。解码时需要使用此encryption_key

encryption_kid Key ID只是这个键的一个标识符,可能需要用于更复杂的使用模式(我在猜测!你可以这样做:嘿,视频...我需要1000把钥匙中的哪一把?)我想它是必须通过的,但解码时不是必需的(如果你知道哪个key用于哪个视频)。

官方的参考资料是:

票数 16
EN

Stack Overflow用户

发布于 2017-07-06 16:26:44

运行ffmpeg -h muxer=mp4将生成MP4多路复用器的所有可用选项,其中包括

代码语言:javascript
复制
-encryption_scheme <string>     E....... Configures the encryption scheme, allowed values are none, cenc-aes-ctr
-encryption_key    <binary>     E....... The media encryption key (hex)
-encryption_kid    <binary>     E....... The media encryption key identifier (hex)

这些选项及其值应该放在所有输入之后和输出文件名之前。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44939166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档