这将引导您使用ffmpeg和openssl创建受保护/加密的hls流。
ffmpeg是一个完整的跨平台解决方案,用于记录,转换和流式传输音频和视频。 它包括libavcodec —领先的音频/视频编解码器库。
openssl : OpenSSL项目是一个共同的努力,旨在开发一个强大的,商业级,功能齐全的开源工具包,该工具包实现安全套接字层(SSL v2 / v3)和传输层安全性(TLS v1)协议以及全功能通用加密库。
受保护的HLS:已加密的苹果hls。 它不是完整的DRM解决方案。 在这种方法中,段文件使用AES-128位加密
我正在使用Ubuntu 13.10盒子。
apt-get install openssl ffmpeg
ffmpeg -i $ input -vcodec libx264 -acodec libvo_aacenc -b:v 128k -flags -global_header -map 0:0 -map 0:1 -f segment -segment_time 4 -segment_list_size 0 -segment_list list.m3u8 -segment_format mpegts流%d .ts
$ input是输入的视频文件。 此命令将创建流 xx .ts文件和list.m3u8文件 的列表 。 您可以在支持hls的播放器中或在android / ios设备上通过网络服务打开此m3u8文件,以确认分段是否正常运行。 (注意:段应与m3u8文件位于同一文件夹中)
#!/ bin / bash
keyFile =“ video.key”
openssl rand 16> $ keyFile
encryptionKey =`cat $ keyFile | hexdump -e ’16 / 1“%02x”’`splitFilePrefix =” stream”
cryptoSplitFilePrefix =” enc / $ {splitFilePrefix}”numberOfTsFiles =`ls $ {splitFilePrefix} *。ts | wc -l`
对于((i = 1; i <$ numberOfTsFiles; i ++))
做
initializeVector =`printf’%032x’$ i`
openssl aes-128-cbc -e -in $ {splitFilePrefix} $ i.ts -out $ {encryptedSplitFilePrefix} $ i.ts -nosalt -iv $ initializationVector -K $ encryptionKey做完了
这将创建一个“ enc”文件夹,并在该文件夹中创建加密的段。
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:是
#EXT-X-KEY:METHOD = AES-128,URI =“ video.key”
#EXT-X-TARGETDURATION:9
只需插入粗体行,其余部分保持原样。
全部完成,现在只需使用支持的播放器或iphone / android设备打开m3u8文件。 我已在Android 4.3+和iOS 9+上成功进行了测试。 祝好运。
随意问任何问题
最初发布在 dryize.wordpress.com上 。