Introducción a Media Services v3 con plantilla de licencia de Widevine

Azure Media Services le permite cifrar el contenido HLS con Widevine de Google. Asimismo, Media Services también proporciona un servicio para entregar licencias de Widevine. Puede usar las API de Azure Media Services para configurar y solicitar licencias de Widevine. Cuando el reproductor intenta reproducir contenido protegido de Widevine, se envía una solicitud al servicio de entrega de licencias para obtener una licencia. Si el servicio de licencias aprueba la solicitud, el servicio emite la licencia. A continuación, se envía al cliente y se usa para descifrar y reproducir el contenido especificado.

Nota

Widevine no está disponible en la región de Azure GovCloud.

Una solicitud de licencia de Widevine tiene el formato de un mensaje 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

Puede crear un mensaje vacío sin valores; simplemente use "{}." y se creará una plantilla de licencia con valores predeterminados. La configuración predeterminada funciona para la mayoría de los casos. Los escenarios de entrega de licencia basados en Microsoft deben utilizar siempre los valores predeterminados. Si tiene que establecer los valores de "provider" y "content_id", el proveedor debe coincidir con las credenciales de Widevine.

Mensaje JSON

Nombre Valor Descripción
payload Cadena codificada en Base64 La solicitud de licencia enviada por un cliente.
content_id Cadena codificada en Base64 Identificador utilizado para derivar el id. de la clave y la clave de contenido de cada elemento content_key_specs.track_type.
provider string Utilizado para buscar directivas y claves de contenido. En el caso de que se use la entrega de claves de Microsoft para entregar licencias de Widevine, este parámetro se omite.
policy_name string Nombre de una directiva previamente registrada. Opcional.
allowed_track_types enum SD_ONLY o SD_HD. Controla qué claves de contenido deben incluirse en una licencia.
content_key_specs Matriz de estructuras JSON; consulte "Especificaciones de clave de contenido". Un control más preciso sobre qué claves de contenido se devolverán. Para más información, vea la sección "Especificaciones de clave de contenido". Solo se puede especificar uno de los valores allowed_track_types y content_key_specs.
use_policy_overrides_exclusively Valor booleano (true o false) Utilice los atributos de directiva que especifica policy_overrides y omita todas las directivas almacenadas previamente.
policy_overrides Estructura JSON; consulte "Invalidaciones de directivas". Configuración de directiva para esta licencia. En caso de que este activo tenga una directiva definida previamente, se usarán estos valores especificados.
session_init Estructura JSON; consulte "Inicialización de la sesión". Los datos opcionales se pasan a la licencia.
parse_only Valor booleano (true o false) Se analiza la solicitud de licencia, pero no se emite ninguna licencia. Sin embargo, los valores de la solicitud de licencia se devuelven en la respuesta.

Especificaciones de clave de contenido

Si existe una directiva anterior, no es necesario especificar ninguno de los valores en las especificaciones de clave de contenido. La directiva anterior que estaba asociada con este contenido se usa para determinar la protección de salida como, por ejemplo, Protección de contenido digital de ancho de banda alto (HDCP) y Copy General Management System (CGMS). Si no hay una directiva anterior registrada con el servidor de licencias de Widevine, el proveedor de contenido puede insertar los valores en la solicitud de licencia.

Cada valor de content_key_specs debe especificarse en todas las pistas, independientemente de la opción use_policy_overrides_exclusively.

