使用ffmpeg视频切片并加密

想达到的目的:将一个 mp4 视频文件切割为多个 ts 片段,并在切割过程中对每一个片段使用 AES-128 加密,最后生成一个 m3u8 的视频索引文件;

电脑环境 Win10,已经安装了最新的 ffmpeg 和 openssl ;

如果要加密,首先准备好一下两个东西:

加密用的 key:

openssl rand  16 > enc.key ( 生成一个enc.key文件  )

另一个是 iv:

openssl rand -hex 16  ( 生成一段字符串,记下来)

新建一个文件 enc.keyinfo 内容格式如下:

Key URI  # enc.key的路径,使用http形式

Path to key file  # enc.key文件

IV  #  上面生成的iv

几个例子:

http://localhost/video/enc.key
enc.key
48c674428c1e719751565ad00fe24243

最后重点来了:

$ ffmpeg -y -i test-hoo.flv -hls_time 12 -hls_key_info_file enc.keyinfo 
-hls_playlist_type vod -hls_segment_filename "file%d.ts" playlist.m3u8

参数解释:

ffmpeg -y \

-i test.mp4 \

-hls_time 12 \       # 将test.mp4分割成每个小段多少秒

-hls_key_info_file enc.keyinfo \

-hls_playlist_type vod \   # vod 是点播,表示PlayList不会变
-hls_segment_filename "file%d.ts" \  #  每个小段的文件名

playlist.m3u8   #  生成的m3u8文件

hls_time设置后效果不一定准确,会受到关键帧大小及其他因素影响。

如果需要相对非常准确的切片,可以添加hls_flags的子参数split_by_time来保证生成的切片能够与hls_time设置的切片时长差不多。

转载自:原文章

使用ffmpeg视频进行加密,可以使用hls_key_info参数。以下是一个示例命令: ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -hls_time 10 -hls_key_info_file key_info playlist.m3u8 \[1\] 在这个命令中,input.mp4是要加密视频文件,key_info是包含加密信息的文件,playlist.m3u8是生成的加密后的视频播放列表文件。 另外,还有其他示例命令可以用于视频加密,如: /home/programs/video/ffmpeg/ffmpeg -y -i /home/programs/video/test/123.mp4 -hls_time 12 -hls_key_info_file /home/programs/video/conf/enc.keyinfo -hls_playlist_type vod -hls_segment_filename "file%d.ts" playlist.m3u8 \[2\] ffmpeg -y -i video.mp4 -hls_time 12 -hls_key_info_file enc.keyinfo -hls_playlist_type vod -hls_segment_filename "file%5d.ts" video.m3u8 \[3\] 这些命令中的参数可以根据具体需求进行调整,例如hls_time表示每个分段的时长,hls_key_info_file指定加密信息文件的路径,hls_playlist_type指定播放列表类型,hls_segment_filename指定分段文件的命名格式等。 #### 引用[.reference_title] - *1* [ffmpeg分解视频文件加密](https://blog.csdn.net/cnhome/article/details/73250495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用ffmpeg视频切片加密视频AES-128加密后播放](https://blog.csdn.net/shgh_2004/article/details/107249816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [使用ffmpeg视频切片加密](https://blog.csdn.net/zyxzj/article/details/104520298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值