Panoramica del modello di licenza Widevine con Servizi multimediali v3
Servizi multimediali di Azure consente di crittografare il contenuto con Google Widevine. Servizi multimediali offre inoltre un servizio per la distribuzione delle licenze Widevine. Le API di Servizi multimediali di Azure consentono di configurare licenze Google Widevine. Quando un lettore tenta di riprodurre contenuto protetto da Widevine, viene inviata una richiesta al servizio di distribuzione di licenze per ottenere la licenza. Se il servizio di licenza approva la richiesta, genera la licenza. Viene inviata al client e usata per decrittografare e riprodurre il contenuto specificato.
Nota
Widevine non è disponibile nell'area GovCloud.
Una richiesta per la licenza Widevine è formattata come messaggio JSON.
{
"payload":"<license challenge>",
"content_id": "<content id>"
"provider": "<provider>"
"allowed_track_types":"<types>",
"content_key_specs":[
{
"track_type":"<track type 1>"
},
{
"track_type":"<track type 2>"
},
…
],
"policy_overrides":{
"can_play":<can play>,
"can persist":<can persist>,
"can_renew":<can renew>,
"rental_duration_seconds":<rental duration>,
"playback_duration_seconds":<playback duration>,
"license_duration_seconds":<license duration>,
"renewal_recovery_duration_seconds":<renewal recovery duration>,
"renewal_server_url":"<renewal server url>",
"renewal_delay_seconds":<renewal delay>,
"renewal_retry_interval_seconds":<renewal retry interval>,
"renew_with_usage":<renew with usage>
}
}
Nota
È possibile creare un messaggio vuoto senza valori, semplicemente "{}". Viene quindi creato un modello di licenza con le impostazioni predefinite. Il valore predefinito funziona nella maggior parte dei casi. Gli scenari di distribuzione di licenze basati su Microsoft devono sempre usare i valori predefiniti. Se è necessario impostare i valori di "provider" e "content_id", un provider deve corrispondere alle credenziali di Widevine.
Messaggio JSON
Nome | Valore | Descrizione |
---|---|---|
payload | Stringa con codifica Base64 | Richiesta di licenza inviata da un client. |
content_id | Stringa con codifica Base64 | Identificatore usato per derivare l'ID chiave e la chiave simmetrica per ogni content_key_specs.track_type. |
provider | string | Consente di cercare criteri e chiavi simmetriche. Se viene usata la distribuzione delle chiavi Microsoft per la distribuzione di licenze Widevine, questo parametro viene ignorato. |
policy_name | string | Nome di un criterio precedentemente registrato. facoltativo. |
allowed_track_types | enum | SD_ONLY o SD_HD. Consente di controllare le chiavi simmetriche incluse in una licenza. |
content_key_specs | Matrice di strutture JSON. Vedere la sezione "Specifiche della chiave simmetrica". | Controllo più granulare delle chiavi simmetriche da restituire. Per altre informazioni, vedere la sezione "Specifiche chiave contenuto". È possibile specificare solo uno dei valori allowed_track_types e content_key_specs. |
use_policy_overrides_exclusively | Booleano: true o false | Usare gli attributi di criteri specificati in policy_overrides e omettere tutti i criteri memorizzati in precedenza. |
policy_overrides | Struttura JSON, vedere la sezione "Override dei criteri". | Impostazioni di criteri per questa licenza. Nel caso in cui per questo asset esistano già criteri predefiniti, vengono usati questi valori specificati. |
session_init | Struttura JSON, vedere la sezione "Inizializzazione della sessione". | Dati facoltativi vengono passati alla licenza. |
parse_only | Booleano: true o false | La richiesta di licenza viene analizzata, ma la licenza non viene generata. Nella risposta, tuttavia, vengono restituiti i valori componenti la richiesta di licenza. |
Specifiche della chiave simmetrica
Se esiste un criterio preesistente, non è necessario specificare alcun valore nella specifica della chiave di contenuto. I criteri preesistenti associati a questo contenuto vengono usati per determinare la protezione dell'output, ad esempio Protezione contenuto digitale a larghezza di banda elevata (HDCP) e Copy General Management System (CGMS). Se i criteri pre-esistenti non sono registrati con il server di licenze Widevine, il provider di contenuti può inserire i valori nella richiesta di licenza.
Ogni valore content_key_specs deve essere specificato per tutte le singole tracce, indipendentemente dall'opzione use_policy_overrides_exclusively.
Nome | Valore | Descrizione |
---|---|---|
content_key_specs track_type | string | Nome di un tipo di traccia. Se nella richiesta di licenza è specificato un valore content_key_specs, assicurarsi di specificare esplicitamente tutti i tipi di traccia. In caso contrario, non possono essere riprodotti gli ultimi 10 secondi. |
content_key_specs security_level |
uint32 | Definisce i requisiti di affidabilità client per la riproduzione. - È richiesta una soluzione di crittografia white box basata su software. - Sono necessari una soluzione di crittografia software e un decodificatore offuscato. - Il materiale della chiave e le operazioni di crittografia devono essere eseguiti all'interno di un ambiente di esecuzione affidabile basato su hardware. - Le operazioni di crittografia e decodifica del contenuto devono essere eseguite all'interno di un ambiente di esecuzione affidabile basato su hardware. - Le operazioni di crittografia, decodifica e l'intera gestione dei file multimediali (con e senza compressione) devono essere eseguite all'interno di un ambiente di esecuzione affidabile basato su hardware. |
content_key_specs required_output_protection.hdc |
Stringa, uno di HDCP_NONE, HDCP_V1, HDCP_V2 | Indica se è necessario il protocollo HDCP. |
content_key_specs Key |
Base64 codifica Base64 |
Chiave di contenuto da usare per questa traccia. Se specificato, è necessario track_type o key_id. Il provider di contenuti può usare questa opzione per inserire la chiave simmetrica della traccia ed evitare quindi che sia il server di licenze Widevine a generare o cercare una chiave. |
content_key_specs.key_id | Stringa binaria con codifica Base64, 16 byte | Identificatore univoco della chiave. |
Override dei criteri
Nome | Valore | Descrizione |
---|---|---|
policy_overrides.can_play | Booleano: true o false | Indica che è consentita la riproduzione del contenuto. L'impostazione predefinita è false. |
policy_overrides.can_persist | Booleano: true o false | Indica che la licenza può essere mantenuta in una memoria non volatile per l'uso offline. L'impostazione predefinita è false. |
policy_overrides.can_renew | Booleano: true o false | Indica che è consentito il rinnovo della licenza. Se true, è possibile estendere la durata della licenza mediante heartbeat. L'impostazione predefinita è false. |
policy_overrides.license_duration_seconds | int64 | Indica la finestra temporale di validità della licenza. Il valore 0 indica che non esiste alcun limite di durata. Il valore predefinito è 0. |
policy_overrides.rental_duration_seconds | int64 | Indica la finestra temporale in cui è consentita la riproduzione. Il valore 0 indica che non esiste alcun limite di durata. Il valore predefinito è 0. |
policy_overrides.playback_duration_seconds | int64 | La finestra temporale di visualizzazione a partire dall'inizio della riproduzione nell'ambito del periodo di validità della licenza. Il valore 0 indica che non esiste alcun limite di durata. Il valore predefinito è 0. |
policy_overrides.renewal_server_url | string | Tutte le richieste di heartbeat (rinnovo) per la licenza sono inoltrate all'URL specificato. Questo campo viene usato solo se can_renew è true. |
policy_overrides.renewal_delay_seconds | int64 | Numero di secondi prima che venga eseguito il primo tentativo di rinnovo, a partire dal valore license_start_time. Questo campo viene usato solo se can_renew è true. Il valore predefinito è 0. |
policy_overrides.renewal_retry_interval_seconds | int64 | Specifica l'intervallo di tempo, espresso in secondi, tra richieste di rinnovo della licenza consecutive, in caso di errore. Questo campo viene usato solo se can_renew è true. |
policy_overrides.renewal_recovery_duration_seconds | int64 | La finestra temporale nella quale può continuare la riproduzione mentre vengono eseguiti nuovi tentativi di rinnovo, ancora con esito negativo a causa di problemi di back-end con il server licenze. Il valore 0 indica che non esiste alcun limite di durata. Questo campo viene usato solo se can_renew è true. |
policy_overrides.renew_with_usage | Booleano: true o false | Indica che la licenza viene inviata per il rinnovo nel momento in cui si inizia a usarla. Questo campo viene usato solo se can_renew è true. |
Inizializzazione della sessione
Nome | Valore | Descrizione |
---|---|---|
provider_session_token | Stringa con codifica Base64 | Questo token di sessione viene restituito alla licenza e persiste nei rinnovi successivi, ma non in altre sessioni. |
provider_client_token | Stringa con codifica Base64 | Token client da restituire nella risposta di licenza. Se la richiesta di licenza contiene un token client, questo valore viene ignorato. Il token client persiste anche in altre sessioni della licenza. |
override_provider_client_token | Booleano: true o false | Se false e la richiesta di licenza contiene un token client, usare il token della richiesta anche se nella struttura è stato specificato un token client. Se true, usare sempre il token specificato nella struttura. |
Note aggiuntive
- Widevine è un servizio fornito da Google Inc. e soggetto alle condizioni per l'utilizzo e all'informativa sulla privacy di Google Inc.
Guida e supporto tecnico
È possibile contattare Servizi multimediali con domande o seguire gli aggiornamenti in base a uno dei metodi seguenti:
- DOMANDE E RISPOSTE
-
Stack Overflow. Contrassegna le domande con
azure-media-services
. - @MSFTAzureMedia o usare @AzureSupport per richiedere supporto.
- Aprire un ticket di supporto tramite il portale di Azure.