Mit IMA SDKs lassen sich Multimedia-Anzeigen ganz einfach in 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 nicht zwischen Anzeigen- und Inhaltsvideo in Ihrer App wechseln müssen.
Wählen Sie die gewünschte dynamische Anzeigenbereitstellungslösung aus.
Pod-Auslieferung mit dynamischer Anzeigenbereitstellung
Mit IMA SDKs lassen sich Multimedia-Anzeigen ganz einfach in 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 nicht zwischen Anzeigen- und Inhaltsvideo in Ihrer App 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 mitImaSdkFactory.createPodStreamRequest()
oderImaSdkFactory.createPodVodStreamRequest()
erstellt werden, um die Pod-Auslieferung zu aktivieren. Für diese Methoden ist ein Netzwerkcode erforderlich. FürcreatePodStreamRequest
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
Eine Android-App, die bereits mit dem IMA DAI SDK eingerichtet ist, um Videostreams mit DAI-Anzeigen abzuspielen. Wenn Sie noch keine solche App haben, empfehlen wir als Ausgangspunkt das Android DAI-Grundbeispiel. Das BasicExample enthält den in diesem Leitfaden referenzierten Code.
Damit die dynamische Anzeigenbereitstellung in IMA funktioniert, muss deine App ID3-Ereignisse mit
VideoStreamPlayerCallback.onUserTextReceived()
senden. Beispiel für ein Code-Snippet für Full-Service-DAID
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: 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, der das Pod-Auslieferungsereignis in Ad Manager 360 identifiziert. 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
Auslieferung von Livestream-Pods
Die Methode buildStreamRequest()
wurde entfernt, die zum Wechseln zwischen dem Erstellen verschiedener Streamtypen verwendet wurde. Ändern Sie dann requestAndPlayAds()
in ImaSdkFactory.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);
}
Pod-Auslieferung für VOD-Streams
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
Auslieferung von Livestream-Pods
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();
}
Pod-Auslieferung für VOD-Streams
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.