概要
PlayReady テスト サーバーでは、ライセンス構成用の Base64 JSON 構文がサポートされており、複雑なライセンス パラメーターを埋め込むためのコンパクトで URL セーフな方法が提供されます。 この方法では、JSON 構成データが Base64 形式でエンコードされるため、URL パラメーターと HTTP ヘッダーに適しています。
エンコード プロセス
Base64 JSON 構文には、次の 2 つの手順が含まれます。
- JSON 構成オブジェクトを作成する
- Base64 エンコードを使用して JSON 文字列をエンコードする
JSON Configuration → Base64 Encoding → URL Parameter
基本的な JSON 構造
エンコードする前に、JSON 構成を作成します。
{
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
Base64 エンコードの例
シンプルな構成
元の JSON:
{"licenseType": "persistent", "keyId": "12345678-1234-1234-1234-123456789012"}
Base64 エンコード:
eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9
複雑な構成
元の JSON:
{
"licenseType": "rental",
"keyId": "87654321-4321-4321-4321-210987654321",
"expirationDate": "2024-12-31T23:59:59Z",
"outputProtection": {
"digital": "required",
"analog": "never"
}
}
Base64 エンコード:
eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=
URL の使用法
クエリ パラメーターの形式
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=BASE64_ENCODED_JSON
完全な URL の例
永続的なライセンス
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9
レンタル ライセンス
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiJ9
構成オプション
ライセンスの種類
すべての標準ライセンスの種類のサポート:
{
"licenseType": "persistent|non-persistent|rental|subscription"
}
出力保護の設定
デジタルおよびアナログ出力保護を構成します。
{
"outputProtection": {
"digital": "required|optional|never",
"analog": "required|optional|never",
"hdcp": {
"version": "1.4|2.0|2.1|2.2",
"required": true
}
}
}
Time-Based 制限
有効期限と猶予期間を設定します。
{
"expirationDate": "2024-12-31T23:59:59Z",
"gracePeriod": 3600,
"firstPlayExpiration": "PT48H"
}
実装例
JavaScript/HTML5
// Create configuration object
const config = {
licenseType: "persistent",
keyId: keyId,
outputProtection: {
digital: "required",
analog: "optional"
}
};
// Convert to JSON and encode
const jsonString = JSON.stringify(config);
const base64Data = btoa(jsonString);
// Build URL
const licenseUrl = `https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=${base64Data}`;
C# アプリケーション
using System;
using System.Text;
using Newtonsoft.Json;
// Create configuration object
var config = new {
licenseType = "persistent",
keyId = keyId,
outputProtection = new {
digital = "required",
analog = "optional"
}
};
// Convert to JSON and encode
string jsonString = JsonConvert.SerializeObject(config);
byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonString);
string base64Data = Convert.ToBase64String(jsonBytes);
// Build URL
string licenseUrl = $"https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data={base64Data}";
Python の例
import json
import base64
# Create configuration dictionary
config = {
"licenseType": "persistent",
"keyId": key_id,
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
# Convert to JSON and encode
json_string = json.dumps(config)
base64_data = base64.b64encode(json_string.encode('utf-8')).decode('utf-8')
# Build URL
license_url = f"https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data={base64_data}"
高度な構成
マルチトラック コンテンツ
複数のトラックを含むコンテンツの構成:
{
"licenseType": "persistent",
"tracks": [
{
"keyId": "video-key-guid",
"trackType": "video",
"outputProtection": {
"digital": "required"
}
},
{
"keyId": "audio-key-guid",
"trackType": "audio",
"outputProtection": {
"digital": "optional"
}
}
]
}
Domain-Bound ライセンス
ドメイン バインド コンテンツの構成:
{
"licenseType": "persistent",
"keyId": "domain-key-guid",
"domainBinding": {
"domainId": "domain-service-id",
"domainAccountId": "account-identifier",
"required": true
}
}
テストと検証
検証のデコード
Base64 エンコードを確認するには:
// Decode Base64 back to JSON
const decodedJson = atob(base64Data);
const configObject = JSON.parse(decodedJson);
console.log(configObject);
一般的なテスト シナリオ
- 基本ライセンスの種類: 各ライセンスの種類を個別にテストする
- 出力保護: さまざまな保護レベルを確認する
- 時間制限: テストの有効期限と猶予期間
- 複雑な構成: マルチトラックとドメインのシナリオをテストする
エラー処理
エンコード エラー
- 無効な JSON: エンコード前の JSON 構造の形式が正しくありません
- エンコードの問題: Base64 変換中の文字エンコードの問題
- URL の安全性: Base64 データの適切な URL エンコードを確保する
Server-Side エラー
- デコードエラー: Base64 デコード エラーを含む HTTP 400
- JSON 解析: JSON 構造エラーを含む HTTP 400
- 構成が無効: 構成検証エラーが発生した HTTP 400
ベスト プラクティス
- JSON 検証: エンコード前に JSON を検証する
- URL エンコード: URL の Base64 データを適切にエンコードする
- サイズ制限: URL の制限に合わせて構成のサイズを適切に設定する
- テスト: エンコード/デコード プロセスを徹底的にテストする
- エラー処理: エンコード エラーとサーバー エラーの両方を適切に処理する
利点
- コンパクト: URL の完全な JSON よりもコンパクト
- URL セーフ: Base64 エンコードは URL セーフです
- 柔軟: 複雑な構成オブジェクトをサポート
- 標準: 標準の Base64 エンコードを使用します
関連ドキュメント
- PlayReady テスト サーバー サービス - メイン サービスの概要
- CustomData JSON 構文 - 完全な JSON 構成形式
- クエリ文字列の構文 - 単純なパラメーターベースのアプローチ
- PlayReady テスト サーバー - サーバーの完全なドキュメント
サポートとトラブルシューティング
Base64 JSON 構文に関する問題の場合:
- エンコードする前に JSON 構造を確認する
- Base64 エンコード/デコード プロセスをテストする
- Base64 データの URL エンコードを確認する
- 構成パラメーターの検証
- サーバー エラー応答の詳細を確認する
追加のサポートについては、 PlayReady テスト サーバー のメイン ドキュメントを参照してください。