Inserta anuncios con el redireccionamiento de segmentos

En esta guía, se explica cómo configurar tu manipulador de manifiestos para solicitar anuncios o segmentos de pizarra con el método de segmento de grupo de anuncios.

Selecciona un protocolo de transmisión:

Requisitos previos

Antes de continuar, debes configurar un evento en vivo para los perfiles de codificación y el tipo de inserción de anuncios dinámicos (DAI) de redireccionamiento de publicación de Pod. Para configurar un evento de transmisión en vivo, elige uno de los siguientes métodos:

Después de configurar el evento de transmisión en vivo, recupera los perfiles de codificación del evento desde la IU o la API de Ad Manager llamando al método DaiEncodingProfileService.getDaiEncodingProfilesByStatement.

Recupera la transmisión de contenido

Cuando un usuario selecciona un evento de transmisión en vivo, la app cliente realiza una solicitud de transmisión a Google Ad Manager. En la respuesta de transmisión, la app extrae el ID de sesión y los metadatos de la DAI de Google para incluirlos en la solicitud del manifiesto de transmisión.

En el siguiente ejemplo, se pasa un ID de sesión de la DAI de Google a un manipulador de manifiestos:

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

Cuando proceses la solicitud de reproducción de contenido de video, almacena el ID de sesión de la DAI de Google y CUSTOM_ASSET_KEY de la solicitud para preparar la inserción de anuncios.

Identifica los segmentos de pausas publicitarias e inserta discontinuidades

A medida que procesas cada manifiesto de variantes, identifica las etiquetas EXT-X-CUE-IN y EXT-X-CUE-OUT en tu transmisión, que indican el inicio y el final de una pausa publicitaria.

Reemplaza las etiquetas EXT-X-CUE-IN y EXT-X-CUE-OUT por los elementos EXT-X-DISCONTINUITY para que el reproductor de video del cliente pueda cambiar entre el contenido y los anuncios.

En el siguiente ejemplo de manifiesto, se reemplazan las etiquetas EXT-X-CUE-IN y EXT-X-CUE-OUT:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

En el siguiente ejemplo, se muestra un manifiesto reemplazado:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Los segmentos de anuncios de la DAI de Google no están encriptados. Si tu contenido está encriptado, quita la encriptación insertando el elemento EXT-X-KEY:METHOD=NONE antes del primer segmento de anuncio de cada corte publicitario. Al final de la pausa publicitaria, vuelve a agregar la encriptación insertando un EXT-X-KEY adecuado.

Haz un seguimiento de la hora de inicio, la duración y el índice de la próxima pausa publicitaria.

Genera un token de código de autenticación de mensajes basado en hash (HMAC)

Cada solicitud de segmento que se realice con la publicación de pods de redireccionamiento de segmentos debe incluir un token firmado con HMAC para la autenticación.

Calcula este token una vez por corte publicitario y compártelo en todas las sesiones de transmisión.

Recopila parámetros de tokens

Para completar el cuerpo del token, recopila la siguiente información de la pausa publicitaria actual:

Parámetros de token
custom_asset_key Obligatorio Es la clave del recurso de la transmisión en vivo personalizada de Google Ad Manager.
cust_params Opcional Parámetros de segmentación personalizada Consulta los cust_params.
exp Obligatorio Es la marca de tiempo de vencimiento del token actual en segundos.
network_code Obligatorio Es el código de red de Ad Manager 360.
pod_id Obligatorio Es el identificador de la pausa publicitaria. Es un número entero que comienza en 1. Para cada pausa publicitaria, este identificador aumenta en uno.

Este valor debe ser el mismo para todos los usuarios que vean la misma pausa publicitaria en el evento actual.

pd Es obligatorio, excepto para los eventos con pausas publicitarias sin duración habilitadas. Es la duración en milisegundos de la pausa publicitaria. Se hace referencia a ella como ad_pod_duration.
scte35 Opcional Es un indicador SCTE-35 codificado en Base64. La DAI de Google siempre copia el indicador en la pausa publicitaria creada, incluso si el indicador es incorrecto. Si es incorrecto, recibirás un mensaje en el encabezado HTTP X-Ad-Manager-Dai-Warning de la respuesta, y el indicador seguirá creando una pausa publicitaria. Para obtener detalles sobre cómo la DAI usa la señal SCTE-35, consulta los marcadores de anuncios admitidos.

Crea una cadena de token

Para crear una cadena de token, enumera cada parámetro en orden alfabético, en el formato NAME=VALUE, con cada par nombre-valor separado por un carácter de virgulilla ~.

En el caso de los parámetros opcionales no utilizados, usa una cadena vacía como valor o quita el parámetro por completo.

En el siguiente ejemplo, se da formato a una cadena de token:

custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE

Genera la firma HMAC

La firma HMAC es un hash SHA-256 de la cadena de token en formato HEX. La clave secreta es la clave de autenticación HMAC asociada a tu evento de transmisión en vivo en Google Ad Manager.

Cadena del token de firma

Después de generar la firma HMAC, agrégala a la cadena del token con el siguiente formato:

~hmac=HMAC_SIGNATURE

Codifica la cadena del token

Para pasar el token como un parámetro de URL, codifica la URL para mayor seguridad.

En el siguiente ejemplo, se genera un token HMAC firmado y codificado en el que los parámetros opcionales no utilizados son cadenas vacías:

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

En el siguiente ejemplo, se genera un token HMAC firmado y codificado sin parámetros opcionales no utilizados:

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Crea URLs de segmentos de anuncios

Reemplaza cada segmento de contenido entre las etiquetas EXT-X-DISCONTINUITY por una URL que apunte al método de segmento de la tanda de anuncios.

En el siguiente ejemplo, se ensambla un segmento de Ad Pod. Ten en cuenta que los segmentos de anuncios usan un índice basado en cero:

https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC

En el siguiente ejemplo, se insertan los segmentos del pod de anuncios en el manifiesto:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4

Opcional: Programa una pausa publicitaria

Para mejorar tu tasa de relleno, envía una notificación de Early Ad Break Notification (EABN) con la duración del pod de anuncios, los parámetros de segmentación personalizados y los datos de la señal SCTE-35. Para obtener más información, consulta Cómo enviar notificaciones anticipadas de pausas publicitarias.