API de inserción de anuncios dinámicos para transmisiones de VOD

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 funciones 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 de VOD

La API de DAI admite transmisiones de VOD mediante los protocolos HLS y DASH. Los pasos que se describen en esta guía se aplican a ambos protocolos.

A fin de integrar la API en tu aplicación para transmisiones de VOD, completa los siguientes pasos:

  1. Solicita una transmisión mediante una llamada POST al extremo de transmisión:

    Ejemplo de cuerpo de la solicitud:

    https://dai.google.com/ondemand/v1/dash/content/2559737/vid/tos-dash/stream
    
      {
        key1 : "value1",
        stream_parameter1 : "value2"
      }
    

    Ejemplo de cuerpo de respuesta:

    {
       "stream_id":"d32f8920-612a-4d46-8bc7-d73fd6c17c85",
       "total_duration":636.458,
       "content_duration":596.458,
       "valid_for":"8h0m0s",
       "valid_until":"2020-06-04T20:39:41.274707306-07:00",
       "stream_manifest":"https://dai.google.com/ondemand/dash/content/2559737/vid/tos-dash/ATL/streams/d32f8920-612a-4d46-8bc7-d73fd6c17c85/manifest.mpd",
       "media_verification_url":"https://dai.google.com/view/p/service/vod/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/loc/ATL/network/124319096/content/2559737/vid/tos-dash/media/",
       "ad_breaks":[
          {
             "type":"pre",
             "start":0,
             "duration":10,
             "ads":[
                {
                   "seq":1,
                   "duration":10,
                   "title":"External NCA1C1L1 Preroll",
                   "description":"External NCA1C1L1 Preroll ad",
                   "clickthrough_url":"https://dai.google.com/ondemand/v1/dash/content/2474148/vid/bbb-clear/location/ATL/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/videoclick/5489259204425938365",
                   "events":[
                      {
                         "time":0.1,
                         "type":"start"
                      },
                      {
                         "time":2.5,
                         "type":"firstquartile"
                      },
                      {
                         "time":4.75,
                         "type":"midpoint"
                      },
                      {
                         "time":7.5,
                         "type":"thirdquartile"
                      },
                      {
                         "time":9,
                         "type":"complete"
                      }
                   ]
                }
             ]
          },
          {
             "type":"mid",
             "start":45,
             "duration":10,
             "ads":[
                {.... }
                   ]
                }
             ]
          },
          {
             "type":"post",
             "start":626.458,
             "duration":10,
             "ads":[...]
          }
       ]
    }
    

    Respuesta de error

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

  2. Analiza la respuesta JSON y almacena los siguientes valores:

    • stream_id
    • stream_manifest
    • media_verification_url
    • ad_breaks
  3. Para realizar la verificación de contenido multimedia, escucha 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), verifica la cola de eventos multimedia para ver los eventos reproducidos recientemente mediante la comparación de las marcas de tiempo del evento con el cabezal de reproducción.
    3. Para los eventos multimedia que confirmas que se reprodujeron, realiza un seguimiento de la reproducción agregando el ID de contenido multimedia al extremo de verificación de contenido multimedia y haciendo una solicitud GET.

    Ejemplo de cuerpo de la 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. Opcional: Usa los datos ad_breaks de la respuesta de creación de transmisión para buscar qué tipo de evento se activó.

  5. Quita el evento multimedia de la cola.

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: El ID de dispositivo no se pasa correctamente, lo que limita las siguientes funciones:
    • Limitación de frecuencia
    • Rotación de anuncios secuencial
    • Segmentación por público y segmentación

Prácticas recomendadas

Asignar las etiquetas ID3 al tipo de evento apropiado es tedioso en VOD. Usa la información de ad_breaks que se muestra en el JSON para buscar el evento directamente, como lo harías con el contenido en vivo.

Recursos adicionales