ric*_*924 6 encryption openssl ffmpeg aes http-live-streaming
我正在做一个加密视频的项目,我对这个过程有一些问题.
我使用的命令转码mp4
到HLS
具有ts
的到10秒片段持续时间.
首先,我需要使用数据库中的密钥加密这些视频.但是,我不知道加密是否与ffmpeg一起使用.
其次,如果加密可以在没有ffmpeg的情况下工作,那么我该怎么办?我在google搜索过包括openssl/aes之类的内容,但我没有详细介绍,即使是ffmpeg链接:http: //www.ffmpeg.org/ffmpeg-all.html#srtp
谁能帮我一把,教我如何加密视频?谢谢你.
aer*_*tal 12
是的,你可以做到ffmpeg
.您需要将密钥从数据库写入文件video.key
.
您需要第二个文件,我们将key_info
其命名为关键信息文件.它具有以下格式:
key URI
key file path
IV (optional)
Run Code Online (Sandbox Code Playgroud)
例如:
http://example.com/video.key
video.key
Run Code Online (Sandbox Code Playgroud)
您告诉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
Run Code Online (Sandbox Code Playgroud)
这将使用AES-128在CBC模式下加密您的细分,并将相关标签添加到您的播放列表中:
#EXT-X-KEY:METHOD=AES-128,URI="http://example.com/video.key"
Run Code Online (Sandbox Code Playgroud)
您也可以根据需要手动加密段openssl
.这是一个示例脚本,其中每个IV等于段索引:
#!/bin/bash
ts_dir=/path/to/ts/
key_file=video.key
openssl rand 16 > $key_file
enc_key=$(hexdump -v -e '16/1 "%02x"' $key_file)
pushd $ts_dir
ts_cnt=$(ls *.ts | wc -l)
((ts_cnt--))
i=0
for i in $(seq -f "%01g" 0 $ts_cnt); do
iv=$(printf '%032x' $i)
ts_file=segment-$i.ts
echo [$i] $ts_file
openssl aes-128-cbc -e -in $ts_file -out encrypted_${ts_file} -nosalt -iv $iv -K $enc_key
done
popd
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11432 次 |
最近记录: |