想达到的目的:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用 AES-128 加密,最后生成一个m3u8的视频索引文件;
电脑环境 Fedora,已经安装了最新的ffmpeg;
如果要加密,首先准备好一下两个东西:
加密用的 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.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文件
生成的m3u8文件可以通过大部分播放器直接播放