En esta guía, se muestra cómo implementar la creación de favoritos con el SDK de DAI de IMA cuando se usa la inserción de anuncios dinámicos (DAI) para transmisiones de video on demand (VOD). Esto supone que tienes una implementación de la DAI de IMA que funciona, como la que se presenta en Cómo comenzar.
¿Qué es la creación de favoritos?
Los favoritos son la capacidad de guardar un punto específico en la transmisión del contenido y luego regresar a él. Supongamos que un usuario mira cinco minutos de contenido, deja la transmisión de video y luego regresa a ella. Los favoritos guardan la posición del usuario en la transmisión para que pueda retomarla desde donde la dejó y, de esta forma, ofrecen al espectador una experiencia continua.
Funcionamiento interno de los favoritos de la DAI
Cuando agregues a favoritos un flujo de DAI, debes registrar el ID y la hora del flujo cuando el usuario salga del video. Cuando el usuario regrese, vuelve a solicitar la transmisión y busca el tiempo guardado. Dado que cada instancia de la transmisión solicitada puede tener pausas publicitarias de diferentes duraciones, no funcionará simplemente guardar el tiempo de transmisión. Lo que realmente quieres hacer es continuar desde el mismo horario de contenido.
Métodos de conversión al rescate
El SDK de DAI de IMA proporciona un par de métodos para solicitar la hora del contenido para una hora de transmisión determinada y la hora de transmisión para una hora del contenido determinada. Con estos métodos de conversión, puedes almacenar la hora del contenido con favoritos y, luego, buscar la hora de la transmisión correspondiente en la instancia nueva de la transmisión. Este es el enfoque, incluido un vínculo a una app de ejemplo que muestra una implementación de favoritos en funcionamiento.
Cómo guardar y cargar favoritos de flujos de anuncios
Guardar un favorito cuando el reproductor de contenido está en pausa
onPause() {
var bookmarkTime = Math.floor(
streamManager.contentTimeForStreamTime(videoElement.currentTime));
}
Cómo cargar marcadores
Carga el favorito cuando vuelvas a solicitar una transmisión.
function loadUrl(url) {
hls.on(Hls.Events.MANIFEST_PARSED, () => {
var startTime = 0;
if (bookmarkTime) {
var startTime = streamManager.streamTimeForContentTime(bookmarkTime);
// Seeking on load triggers the onSeekEnd event, so treat this seek as
// if it's snapback. Without this, resuming at a bookmark kicks you
// back to the ad before the bookmark.
isSnapback = true;
}
hls.startLoad(startTime);
videoElement.addEventListener('loadedmetadata', () => { videoElement.play(); });
});
hls.loadSource(url);
hls.attachMedia(videoElement);
}
App de ejemplo
Descarga la app de ejemplo para ver una implementación de favoritos.