Visão geral dos Serviços de Mídia v3 com modelo de licença Widevine
Os Serviços de Mídia do Azure permitem criptografar o conteúdo com Google Widevine. Os Serviços de Mídia também fornecem um serviço para fornecer licenças Widevine. É possível usar APIs dos Serviços de Mídia do Azure para configurar licenças Widevine. Quando um player tenta reproduzir o conteúdo protegido por Widevine, uma solicitação é enviada ao serviço de entrega de licenças para obter a licença. Se o serviço de licença aprovar a solicitação, o serviço emitirá a licença. Ela é enviada ao cliente e é usada para descriptografar e reproduzir o conteúdo especificado.
Observação
O Widevine não está disponível na região GovCloud.
A solicitação de licença do Widevine é formatada como uma mensagem 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>
}
}
Observação
Você pode criar uma mensagem vazia, sem valores, apenas "{}". Em seguida, um modelo de licença é criado com os valores padrão. O padrão funciona na maioria dos casos. Cenários de entrega de licença baseada na Microsoft sempre devem usar os padrões. Se você precisar definir os valores de "content_id" e "provedor", um provedor deverá corresponder às credenciais de Widevine.
Mensagem JSON
Nome | Valor | Descrição |
---|---|---|
payload | Cadeia de caracteres codificada em Base64 | A solicitação de licença enviada por um cliente. |
content_id | Cadeia de caracteres codificada em Base64 | Identificador usado para gerar a(s) ID(s) de chave e chaves de conteúdo para cada content_key_specs.track_type. |
provider | string | Usado para pesquisar as políticas e chaves de conteúdo. Se a distribuição de chaves da Microsoft é usada para entrega de licença do Widevine, esse parâmetro é ignorado. |
policy_name | string | Nome de uma política registrada anteriormente. Opcional. |
allowed_track_types | enum | SD_ONLY ou SD_HD. Controla quais chaves de conteúdo são incluídas em uma licença. |
content_key_specs | Matriz de estruturas JSON, confira a seção “Especificações de chave de conteúdo”. | Um controle mais refinado sobre quais chaves de conteúdo retornar. Para obter mais informações, confira a seção "Especificações de chave de conteúdo". Apenas um dos valores de allowed_track_types e content_key_specs pode ser especificado. |
use_policy_overrides_exclusively | Booliano, true ou false | Use os atributos de política especificados por policy_overrides e omita todas as políticas armazenadas anteriormente. |
policy_overrides | Estrutura JSON, confira a seção “Substituições de política”. | Configurações de política para esta licença. Caso este ativo tenha uma política predefinida, esses valores especificados serão usados. |
session_init | Estrutura JSON, confira a seção "Inicialização da sessão". | Dados opcionais são passados para a licença. |
parse_only | Booliano, true ou false | A solicitação de licença é analisada, mas nenhuma licença é emitida. No entanto, os valores da solicitação de licença retornam na resposta. |
Especificações de chave de conteúdo
Se houver uma política pré-existente, não será necessário especificar nenhum dos valores na especificação da chave de conteúdo. A política pré-existente associada a esse conteúdo é usada para determinar a proteção de saída, como HDCP (Proteção de Conteúdo Digital de alta largura de banda) e o CGMS (Copy General Management System). Se uma política pré-existente não estiver registrada no servidor de licenças Widevine, o provedor de conteúdo poderá injetar os valores na solicitação de licença.
Cada valor content_key_specs deve ser especificado para todos os controles, independentemente da opção use_policy_overrides_exclusively.
Nome | Valor | Descrição |
---|---|---|
content_key_specs. track_type | string | Um nome de tipo de controle. Se content_key_specs for especificado na solicitação de licença, especifique de forma explícita todos os tipos de controle. Se você não fizer isso, haverá uma falha de reprodução após 10 segundos. |
content_key_specs security_level |
uint32 | Define os requisitos de robustez de reprodução do cliente. - É necessário aplicar a criptografia whitebox baseada em software. - É necessário aplicar a criptografia de software e um decodificador ofuscado. - As principais operações de criptografia e de materiais devem ser executadas em um ambiente de execução confiável com suporte de hardware. - A criptografia e decodificação do conteúdo devem ser executadas em um ambiente de execução confiável com suporte de hardware. - A criptografia, decodificação e qualquer manipulação da mídia (compactada e descompactada) devem ser tratadas em um ambiente de execução confiável com suporte de hardware. |
content_key_specs required_output_protection.hdc |
cadeia de caracteres, uma de HDCP_NONE, HDCP_V1, HDCP_V2 | Indica se HDCP é necessário. |
content_key_specs chave |
Base64- Base64 |
Chave de conteúdo a ser usada para esta faixa. Se especificada, o track_type ou key_id é necessário. O provedor de conteúdo pode usar essa opção para insirir a chave de conteúdo para este controle em vez de deixar o servidor de licença do Widevine gerar ou procurar uma chave. |
content_key_specs.key_id | Binário de cadeia de caracteres codificada em Base64, 16 bytes | Identificador exclusivo para a chave. |
Substituições de política
Nome | Valor | Descrição |
---|---|---|
policy_overrides.can_play | Booliano, true ou false | Indica que a reprodução do conteúdo é permitida. O padrão é false. |
policy_overrides.can_persist | Booliano, true ou false | Indica que a licença pode ser persistente para o armazenamento não volátil para uso offline. O padrão é false. |
policy_overrides.can_renew | Booliano, true ou false | Indica que a renovação dessa licença é permitida. Se for true, a duração da licença poderá ser estendida por pulsação. O padrão é false. |
policy_overrides.license_duration_seconds | int64 | Indica o período para esta licença específica. Um valor 0 indica que não há qualquer limite para a duração. O padrão é 0. |
policy_overrides.rental_duration_seconds | int64 | Indica o período em que a reprodução é permitida. Um valor 0 indica que não há qualquer limite para a duração. O padrão é 0. |
policy_overrides.playback_duration_seconds | int64 | O período de exibição após o início da reprodução dentro da duração da licença. Um valor 0 indica que não há qualquer limite para a duração. O padrão é 0. |
policy_overrides.renewal_server_url | string | Todas as solicitações (renovação) de pulsação dessa licença são direcionadas para a URL especificada. Este campo só será usado se can_renew for true. |
policy_overrides.renewal_delay_seconds | int64 | O número de segundos após license_start_time antes da primeira tentativa de renovação. Este campo só será usado se can_renew for true. O padrão é 0. |
policy_overrides.renewal_retry_interval_seconds | int64 | Especifica o atraso em segundos entre as solicitações de renovação da licença subsequentes, em caso de falha. Este campo só será usado se can_renew for true. |
policy_overrides.renewal_recovery_duration_seconds | int64 | O período durante o qual a reprodução pode continuar enquanto ocorre a tentativa de renovação, porém sem êxito devido a problemas de back-end com o servidor de licença. Um valor 0 indica que não há qualquer limite para a duração. Este campo só será usado se can_renew for true. |
policy_overrides.renew_with_usage | Booliano, true ou false | Indica que a licença é enviada para renovação quando o uso inicia. Este campo só será usado se can_renew for true. |
Inicialização da sessão
Nome | Valor | Descrição |
---|---|---|
provider_session_token | Cadeia de caracteres codificada em Base64 | Este token de sessão é repassado na licença e continuará a existir em renovações subsequentes. O token de sessão não persiste além das sessões. |
provider_client_token | Cadeia de caracteres codificada em Base64 | Token de cliente para envio na resposta da licença. Se a solicitação de licença contiver um token de cliente, esse valor será ignorado. O token do cliente persiste além das sessões da licença. |
override_provider_client_token | Booliano, true ou false | Se for false e a solicitação de licença contiver um token de cliente, use o token da solicitação mesmo se houver um token do cliente especificado nessa estrutura. Se for true, sempre use o token especificado nessa estrutura. |
Observações adicionais
- O Widevine é um serviço fornecido pela Google Inc. e está sujeito aos termos de serviço e à política de privacidade da Google, Inc.
Obter ajuda e suporte
Você pode entrar em contato com os Serviços de Mídia com dúvidas ou seguir nossas atualizações por um dos seguintes métodos:
- P & R
-
Stack Overflow. Marque perguntas com
azure-media-services
. - @MSFTAzureMedia ou use @AzureSupport para solicitar suporte.
- Abra um tíquete de suporte por meio do portal do Azure.