Encrypt the Stream

最終更新日:2024-01-02 11:10:15

このドキュメントは、 Media Acceleration Live Broadcast APIを使用して、指定されたストリームのDRM暗号化を実行する方法のガイドを目的としています。

開始する前に

以下のタスクを完了してください。

  1. DRM 機能が有効になっていることを確認します。設定にサポートが必要な場合は、カスタマーサービスにお問い合わせください。
  2. DRMの再生に必要なため、HTTPSを有効にします。 HTTP ストリームにより、再生に失敗する可能性があります。
  3. 暗号化する前にライブストリーミングを作成します。暗号化を行うには、アプリケーション名とストリーム名が必要です。

ストリーミングを暗号化するリクエストの例

次のcurlスクリプトを実行して、ストリームhttps://drmtest-pull.cdnetworks.com/live/drmtest.mpdを暗号化します。

curl -i --url 'http://ca.haplat.net/wslive/drm/register.action?n=accountId&r=random&k=token' \
-X 'POST' \
-H 'Content-Type: application/json' \
-d '{
    "url": "https://drmtest-pull.cdnetworks.com/live/drmtest.mpd",
    "encryptType": "drm",
    "action": "add",
    "expire": "1682819355"
}'

上記のリクエストは、名前「drmtest」、アプリケーション名「live」のストリームを暗号化しています。暗号化された後、このDASHストリームはWidevineとPlayReadyの両方によって保護されます。
ストリームが暗号化されているかどうかを確認するために、HLSまたはDASHのマニフェストファイルを確認することができます。この例では、DASH .mpd ファイルを確認します。マニフェスト ファイルには、ライセンス チャレンジを生成するために必要なオブジェクトを含む ContentProtection というヘッダーが含まれます。サンプル(切り捨て)を以下に示します。

</ContentProtection>
      <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
          <cenc:pssh>AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEAnnEHpafEPZng9h+r1lDBZI49yVmwY=</cenc:pssh>
</ContentProtection>

パラメータとヘッダー

リクエストには、次のヘッダーとパラメータが必要です。

アイテム タイプ 必須 説明
Content-Type Header はい アプリケーション/json
n Param はい あなたのアカウント名。
k Param はい 最大長が 13 の一意のランダムな文字列。タイムスタンプを使用することをお勧めします。
r Param はい MD5認証値。
k = md5 (r + apikey) 、つまり、「k」の値を取得したい場合、文字列「r」の最後に文字列 apikey を追加し、結果の文字列のMD5計算を行います。
注: apikey は、カスタマー サービスから取得できます。
例えば、
1.リクエストして取得 apikey=012f37a3f2952
2.文字列r=1409284800をランダムに生成する
3. apikey を「r」の最後に追加し、文字列「1409284800012f37a3f2952」を生成します。
4.新しい文字列のMD5ハッシュを計算して「k」の値を取得し、それが「b9fed80be752551834eec3e52fa94115」です。

リクエストボディ

リクエストボディに以下の項目を含めます。

アイテム タイプ 必須 説明
URL String はい このフィールドは、暗号化するストリームのURLを表します、例えば:
https://poctest-push.8686c.com/live/dashdrm.mpd
以下の点に注意してください:
1。 DRMを使用する前に、HTTPSを有効にする必要があります。 HTTPベースのURLを暗号化に使用することはできますが、DRMシステムはHTTPSを必要とするため、再生に失敗する可能性があります。
2.元のストリームが暗号化されると、各解像度が自動的に暗号化されるため、ストリームの解像度をすべて暗号化する必要はありません。
encryptType String はい 「encryptType」フィールドは常に「drm」に設定する必要があります。
action String いいえ 「action」フィールドは、次の値のいずれかを持つことができます:「add」、「del」、または「update」:
- add: 新しいストリームのDRMを設定します。
- del: 無効にします。既存のストリームのDRM。
- 更新:既存のストリームの暗号化情報を更新します。
expire String いいえ DRMの有効期限は、Linuxタイムスタンプ形式で提供する必要があります。このフィールドを指定しない場合、このストリームの DRM が期限切れになることはありません。

応答例

{
	"msg": true,
	"code": 200,
	"callTime": "2022-12-07 21:50:16"
}

エラーコード

エラーコード メッセージ 詳細
400 認証パラメータがありません。 認証パラメータ「n」、「k」、または「r」がありません。
400 暗号化の種類が正しくありません。 「encryptType」パラメータが「drm」として指定されていません。
400 対処方法のエラーです。 サポートされていない操作タイプです。 ‘add’、‘del’、または ‘update’ のみがサポートされます。
400 コンテンツはすでにシステムに追加されています。 コンテンツはすでに暗号化されているため、再暗号化することはできません。
400 ストリームはレコードに存在しないため、削除に失敗しました。 削除したいストリームのDRM情報は見つかりませんでした。
403 認証に失敗しました。 認証パラメータにエラーがあるか、APIリクエストの権限がありません。
404 404 見つかりません。 APIリクエストURLが正しくありません。
405 リクエスト方法エラー。 POSTリクエストではありません。
500 内部サーバーエラー。 サービスの例外。