如何使用AES 128保护HLS视频

时间:2017-01-09 08:46:23

标签: php ios web-services encryption hls

我必须使用Http Live Streaming从服务器流式传输移动设备的视频。 该文件包含.m3u8,其中列出了.ts文件。所以如何保护这些文件只能访问授权用户。

2 个答案:

答案 0 :(得分:1)

基本上你可以使用AES-128加密每个块。 AES-128使用128位密钥,密码块链接(CBC)和PKCS7填充,使用AES加密整个块。将使用初始化向量(IV)重新启动每个段的CBC。

您可以通过创建包含以下内容的密钥文件来使用ffmpeg执行此操作:

Key URI
Path to Key File
IV (optional)

您可以使用openssl创建密钥:

openssl rand 16 > video1.key

该文件将包含以下内容:

http://my-server.com/video1.key
video1.key

然后通过提供密钥文件的路径来使用ffmpeg:

ffmpeg -i input.mp4 -hls_time 6 -hls_key_info_file keyFile playlist.m3u8

这将创建段和清单,其中应包含#EXT-X-KEY:METHOD = AES-128,URI属性。

#EXT-X-KEY:METHOD=AES-128,URI="http://my-server.com/video1.key"

或者您可以使用生成HLS加密内容的商业服务,也可能使用像Bitmovin Encoding这样的DASH。

答案 1 :(得分:0)

我已经使用AES-128加密实现了类似的模块保护.ts文件并在服务器上解密。希望这会有所帮助:

https://stackoverflow.com/a/43446800/2429443