Nombre Valor Descripción
content_key_specs. track_type string Un nombre de tipo de pista. Si se especifica content_key_specs en la solicitud de licencia, asegúrese de especificar todos los tipos de pista explícitamente. Si no lo hace, se producirán errores en la reproducción transcurridos 10 segundos.
content_key_specs
security_level
uint32 Define los requisitos de solidez del cliente para la reproducción.
- Se requiere criptografía de caja blanca basada en software.
- Se requiere criptografía de software y un descodificador de ofuscación.
- Las operaciones de criptografía y material clave deben realizarse en un entorno de ejecución de confianza con respaldo del hardware.
- La criptografía y la descodificación del contenido deben realizarse dentro de un entorno de ejecución de confianza con respaldo del hardware.
- La criptografía, la descodificación y todo el tratamiento de los medios (comprimidos y descomprimidos) deben administrarse dentro de un entorno de ejecución de confianza con respaldo del hardware.
content_key_specs
required_output_protection.hdc
cadena, una de HDCP_NONE, HDCP_V1, HDCP_V2 Indica si se requiere HDCP.
content_key_specs
key
Base64-
cadena codificada
Clave de contenido que se utilizará para esta pista. Si se especifica, se requiere track_type o key_id. Esta opción permite que el proveedor de contenido inserte la clave de contenido para esta pista en lugar de permitir que el servidor de licencias de Widevine genere o busque una clave.
content_key_specs.key_id Binario de cadena codificada en Base64, 16 bytes Identificador único para la clave.

Invalidaciones de directivas

Nombre Valor Descripción
policy_overrides.can_play Valor booleano (true o false) Indica que la reproducción del contenido está permitida. El valor predeterminado es False.
policy_overrides.can_persist Valor booleano (true o false) Indica que la licencia puede conservarse en el almacenamiento no volátil para su uso sin conexión. El valor predeterminado es False.
policy_overrides.can_renew Valor booleano (true o false) Indica que se permite la renovación de la presente licencia. Si es true, se puede ampliar la duración de la licencia mediante latido. El valor predeterminado es False.
policy_overrides.license_duration_seconds int64 Indica el período de tiempo para esta licencia específica. Un valor de 0 indica que no hay ningún límite para la duración. El valor predeterminado es 0.
policy_overrides.rental_duration_seconds int64 Indica el período de tiempo en el que se permite la reproducción. Un valor de 0 indica que no hay ningún límite para la duración. El valor predeterminado es 0.
policy_overrides.playback_duration_seconds int64 El período de tiempo de visualización una vez que la reproducción comienza en el plazo de duración de la licencia. Un valor de 0 indica que no hay ningún límite para la duración. El valor predeterminado es 0.
policy_overrides.renewal_server_url string Todas las solicitudes de latido (renovación) de esta licencia se dirigirán a la dirección URL especificada. Este campo solo se usa si can_renew es "true".
policy_overrides.renewal_delay_seconds int64 El número de segundos después de license_start_time, antes de intentar la renovación por primera vez. Este campo solo se usa si can_renew es "true". El valor predeterminado es 0.
policy_overrides.renewal_retry_interval_seconds int64 Especifica el plazo en segundos entre las posteriores solicitudes de renovación de licencia, en caso de error. Este campo solo se usa si can_renew es "true".
policy_overrides.renewal_recovery_duration_seconds int64 El período de tiempo en el que la reproducción puede continuar mientras se intenta la renovación, aunque no se realice correctamente debido a problemas de back-end con el servidor de licencias. Un valor de 0 indica que no hay ningún límite para la duración. Este campo solo se usa si can_renew es "true".
policy_overrides.renew_with_usage Valor booleano (true o false) Indica que la licencia se enviará para renovación cuando se inicie el uso. Este campo solo se usa si can_renew es "true".

Inicialización de la sesión

Nombre Valor Descripción
provider_session_token Cadena codificada en Base64 Este token de sesión se pasa de nuevo en la licencia y existirá en renovaciones posteriores. El token de sesión no se conservará una vez agotadas las sesiones.
provider_client_token Cadena codificada en Base64 Token de cliente para devolver en la respuesta de licencia. Si la solicitud de licencia contiene un token de cliente, este valor se omite. El token del cliente se conservará una vez agotadas las sesiones de licencia.
override_provider_client_token Valor booleano (true o false) Si es false y la solicitud de licencia contiene un token de cliente, use el token de la solicitud incluso si se especificó un token de cliente en esta estructura. Si es true, utilice siempre el token especificado en esta estructura.

Notas adicionales

  • Widevine es un servicio que ofrece Google Inc. y que está sujeto a los términos del servicio y la directiva de privacidad de Google, Inc.

Obtener ayuda y soporte técnico

Puede ponerse en contacto con Media Services con preguntas o seguir nuestras actualizaciones mediante uno de los métodos siguientes: