Einführung in das IMA DAI SDK

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

Gewünschte Lösung für die dynamische Anzeigenbereitstellung auswählen

Dynamische Anzeigenbereitstellung für die Pod-Auslieferung

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

In dieser Anleitung wird beschrieben, wie Sie mithilfe des IMA DAI SDK einen Pod-Auslieferungsstream für die dynamische Anzeigenbereitstellung mit einem einfachen Videoplayer für die Live- und VOD-Streamwiedergabe wiedergeben. Wenn Sie sich eine abgeschlossene Beispielintegration ansehen oder die Schritte ausführen möchten, laden Sie das Beispiel für die Pod-Bereitstellung herunter.

Pod-Auslieferung mit der dynamischen Anzeigenbereitstellung von IMA – Ü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. Für diese Methoden ist ein Netzwerkcode erforderlich. Für createPodStreamRequest sind außerdem ein benutzerdefinierter Asset-Schlüssel und ein optionaler API-Schlüssel erforderlich. Beide enthalten andere optionale Parameter.

  • StreamManager: Ein Objekt, das die Kommunikation zwischen dem Videostream und dem IMA DAI SDK steuert, 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.

Dies sind die Konstanten für die Ad-Pod-Stream-Anfragen, die hinzugefügt werden sollen:

  • STREAM_URL: Nur für Livestreams verwendet – Die Videostream-URL, die von deinem Manifestbearbeitungsprogramm oder einem Drittanbieter, der die Pod-Auslieferung verwendet, bereitgestellt wird. Sie müssen die vom IMA DAI SDK bereitgestellte Stream-ID einfügen, bevor Sie eine Anfrage stellen können. In diesem Fall enthält die Stream-URL den Platzhalter "[[STREAMID]]", der vor der 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 verwendet – Der benutzerdefinierte Assetschlüssel, der Ihr Pod-Auslieferungsereignis in Ad Manager 360 identifiziert. Sie kann von Ihrem Manifestbearbeitungsmanager oder einem Drittanbieter für die Pod-Auslieferung erstellt werden.

  • API_KEY: Nur für Livestreams verwendet: ein optionaler API-Schlüssel, der möglicherweise zum Abrufen einer Stream-ID aus dem IMA SDK für die dynamische Anzeigenbereitstellung erforderlich ist.

Das Basisbeispiel für die dynamische Anzeigenbereitstellung in Android ist für die Wiedergabe verschiedener Streamtypen vorgesehen. Für die Pod-Auslieferung ist es jedoch so eingerichtet, dass nur ein einziger Stream wiedergegeben wird. Ändern Sie den Variablenabschnitt des Beispiels so, dass er wie folgt aussieht:

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

...

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

Pod-Auslieferung im Livestream

Entfernen Sie die Methode buildStreamRequest(), die verwendet wurde, um zwischen dem Erstellen verschiedener Streamtypen zu wechseln. Ändern Sie dann requestAndPlayAds(), um ImaSdkFactory.createPodStreamRequest() aufzurufen, um eine Anzeigenanfrage für die Live-Pod-Auslieferung zu erstellen. Fordern Sie den Stream schließlich 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-Auslieferung von VOD-Streams

Entfernen Sie die Methode buildStreamRequest(), die verwendet wurde, um zwischen dem Erstellen verschiedener Streamtypen zu wechseln. Ändern Sie dann requestAndPlayAds(), um ImaSdkFactory.createPodVodStreamRequest() aufzurufen, um eine Anzeigenanfrage für die VOD-Pod-Auslieferung zu erstellen. Fordern Sie den Stream schließlich 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

Pod-Auslieferung im Livestream

Rufe StreamManager.getStreamId() auf, um die Stream-ID abzurufen. Dieser muss dann in den STEAM_URL eingefügt werden, der "[[STREAMID]]" ersetzt. 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-Auslieferung von VOD-Streams

Rufe StreamManager.getStreamId() auf, um die Stream-ID abzurufen. Fordern Sie dann eine Stream-URL von Ihrem Videotechnologie-Partner (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(). Daher können Sie sämtliche Aufrufe von videoPlayer.setStreamUrl() und videoPlayer.play() daraus entfernen.

Fertig! Sie verwenden jetzt das IMA DAI SDK, um Anzeigen in einem Pod-Auslieferungsstream anzufordern und auszuliefern. Weitere Beispiele für das verwendete Android SDK finden Sie in den Beispielen auf GitHub.