Konfigurowanie pakietu IMA SDK na potrzeby DAI

Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą wysyłać żądania reklam z dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w aplikacjach. Dzięki pakietom SDK IMA DAI aplikacje wysyłają żądania strumienia danych wideo z reklam i treści wideo – VOD lub treści na żywo. Pakiet SDK zwraca połączony strumień wideo, więc nie musisz już zarządzać przełączaniem się między reklamą a treścią wideo w aplikacji.

Wybierz rozwiązanie DAI, które Cię interesuje

Blok reklamowy z dynamicznym wstawianiem reklam

Pakiety IMA SDK ułatwiają integrację reklam multimedialnych z witrynami i aplikacjami. Pakiety IMA SDK mogą wysyłać żądania reklam z dowolnego serwera reklam zgodnego z VAST i zarządzać odtwarzaniem reklam w aplikacjach. Dzięki pakietom SDK IMA DAI aplikacje wysyłają żądania strumienia danych wideo z reklam i treści wideo – VOD lub treści na żywo. Pakiet SDK zwraca połączony strumień wideo, więc nie musisz już zarządzać przełączaniem się między reklamą a treścią wideo w aplikacji.

Ten przewodnik pokazuje, jak odtwarzać strumień wyświetlania bloków reklamowych z dynamicznym wstawianiem reklam, korzystając z pakietu IMA DAI SDK z odtwarzaczem do odtwarzania strumieni na żywo i VOD. Aby wyświetlić ukończoną przykładową integrację lub ją wykonać, pobierz przykład wyświetlania podów.

Omówienie wyświetlania podów z IMA DAI

  • StreamRequest: obiekt definiujący żądanie strumienia do serwerów reklamowych Google. Aby włączyć wyświetlanie podów, należy utworzyć je za pomocą ImaSdkFactory.createPodStreamRequest() lub ImaSdkFactory.createPodVodStreamRequest(). Te metody wymagają kodu sieci, a createPodStreamRequest wymagają też niestandardowego klucza zasobu i opcjonalnego klucza API. Oba typy zawierają inne opcjonalne parametry.

  • StreamManager: obiekt obsługujący komunikację między strumieniem wideo a pakietem IMA DAI SDK, np. uruchamianie pingów śledzących i przekierowywanie zdarzeń strumienia do wydawcy.

Wymagania wstępne

Konfigurowanie zmiennych wyświetlania bloków reklamowych

Wszystkie zmiany wymagane do wyświetlania podów są wprowadzane w pliku SampleAdsWrapper.java. Pierwszym krokiem jest aktualizacja zmiennych stałych.

Oto stałe żądania strumienia bloku reklamowego, które należy dodać:

  • STREAM_URL: używane tylko na potrzeby transmisji na żywo – adres URL strumienia wideo podany przez manipulator pliku manifestu lub partnera zewnętrznego za pomocą wyświetlania podów. Przed wysłaniem żądania powinno być wymagane wstawienie identyfikatora strumienia dostarczonego przez pakiet IMA DAI SDK. W tym przypadku adres URL strumienia zawiera obiekt zastępczy "[[STREAMID]]", który przed wysłaniem żądania jest zastępowany identyfikatorem strumienia.

  • NETWORK_CODE: kod sieci Twojego konta Ad Managera 360.

  • CUSTOM_ASSET_KEY: używany tylko w transmisjach na żywo – niestandardowy klucz zasobu identyfikujący zdarzenie wyświetlania bloków reklamowych w usłudze Ad Manager 360. Można go utworzyć za pomocą manipulatora pliku manifestu lub zewnętrznego partnera obsługującego pody.

  • API_KEY: używany tylko na potrzeby transmisji na żywo – opcjonalny klucz interfejsu API, który może być wymagany do pobierania identyfikatora strumienia z pakietu IMA DAI SDK.

Podstawowy przykład DAI w Androidzie został zaprojektowany do odtwarzania różnych typów strumieni, ale w przypadku wyświetlania podów jego ustawienia pozwalają na odtwarzanie tylko jednego strumienia. Zmień sekcję zmiennej w przykładzie tak, aby była zgodna z tym fragmentem:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
          "master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
          "&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&seg-host=dai.google.com&stream_id=[[STREAMID]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

Utwórz żądanie strumienia bloku reklamowego na żywo lub VOD, aby włączyć wyświetlanie bloków reklamowych

Wyświetlanie bloków reklamowych transmisji na żywo

Usuń metodę buildStreamRequest(), która służyła do przełączania się między tworzeniem różnych typów strumieni. Następnie zmień requestAndPlayAds(), aby wywoływać metodę ImaSdkFactory.createPodStreamRequest(), co spowoduje utworzenie żądania reklamy wyświetlającego bloki reklamowe na żywo. Na koniec poproś o utworzenie transmisji za pomocą AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Wyświetlanie bloków reklamowych strumienia VOD

Usuń metodę buildStreamRequest(), która służyła do przełączania się między tworzeniem różnych typów strumieni. Następnie zmień requestAndPlayAds(), aby wywoływać metodę ImaSdkFactory.createPodVodStreamRequest(), co pozwoli utworzyć żądanie reklamy wyświetlającej blok reklamowy VOD. Na koniec poproś o utworzenie transmisji za pomocą AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Edytowanie i ustawianie adresu URL transmisji

Wyświetlanie bloków reklamowych transmisji na żywo

Wywołaj StreamManager.getStreamId(), aby uzyskać identyfikator strumienia. Należy go następnie wstawić do zakresu STEAM_URL, zastępując "[[STREAMID]]". Po wprowadzeniu tej zmiany nowy adres URL transmisji będzie można ustawić za pomocą videoPlayer.setStreamUrl().

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

Wyświetlanie bloków reklamowych strumienia VOD

Wywołaj StreamManager.getStreamId(), aby uzyskać identyfikator strumienia. Następnie poproś partnera ds. technologii wideo o adres URL strumienia. Następnie wywołaj StreamManager.loadThirdPartyStream(), by pakiet IMA wczytał adres URL strumienia i wszystkie napisy zwrócone przez TVP.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

Gdy wyświetlanie bloków reklamowych jest włączone, IMA nie wywołują wywołania VideoStreamPlayer.loadUrl(), więc możesz usunąć z niego wszystkie wywołania videoPlayer.setStreamUrl() i videoPlayer.play().

Czyszczenie zasobów IMA DAI

Po pomyślnym zakończeniu żądania i wyświetlania reklam w strumieniu wyświetlania bloków reklamowych za pomocą pakietu IMA DAI SDK wyczyść wszystkie zasoby po zakończeniu sesji wyświetlania bloków reklamowych. Wywołaj StreamManager.destroy(), aby zatrzymać odtwarzanie transmisji, zatrzymać śledzenie reklam i zwolnić wszystkie wczytane zasoby strumienia.

Inne przykłady użycia pakietu Android SDK znajdziesz w przykładach w serwisie GitHub.