hls(m3u8)本身有一套自己的加密方式,可以保证片段是安全的。但是本身在传输的过程中加密key请求容易被截获,这样存在一点片段key被截取的风险,截取者就可以根据片段和key重新还原m3u8视频文件。
在客户端里,我们可以对EXT-X-KEY再进行一次加密,这样客户端在使用的时候,对EXT-X-KEY再次进行解密,这样,可以更近一步保证视频的安全,虽然无绝对安全,但是可以提高反解密难度。
这里我们以VLC-Android播放器举例,因为是开源,容易修改源码达到业务目的。vlc中解析m3u8(hls)格式的类在playlist目录下的Parser.cpp文件里。
Parser.cpp中【parseSegments】方法用于解析片段,并获取到key的内容,在这里,我们就可以对key进行再次解密。
case AttributesTag::EXTXKEY:分支里,就是处理EXTXKEY的获取逻辑。
encryption.key 是通过【m3u8->getEncryptionKey(keyurl.toString())】方法来获取的,只要我们在这里把key的值通过指定规则解密即可。