本文将介绍如何将使用的 EZDRM 相关服务集成到腾讯云点播的服务体系中,即使用腾讯云点播的媒资存储管理和转码能力的同时,保留 EZDRM 能力的使用。下文介绍主要分为两部分:接入流程和播放验证。
接入流程
准备工作
步骤一:注册服务
开通 EZDRM 账号,具体可以联系 EZDRM 厂商。
步骤二:配置服务
需要配置 FairPlay 信息,主要是上传 FairPlay 的证书信息。EZDRM 会对上传的 FairPlay 证书进行加密,具体配置方法可参考 EZDRM 控制台的指引说明。配置完成后,便可以在控制台看到各个 DRM 信息。如下图是 FairPlay 的账号信息:

通过 API 发起加密任务
通过 API 发起加密任务需要两步,先生成 KeyServerURL,然后再通过 API 发起任务。
步骤一:生成 KeyServerUrl
EZDRM 与其他 DRM 厂商有所区别,大部分厂商都是通过 HTTP POST 方式请求密钥信息,即使用 CPIX 协议的 xml 作为请求内容,通过在 xml 中声明所需要的密钥信息。但是 EZDRM 却不是,它是直接在 KeyServerUrl 里面指明需要的密钥信息,也就是使用 HTTP GET 方法,不能带 CPIX xml。
请求示例如下:
单密钥(preset0)
// 单密钥(preset0)// cbcs:curl -X GET "https://cpix.ezdrm.com/KeyGenerator/cpix2.aspx?k=79ee2a21-0c2b-4978-b681-d98e529271c8&t=xxxx&c=speke_cbcs&EncryptionScheme=cbcs"// cenc:curl X GET "https://cpix.ezdrm.com/KeyGenerator/cpix2.aspx?k=49d1e0c1-fdd7-4c8f-9eb4-94e207b796f3&t=xxxx&c=speke_cenc"
参数说明:
k 表示 keyid,可以用 Free Online GUID Generator 生成。t 是账号 token,可以从 EZDRM 控制台获取。EncryptionScheme 是加密模式,值为 cbcs、cenc,默认是 cenc。c 是 resourceid(contentid、assetid),任意字符串。使用的时候修改下 keyid 即可。
多密钥(preset1)
// 多密钥(preset1)// cbcs:curl -X GET "https://cpix.ezdrm.com/KeyGenerator/cpix2.aspx?k=empty,audio1=8aeb097c-4e3a-4731-8702-d362fff64e36,video1=64173552-957a-4dfc-86ba-09f2a3270f5f&t=xxxx&c=speke_cbcs&EncryptionScheme=cbcs"// cenc:curl -X GET "https://cpix.ezdrm.com/KeyGenerator/cpix2.aspx?k=empty,audio1=61967e3f-9345-430c-9ea7-6e0c5ee64bc6,video1=181320ff-d1bf-46f8-949a-82075bd78c2b,video2=3be09650-fdba-47d6-b2a5-d2e422e92b04&t=xxxx&c=speke_cenc"
参数说明:
k 表示 keyid,这里固定填 empty。audio1=xxx、video1=xxx、video2=xxx 表示请求3组密钥,后面的 uuid 就是对应的 keyid。EZDRM 最多支持3组密钥,audio1 和 video1/video2 只是标识并不是说 audio1 的密钥只能音频用。t 是账号 token,可以从 EZDRM 控制台获取。EncryptionScheme 是加密模式,值为 cbcs、cenc,默认是 cenc。c 是 resourceid(contentid、assetid),任意字符串。使用的时候修改下
audio1、video1 和 video2 即可。步骤二:通过 API 发起任务
数据结构
DrmInfo
字段名 | 类型 | 是否数组 | 描述 |
DrmTypes | string | 是 | DRM 类型数组,可传入多个,目前支持 [Widevien, Fairplay, Playready]。 模板切片格式必须为 fmp4、Fairplay:只能用于 HLS。 Widevine:可以用于 HLS 和 DASH。 Playready:可以用于 HLS 和 DASH。 如多种 DRM 类型组合包含 Fairplay,则只能用于 HLS,除此之外的其他 DRM 组合可以用于 HLS 或 DASH。 |
SPEKEDrm | SPEKEDrm | 否 | 第三方 DRM 信息。 |
SPEKEDrm
字段名 | 类型 | 是否数组 | 描述 |
ResoruceId | string | 否 | 资源标记,该字段内容为用户自定义; 支持1-128个字符的数字、字母、下划线(_)、中划线(-)。 该字段对应 Speke 请求中的 cid 字段。 |
KeyServerUrl | string | 否 | DRM 厂商访问地址,该字段内容从 DRM 厂商获取。 注意:不同 DRM 厂商对子流的数量限制不一样,如 PallyCon 限制不能超过5条子流,DRMtoday 厂商最多仅支持9条子流加密。 |
Vector | string | 否 | 加密初始化向量(十六进制32字节字符串),该字段内容为用户自定义。 |
EncryptionMethod | string | 否 | 加密方式,可选值 [cbcs, cenc]。 cbcs:所有 DRM 加密类型组合均支持。 cenc:仅包含 Playready、Widevine 的组合支持。 |
EncryptionPreset | string | 否 | 子流加密规则,可选值 [preset0, preset1],默认 preset0。 preset0:全部子流使用同一个 key 加密。 preset1:每个子流使用不同的 key 加密。 |
KeyAcquireMode | string | 否 | DRM 厂商请求方式。 可选值 [POST, GET]。 POST:大多数 DRM 厂商使用 POST 方式请求。 GET:部分 DRM 厂商支持 GET 方式请求。使用该种方式请求时,需要在 KeyServerUrl 字段带上各项请求信息。 |
请求示例
对于 EZDRM,目前主要支持 GET 请求,我们同步给到支持 POST 请求模式的示例代码。
{"FileId": "966***********","MediaStoragePath": null,"SubAppId": 2600*****,"MediaProcessTask": {"AdaptiveDynamicStreamingTaskSet": [{"Definition": 1010****,"DrmInfo": {"DrmTypes": ["Widevine","Fairplay"],"SPEKEDrm": {"ResourceId": "test-drm-0002","KeyServerUrl": "https://cpix.ezdrm.com/KeyGenerator/cpix2.aspx?k=*****************************&t=***********8*&c=speke_cbcs&EncryptionScheme=cbcs","Vector": "3995502b2c0bed6c54ad1c89af9c5ea3a97b4b71048d4178fb234b4c6e85b4c9","EncryptionMethod": "cbcs","EncryptionPreset": "preset0","KeyAcquireMode": "GET"}}}]}}
{"FileId": "966****************","MediaStoragePath": null,"SubAppId": 2600*****,"MediaProcessTask": {"AdaptiveDynamicStreamingTaskSet": [{"Definition": 1010****,"DrmInfo": {"DrmTypes": ["Widevine","Fairplay"],"SPEKEDrm": {"ResourceId": "test-drm-0001","KeyServerUrl": "https://fe.drmtoday.com/frontend/cpix/v1/***************/ingest/************","Vector": "3995502b2c0bed6c54ad1c89af9c5ea3a97b4b71048d4178fb234b4c6e85b4c9","EncryptionMethod": "cbcs","EncryptionPreset": "preset0"}}}]}}
播放验证
DRM 协议 | License URL |
FairPlay | License URL:https://fps.ezdrm.com/api/licenses/auth?px=xxxxxx Certificate URL:<存放 FairPlay Certificate 证书的 URL> |
Widevine | License URL:https://widevine-dash.ezdrm.com/proxy?pX=xxxxxx |
PlayReady | License URL:https://playready.ezdrm.com/cency/preauth.aspx?pX=xxxxxx |
注意:
Shaka Player 对不同子流使用密钥支持存在问题,因此建议用 preset0 测试。
Widevine 建议用 Mac Edge 或 Mac Chrome。
FairPlay 建议用 Mac Safari。
PlayReady 建议用 Windows11 Edge。
配置的参考界面如下图:


按照以上操作,您就完成了 EZDRM 服务对接腾讯云服务的全部操作。