Einführung in das IMA DAI SDK

Mit IMA SDKs kannst du ganz einfach Multimedia-Anzeigen in deine 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 senden Apps eine Streamanfrage für Anzeigen- und Videoinhalte – entweder VOD- oder Liveinhalte. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht zwischen Anzeigen- und Inhaltsvideo wechseln müssen.

Wählen Sie die gewünschte dynamische Anzeigenbereitstellungslösung aus.

Pod-Auslieferung mit dynamischer Anzeigenbereitstellung

Mit IMA SDKs kannst du ganz einfach Multimedia-Anzeigen in deine 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 senden Apps eine Streamanfrage für Anzeigen- und Videoinhalte – entweder VOD- oder Liveinhalte. Das SDK gibt dann einen kombinierten Videostream zurück, sodass Sie in Ihrer App nicht zwischen Anzeigen- und Inhaltsvideo wechseln müssen.

In dieser Anleitung wird gezeigt, wie du einen Stream mit dynamischer Anzeigenbereitstellung und Pod-Auslieferung mit dem IMA DAI SDK und einem Videoplayer für die Wiedergabe von Live- und VOD-Streams abspielst. Wenn Sie sich eine fertige Beispielintegration ansehen oder anhand dieser ein Beispiel erstellen möchten, laden Sie das Beispiel für das Bereitstellen von Pods herunter.

IMA DAI Pod Serving – Übersicht

  • StreamRequest: Ein Objekt, das eine Streamanfrage an die Werbeserver von Google definiert. Muss entweder mit ImaSdkFactory.createPodStreamRequest() oder ImaSdkFactory.createPodVodStreamRequest() erstellt werden, um die Pod-Auslieferung zu aktivieren. Für diese Methoden ist ein Netzwerkcode erforderlich. Für createPodStreamRequest ist außerdem ein benutzerdefinierter Asset-Schlüssel und optional ein 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 Stream-Ereignissen an den Publisher.

Vorbereitung

Variablen für die Pod-Auslieferung einrichten

Alle für die Pod-Auslieferung erforderlichen Änderungen werden in SampleAdsWrapper.java vorgenommen. Aktualisieren Sie zuerst die Konstantenvariablen.

Hier sind die Konstanten für Anzeigen-Pod-Streamanfragen, die hinzugefügt werden müssen:

  • STREAM_URL: Nur für Livestreams verwendet: Die Videostream-URL, die von deinem Manifest-Manipulator oder Drittanbieterpartner mit Pod-Auslieferung bereitgestellt wird. Du solltest die vom IMA DAI SDK bereitgestellte Stream-ID eingeben müssen, bevor du eine Anfrage sendest. In diesem Fall enthält die Stream-URL den Platzhalter "[[STREAMID]]", der vor dem Senden einer Anfrage durch die Stream-ID ersetzt wird.

  • NETWORK_CODE: Der Netzwerkcode für Ihr Ad Manager 360-Konto.

  • CUSTOM_ASSET_KEY: Nur für Livestreams: Der benutzerdefinierte Asset-Schlüssel, mit dem das Pod-Auslieferungsereignis in Ad Manager 360 identifiziert wird. Diese kann von deinem Manifest-Bearbeiter oder deinem Pod-Auslieferungspartner erstellt werden.

  • API_KEY: Nur für Livestreams: Optionaler API-Schlüssel, der zum Abrufen einer Stream-ID aus dem IMA DAI SDK erforderlich sein kann.

Das Android DAI BasicExample ist für die Wiedergabe verschiedener Streamtypen konzipiert, aber für die Pod-Auslieferung ist es so eingerichtet, dass nur ein Stream wiedergegeben wird. Ändern Sie den Variablenbereich 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-Auslieferung zu aktivieren

Die Methode buildStreamRequest() wurde entfernt, die zum Wechseln zwischen dem Erstellen verschiedener Streamtypen verwendet wurde. Ändern Sie dann requestAndPlayAds() in „callImaSdkFactory.createPodStreamRequest()“, um eine Anzeigenanfrage für die Auslieferung von Live-Pods zu erstellen. Rufe den Stream abschließend mit AdsLoader.requestStream() ab.

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

Die Methode buildStreamRequest() wurde entfernt, die zum Wechseln zwischen dem Erstellen verschiedener Streamtypen verwendet wurde. Ändere dann requestAndPlayAds() in ImaSdkFactory.createPodVodStreamRequest(), um eine VOD-Anfrage für die Anzeigenbereitstellung für Pods zu erstellen. Rufe den Stream abschließend mit AdsLoader.requestStream() ab.

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

Rufen Sie StreamManager.getStreamId() auf, um die Stream-ID abzurufen. Dieser muss dann in STEAM_URL eingefügt werden, wobei "[[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();
}

Rufen Sie StreamManager.getStreamId() auf, um die Stream-ID abzurufen. Fordere dann eine Stream-URL von deinem Technologiepartner im Videobereich an. Rufe dann StreamManager.loadThirdPartyStream() auf, damit IMA die Stream-URL und alle Untertitel lädt, die von deinem TVP zurückgegeben wurden.

@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, ruft IMA VideoStreamPlayer.loadUrl() nicht auf. Daher kannst du alle Aufrufe an videoPlayer.setStreamUrl() und videoPlayer.play() daraus entfernen.

IMA-DAI-Assets bereinigen

Wenn du Anzeigen in einem Pod-Auslieferungsstream mit dem IMA DAI SDK angefordert und ausgeliefert hast, solltest du nach Abschluss der Pod-Auslieferungssitzung alle Ressourcen bereinigen. Rufe StreamManager.destroy() auf, um die Streamwiedergabe zu beenden, alle Anzeigen zu erfassen und alle geladenen Stream-Assets freizugeben.

Weitere Beispiele für die Verwendung des Android SDK finden Sie in den Beispielen auf GitHub.