文档中心 Cloud VoD User Guide HLS Common Encryption

HLS Common Encryption

更新时间:2023-02-08 16:32:05

为了进一步保护您的视频,Cloud VoD 提供 HLS AES 加密以防止您的视频被盗版。视频将被加密,需要特殊身份验证才能解密视频以进行播放。

工作原理

HLS定义了一个加密字段: #EXT-X-KEY ,用于标识视频文件是否加密,采用什么算法加密(目前云点播采用AES-128加密算法),并给出获取解密密钥的地址。
当播放器收到明文 m3u8 文件时,它会根据“#EXT-X-KEY”标签识别该文件是加密的。当需要播放时,播放器必须从“#EXT-X-KEY”中“URI”中提供的URL中获取解密密钥,然后根据“METHOD”参数中提供的算法信息对视频文件进行解密。
这是一个带有 EXT-X-KEY 的示例 m3u8 文件:
Self-Service Configuration for China Premium Service Onboarding
Cloud VoD提供HLS加密,采用AES-128算法,加密密钥由CloudVoD KMS管理,通过HTTPS传输,防止非法拦截。

CloudVoD KMS地址:https://api.cloudv.haplat.net/vod/videoManage/getHlsKeyByVideoId

如何使用

加密您的视频

  1. HLS Common Encryption默认关闭,请先联系客服开启此功能。
  2. 创建转码模板并启用Enrypted Transcoding
  3. 创建转码模板后,您需要对视频进行转码以触发加密。
  4. 加密完成后,视频列表中的状态会显示“Transcoded(encrypted)”,表示视频已经加密。

播放

视频加密后,身份验证参数将添加到 URL 的末尾。例如

https://cloudv.cdnetworks.com/appname/streamname/cloudv-transfer/playlist.m3u8?t=1666336607&k=3628a37a13d566252d&vid=cf352bbd01831000553f6000&r=f96237ab0183

建议设置自己的认证服务器来对最终用户进行认证,并且只向那些通过认证的用户提供带有认证信息的 URL。播放器获取正确的适配码或视频URL后,会从m3u8播放列表中获取密钥,然后对视频进行解密播放,过程主要分为以下几个步骤:
步骤1
使用验证参数 t、k、r 和 vid 获取加密视频的 URL。例如,原始视频网址为

https://cloudv.cdnetworks.com/vod/test.m3u8

添加以上认证参数后,URL变为

https://cloudv.cdnetworks.com/vod/test.m3u8?t=1533289173&k=b83eb56186b4c7c7ae7ff7e2a1ee58d9&vid=0f97c608015f10007f0f055d00000000&r=ff237ff1016410000950defa00000000

以下是获取/创建经过身份验证的 URL 的一些方法:

这样就需要每次有视频播放请求都要去查询url,查询url的次数多,会给自己的服务器带来很大的负担。

  • 也可以自己添加认证参数t、k、r、vid:
鉴权参数 描述
t 过期时间戳。
k 视频的VideoId,您可以在控制台或API getVideoList中查看videoId。
k k=md5 (secretKey+vid+t+r)。 SecretKey可以在控制台通过账号 > 安全设置 > API信息管理 > AccessKey管理获取
r r 是您可以分配的随机数。

第2步
当播放器请求携带认证参数的URL时,例如

https://cloudv.cdnetworks.com/vod/test.m3u8?t=1533289173&k=b83eb56186b4c7c7ae7ff7e2a1ee58d9&vid=0f97c608015f10007f0f055d00000000&r=ff237ff1016410000950defa00000000

云点播回传m3u8文件,自动在_EXT-X-KEY_中URI添加认证信息如下:

步骤 3
从云点播中获取m3u8后,播放器会自动发送请求,从云点播认证服务中获取内容密钥。
云点播认证服务会对认证信息进行校验,如果认证信息有效,KMS会将内容密钥发送给播放器,否则直接拒绝请求。
步骤4
播放器收到解密密钥后,即可对视频进行解密播放。解密密钥采用HTTPS加密发送,确保传输安全。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!