本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SPEKE API v2-标准有效载荷组件
根据为给定内容定义的加密合约,通过单个 SPEKE 请求,加密器可以请求多个内容密钥,以及多种打包格式的必要的 manfest 信令。
为了涵盖所有这些方面,标准 CPIX 文档由三个必填列表部分以及一个用于直播内容密钥轮换的可选列表部分组成。
<cpix:ContentKeyList > 分区和顶级<cpix:CPIX>元素
这是一个必修部分,与直播和视频点播都相关,定义了加密器需要使用的不同内容密钥。<cpix:ContentKeyList>
元素可以包含一个或多个<cpix:ContentKey>
子元素,每个子元素描述一个不同的内容密钥。
根据 CPIX 规范,该ContentKey@commonEncryptionScheme
属性的可能值在 ISO 基础媒体文件格式文件格式文件中的通用加密规范(ISO/IEC 23001-7:2016)中定义:
-
'cenc':AES-CTR 模式完整样本和视频 NAL 子样本加密
-
'cbc1':AES-CBC 模式完整样本和视频 NAL 子样本加密
-
'cens':AES-CTR 模式部分视频 NAL 模式加密
-
'cbcs':AES-CBC 模式部分视频 NAL 模式加密
以下示例显示了具有单个未加密内容密钥的 CPIX 文档:
<cpix:CPIX contentId="abc123" version="2.3" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc"> <cpix:ContentKeyList> <cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="98ee5596-cd3e-a20d-163a-e382420c6eff" commonEncryptionScheme="cbcs"> <cpix:Data> <pskc:Secret> <pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue> </pskc:Secret> </cpix:Data> </cpix:ContentKey> </cpix:ContentKeyList> ... </cpix:CPIX>
默认情况下,内容密钥不加密,如下例所示。但是加密器可以通过包含 <cpix:DeliveryDataList > 元素来请求对内容密钥进行加密。有关更多详细信息,请参阅内容密钥加密部分。
SPEKE 支持的元素 | 强制构造函数属性 | 可选属性 | 强制构造函数元素 | 可选的子元素 |
---|---|---|---|---|
<cpix:CPIX> |
ContentID、版本、xmlns: cpix、xmlns: pskc |
名称,xmlns: enc |
一个 <cpix:ContentKeyList >,一个 <cpix: drmSystemList >,一个 <cpix:ContentKeyUsageRuleList > |
一个 <cpix:DeliveryDataList >,一个 <cpix:ContentKeyPeriodList > |
<cpix:ContentKeyList > |
- |
id |
至少有一个 <cpix:ContentKey > |
- |
<cpix:ContentKey > |
孩子 commonEncryptionScheme,数据 |
id、算法、expliciTIV |
一 <pskc:Secret> |
- |
<pskc:Secret> |
PlainValue 或者 EncryptedValue |
ValueMac |
- |
<enc:EncryptionMethod >,<enc:CipherData > |
<cpix: DRMSystemList > 部分
这是必修部分,与直播和视频点播都相关,定义了需要利用的不同 DRM 系统以及内容密钥。
以下示例显示了具有单个 DRM 系统规范的 PlayReady DRM 系统列表:
<cpix:DRMSystemList> <cpix:DRMSystem kid="98ee5596-cd3e-a20d-163a-e382420c6eff" systemId="9a04f079-9840-4286-ab92-e65be0885f95"> <cpix:HLSSignalingData playlist="media">HicXmbZ2m[...]4==</cpix:HLSSignalingData> <cpix:HLSSignalingData playlist="master">HicXmbZ2m[...]jEi</cpix:HLSSignalingData> <cpix:ContentProtectionData>t7WwH24FI[...]YCC</cpix:ContentProtectionData> <cpix:PSSH>FFFFanBzc[...]A==</cpix:PSSH> <cpix:SmoothStreamingProtectionHeaderData>s5RrJ12HL[...]UBB</cpix:SmoothStreamingProtectionHeaderData> </cpix:DRMSystem> </cpix:DRMSystemList>
有关 DRM SystemID 的完整列表,请参阅 DASH-IF 标识符存储库的内容保护部分
SPEKE 支持的元素 | 强制构造函数属性 | 可选属性 | 强制构造函数元素 | 可选的子元素 |
---|---|---|---|---|
<cpix: DRMSystemList > |
- |
id |
至少一个 <cpix:DRMSystem> |
- |
<cpix:DRMSystem> |
孩子,SystemID |
ID、姓名、PSH |
- |
ContentProtectionData SmoothStreamingProtectionHeaderData,两个具有不同播放列表属性值的 <cpix: HLSSignalingData > 元素 |
DRMSystem@PSSH
如果将 ISO-BMFF 封装应用于媒体段,则为必填项。 DRMSystem.ContentProtectionData
加密器仅利用 innerXML<pssh>
元素来实现明显的信号传送目的。
如果存在DRMSystem@PSSH
且DRMSystem.ContentProtectionData
包含 innerXML<pssh>
元素,则两个值应相同。
如果要在 HLS 清单中DRMSystem
传输信令,则 CPIX 请求<cpix:HLSSignalingData playlist="media">
和响应中必须包含 a 和 a<cpix:HLSSignalingData playlist="master">
元素。
<cpix:ContentKeyPeriodList > 部分
这是一个可选部分,仅与直播相关,定义了应用于内容的加密期限。
该<cpix:ContentKeyPeriodList>
元素可以包含一个或多个<cpix:ContentKeyPeriod>
子元素,每个子元素都描述实时时间轴中不同的加密时期。使用 UUID 作为 id 属性值的一部分是一种常用的方法。
<cpix:ContentKeyPeriodList> <cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" /> </cpix:ContentKeyPeriodList>
SPEKE 支持的元素 | 强制构造函数属性 | 可选属性 | 强制构造函数元素 | 可选的子元素 |
---|---|---|---|---|
<cpix:ContentKeyPeriodList > |
- |
id |
至少有一个 <cpix:ContentKeyPeriod > |
- |
<cpix:ContentKeyPeriod > |
ID,索引 |
- |
- |
- |
如果使用加密周期,则还需要将加密密钥附加到 CPIX 文档中的一个加密周期,如以下部分所示。
<cpix:ContentKeyUsageRuleList > 部分
这是一个必修部分,与直播和视频点播都相关,定义了不同的内容密钥将如何保护直播集内和加密时期的曲目。
<cpix:ContentKeyUsageRuleList > 元素可以包含一个或多个 <cpix:ContentKeyUsageRule > 子元素,每个子元素都描述加密器可能在特定的加密周期内应用给定内容密钥的轨道。<cpix:AudioFilter > 元素中必须至少有一个 <cpix:VideoFilter > 元素或一个 <cpix:ContentKeyUsageRule > 元素。
以下示例显示了一个简单的列表,其中只有一条规则,在特定加密期内将单个内容密钥应用于所有音频和视频曲目。
<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="ALL"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>
SPEKE 支持的元素 | 强制构造函数属性 | 可选属性 | 强制构造函数元素 | 可选的子元素 |
---|---|---|---|---|
<cpix:ContentKeyUsageRuleList > |
- |
id |
至少有一个 <cpix:ContentKeyUsageRule > |
- |
<cpix:ContentKeyUsageRule > |
孩子, intendedTrackType |
- |
至少有一个 <cpix:AudioFilter > 或者一个 <cpix:VideoFilter > (*) |
<cpix:KeyPeriodFilter > |
<cpix:KeyPeriodFilter > |
PeriodID |
- |
- |
- |
<cpix:AudioFilter > |
- |
最小通道,最大通道 |
- |
- |
<cpix:VideoFilter > |
- |
minPixels、MaxPixels、hdr、minFPs、ma |
- |
- |
(*) 有关使用单个或多个内容密钥保护直播集中的一首或多首曲目的详细说明,请参阅加密合同文档部分。 _