Zapisywanie i wczytywanie zakładek strumienia reklam

Z tego przewodnika dowiesz się, jak zaimplementować zakładki za pomocą pakietu IMA DAI SDK, gdy używasz dynamicznego wstawiania reklam (DAI) w przypadku strumieni wideo na żądanie (VOD). Zakładamy, że masz działającą implementację IMA DAI, taką jak przedstawiona w sekcji Zaczynamy.

Co to jest dodawanie do zakładek?

To możliwość oznaczenia konkretnego momentu podczas strumieniowania zawartości i powrócenia do niego. Załóżmy, że użytkownik obejrzał pięć minut filmu, zamknął strumień wideo, a potem do niego powrócił. Funkcja tworzenia zakładek zapisuje postęp oglądania treści, dzięki czemu użytkownik może wygodnie wznowić odtwarzanie.

Zakładki dynamicznego wstawiania reklam

Podczas dodawania do zakładek strumienia DAI musisz zapisać identyfikator strumienia i czas, w którym użytkownik opuścił film. Gdy użytkownik wróci, ponownie poproś o strumień i przejdź do zapisanego czasu. Każdy strumień może zawierać reklamy o różnej długości, więc zapisywanie czasu trwania strumienia nie zadziała. Właściwie chcesz kontynuować od tego samego czasu treści.

Metody konwersji na ratunek

Pakiet IMA DAI SDK udostępnia parę metod umożliwiających wysłanie żądania czasu treści dla danego czasu strumienia oraz czasu strumienia dla danego czasu treści. Za pomocą tych metod konwersji możesz zapisać czas treści z zakładki, a następnie przejść do odpowiadającego mu czasu strumienia w nowym wystąpieniu strumienia. Oto podejście, w tym link do przykładowej aplikacji, która pokazuje działającą implementację zakładek.

Zapisywanie i wczytywanie zakładek strumienia reklam

zapisać zakładkę, gdy odtwarzacz treści jest wstrzymany;

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

Wczytuję zakładki

Załaduj zakładkę, gdy ponownie żądasz strumienia.

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

Przykładowa aplikacja

Pobierz przykładową aplikację, aby zobaczyć implementację zakładek.