正确的做法是转码时让 ffmpeg 自动处理,而不是转码后自己去处理。以下方法来自 GPT-4o:
要使用 FFmpeg 将 MP4 格式的视频转码为 HLS 流并使用 HLS 标准加密( AES-128 ),你可以使用以下命令:
ffmpeg -i input.mp4 \
-c:v libx264 -c:a aac \
-hls_time 10 \
-hls_key_info_file key_info_file.txt \
-hls_playlist_type vod \
output.m3u8
在使用这个命令之前,你需要准备一个 key_info_file.txt 文件,其中包含加密密钥信息。该文件的格式如下:
key_uri
key_file_path
key_iv
key_uri:在播放列表中引用密钥的 URI (通常是密钥的 URL )。
key_file_path:包含实际密钥的文件路径。
key_iv:初始化向量( IV ),如果不指定,FFmpeg 会自动生成。
例如:
https://example.com/keys/key.bin./key.bin
0123456789abcdef0123456789abcdef
你还需要生成一个 16 字节的密钥,并将其保存到 key.bin 文件中。可以使用以下命令生成随机密钥:
openssl rand 16 > key.bin
请确保 key_info_file.txt 和 key.bin 文件的路径正确,并根据你的需求调整 FFmpeg 命令中的参数。