Einführung in das IMA DAI SDK

Mit IMA SDKs können Sie Multimedia-Anzeigen ganz einfach in Ihre Websites und Apps einbinden. Mit IMA SDKs können Anzeigen von jedem VAST-kompatiblen Ad-Server angefordert und die Anzeigenwiedergabe in Ihren Apps verwaltet werden. Mit IMA DAI SDKs stellen Apps eine Streamanfrage für Anzeigen- und Contentvideos – entweder VOD oder Livecontent. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht zwischen Anzeigen- und Contentvideo wechseln müssen.

Wählen Sie die gewünschte Lösung für die dynamische Anzeigenbereitstellung aus.

Dynamische Anzeigenbereitstellung für die Pod-Auslieferung

Mit IMA SDKs können Sie Multimedia-Anzeigen ganz einfach in Ihre Websites und Apps einbinden. Mit IMA SDKs können Anzeigen von jedem VAST-kompatiblen Ad-Server angefordert und die Anzeigenwiedergabe in Ihren Apps verwaltet werden. Mit IMA DAI SDKs stellen Apps eine Streamanfrage für Anzeigen- und Contentvideos – entweder VOD oder Livecontent. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht zwischen Anzeigen- und Contentvideo wechseln müssen.

In diesem Leitfaden wird erläutert, wie Sie mit dem IMA Android DAI SDK einen Stream zur Pod-Auslieferung mit dynamischer Anzeigenbereitstellung mit einem einfachen Videoplayer für die Wiedergabe von Live- und VOD-Streams wiedergeben. Wenn Sie sich eine fertige Beispielintegration ansehen oder mit ihr arbeiten möchten, laden Sie das Beispiel für die Pod-Bereitstellung herunter.

Pod-Auslieferung mit IMA3-Anzeigen – Übersicht

  • StreamRequest: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss mit ImaSdkFactory.createPodStreamRequest() oder ImaSdkFactory.createPodVodStreamRequest() erstellt werden, um die Pod-Bereitstellung zu aktivieren. Diese Methoden erfordern einen Netzwerkcode. Für createPodStreamRequest sind außerdem ein benutzerdefinierter Asset-Schlüssel und ein optionaler API-Schlüssel erforderlich. Beide enthalten weitere optionale Parameter.

  • StreamManager: Ein Objekt, das die Kommunikation zwischen dem Videostream und dem IMA DAI SDK verwaltet, z. B. das Auslösen von Tracking-Pings und das Weiterleiten von Streamereignissen an den Publisher.

Voraussetzungen

Variablen für die Pod-Auslieferung einrichten

Alle für die Pod-Auslieferung erforderlichen Änderungen werden in SampleAdsWrapper.java vorgenommen. Der erste Schritt besteht darin, die konstanten Variablen zu aktualisieren.

Im Folgenden sind die Konstanten für Anzeigen-Pod-Stream-Anfragen aufgeführt, die hinzugefügt werden sollen:

  • STREAM_URL: Wird nur für Livestreams verwendet: Das ist die Videostream-URL, die von Ihrem Manifestbearbeitungsprogramm oder einem Drittanbieter für die Pod-Bereitstellung bereitgestellt wird. Sie sollten die Stream-ID aus dem IMA DAI SDK einfügen, bevor Sie eine Anfrage stellen. In diesem Fall enthält die Stream-URL den Platzhalter "[[STREAMID]]", der durch die Stream-ID ersetzt wird, bevor eine Anfrage gestellt wird.

  • NETWORK_CODE: Das ist der Netzwerkcode für Ihr Ad Manager 360-Konto.

  • CUSTOM_ASSET_KEY: Wird nur für Livestreams verwendet: Das ist der benutzerdefinierte Asset-Schlüssel, der Ihr Pod-Auslieferungsereignis in Ad Manager 360 kennzeichnet. Dies kann von Ihrem Manifestbearbeitungsprogramm oder einem Drittanbieter-Pod-Bereitstellungspartner erstellt werden.

  • API_KEY: Wird nur für Livestreams verwendet: Das ist ein optionaler API-Schlüssel, der erforderlich sein kann, um eine Stream-ID aus dem IMA DAI SDK abzurufen.

Das BasicExample der Android-Anzeigenbereitstellung ist für die Wiedergabe verschiedener Streamtypen vorgesehen. Für die Pod-Bereitstellung ist es jedoch so eingerichtet, dass nur ein einzelner Stream wiedergegeben wird. Ändern Sie den Variablenabschnitt des Beispiels so:

/** 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 {

...

Anfrage für einen Live- oder VOD-Pod-Stream erstellen, um die Pod-Bereitstellung zu aktivieren

Bereitstellung von Livestream-Pods

Entfernen Sie die Methode buildStreamRequest(), mit der zwischen der Erstellung einer Vielzahl von Streamtypen gewechselt wurde. Ändern Sie dann requestAndPlayAds() in ImaSdkFactory.createPodStreamRequest(), um eine Anzeigenanfrage für die Live-Pod-Auslieferung zu erstellen. Fordern Sie schließlich den Stream mit AdsLoader.requestStream() an.

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

Pod-Bereitstellung für VOD-Streams

Entfernen Sie die Methode buildStreamRequest(), mit der zwischen der Erstellung einer Vielzahl von Streamtypen gewechselt wurde. Ändern Sie dann requestAndPlayAds() in den Aufruf von ImaSdkFactory.createPodVodStreamRequest(), um eine Anzeigenanfrage für die VOD-Pod-Auslieferung zu erstellen. Fordern Sie schließlich den Stream mit AdsLoader.requestStream() an.

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

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

Stream-URL bearbeiten und festlegen

Bereitstellung von Livestream-Pods

Rufe StreamManager.getStreamId() auf, um die Stream-ID zu erhalten. Dieses muss dann in die STEAM_URL eingefügt werden, wodurch "[[STREAMID]]" ersetzt wird. Nach dieser Änderung kann die neue Stream-URL mit videoPlayer.setStreamUrl() festgelegt werden.

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

Pod-Bereitstellung für VOD-Streams

Rufe StreamManager.getStreamId() auf, um die Stream-ID zu erhalten. Fordern Sie dann eine Stream-URL von Ihrem Videotechnologiepartner (VTP) an. Rufen Sie dann StreamManager.loadThirdPartyStream() auf, damit IMA die Stream-URL und alle von Ihrem TVP zurückgegebenen Untertitel lädt.

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

Wenn die Pod-Auslieferung aktiviert ist, sendet IMA keine Aufrufe an VideoStreamPlayer.loadUrl(). Sie können also alle Aufrufe von videoPlayer.setStreamUrl() und videoPlayer.play() daraus entfernen.

Fertig! Sie fordern jetzt mit dem IMA Android DAI SDK Anzeigen in einem Pod-Auslieferungsstream an. Weitere Beispiele für das verwendete Android SDK finden Sie in den Beispielen auf GitHub.