本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SPEKEAPIv2-标准有效载荷组件
根据为给定内容定义的加密合约,通过单个SPEKE请求,加密器可以请求多个内容密钥,以及针对多种包装格式的必需的 manfest 信号。
为了涵盖所有这些方面,标准CPIX文档由三个必填列表部分和一个用于实时内容密钥轮换的可选列表部分组成。
<cpix: ContentKeyList > 分区和顶层<cpix : >元素 CPIX
这是一个必填部分,与VOD直播和流媒体相关,定义了加密器需要使用的不同内容密钥。<cpix:ContentKeyList>
元素可以包含一个或多个 <cpix:ContentKey>
子元素,每个子元素都描述一个不同的内容密钥。
根据CPIX规范,该ContentKey@commonEncryptionScheme
属性的可能值在《ISO基本媒体文件格式文件中的通用加密》规范(ISO/IEC23001-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 |
name、xmlns:enc |
一个 <cpix: ContentKeyList >,一个<cpix : >,一个 <cpix: DRMSystemList > ContentKeyUsageRuleList |
一个 <cpix: DeliveryDataList >,一个 <cpix : >ContentKeyPeriodList |
<cpix : >ContentKeyList |
- |
id |
至少有一个 <cpix : >ContentKey |
- |
<cpix : >ContentKey |
孩子, commonEncryptionScheme,数据 |
id、Algorithm、explicitIV |
一个 <pskc:Secret> |
- |
<pskc:Secret> |
PlainValue 或 EncryptedValue |
价值 MAC |
- |
<enc: EncryptionMethod >,<enc : >CipherData |
<cpix : >部分 DRMSystemList
这是一个必修部分,与VOD直播和流媒体有关,它定义了需要与内容密钥一起使用的不同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>
有关完整列表 DRMsystemIDs,请参阅 DASH-IF 标识符存储库的 “内容保护” 部分
支持的元素 SPEKE | 强制属性 | 可选属性 | 强制子元素 | 可选子元素 |
---|---|---|---|---|
<cpix : >DRMSystemList |
- |
id |
至少有一个 <cpix : >DRMSystem |
- |
<cpix : >DRMSystem |
孩子,systemId |
身份证、姓名、PSSH |
- |
ContentProtectionData, SmoothStreamingProtectionHeaderData,两个 <cpix: HLSSignalingData > 具有不同播放列表属性值的元素 |
DRMSystem@PSSH
如果 ISO-BMFF 封装应用于媒体段,则为必填项。 DRMSystem.ContentProtectionData
加密器仅将内部XML<pssh>
元素用于清单信令目的。
如果DRMSystem@PSSH
存在且DRMSystem.ContentProtectionData
包含内部XML<pssh>
元素,则两个值应相同。
如果要在HLS清单中携带DRMSystem
信号,则CPIX请求<cpix:HLSSignalingData playlist="media">
和响应中必须同时包含 a 和 a <cpix:HLSSignalingData playlist="master">
元素。
<cpix : >部分 ContentKeyPeriodList
这是一个可选部分,仅与实时流式处理有关,它定义了应用于内容的加密周期。
<cpix:ContentKeyPeriodList>
元素可以包含一个或多个 <cpix:ContentKeyPeriod>
子元素,每个子元素都描述了实时时间线中不同的加密周期。UUIDs作为 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、index |
- |
- |
- |
如果使用加密周期,则还需要将加密密钥附加到CPIX文档中的一个加密周期,如以下部分所示。
<cpix : >部分 ContentKeyUsageRuleList
这是一个必修部分,与VOD直播和流媒体有关,定义了不同的内容密钥将如何保护直播内和加密时期的曲目。
<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 |
- |
minChannels, maxChannels |
- |
- |
<cpix : >VideoFilter |
- |
minPixels,maxPixels, hdrminFps, maxFps |
- |
- |
(*)要详细了解如何使用单个或多个内容密钥来保护流集中的一个或多个轨道,请参阅加密合约文档部分。