HLS 怎样实现加密

之前研究过一段时间,然后稍微做了一个demo,可以看下
hauk0101/video-hls-encrypt 【HLS 怎样实现加密 】

■网友
访问接口要有apikey才能取回m3u8的地址和生成session,然后用带session的m3u8里的ts地址去访问具体的ts切片的服务器,ts切片上也带session
■网友
HLS的加密 , 这个有两种方式: 1. 常见的一种是防盗链(严格来讲这不属于加密) , 也就是说给 m3u8 和 ts 文件的url动态生成一个 token , 比如这个:http://xxxxxx.com/m3u8/hunan/desc.m3u8?stream_id=hunan\u0026lt;m=1410595018\u0026amp;lkey=8bc1e0fe35f6321ef560f8ccffb70e5d\u0026amp;path=59.49.42.14,58.59.3.9,58.59.3.51\u0026amp;platid=10\u0026amp;splatid=1015\u0026amp;tag=live\u0026amp;cips=127.0.0.1\u0026amp;ext=m3u8\u0026amp;sign=live_tv这个url是随着很多参数动态变化的,比如时间,用户id、ip地址,内容id , 导致你无法使用这个url盗链,这种方式可以防止其他网站直接使用你的url来观看或者一般用户的下载。而ts文件的url 也需要加请求token , 会变化成类似 http://server/file.ts?token=xxxx 的方式, 这样的话, ts文件的磁盘存储位置不用变化,但是url是可以变化的(可以用query string方式,也可以用 url rewrite 方式), 注意因为url是m3u8生成的,意味着m3u8文件是动态生成而并非静态文件关于CDN缓存的问题, 首先m3u8文件肯定不能缓存, 否则ts分片的动态url怎么办?然后动态url的 ts分片CDN缺省是肯定不缓存的,但是可以稍微定制一下让CDN忽略URL中的token部分。很多CDN都有自己的防盗链方案。2. DRM加密。防盗链的方式是一种一般性的保护, 假如你想完全保护你的内容,必须给ts内容加密, m3u8有这个tag: #EXT-X-KEY , 一般来说会提供一个url获取加密key, 然后对ts片段解密来播放文件参见:解密HLS中的AES加密
■网友
ts切片的地址是固定的吧, 只要抓几个包分析一下,服务器上ts文件在那个路径不是一目了然吗。
■网友
AES加解密,DRM分发密钥


    推荐阅读