Classic/VPC環境で利用できます。
CPIX APIを通じてコンテンツに DRM暗号化を適用できます。CPIX APIは、DASH産業フォーラムで定義した Content Protection Information Exchange Format(CPIX)標準に基づいて実装された APIで、メディアコンテンツのパッケージ化中にマルチ DRMを適用するために必要なキーを連携する規約を定義します。CPIX APIを利用すると、CPIXベースのキー連携をサポートするエンコーダー・トランスコーダーソリューションと DoveRunner(旧 PallyCon)マルチ DRMを手軽に連携できます。
Live Stationサービスの連携方法は、Live Stationチャンネルの作成をご参照ください。
CPIX APIベースのDRMコンテンツ暗号化
CPIX APIを利用して DRMコンテンツ暗号化を適用する方法は次の通りです。
| 区分 | リンク | 説明 |
|---|---|---|
| DoveRunner CPIX API | DoveRunner CPIX API連携ガイド | DoveRunner(旧 PallyCon)で実装した CPIX APIで、エンコーダー/トランスコーダーソリューションと連携してマルチ DRMを適用。Flussonic Media Server連携にも使用 |
| SPEKE API | SPEKEガイド | AWS Elementalで実装した CPIX APIで、DoveRunnerと事前連携して AWS Elemental MediaPackageと MediaConvertでマルチ DRMを適用 |
| ATEME NEA-DVR CPIX API | ATEME NEA-DVRガイド | Anevia(ATEMEに買収される)で実装した CPIX APIで、NEA-DVRソリューションと事前連携してマルチ DRMを適用 |
- DoveRunner(旧 PallyCon) CPIX APIクライアントは、主要な開発言語であらかじめ実装された CPIXクライアントモジュールを提供します。
- 各モジュールは KMSサーバとの通信のために XML形式のリクエストデータを作成し、レスポンスデータを解釈する機能を提供します。
DoveRunner CPIX APIスペック
DoveRunner(旧 PallyCon) CPIX APIクライアントは次のスペックをサポートします。
| 項目 | サポートスペック | 説明 |
|---|---|---|
| 開発言語 | C++, C#, Java, Python | DRMパッケージ化連携開発環境に応じて言語別サンプルコードを提供 |
| DRMタイプ | Widevine, PlayReady, FairPlay, NCG, HLS_NCG |
|
| 暗号化方式 | CENC, CBC1, CENS, CBCS | クライアントプラットフォームがサポートする AES暗号化方式に応じて、一般的に CENCまたは CBCSを指定 |
| トラックタイプ | ALL_TRACKS, AUDIO, SD, HD, UHD1, UHD2 | マルチキーパッケージ化時にトラックごとに異なる暗号化キーを適用する際に使用 |
マルチ DRM暗号化方式
DRMコンテンツ暗号化方式は次の通りです。
| 暗号化方式 | プロトコル | DRMタイプ | 暗号化アルゴリズム | 対応端末 |
|---|---|---|---|---|
| DRM | HLS |
|
AES-CBC | Mac/iOS Safariブラウザ、iOS/iPadOS/tvOSアプリ、HLS HTML5 |
| DRM | DASH |
|
CENC (Common Encryption) | MS Edge, IE11, Chrome, Firefox, Opera DASH HTML5 |
One Click Multi DRMの利用シナリオ
One Click Multi DRMサービスの利用シナリオは次の通りです。
- DRMコンテンツを暗号化します。
- クライアント(プレイヤー)で DRMライセンスをリクエストします。リクエストの際は、
contentId、drmTypeなどのコンテンツ設定情報が必要です。 - クライアントが発行したライセンスで DRMコンテンツを再生します。
One Click Multi DRMサービスでは、サイトに設定されたポリシーに基づき、再生・セキュリティルールが適用されたライセンスを発行します。そのため、リクエストされたライセンス情報と暗号化された DRMコンテンツ情報が一致しない場合、再生が制限されたり失敗する可能性があります。
Liveコンテンツの DRM暗号化
Liveコンテンツの DRM暗号化方式は次の通りです。
Live Stationを使用する場合
Live Stationを使用する場合の Liveコンテンツ DRM暗号化方式は次の通りです。
- One Click Multi DRMを通じてサイトを作成します。
- Live Station > Channel Management メニューからチャンネルを作成します。
- 作成時、Multi DRM項目で1.で作成したサイトを選択します。
Live Stationを使用しない場合
Live Stationを使用しない場合の Liveコンテンツ DRM暗号化方式は次の通りです。
- 次の項目を組み合わせてコンテンツ DRM暗号化 APIを呼び出します。
- URL: DoveRunner(旧 PallyCon) CPIX APIまたは SPEKE APIなど、API別キーリクエスト URL
- 追加 URI: One Click Multi DRMサイトの詳細情報から獲得した KMSトークン
- APIレスポンスを介してコンテンツ暗号化のための暗号化データを取得します。
- 取得した DRM暗号化情報をサードパーティエンコーダー・トランスコーダー・パッケージソリューション連携ソリューションに適用します。
CPIX APIレスポンスから取得する DRM情報は次の通りです。
| フィールド | 説明 |
|---|---|
key_id_hex, key_id_b64, key_hex, key_b64, iv_hex, iv_b64 |
16進数または Base64形式の Key ID、Key、IVの値 |
pssh |
PlayReadyまたは Widevineで使用される PSSHデータ(ヘッダを含む) |
pssh_payload_only |
PSSHデータからヘッダを除いた Payload部分 |
key_uri |
FairPlay DRMが適用された HLS m3u8ファイルの#EXT-X-Keyタグに含まれる URIパラメータの値 |
VODコンテンツの DRM暗号化
VODコンテンツの DRM暗号化方式は次の通りです。
VOD Stationを使用する場合
VOD Stationを使用する場合の VODコンテンツ DRM暗号化方式は次の通りです。
- One Click Multi DRMを通じてサイトを作成します。
- 外部 DRMサービスを使用する場合は、この段階はスキップできます。
- VOD Station > Channel メニューからチャンネルを作成します。
- 作成時、Multi DRM項目に次のいずれか1つを適用します。
- One Click Multi DRM
- DRM Site: 有効化状態の DRMサイトを選択
- Content ID: 再生しようとするコンテンツの固有 ID(DRMパッケージ化時に使用)
- <例>
drm-contents
- <例>
- 外部 DRM
- DRMのタイプ: 使用する DRMタイプを選択
- Content ID: 再生しようとするコンテンツの固有 ID(CPIX APIリクエストボディ(XML)に含める)
- <例>
drm-contents
- <例>
- DRM System ID: DRMシステムの固有 ID(CPIX APIリクエストボディ(XML)に含める)
- 選択した DRMタイプによって1つまたは2つの System IDが必要で、必ず1行に1つずつ入力
- <例>
9A04F079-9840-4286-AB92-E65BE0885F95、EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED
- DRM Key URL: CPIX APIリクエスト URL
- DRMプロバイダの暗号化キーリクエストの形式に合わせて入力
- <例>
https://kms.example.com/cpix/v1/key/ujllldopmquy==
- One Click Multi DRM
- 作成時、Multi DRM項目に次のいずれか1つを適用します。
VOD Stationによる DRM暗号化は CPIX v1のみサポートしています。
VOD Stationを使用しない場合
VOD Stationを使用しない場合の VODコンテンツ DRM暗号化方式は次の通りです。
- 次の項目を組み合わせてコンテンツ DRM暗号化 APIを呼び出します。
- URL: DoveRunner(旧 PallyCon) CPIX APIまたは SPEKE APIなど、API別キーリクエスト URL
- 追加 URI: One Click Multi DRMサイトの詳細情報から獲得した KMSトークン
- APIレスポンスを介してコンテンツ暗号化のための暗号化データを取得します。
- 取得した DRM暗号化情報をサードパーティエンコーダー・トランスコーダー・パッケージソリューション連携ソリューションに適用します。
リクエスト
DoveRunner(旧 PallyCon) CPIX APIを利用したリクエスト形式は次の通りです。
- リクエスト URL
POST https://kms.pallycon.com/v1/cpix/pallycon/getKey/{kmsToken}
- リクエストヘッダ
- リクエストボディ
フィールド タイプ 必須の有無 説明 cpix:CPIXObject Required コンテンツキーと DRMシステム情報を含む CPIX文書のルート要素 └ cpix:ContentKeyListObject Required コンテンツキーリストを定義するコンテナ要素 └ cpix:ContentKeyObject Required kid(Key ID)属性を持つ個々のコンテンツキー情報└ cpix:DRMSystemListObject Required DRMシステムリストを定義するコンテナ要素 └ cpix:DRMSystemObject Required kid(Key ID)とsystemId(DRMシステム識別子)属性を持つ各 DRMシステム情報 - リクエスト例
curl --location --request POST 'https://kms.pallycon.com/v1/cpix/pallycon/getKey/{kmsToken}' \ --header 'x-ncp-apigw-timestamp: {Timestamp}' \ --header 'x-ncp-iam-access-key: {Access Key}' \ --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \ --header 'Content-Type: application/xml' \ --header 'x-ncp-region_code: KR' \ --data '<?xml version="1.0" encoding="UTF-8"?> <cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke"> <cpix:ContentKeyList> <cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey> </cpix:ContentKeyList> <cpix:DRMSystemList> <!-- Common encryption / MSS (Playready) --> <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="9a04f079-9840-4286-ab92-e65be0885f95" /> <!-- Common encryption (Widevine)--> <cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" /> </cpix:DRMSystemList> </cpix:CPIX>'
レスポンス
DoveRunner(旧 PallyCon) CPIX APIリクエストのレスポンス形式は次の通りです。
- レスポンスボディ
フィールド タイプ 必須の有無 説明 cpix:CPIXObject - コンテンツ ID(CID)キーと DRMシステム情報を含む CPIX文書のルート要素 └ cpix:ContentKeyListObject - コンテンツキーリストを定義するコンテナ要素 └ cpix:ContentKeyObject - kid(Key ID)とexplicitIV(初期化ベクトル)属性を持つ個々のコンテンツキー情報kidの値は、リクエストデータに入力された値とは別に、KMSで新しく作成された値が適用され、キーと IVは Base64でエンコードされた形式で返される
└ cpix:DataObject - コンテンツキーデータを含む要素 └ pskc:SecretObject - コンテンツキーの秘密データを含む要素 └ pskc:PlainValueString - Base64でエンコードされたコンテンツキーの値 └ cpix:DRMSystemListObject - DRMシステムリストを定義するコンテナ要素 └ cpix:DRMSystemObject - kid(Key ID)とsystemId(DRMシステム識別子)属性を持つ各 DRMシステム情報└ cpix:ContentProtectionDataString - Base64でエンコードされた PSSHデータからヘッダが取り除かれた Payload部分 └ cpix:PSSHString - Base64でエンコードされた PSSHデータ(ヘッダを含む) - レスポンス例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" > <cpix:ContentKeyList> <cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="12ea753c-23e7-bc02-4474-b2b976c43beb"> <cpix:Data> <pskc:Secret> <pskc:PlainValue>SzC1qc1cEpyFU6t/lL7Byw==</pskc:PlainValue> </pskc:Secret> </cpix:Data> </cpix:ContentKey> </cpix:ContentKeyList> <cpix:DRMSystemList> <!-- Common encryption / MSS (Playready) --> <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="9a04f079-9840-4286-ab92-e65be0885f95"> <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- V2に追加される --> <cpix:PSSH>AAACwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAqKiAgAAAQABAJgCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBQAEgAWABxAEUAdQBjAGoAQQByAHgARQBkAEwASwA1AGQAcwBRADcANgB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AC8ARgA3AEIAMQBmAEgAMgBlADAAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</cpix:PSSH> </cpix:DRMSystem> <!-- Common encryption (Widevine)--> <cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"> <cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- V2に追加される --> <cpix:PSSH>AAAAVXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADUIARIQEup1PCPnvAJEdLK5dsQ76xoMaW5rYWVudHdvcmtzIg1jcGl4LXRlc3QtY2lkKgJIRA==</cpix:PSSH> </cpix:DRMSystem> </cpix:DRMSystemList> </cpix:CPIX>