Questa guida mostra come implementare i preferiti utilizzando l'SDK IMA DAI quando si utilizza l'inserimento di annunci dinamici (DAI) per gli stream video on demand (VOD). Si presume un'implementazione di IMA DAI funzionante, come quella presentata in Inizia.
Che cos'è il salvataggio dei preferiti?
I preferiti consentono di salvare e ritornare successivamente a un punto specifico nel flusso di contenuti. Supponiamo che un utente guardi cinque minuti di contenuti, poi abbandoni lo stream video e torni più tardi. I preferiti salvano la posizione dell'utente nello stream e riprendono la riproduzione dal punto di interruzione, per garantire allo spettatore un'esperienza perfettamente integrata.
Funzionalità di aggiunta di preferiti DAI sotto il cofano
Quando aggiungi un stream DAI ai preferiti, devi registrare l'ID stream e il momento in cui l'utente esce dal video. Quando l'utente torna, richiedi di nuovo lo stream e vai al momento salvato. Poiché ogni istanza dello stream richiesto può avere interruzioni pubblicitarie di durata diversa, il semplice salvataggio del tempo dello stream non funziona. In realtà vuoi continuare dalla stessa ora dei contenuti.
I metodi di conversione in soccorso
L'SDK IMA DAI fornisce una coppia di metodi per richiedere l'ora dei contenuti per un determinato ora dello stream e l'ora dello stream per un determinato ora dei contenuti. Utilizzando questi metodi di conversione, puoi memorizzare il bookmarked orario dei contenuti e poi andare all'ora dello stream corrispondente nella nuova istanza dello stream. Ecco l'approccio, incluso un link a un'app di esempio che mostra un'implementazione dei preferiti funzionante.
Salvare e caricare i preferiti degli stream di annunci
Salvare un preferito quando il player dei contenuti è in pausa.
onPause() {
var bookmarkTime = Math.floor(
streamManager.contentTimeForStreamTime(videoElement.currentTime));
}
Caricamento dei preferiti
Carica il preferito quando richiedi di nuovo uno stream.
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 di esempio
Scarica l'app di esempio per visualizzare un'implementazione dei preferiti.