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:
- 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).
- 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.
- 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.
- 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.
- 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
yis_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.