Partilhar via


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: