Pierwsze kroki z pakietem IMA DAI SDK

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 prostym odtwarzaczem do odtwarzania strumieni na żywo i VOD. Jeśli chcesz wyświetlić ukończoną przykładową integrację lub ją kontynuować, 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ć obsługę podów, trzeba je utworzyć 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świetlających bloki reklamowe

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

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

  • STREAM_URL: używane tylko w transmisjach na żywo – adres URL strumienia wideo podany przez manipulator pliku manifestu lub partnera zewnętrznego, który korzysta z wyświetlania bloków reklamowych. 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 bloku reklamowego 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 do wyświetlania bloków reklamowych konfiguracja pozwala odtwarzać tylko 1 strumień. 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

Blok reklamowy w transmisji na żywo

Usuń metodę buildStreamRequest(), która była używana do przełączania się między tworzeniem różnych typów strumieni. Potem zmień requestAndPlayAds(), aby wywoływać metodę ImaSdkFactory.createPodStreamRequest(), co spowoduje utworzenie żądania reklamy aktywnego bloku reklamowego. 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 w strumieniu VOD

Usuń metodę buildStreamRequest(), która była używana do przełączania się między tworzeniem różnych typów strumieni. Następnie zmień requestAndPlayAds(), aby wywoływać metodę ImaSdkFactory.createPodVodStreamRequest(), co spowoduje utworzenie żądania reklamy w bloku reklamowym 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

Blok reklamowy w 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 w strumieniu 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().

Znakomicie. Za pomocą pakietu IMA DAI SDK wysyłasz żądania i wyświetlasz reklamy w strumieniu wyświetlania reklam w bloku reklamowym. Inne przykłady użycia pakietu Android SDK znajdziesz w przykładach na GitHubie.