本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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、版本、xmlns:cpix、xmlns:pskc |
name, xmlns:enc |
一個 <cpix:ContentKeyList>、一個 <cpix:DRMSystemList>、一個 <cpix:ContentKeyUsageRuleList> |
一個 <cpix:DeliveryDataList>,一個 <cpix:ContentKeyPeriodList> |
|
<cpix:ContentKeyList> |
- |
id |
至少一個 <cpix:ContentKey> |
- |
|
<cpix:ContentKey> |
kid, commonEncryptionScheme |
id、演算法、explicitIV |
一個 <cpix:Data> (包含一個 <pskc:Secret>) |
HDCPData |
|
<pskc:Secret> |
- |
- |
PlainValue 或 EncryptedValue |
ValueMAC、<enc:EncryptionMethod>、<enc:CipherData> |
|
<cpix:HDCPData> |
- |
HLSHDCPLevel |
- |
HDCPOutputProtectionData |
<cpix:DRMSystemList> 區段
這是必要區段,與即時和 VOD 串流相關,可定義需要與內容金鑰搭配使用的不同 DRM 系統。
下列範例顯示具有單一 PlayReady DRM 系統規格的 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的完整清單,請參閱 DASH-IF 識別符儲存庫的內容保護一節
| 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>子元素,每個元素都會在即時時間軸中描述不同的加密期間。使用 UUIDs 做為 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、索引 |
start、end、startOffset、endOffset |
- |
- |
如果使用加密期間,則加密金鑰也需要連接到 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> |
kid, intendedTrackType |
- |
至少一個 <cpix:AudioFilter> 或一個 <cpix:VideoFilter> (*) |
<cpix:KeyPeriodFilter> |
|
<cpix:KeyPeriodFilter> |
periodId |
- |
- |
- |
|
<cpix:AudioFilter> |
- |
minChannels、maxChannels |
- |
- |
|
<cpix:VideoFilter> |
- |
minPixels、maxPixels、hdr、minFps、maxFps |
- |
- |
(*) 如需使用單一或多個內容金鑰來保護串流集中一或多個音軌的詳細說明,請參閱加密合約文件一節。_