API de inserción de anuncios dinámicos para transmisiones en vivo

La API de DAI de Google te permite implementar transmisiones habilitadas para la DAI de Google en entornos en los que no se admite la implementación del SDK de IMA. Te recomendamos que sigas usando IMA en las plataformas que admitan el SDK de IMA.

Recomendamos utilizar la API de DAI en las siguientes plataformas:

  • Smart TV Samsung (Tizen)
  • LG TV
  • HbbTV
  • Xbox (apps de JavaScript)
  • KaiOS

La API admite las capacidades básicas que proporciona el SDK de IMA de DAI. Si tienes preguntas específicas sobre la compatibilidad o las funciones compatibles, comunícate con tu administrador de Cuentas de Google.

Cómo implementar la API de DAI para transmisiones EN VIVO

La API de DAI admite transmisiones lineales (EN VIVO) mediante protocolos HLS y DASH. Los pasos descritos en esta guía se aplican a ambos protocolos.

Para integrar la API a tu app para transmisiones EN VIVO, completa los siguientes pasos:

1. Solicita una transmisión

Para solicitar una transmisión en vivo desde la API de DAI, realiza una llamada POST al extremo de transmisión. La respuesta JSON contiene el manifiesto de transmisión, así como los extremos y valores asociados de la API de DAI.

Ejemplo de cuerpo de solicitud

https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Cuerpo de respuesta de ejemplo

{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}

Respuesta de error

En caso de errores, los códigos de error de HTTP estándar se muestran sin cuerpo de respuesta JSON.

Analiza la respuesta JSON y almacena los siguientes valores:

stream_id
Este valor se puede usar para identificar la transmisión que se muestra.
stream_manifest
Esta URL se pasa al reproductor multimedia para reproducir la transmisión.
media_verification_url
Esta URL es el extremo base para hacer un seguimiento de los eventos de reproducción.
metadata_url
Esta URL se usa para consultar información periódica sobre los próximos eventos de transmisión.
session_update_url
Esta URL se usa para actualizar los parámetros de solicitud de transmisión enviados durante la solicitud de transmisión inicial. Ten en cuenta que los parámetros de esta solicitud reemplazan todos los parámetros configurados para la transmisión anterior.
polling_frequency
Es la frecuencia, en segundos, con la que se solicitan metadatos actualizados de AdBreak a la API de DAI.

2. Encuesta para nuevos metadatos de pausas publicitarias

Establece un temporizador para sondear los metadatos nuevos de AdBreak a la frecuencia de sondeo mediante la URL de metadatos. Si no se especifica en la respuesta de transmisión, el intervalo recomendado predeterminado es de 10 segundos.

Ejemplo de cuerpo de solicitud

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata

Cuerpo de respuesta de ejemplo

{
   "tags":{
      "google_0492266569":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"firstquartile"
      },
      "google_1560331148":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"thirdquartile"
      },
      "google_1877686714378797835":{
         "ad":"0000229836_slate",
         "ad_break_id":"0000229836",
         "type":"progress"
      },
      "google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"progress"
      },
      "google_2032765498":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"midpoint"
      },......
      "google_5646900623":{
         "ad":"0000229837_ad1",
         "ad_break_id":"0000229837",
         "type":"complete"
      }
   },
   "ads":{
      "0000229834_ad1":{
         "ad_break_id":"0000229834",
         "position":1,
         "duration":15.01,
         "title":"truman-e2e-creativeset4",
         "description":"truman-e2e-creativeset4 ad",
         "ad_system":"GDFP",
         "ad_id":"39066884",
         "creative_id":"58092079124",
         "clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
         "universal_ad_id":{
            "id_value":"58092079124",
            "id_registry":"GDFP"
         }
      },
      "0000229834_slate":{
         "ad_break_id":"0000229834",
         "position":-1,
         "duration":14.974977777,
         "slate":true
      },...
   },
   "ad_breaks":{
      "0000229834":{
         "type":"mid",
         "duration":15.01,
         "expected_duration":29.984977776999997,
         "ads":1
      },....
   }
}

3. Cómo escuchar eventos ID3 y seguir eventos de reproducción

Si deseas verificar que se hayan producido eventos específicos en una transmisión de video por Internet, sigue estos pasos para controlar los eventos ID3:

  1. Almacena los eventos multimedia en una cola y guarda cada ID de contenido multimedia junto con su marca de tiempo (si el reproductor lo muestra).
  2. En cada actualización del reproductor, o con una frecuencia establecida (500 ms recomendados (500 ms recomendados), verifica la cola de eventos multimedia para ver los eventos reproducidos recientemente mediante la comparación de las marcas de tiempo de los eventos con el cabezal de reproducción.
  3. Para los eventos multimedia que confirmas que se reprodujeron, verifica el tipo buscando el ID de contenido multimedia en las etiquetas de pausa publicitaria almacenadas. Ten en cuenta que las etiquetas almacenadas solo contienen un prefijo del ID de contenido multimedia, por lo que no es posible obtener una coincidencia exacta.
  4. Usa eventos de "progreso" para hacer un seguimiento de si un usuario se encuentra dentro de una pausa publicitaria. No envíes estos eventos al extremo de verificación de medios. Para otros tipos de eventos, agrega el ID de contenido multimedia al extremo de verificación de contenido multimedia y realiza una solicitud GET para realizar un seguimiento de la reproducción.
  5. Quita el evento multimedia de la cola.

Ejemplo de cuerpo de solicitud

https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/

Respuestas de ejemplo

Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict

Puedes verificar los eventos de seguimiento en el Supervisión de actividad de transmisión.

4. Actualiza los parámetros de la sesión de transmisión en vivo

Es posible que desees ajustar los parámetros de la sesión después de crear una transmisión. Para ello, realiza una solicitud a la URL de actualización de sesión.

Ejemplo de cuerpo de solicitud

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Cuerpo de respuesta de ejemplo

Successful response would be to look for - HTTP/1.1 200

Limitaciones

Si usas la API en WebViews, se aplican las siguientes limitaciones con respecto a la segmentación:

  • UserAgent: El parámetro del usuario-agente se pasa como un valor específico del navegador en lugar de la plataforma subyacente.
  • rdid, idtype y is_lat: No se pasó correctamente el ID de dispositivo, lo que limita las capacidades de las siguientes funciones:
    • Limitación de frecuencia
    • Rotación de anuncios secuencial
    • Segmentación por público y segmentación

Prácticas recomendadas

Ten en cuenta que el extremo de metadatos para los índices de transmisión en vivo se basa en el prefijo de la etiqueta ID3 correspondiente. Esto se diseñó a fin de evitar el uso del extremo de metadatos para hacer ping de inmediato a todos los nodos de verificación.

Recursos adicionales