Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
Сервер тестирования PlayReady поддерживает синтаксис JSON Base64 для конфигурации лицензии, предоставляя компактный и безопасный URL-адрес метод для внедрения сложных параметров лицензии. Этот подход кодирует данные конфигурации JSON в формате Base64, что делает его подходящим для параметров URL-адресов и заголовков HTTP.
Процесс кодирования
Синтаксис JSON Base64 состоит из двух этапов:
- Создание объекта конфигурации JSON
- Кодирование строки JSON с помощью кодировки Base64
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-адресов. Обеспечение правильной кодировки URL-адресов данных Base64
ошибки Server-Side
- Декодирование сбоев: HTTP 400 с ошибкой декодирования Base64
- Анализ JSON: HTTP 400 с ошибками структуры JSON
- Недопустимая конфигурация: HTTP 400 с ошибками проверки конфигурации
Лучшие практики
- Проверка JSON: проверка JSON перед кодировкой
- Кодировка URL-адресов: правильно кодирование данных Base64 для URL-адресов
- Ограничения размера. Сохранение конфигураций достаточного размера для ограничений URL-адресов
- Тестирование: тщательное тестирование кодирования и декодирования
- Обработка ошибок. Обработка ошибок как кодирования, так и ошибок сервера корректно
Преимущества
- Компактный: более компактный, чем полный JSON в URL-адресах
- Безопасный URL-адрес: кодировка Base64 является URL-безопасной
- Гибкий: поддерживает сложные объекты конфигурации
- Стандарт: использует стандартную кодировку Base64
Сопутствующая документация
- Служба тестового сервера PlayReady — обзор основной службы
- Синтаксис JSON CustomData — полный формат конфигурации JSON
- Синтаксис строки запроса — простой подход на основе параметров
- Тестовые серверы PlayReady — полная документация по серверу
Поддержка и устранение неполадок
Проблемы с синтаксисом JSON Base64:
- Проверка структуры JSON перед кодировкой
- Тестирование процесса кодирования и декодирования Base64
- Проверка кодирования URL-адресов данных Base64
- Проверка параметров конфигурации
- Дополнительные сведения см. в ответах на ошибки сервера
Дополнительные сведения о поддержке см. в основной документации по серверам тестирования PlayReady .