Enregistrer et charger des favoris de flux d'annonces

Ce guide explique comment implémenter le bookmarking à l'aide du SDK IMA DAI lorsque vous utilisez l'insertion dynamique d'annonces (DAI) pour les flux de vidéo à la demande (VOD). Cela suppose une implémentation de DAI IMA fonctionnelle, comme celle présentée dans la section Premiers pas.

Qu'est-ce qu'un favori ?

Cette fonctionnalité permet d'enregistrer un point précis du flux de contenu, puis d'y revenir. Supposons qu'un utilisateur regarde cinq minutes de contenu, quitte le flux vidéo, puis y revienne. La fonctionnalité de favoris enregistre la position de l'utilisateur dans le flux de sorte que celui-ci puisse reprendre la lecture là où l'utilisateur s'était arrêté. Cela garantit une expérience homogène à l'utilisateur.

Fonctionnement des favoris pour l'insertion dynamique d'annonces

Lorsque vous ajoutez un flux DAI aux favoris, vous devez enregistrer l'ID du flux et l'heure à laquelle l'utilisateur quitte la vidéo. Lorsque l'utilisateur revient, demandez à nouveau le flux et recherchez l'heure enregistrée. Étant donné que chaque instance du flux demandé peut avoir des coupures publicitaires de durées différentes, enregistrer simplement la durée du flux ne fonctionnera pas. Vous souhaitez vraiment continuer à partir du même temps de contenu.

Les méthodes de conversion à la rescousse

Le SDK IMA DAI fournit une paire de méthodes pour demander la durée du contenu pour une durée de flux donnée et la durée de flux pour une durée de contenu donnée. Grâce à ces méthodes de conversion, vous pouvez stocker la durée du contenu mise en favori, puis rechercher la durée du flux correspondante dans la nouvelle instance du flux. Voici l'approche, y compris un lien vers un exemple d'application qui illustre une implémentation de favoris fonctionnelle.

Enregistrer et charger des favoris de flux d'annonces

Enregistrez un favori lorsque le lecteur de contenu est mis en pause.

onPause() {
   var bookmarkTime = Math.floor(
   streamManager.contentTimeForStreamTime(videoElement.currentTime));
}

Charger les favoris

Chargez le favori lorsque vous demandez à nouveau un flux.

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);
}

Application exemple

Téléchargez l'application exemple pour voir une implémentation de la fonctionnalité de favoris.