ffmpeg 将MP4文件转成加密切片

一种是说,固定把mp4文件切成小块存放,和原来的MP4无关了
将一个mp4视频文件切割为N个ts片段,
并在切割过程中使用指定key加密码对每一个片段使用 AES-128 加密,
最后生成一个m3u8的播放索引文件(就像节目清单)

另一种w3c标准为dash切片

准备工具
ffmpeg
openssl
注:电脑版时以上两个工具请使用命令行版本
1.先准备好用于加密和解密用的key文件
加密用的 key
openssl rand 16 > enc.key ( 直接创建生成一个enc.key文件 )
另一个是 iv 可选
openssl rand -hex 16 ( 控制台生成一段字符串,复制记下来)
2.手工新建一个文件 enc.keyinfo 内容格式如下:
# enc.key的路径,使用http形式 看后面的例子
Key URI
# enc.key文件
Path to key file
# 上面生成的iv

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

3.使用以下ffmpeg命令切片并加密

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文件
ffmpeg -y -i test.mp4 -hls_time 12 -hls_key_info_file enc.keyinfo -hls_playlist_type vod -hls_segment_filename "file%d.ts" playlist.m3u8

可选参数 -c copy -bsf:v h264_mp4toannexb

生成的m3u8文件可以通过大部分播放器直接播放
如果移动媒体存放路径,比如放在其它电脑或服务器,m3u8文件可能需要进行修改,因为里面记录是绝的路径,或改成相对路径。

分段后悔想合并怎么办?(非加密)

ffmpeg.exe -allowed_extensions ALL -i playlist.m3u8 -acodec copy -vcodec copy -f mp4 output.mp4