Comienza a usar SGAI para transmisiones en vivo

con la API de Publicación de grupos de anuncios de inserción de anuncios dinámicos (DAI) de Google.

La inserción de anuncios guiada por el servidor (SGAI) proporciona un manifiesto de grupo de anuncios listo para unirse en dispositivos cliente. Si habilitaste la DAI de Pod Serving en tu red de Google Ad Manager, tienes acceso a usar la SGAI. Si no tienes habilitada la DAI de Pod Serving, comunícate con tu administrador de cuentas.

Con la SGAI, usas los extremos de la API de publicación de Pods para crear una transmisión que recupera los metadatos de los anuncios y los manifiestos de los Pods de anuncios.

Si tienes un servidor de manipulación de manifiestos, puedes generar las URLs de manifiesto de los pods de anuncios e insertar marcadores de anuncios que contengan la información del manifiesto de los pods de anuncios en tu transmisión de contenido, según la especificación que prefieras.

Como alternativa, puedes programar una pausa publicitaria con un mecanismo diferente a los marcadores de anuncios en el manifiesto de la transmisión. En estos casos, tu app puede escuchar otros eventos, por ejemplo, la interacción del usuario con la transmisión, la app en sí o una notificación push. Después de estos eventos, la app puede generar las URLs del manifiesto del grupo de anuncios y decirle al reproductor que comience a cargar el manifiesto del grupo de anuncios.

Requisitos previos

Antes de continuar, asegúrate de tener lo siguiente:

  • La publicación de grupos de anuncios de DAI está habilitada en tu red de Google Ad Manager.
  • Es un evento de transmisión en vivo con el tipo Manifiesto de publicación de grupos de anuncios. Para crear el evento, consulta Cómo configurar una transmisión en vivo para DAI.

Sigue las recomendaciones

Antes de generar la URL del manifiesto del pod de anuncios, te recomendamos que llames a la API de Early Ad Break Notification (EABN) para especificar la duración esperada, la información de segmentación y otros parámetros de cada pausa publicitaria.

Para los flujos de producción y prueba, llama a la API de EABN, en especial si tu red publicitaria tiene campañas programáticas. Para obtener más información, consulta Funciones y lineamientos de Programática directa.

Realiza una solicitud de registro de transmisión

Cuando un usuario inicia una transmisión de contenido en tu app de reproductor de video, realizas una solicitud de registro de transmisión con parámetros de segmentación para crear una sesión de transmisión en Ad Manager. Para obtener detalles sobre cómo realizar una solicitud de registro de transmisión, consulta Método:stream. Luego, recibes datos de respuesta de la solicitud.

En los siguientes ejemplos, se realiza una solicitud de registro de transmisión:

HTTP de texto sin formato

  • Solicitud:
authority: dai.google.com
method: POST
path: /ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream
scheme: https
content-type: application/x-www-form-urlencoded

cust_params=customID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2
  • Respuesta:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

Almeja

  • Línea de comandos:
curl \
-H "Host: dai.google.com" \
-H "content-type: application/x-www-form-urlencoded" \
  --data-binary "cust_params=channelID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2" \
  --compressed "https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream"
  • Resultado:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}

JavaScript

  • Cómo usar la API de Fetch:
const response = await fetch("https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "body": "cust_params=channelID%3D1543216789%26anotherKey%3Dvalue1%2Cvalue2",
  "method": "POST",
});

  const stream = await response.json();
  console.log(stream);
  • Registro de la consola:
{
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "polling_frequency": 10,
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "manifest_format": "hls"
}

Sondea los metadatos de la pausa publicitaria

Después de que realices una solicitud de registro de transmisión, sondea los metadatos del anuncio. Para sondear, debes configurar un temporizador con polling_frequence en la respuesta de la transmisión durante el paso de registro para llamar a los metadatos del anuncio. En cada sondeo, es posible que recibas una lista parcial de anuncios con metadatos a medida que estén disponibles.

Genera la URL del manifiesto del pod de anuncios

Construye una URL para el recurso de pod de la API de Pod Serving. Luego, pasa la URL a un reproductor de video para comenzar a cargar el pod de anuncios.

En el siguiente ejemplo, se muestra la estructura de la URL del manifiesto de la tanda publicitaria:

https://dai.google.com/linear/pods/v1/hls/network/51636543/custom_asset/pod_serving_hls_manifest_mp4/ad_break_id/ab101.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db:TUL&pd=120000

Puedes calcular los parámetros de la URL del manifiesto del pod de anuncios según la información de la pausa publicitaria recuperada del reproductor de video o de una notificación del servidor. Para conocer los requisitos de estos parámetros, consulta Método: manifiesto del Pod.

Reproduce el manifiesto del pod de anuncios

En la app del reproductor de video del cliente, comienza la reproducción de la transmisión de contenido con un reproductor de video principal y sigue la documentación del reproductor de video para observar la reproducción y la programación de anuncios, si es pertinente.

Si generas las URLs del manifiesto del pod de anuncios y las insertas en el manifiesto del servidor, observa los próximos eventos de pausa publicitaria del reproductor de video y asegúrate de suscribirte a los eventos de ID3 durante la reproducción de cada pausa publicitaria. Si programas los eventos de corte publicitario desde el cliente, suscríbete a los eventos ID3 en la creación.

Informa impresiones y eventos de anuncios

Cuando un reproductor de video reproduce el pod de anuncios y encuentra metadatos cronometrados de ID3, escucha los eventos de anuncios que activa el reproductor de video y los procesa para enviar pings de verificación de medios.