Compartilhar via


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: