当前位置: 首页 > news >正文

烟台网站建设长沙公司网络营销推广

烟台网站建设,长沙公司网络营销推广,如何建立网站平台,电商网站建设与管理 教案对于ffmpeg的AES-CTR加密有两种方式,一个是普通的整个视频做加密,另一个是对视频做切片处理,然后进行加密。 一、对于普通的加密方式 直接使用下面的命令就行 ffmpeg -i animal.mp4 -vcodec copy -acodec copy -encryption_scheme cenc-aes…

        对于ffmpeg的AES-CTR加密有两种方式,一个是普通的整个视频做加密,另一个是对视频做切片处理,然后进行加密。

  一、对于普通的加密方式

直接使用下面的命令就行

ffmpeg -i animal.mp4 -vcodec copy -acodec copy -encryption_scheme cenc-aes-ctr -encryption_key c7e16c4403654b85847037383f0c2db3 -encryption_kid a7e61c373e219033c21091fa607bf3b8  -encryption_iv 1234567890abcdef1234567890abcdef encrypted_IV3.mp4

        简单解释一下各种参数的作用,

-vcodec copy -acodec copy 只是将 animal.mp4的音视频数据直接拷贝到encrypted_IV3.mp4中

-encryption_scheme cenc-aes-ctr 表示采用的加密算法是cenc-aes-ctr

-encryption_key c7e16c4403654b85847037383f0c2db3 表是encryption_key 的值是c7e16c4403654b85847037383f0c2db3,这个值就是解密用的key

-encryption_kid a7e61c373e219033c21091fa607bf3b8  表示encryption_kid 的值是a7e61c373e219033c21091fa607bf3b8,加解密就是key和id的比对

-encryption_iv 1234567890abcdef1234567890abcdef 表示加密的初始向量IV为1234567890abcdef1234567890abcdef,这个参数可以不加,ffmpeg是有默认值的

encrypted_IV3.mp4 是加密后的MP4

         播放的话,采用的是ffplay,命令行如下

ffplay encrypted_IV.mp4 -dencryption_key c7e16c4403654b85847037383f0c2db3 -decryption_iv 1234567890abcdef1234567890abcdef

-dencryption_key 解密用的密钥,就是加密的encryption_key的值

-decryption_iv  如果加密的时候有设置加密初始向量的值,那么这里也需要加,对应的是encryption_iv的值,如果加密的时候采用的是默认的,这里可以不加

对于代码加密代码,此处复制的别人的,项目并不需要这个,我就没做验证

AVDictionary *opts = NULL;
// 指定加密参数
av_dict_set(&format_opts, "encryption_scheme", "cenc-aes-ctr", 0);
av_dict_set(&format_opts, "encryption_key", "c7e16c4403654b85847037383f0c2db3", 0);
av_dict_set(&format_opts, "encryption_kid", "a7e61c373e219033c21091fa607bf3b8", 0);
ret = avformat_write_header(AVFormatContext, &format_opts);

 解密的代码也是别人的,但我是经过验证的,确认可行

AVDictionary *format_opts = NULL;
// 指定解密key
av_dict_set(&format_opts, "decryption_key", "c7e16c4403654b85847037383f0c2db3", 0);
av_dict_set(&format_opts, "decryption_iv", "1234567890abcdef1234567890abcdef", 0);
err = avformat_open_input(&AVFormatContext, "path", AVInputFormat, &format_opts);

  二、对于流式的加密方式

命令行如下

ffmpeg -i animal.mp4 -movflags frag_keyframe -encryption_scheme cenc-aes-ctr -encryption_key c7e16c4403654b85847037383f0c2db3 -encryption_kid a7e61c373e219033c21091fa607bf3b8 encrypted.mp4

重复的参数我就不赘述了,

-movflags 选项用于设置MOV或MP4容器(文件格式)的特定标志。这些标志会改变输出文件的结构或行为。

frag_keyframe 强制每个关键帧都开始一个新的片段,使文件适合于流式传输。这个参数就是区分流式还是普通的一个关键参数

 播放的话和普通的一致。

出现下面这三个字段,就是说明成功了。工具我用的是Bento4,Bento4有个命令mp4dump可以查看。

  三、需要注意的是---moov

        ffmpeg有一个参数,叫empty_moov 。当你创建一个MP4文件时,通常它首先写入一个moov原子(也就是元数据),然后是mdat原子(包含实际的音频/视频数据)。但是,如果你想开始记录并在之后添加元数据,你需要首先写入一个空的moov原子,简单理解就是:

普通的MP4 的格式(从上到下):  moov -> data 

加了empty_moov的MP4格式:  empty_moov -> data -> moov

如果你把moov移动到了MP4末尾的同时做了aes-ctr加密,就会出错,因为ffmpeg在解密aes-ctr时要先知道加密的重要参数,而这个参数就在moov中,然后才能进行解密,如果moov放在了末尾,那ffmpeg就不知道要怎么解密了。该情况下我遇到的错误有下面几种

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x149204a10] Incorrect number of samples in encryption info

[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1426658b0] saio atom found without saiz

[h264 @ 0x7f93ba8a3e00] Invalid NAL unit size (217505651 > 1332).

[h264 @ 0x7f93ba8a3e00] Error splitting the input into NAL units.

http://www.15wanjia.com/news/20232.html

相关文章:

  • 石家庄站内换乘示意图最优化方法
  • 襄阳做网站多少钱seo引擎搜索网址
  • 政府网站信息内容建设实施意见网上推广方式
  • 百度做网站的特点企业网络推广的方法
  • 青岛网站制作网站哪个合肥seo好
  • 律师网站模版网站宣传和推广的方法有哪些
  • 东莞做公众号的网站nba季后赛最新排名
  • 手机版网站推荐常见的网络营销方式有哪几种
  • 安徽圣力建设集团网站百度推广步骤
  • 客户做百度推广后修改网站url需要哪些流程友情链接可以随便找链接加吗
  • iis怎么添加网站西安网站制作建设
  • 网站做下载页面java成品网站
  • 杭州企业标志设计优化绿松石什么意思
  • 吉林市网站制作哪家好百度地图推广怎么做的
  • 做逆战网站的名字吗网络培训心得体会总结
  • 广东知名网站建设深圳网络推广大师
  • 30个做设计的网站旅游网站网页设计
  • 网站内容优化方案太原seo
  • 网站文件上传完成后打开网站显示网站建设中怎么回事?宁波seo费用
  • 分析网站的关键词口碑营销成功案例
  • 做bbs网站教程百度搜索推广是什么
  • 网页设计与网站开发试题技术培训机构排名前十
  • 电子商城网站设计seo社区
  • 湖南定制响应式网站有哪些百度提升优化
  • 广东网站建设微信商城运营百度app官方正式版
  • 大淘客怎样做网站搜索引擎优化的主要工作有
  • b2c网上商城有哪些邯郸网站seo
  • 求可以做问卷测试的网站简述提升关键词排名的方法
  • 上海微信小程序网站建设中国网站排名前100
  • 如何做自己的淘宝网站如何开通网站