再生セッションを作成
Request and consume the DRM-X Universal Playback Session Contract with authentication, trusted Content IDs, and bounded authorization.
再生が許可されるまでの流れ
視聴できるユーザーは、お客様のバックエンドが判断します。DRM-X は再生の認可情報を返し、プレーヤーはその情報を使って DRM ライセンスをリクエストします。
- 視聴者
お客様のサービスにログインし、動画の再生をリクエストします。
- お客様のバックエンド
購入履歴、サブスクリプション、その他の視聴権限を確認します。
- DRM-X
選択した再生ルールを適用し、再生設定と認可情報を返します。
- プレーヤー
受け取った認可情報を使い、再生に必要な DRM ライセンスをリクエストします。
ユニバーサル・プレイバック・セッション# を作成する
POST https://api6.drm-x.com/api/v1/playback/environments/{siteId}/sessions
Accept: application/json
Content-Type: application/json
X-DRMX-Client-Id: {siteKey}
X-DRMX-Client-Secret: {accessKey}
{
"contentId": "course-12-lesson-4",
"contentType": "vod",
"drmSystem": "widevine",
"subject": "customer-user-1001",
"sessionId": "new-unpredictable-id-per-playback",
"playbackMode": "streaming",
"licensePolicyTemplate": "multi-tier-standard",
"useEnvironmentDefaults": true,
"applicationId": "customer-web",
"platformCapabilities": {
"clientPlatform": "web",
"drmSystems": ["widevine"],
"manifestTypes": ["dash"],
"maximumHeight": 2160,
"persistentState": false,
"sdkVersion": "1.2.0-beta.4"
}
}
成功したContract v1応答には、正規のマニフェスト、利用可能なマニフェストのバリアント、DRM-固有のライセンスURL、短命 DRM License Token、または顧客のプロキシの承認、リリースルート、ライセンスされた最大高さ、および許可されたトラックが含まれます。 Cache-Control: no-storeでそれを返します。
1つの予測不可能なセッション ID を使用して、実際の再生の試みを行います。デバイス全体で ID を再利用することで、同時ストリームカウントが失われます。
成功レスポンスの例
この例の URL は動作しないサンプルで、トークンはプレースホルダーです。ネストされた記述子を参照してください。互換エイリアスは旧バージョンの連携向けに含まれています。
{
"contractVersion": 1,
"playbackMode": "streaming",
"sessionId": "c9006ed8-58c8-45db-9ed0-311d1047c210",
"contentId": "course-12-lesson-4",
"drmSystem": "widevine",
"manifestUrl": "https://media.example.test/course-12/manifest.mpd",
"manifestUrls": {"dash": "https://media.example.test/course-12/manifest.mpd"},
"expiresAt": "2026-10-26T12:10:00Z",
"drm": {
"system": "widevine",
"licenseServerUrl": "https://license6.drm-x.com/v1/licenses/widevine",
"drmLicenseToken": "REDACTED_EXAMPLE_ONLY",
"tokenType": "Bearer",
"fairPlayCertificateUrl": null
},
"release": {
"url": "https://license6.drm-x.com/v1/playback-sessions/release",
"method": "POST",
"authorizationScheme": "Bearer"
},
"policy": {"maximumHeight": 1080, "allowedTrackTypes": ["AUDIO", "SD", "HD"]},
"tracks": {"audioLanguageSelection": true, "subtitleLanguageSelection": true, "languageTagStandard": "BCP-47"},
"platformCapabilities": null,
"playerBranding": null,
"token": "REDACTED_EXAMPLE_ONLY",
"tokenType": "Bearer",
"licenseServerUrl": "https://license6.drm-x.com/v1/licenses/widevine",
"fairPlayCertificateUrl": null,
"releaseUrl": "https://license6.drm-x.com/v1/playback-sessions/release",
"maximumHeight": 1080,
"allowedTrackTypes": ["AUDIO", "SD", "HD"]
}
認証と信頼できるリクエストフィールド#
license-tokens:create を持つプロジェクト API クライアントでこの API を呼び出します。 siteId として環境 UUID を使用します。 認証されたビューアはエンドポイントを呼び出します。エンドポイントは信頼できるフィールドを提供します。
| フィールド | 意味する | 統合ルール |
|---|---|---|
contentId | 公開されたコンテンツ参照 | 資格チェック後、信頼できるカタログから解決します。 |
subject | 安定したビューア識別子 | 認証されたセッションから派生し、クライアントが認めたユーザーIDではなく。 |
drmSystem | widevine、playready、fairplay、またはwiseplay | 選択した DRM を プレーヤー 関数にマッチさせます。 |
sessionId | この再生の試みのアイデンティティ | 試みごとに新しい予測不可能な値を生成します。 |
contentType | vod または live | コンテンツに登録されたタイプを使用してください。 |
playbackMode | 契約v1のstreaming | オフライン再生では、後続の契約延長が必要です。 |
licensePolicyTemplate / licensePolicy | 名前付きポリシーまたはカスタムポリシー | サーバで選択してください。 どちらも供給しないでください。 のポリシー を参照してください。 |
platformCapabilities | プラットフォーム、DRM システム、マニフェストタイプ、デバイスヒント | 新しいインテグレーションで明示的な機能を送信します。 クライアントを記述します。 ライセンスポリシーを上書きしません。 |
応答の記述子を消費して下さい#
ネストされたコントラクトv1記述子を使用してください。 ライセンスURLを推測から構築したり、登録されたマニフェストURLをプレーヤー入力に置き換えたりしないでください。
| 応答分野 | 使い方 |
|---|---|
contractVersion | 返された契約バージョンが統合によってサポートされることを確認します。 |
manifestUrl / manifestUrls | 選択されたマニフェストまたは返された互換性のあるバリアントをロードします。 |
expiresAt | この拘束された許可の有効期限。 |
drm | system、licenseServerUrl、drmLicenseToken、tokenType、およびオプションfairPlayCertificateUrlを読みます。 顧客トークンプロキシは、ブラウザのフェーシング権限を独自のバウンディングセッションに置き換えることができます。 |
release | url、method、authorizationScheme を使用して、再生終了時にセッションを解放します。 |
policy | 名誉maximumHeightとallowedTrackTypes。 プロバイダは署名されたポリシーを強制します。 |
tracks | 音声/字幕の言語選択機能と言語タグ標準を読みます。 |
Cache-Control: no-store で プレーヤー 応答を返します。プロジェクト Access Key をブラウザに転送しないでください。 返されたライセンスと証明書のルートに権限ヘッダーを制限します。
ハンドルエラーとリリース予約#
HTTP のステータスと機械で読みやすい code を調べます。トラブルシューティングの requestId を保持し、retryable を尊重します。拒否されたエンタイトルまたは無効なポリシーは、再試行ループではなく、正しい決定を必要とします。 playback session error reference を参照してください。
ストップ、再生交換、ターミナルエラー、アプリケーションシャットダウンで予約を解除します。新しい再生の試みは、新しいセッション ID を取得します。
POST https://license6.drm-x.com/v1/playback-sessions/release
Authorization: Bearer REDACTED_EXAMPLE_ONLY
Accept: application/json
HTTP/1.1 200 OK
{"contractVersion":1,"released":true,"code":"license_session_released","requestId":"example-request-id"}
返された解放 URL と認証方式を、同じ DRM License Token とともに使用します。リクエスト本文は不要です。認証済みの解放を繰り返すと、HTTP 200、released false、code license_session_not_active が返ります。認証が期限切れまたは無効な場合、解放前に失敗することがあります。新しい再生には新しい認証を取得してください。一時的なサービス障害は上限付きのバックオフで再試行します。
この公開仕様はストリーミング用です。顧客側のオフラインエンドポイントと端末に紐づく永続ライセンスには別の手順があります。このストリーミングレスポンスをオフラインライセンスとして再利用しないでください。
DRM-X 6.0