Zakładki

Z tego przewodnika dowiesz się, jak wdrożyć dodawanie zakładek za pomocą pakietu IMA DAI SDK w przypadku korzystania z dynamicznego wstawiania reklam (DAI) w strumieniach wideo na żądanie (VOD). Zakładamy tutaj, że masz działającą implementację IMA DAI, taką jak ta przedstawiona w artykule Rozpocznij.

Co to jest tworzenie zakładek?

Zakładki to możliwość zapisania konkretnego miejsca w strumieniu treści, a potem powrót do niego. Załóżmy, że użytkownik ogląda pięć minut treści, opuszcza strumień wideo, a potem do niego wraca. Dodanie użytkownika do zakładek pozwala zapisać pozycję użytkownika w strumieniu, dzięki czemu może rozpocząć transmisję od miejsca, w którym została przerwana.

Tworzenie zakładek z dynamicznym wstawianiem reklam

Aby utworzyć zakładkę strumienia z dynamicznym wstawianiem reklam, musisz zarejestrować identyfikator strumienia i godzinę zamknięcia filmu przez użytkownika. Gdy użytkownik wróci, wyślij ponownie żądanie strumienia i sprawdź zaoszczędzony czas. W każdej instancji żądanego strumienia mogą występować przerwy na reklamę o różnej długości, więc oszczędność czasu transmisji nie będzie działać. Bardzo zależy Ci na tym, by kontynuować od tego samego czasu trwania.

Ratunkowe metody konwersji

Pakiet IMA DAI SDK udostępnia dwie metody żądania czasu treści dla danego czasu strumieniowego i czasu strumieniowania dla wybranego czasu trwania treści. Korzystając z tych metod konwersji, możesz przechowywać dodany do zakładek czas treści, a potem przeszukiwać odpowiedni czas strumienia w nowym wystąpieniu strumienia. Oto podejście, łącznie z podaniem linku do przykładowej aplikacji, która pokazuje działającą implementację zakładek.

Zapisuję zakładki

Zapisz zakładkę, gdy Aktywność jest wstrzymana.

- (void)viewWillAppear:(BOOL)animated {
  ...
  self.bookmarkTime =
      [self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
          self.playerViewController.player.currentTime)];
}

Wczytuję zakładki

Wczytaj zakładkę, gdy ponownie prosisz o strumień. Jest to element implementacji interfejsu VideoStreamPlayer.

- (void)streamManagerIsPlaybackReady:(IMAStreamManager *)streamManager {
...
  if (self.bookmarkTime != 0) {
    NSTimeInterval streamTime = [self.streamManager
        streamTimeForContentTime:self.bookmarkTime];
    [self.playerViewController.player
        seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
  }
}

Przykładowa aplikacja

Przykładowa aplikacja