Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni generali
Il server di test PlayReady supporta la sintassi JSON Base64 per la configurazione delle licenze, fornendo un metodo compatto e indipendente dall'URL per incorporare parametri di licenza complessi. Questo approccio codifica i dati di configurazione JSON in formato Base64, rendendoli adatti ai parametri URL e alle intestazioni HTTP.
Processo di codifica
La sintassi JSON di Base64 prevede due passaggi:
- Creare un oggetto di configurazione JSON
- Codificare la stringa JSON usando la codifica Base64
JSON Configuration → Base64 Encoding → URL Parameter
Struttura JSON di base
Prima della codifica, creare una configurazione JSON:
{
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
Esempi di codifica Base64
Configurazione semplice
JSON originale:
{"licenseType": "persistent", "keyId": "12345678-1234-1234-1234-123456789012"}
Codifica Base64:
eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9
Configurazione complessa
JSON originale:
{
"licenseType": "rental",
"keyId": "87654321-4321-4321-4321-210987654321",
"expirationDate": "2024-12-31T23:59:59Z",
"outputProtection": {
"digital": "required",
"analog": "never"
}
}
Codifica Base64:
eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=
Utilizzo URL
Formato parametro query
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=BASE64_ENCODED_JSON
URL di esempio completi
Licenza permanente
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9
Licenza di noleggio
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiJ9
Opzioni di configurazione
Tipi di licenza
Supporto per tutti i tipi di licenza standard:
{
"licenseType": "persistent|non-persistent|rental|subscription"
}
Impostazioni di protezione dell'output
Configurare la protezione dell'output digitale e analogico:
{
"outputProtection": {
"digital": "required|optional|never",
"analog": "required|optional|never",
"hdcp": {
"version": "1.4|2.0|2.1|2.2",
"required": true
}
}
}
restrizioni Time-Based
Impostare i periodi di scadenza e di tolleranza:
{
"expirationDate": "2024-12-31T23:59:59Z",
"gracePeriod": 3600,
"firstPlayExpiration": "PT48H"
}
Esempi di implementazione
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}`;
Applicazione 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}";
Esempio di 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}"
Configurazioni avanzate
Contenuto multitraccia
Configurazione per il contenuto con più tracce:
{
"licenseType": "persistent",
"tracks": [
{
"keyId": "video-key-guid",
"trackType": "video",
"outputProtection": {
"digital": "required"
}
},
{
"keyId": "audio-key-guid",
"trackType": "audio",
"outputProtection": {
"digital": "optional"
}
}
]
}
licenze Domain-Bound
Configurazione per il contenuto associato a un dominio:
{
"licenseType": "persistent",
"keyId": "domain-key-guid",
"domainBinding": {
"domainId": "domain-service-id",
"domainAccountId": "account-identifier",
"required": true
}
}
Test e validazione
Verifica della decodifica
Per verificare la codifica Base64:
// Decode Base64 back to JSON
const decodedJson = atob(base64Data);
const configObject = JSON.parse(decodedJson);
console.log(configObject);
Scenari di test comuni
- Tipi di licenza di base: testare singolarmente ogni tipo di licenza
- Protezione output: verificare livelli di protezione diversi
- Restrizioni temporali: testare la scadenza e i periodi di tolleranza
- Configurazioni complesse: testare scenari multitraccia e dominio
Gestione degli errori
Errori di codifica
- JSON non valido: struttura JSON non valida prima della codifica
- Problemi di codifica: problemi di codifica dei caratteri durante la conversione Base64
- Sicurezza URL: garantire la codifica URL corretta dei dati Base64
errori Server-Side
- Errori di decodifica: HTTP 400 con errore di decodifica Base64
- Analisi JSON: HTTP 400 con errori di struttura JSON
- Configurazione non valida: HTTP 400 con errori di convalida della configurazione
Migliori pratiche
- Convalida JSON: convalida JSON prima della codifica
- Codifica URL: codificare correttamente i dati base64 per gli URL
- Limiti di dimensioni: mantenere le configurazioni ragionevolmente ridimensionate per i limiti degli URL
- Test: testare accuratamente il processo di codifica/decodifica
- Gestione degli errori: gestire correttamente gli errori di codifica e server
Vantaggi
- Compatta: più compatta di JSON completo negli URL
- URL sicuro: la codifica Base64 è indipendente dall'URL
- Flessibile: supporta oggetti di configurazione complessi
- Standard: usa la codifica Base64 standard
Documentazione correlata
- Servizio server di test PlayReady - Panoramica del servizio principale
- Sintassi JSON customData - Formato di configurazione JSON completo
- Sintassi della stringa di query - Approccio semplice basato su parametri
- Server di test PlayReady - Documentazione completa del server
Supporto e risoluzione dei problemi
Per problemi relativi alla sintassi JSON di Base64:
- Verificare la struttura JSON prima della codifica
- Testare il processo di codifica/decodifica Base64
- Controllare la codifica URL dei dati Base64
- Convalidare i parametri di configurazione
- Esaminare le risposte agli errori del server per informazioni dettagliate
Per ulteriore supporto, vedere la documentazione principale dei server di test PlayReady .