Descrição geral dos Serviços de Multimédia v3 com o modelo de licença widevine
Os Serviços de Multimédia do Azure permitem-lhe encriptar os seus conteúdos com o Google Widevine. Os Serviços de Multimédia também fornecem um serviço para a entrega de licenças widevine. Pode utilizar as APIs dos Serviços de Multimédia do Azure para configurar licenças do Widevine. Quando um jogador tenta reproduzir o seu conteúdo protegido pelo Widevine, é enviado um pedido para o serviço de entrega de licenças para obter a licença. Se o serviço de licenças aprovar o pedido, o serviço emite a licença. É enviado para o cliente e é utilizado para desencriptar e reproduzir o conteúdo especificado.
Nota
O Widevine não está disponível na região govCloud.
Um pedido de licença do Widevine é formatado 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>
}
}
Nota
Pode criar uma mensagem vazia sem valores, apenas "{}". Em seguida, é criado um modelo de licença com predefinições. A predefinição funciona para a maioria dos casos. Os cenários de entrega de licenças baseados na Microsoft devem utilizar sempre as predefinições. Se precisar de definir os valores "fornecedor" e "content_id", um fornecedor tem de corresponder às credenciais do Widevine.
Mensagem JSON
Name | Valor | Descrição |
---|---|---|
payload | Cadeia codificada com base64 | O pedido de licença enviado por um cliente. |
content_id | Cadeia codificada com base64 | Identificador utilizado para derivar o ID da chave e a chave de conteúdo para cada content_key_specs.track_type. |
fornecedor | string | Utilizado para procurar chaves e políticas de conteúdo. Se a entrega da chave Microsoft for utilizada para a entrega de licenças do Widevine, este parâmetro será ignorado. |
policy_name | string | Nome de uma política registada anteriormente. Opcional. |
allowed_track_types | enum | SD_ONLY ou SD_HD. Controla as chaves de conteúdo incluídas numa licença. |
content_key_specs | Matriz de estruturas JSON, veja a secção "Especificações da chave de conteúdo". | Um controlo mais detalhado sobre as chaves de conteúdo a devolver. Para obter mais informações, consulte a secção "Especificações da chave de conteúdo". Apenas um dos valores de allowed_track_types e content_key_specs pode ser especificado. |
use_policy_overrides_exclusively | Booleano, verdadeiro ou falso | Utilize atributos de política especificados por policy_overrides e omita toda a política armazenada anteriormente. |
policy_overrides | Estrutura JSON, veja a secção "Substituições de políticas". | Definições de política para esta licença. Caso este recurso tenha uma política predefinida, estes valores especificados são utilizados. |
session_init | Estrutura JSON, veja a secção "Inicialização da sessão". | Os dados opcionais são transmitidos à licença. |
parse_only | Booleano, verdadeiro ou falso | O pedido de licença é analisado, mas não é emitida nenhuma licença. No entanto, os valores do pedido de licença são devolvidos na resposta. |
Especificações da chave de conteúdo
Se existir uma política pré-existente, não é necessário especificar nenhum dos valores na especificação da chave de conteúdo. A política pré-existente associada a este conteúdo é utilizada para determinar a proteção de saída, como a Proteção de Conteúdo Digital (HDCP) de largura de banda elevada e o Sistema de Gestão Geral de Cópia (CGMS). Se uma política pré-existente não estiver registada no servidor de licenças widevine, o fornecedor de conteúdos pode injetar os valores no pedido de licença.
Cada valor content_key_specs tem de ser especificado para todas as faixas, independentemente da opção use_policy_overrides_exclusively.
Name | Valor | Descrição |
---|---|---|
content_key_specs. track_type | string | Um nome de tipo de faixa. Se content_key_specs for especificado no pedido de licença, certifique-se de que especifica todos os tipos de registo explicitamente. A falha ao fazê-lo resulta numa falha na reprodução nos últimos 10 segundos. |
content_key_specs security_level |
uint32 | Define os requisitos de robustez do cliente para reprodução. - É necessária criptografia de caixa branca baseada em software. - É necessária uma criptografia de software e um descodificador obfuscado. - O material chave e as operações de criptografia têm de ser efetuadas num ambiente de execução fidedigno com suporte de hardware. - A criptografia e a descodificação de conteúdo têm de ser executadas num ambiente de execução fidedigno apoiado por hardware. - A criptografia, a descodificação e todo o processamento dos suportes de dados (comprimidos e não comprimidos) têm de ser processados num ambiente de execução fidedigno com suporte de hardware. |
content_key_specs required_output_protection.hdc |
cadeia, uma das HDCP_NONE, HDCP_V1, HDCP_V2 | Indica se o HDCP é necessário. |
content_key_specs key |
Base64- cadeia codificada |
Chave de conteúdo a utilizar para esta faixa. Se especificado, é necessário o track_type ou key_id. O fornecedor de conteúdos pode utilizar esta opção para injetar a chave de conteúdo para esta faixa em vez de permitir que o servidor de licenças widevine gere ou procure uma chave. |
content_key_specs.key_id | Binário de cadeia codificada com base64, 16 bytes | Identificador exclusivo da chave. |
Substituições de políticas
Name | Valor | Descrição |
---|---|---|
policy_overrides.can_play | Booleano, verdadeiro ou falso | Indica que a reprodução do conteúdo é permitida. A predefinição é falso. |
policy_overrides.can_persist | Booleano, verdadeiro ou falso | Indica que a licença pode ser mantida no armazenamento não complicado para utilização offline. A predefinição é falso. |
policy_overrides.can_renew | Booleano, verdadeiro ou falso | Indica que a renovação desta licença é permitida. Se for verdade, a duração da licença pode ser expandida por heartbeat. A predefinição é falso. |
policy_overrides.license_duration_seconds | int64 | Indica a janela de tempo para esta licença específica. Um valor de 0 indica que não há limite para a duração. A predefinição é 0. |
policy_overrides.rental_duration_seconds | int64 | Indica a janela de tempo enquanto a reprodução é permitida. Um valor de 0 indica que não há limite para a duração. A predefinição é 0. |
policy_overrides.playback_duration_seconds | int64 | A janela de visualização do tempo após a reprodução começa dentro da duração da licença. Um valor de 0 indica que não há limite para a duração. A predefinição é 0. |
policy_overrides.renewal_server_url | string | Todos os pedidos de heartbeat (renovação) para esta licença são direcionados para o URL especificado. Este campo só é utilizado se can_renew for verdadeiro. |
policy_overrides.renewal_delay_seconds | int64 | Quantos segundos após license_start_time antes da renovação ser tentada pela primeira vez. Este campo só é utilizado se can_renew for verdadeiro. A predefinição é 0. |
policy_overrides.renewal_retry_interval_seconds | int64 | Especifica o atraso em segundos entre os pedidos de renovação de licença subsequentes, em caso de falha. Este campo só é utilizado se can_renew for verdadeiro. |
policy_overrides.renewal_recovery_duration_seconds | int64 | A janela de tempo em que a reprodução pode continuar enquanto a renovação é tentada, mas sem êxito devido a problemas de back-end com o servidor de licenças. Um valor de 0 indica que não há limite para a duração. Este campo só é utilizado se can_renew for verdadeiro. |
policy_overrides.renew_with_usage | Booleano, verdadeiro ou falso | Indica que a licença é enviada para renovação quando a utilização é iniciada. Este campo só é utilizado se can_renew for verdadeiro. |
Inicialização da sessão
Name | Valor | Descrição |
---|---|---|
provider_session_token | Cadeia codificada com base64 | Este token de sessão é devolvido na licença e existe em renovações subsequentes. O token de sessão não persiste além das sessões. |
provider_client_token | Cadeia codificada com base64 | Token de cliente para enviar de volta na resposta de licença. Se o pedido de licença contiver um token de cliente, este valor será ignorado. O token de cliente persiste para além das sessões de licença. |
override_provider_client_token | Booleano, verdadeiro ou falso | Se falso e o pedido de licença contiver um token de cliente, utilize o token do pedido mesmo que tenha sido especificado um token de cliente nesta estrutura. Se for verdadeiro, utilize sempre o token especificado nesta estrutura. |
Notas adicionais
- Widevine é um serviço fornecido pela Google Inc. e sujeito aos termos de serviço e Política de Privacidade da Google, Inc.
Obter ajuda e suporte
Pode contactar os Serviços de Multimédia com perguntas ou seguir as nossas atualizações através de um dos seguintes métodos:
- Q & A
-
Stack Overflow. Perguntas sobre etiquetas com
azure-media-services
. - @MSFTAzureMedia ou utilize @AzureSupport para pedir suporte.
- Abra um pedido de suporte através do portal do Azure.