本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SPEKE API v2.1-标准负载组件
根据加密器为内容定义的加密合约,通过单个 SPEKE 请求,加密器可以请求多个内容密钥,以及多种打包格式所需的清单信号。
为了涵盖所有这些方面,标准CPIX文档包含三个必填列表部分和一个用于实时内容密钥轮换的可选列表部分。
<cpix: ContentKeyList > 分区和顶级 < CPIX: cpix 元素 >
这是一个强制部分,与实时和 VOD 流式处理有关,其中定义加密程序需要使用的不同内容密钥。<cpix:ContentKeyList> 元素可以包含一个或多个 <cpix:ContentKey> 子元素,每个子元素都描述一个不同的内容密钥。
根据CPIX 2.4规范,该ContentKey@commonEncryptionScheme属性的值应为 ISO/IEC 23001-7:2016 中定义的4个字符的通用加密保护方案名称,或HTTP直播(HLS)规范中定义的加密方法之一。4 个字符的通用加密保护方案名称是:
-
'cenc': AES-CTR 模式完整样本和视频 NAL 子样本加密
-
'cbc1': AES-CBC 模式完整样本和视频 NAL 子样本加密
-
'cens': AES-CTR 模式部分视频 NAL 模式加密
-
'cbcs': AES-CBC 模式部分视频 NAL 模式加密
以下示例显示带有单个非加密内容密钥的 CPIX 文档:
<cpix:CPIX contentId="abc123" version="2.4" 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、version、xmlns:cpix、xmlns:pskc |
name、xmlns:enc |
一个 <cpix: ContentKeyList >、一个<cpix : >、一个 <cpix: DRMSystemList > ContentKeyUsageRuleList |
一个 <cpix: DeliveryDataList >,一个 <cpix : >ContentKeyPeriodList |
|
<cpix : >ContentKeyList |
- |
id |
至少一个 <cpix : >ContentKey |
- |
|
<cpix : >ContentKey |
孩子,常见 EncryptionScheme |
id、Algorithm、explicitIV |
一个<cpix:Data>(包含一个<pskc:Secret>) |
HDCP数据 |
|
<pskc:Secret> |
- |
- |
PlainValue 或者 EncryptedValue |
valueMac,<enc: EncryptionMethod >,<enc : >CipherData |
|
<cpix:HDCPData> |
- |
HLSHDCPlevel |
- |
HDCPOutputProtectionData |
<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>
有关 DRM SystemIDS 的完整列表,请参阅标识符存储库
| SPEKE 支持的元素 | 强制属性 | 可选属性 | 强制子元素 | 可选子元素 |
|---|---|---|---|---|
|
<cpix : >DRMSystemList |
- |
id |
至少一个 <cpix:DRMSystem> |
- |
|
<cpix:DRMSystem> |
kid、systemId |
ID、姓名、PSSH、hlsallowedCPC |
- |
ContentProtectionData SmoothStreamingProtectionHeaderData,两个具有不同播放列表属性值的 <cpix: HLSSignalingData > 元素 |
|
<cpix : >ContentProtectionData |
- |
结实 |
- |
- |
DRMSystem@PSSH如果 ISO-BMFF 封装应用于媒体段,则是强制性的。加密器仅将 DRMSystem.ContentProtectionData innerXML <pssh> 元素用于清单信令目的。
如果存在DRMSystem@PSSH且DRMSystem.ContentProtectionData包含 innerXML <pssh> 元素,则两个值应相同。
要在 HLS 清单中传输DRMSystem信号,请在 CPIX <cpix:HLSSignalingData playlist="media"> 请求和响应中同时包含<cpix:HLSSignalingData playlist="master">元素和元素。
SPEKE v2.1 可以表明每个 DRM 系统的预期的 DRM 稳健性或内容保护级别。DASH 和 HLS 通过不同的属性来表达这一点,如以下段落所述。
在 SPEKE v2.1 中,该<cpix:ContentProtectionData>元素支持可选@robustness属性。该属性的值是特定于 DRM 的,它宣布 DRM 系统对由引用的内容密钥加密的表示形式应达到的稳健性级别。加密器使用此值作为此 DRM 系统的 DASH 清单中ContentProtection元素的@robustness属性。
在 SPEKE v2.1 中,该<cpix:DRMSystem>元素支持可选@HLSAllowedCPC属性。对于由@systemId值标识的 DRM,此属性指定要添加到 HLS 多变量播放列表中EXT-X-STREAM-INF标签的ALLOWED-CPC属性中的值。该ALLOWED-CPC属性宣布 DRM 系统支持的相关内容密钥的内容保护配置 (CPC)。仅当为媒体内容创建 HLS 播放列表时,此属性才有意义。
<cpix: 部分 ContentKeyPeriodList >
这是一个可选部分,与直播和视频点播(VOD)流媒体相关,定义了应用于内容的加密周期。
<cpix:ContentKeyPeriodList> 元素可以包含一个或多个 <cpix:ContentKeyPeriod> 子元素,每个子元素都描述了实时时间线中不同的加密周期。使用 UUID 作为 id 属性值的一部分是一种常用的方法。
在 SPEKE v2.1 中,<cpix:ContentKeyPeriod>除了:@index
-
对于直播内容,该
@start属性是该时段开始的挂钟时间,@end属性是该时段结束时的挂钟时间。两者都是类型的xs:dateTime。 -
对于 VOD 内容,该
@startOffset属性是该时段的开始时间,该@endOffset属性是该时段的结束时间。两者都是类型的xs:duration。
<cpix:ContentKeyPeriodList> <cpix:ContentKeyPeriod id="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f" index="1" start="2026-01-01T00:00:00Z" end="2026-01-01T00:00:06Z" /> </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 |
孩子,本来打算的 TrackType |
- |
至少一个 <cpix: AudioFilter > 或一个 <cpix : >(*) VideoFilter |
<cpix : >KeyPeriodFilter |
|
<cpix : >KeyPeriodFilter |
periodId |
- |
- |
- |
|
<cpix : >AudioFilter |
- |
minChannels、maxChannels |
- |
- |
|
<cpix : >VideoFilter |
- |
minPixels、maxPixels、hdr、minFps、maxFps |
- |
- |
(*) 有关使用单个或多个内容密钥保护直播集中一条或多条曲目的详细说明,请参阅加密合同文档部分。_