文档中心 视频 常见问题

常见问题

最近更新时间:2019-08-21 15:31:44

加密 HLS 与普通 HLS 有什么差异?

根据 HLS 文档规范,HLS 加密是对媒体文件(TS 文件)进行加密,m3u8 文件描述了播放器如何解密 TS 文件的方法。加密 HLS 的 m3u8 文件里包含了 #EXT-X-KEY 标签,该参数包含 METHOD 和 URI 属性。METHOD 属性描述了加密的算法,如 AES-128。URI 属性描述了获取解密密钥的地址, 播放器访问这个 URI 就可以获取到解密的密钥数据。播放器解析该 m3u8 文件时就会向此 URI 发起 HTTP 请求,从返回包里获取到密钥数据。

开通点播加密功能需要提供哪些信息?

开通点播加密功能需要提供 getkeyurl,即 #EXT-X-KEY 标签中的 URI 属性。
App 服务端需要部署客户端播放加密视频时获取密钥数据的 HTTP 服务。点播服务在加密视频时,会把加密视频的 m3u8 文件 #EXT-X-KEY 标签的 URI 属性设置为 getkeyurl。为了获取密钥和管理方便,我们会在 getkeyurl 后面附加三个参数 fileId、edk、keySource。fileId 即视频 Id,edk 是加密后的密钥, keySource 是密钥来源,使用点播内置 KMS 系统的加密文件时,keySource 为 VodBuildInKMS。播放器发起获取解密密钥请求时,App 服务端收到的 HTTP 请求的 QueryString 就会包含 fileId, edk等参数,App 服务端可以根据 fileId 和 edk 等参数来返回对应的 dk 给播放器。

播放器播放加密视频时从哪里获取解密密钥?

播放器播放加密视频时根据 m3u8 文件里的 #EXT-X-KEY URI 发起获取密钥的请求,即 App 提供给点播的 getkeyurl 地址。注意,播放器不是向点播服务器发起获取密钥的请求。App 服务器在调用点播 ProcessFile API 进行加密时,加密完成后再调用 获取视频解密密钥 API 获取到密钥后,需要将密钥保存起来,当播放器请求密钥时,根据播放器的请求参数来返回对应的密钥。

App 服务端如何返回密钥给播放器?

播放器向 App 服务端发起获取密钥请求时,App 服务端需要将对应的密钥数据返回给播放器,返回的密钥数据为16字节的二进制数据。通过 获取视频解密密钥 API 获取到密钥为 Base64 编码的字符串,返回给播放器时需要将这个字符串转换为二进制数据。例如,dkData 为 Base64 编码的密钥数据如下:

Java

  import java.util.Base64;
  byte[] dkBin = Base64.getDecoder().decode(dkData);

PHP

$dkBin = base64_decode($dkData);