Gli SDK IMA semplificano l'integrazione degli annunci multimediali nei tuoi siti web e nelle tue app. Gli SDK IMA possono richiedere annunci da qualsiasi ad server conforme a VAST e gestire la riproduzione degli annunci nelle tue app. Con gli SDK IMA DAI, le app inviano una richiesta di streaming per gli annunci e i video di contenuti, sia VOD che dal vivo. L'SDK restituisce quindi un stream video combinato, in modo da non dover gestire il passaggio tra annunci e video di contenuti all'interno della tua app.
Seleziona la soluzione DAI che ti interessa
Pubblicazione di pod DAI
Gli SDK IMA semplificano l'integrazione degli annunci multimediali nei tuoi siti web e nelle tue app. Gli SDK IMA possono richiedere annunci da qualsiasi ad server conforme a VAST e gestire la riproduzione degli annunci nelle tue app. Con gli SDK IMA DAI, le app inviano una richiesta di streaming per gli annunci e i video di contenuti, sia VOD che dal vivo. L'SDK restituisce quindi un stream video combinato, in modo da non dover gestire il passaggio tra annunci e video di contenuti all'interno della tua app.
Questa guida illustra come riprodurre uno stream con pubblicazione di pod DAI utilizzando l'SDK IMA DAI con un video player per la riproduzione di stream live e VOD. Per visualizzare o seguire un'integrazione di esempio completata, scarica l'esempio di pubblicazione di pod.
Panoramica della pubblicazione di pod DAI IMA
StreamRequest
: un oggetto che definisce una richiesta di stream ai server pubblicitari di Google. Deve essere creato utilizzandoImaSdkFactory.createPodStreamRequest()
oImaSdkFactory.createPodVodStreamRequest()
per attivare la pubblicazione dei pod. Questi metodi richiedono un codice di rete ecreatePodStreamRequest
richiede anche una chiave asset personalizzata e una chiave API facoltativa. Entrambi includono altri parametri facoltativi.StreamManager
: un oggetto che gestisce la comunicazione tra lo stream video e l'SDK DAI IMA, ad esempio l'invio di ping di monitoraggio e il inoltro di eventi stream al publisher.
Prerequisiti
Un'app per Android già configurata con l'SDK IMA DAI per riprodurre stream video con annunci DAI. Se non hai già un'app di questo tipo, ti consigliamo di utilizzare Android DAI BasicExample come punto di partenza. BasicExample contiene la base di codice a cui si fa riferimento in questa guida.
È importante che la tua app invii eventi ID3 utilizzando
VideoStreamPlayerCallback.onUserTextReceived()
per il funzionamento di IMA DAI. Consulta questo esempio di snippet di codice DAI completo.
Configurare le variabili di pubblicazione dei pod
Tutte le modifiche necessarie per la pubblicazione di pod vengono eseguite in SampleAdsWrapper.java. Il primo passaggio consiste nell'aggiornare le variabili costanti.
Di seguito sono riportate le costanti di richiesta di stream di pod di annunci da aggiungere:
STREAM_URL
: da utilizzare solo per i live streaming: l'URL dello stream video fornito dal tuo manipolatore di manifest o dal partner di terze parti che utilizza la pubblicazione di pod. Prima di effettuare una richiesta, dovrebbe essere richiesto di inserire l'ID stream fornito dall'SDK IMA DAI. In questo caso, l'URL dello stream include un segnaposto,"[[STREAMID]]"
, che viene sostituito con l'ID stream prima di effettuare una richiesta.NETWORK_CODE
: il codice di rete per il tuo account Ad Manager 360.CUSTOM_ASSET_KEY
: da utilizzare solo per i live streaming: la chiave della risorsa personalizzata che identifica l'evento di pubblicazione del pod in Ad Manager 360. Può essere creato dal tuo manipolatore del manifest o da un partner di terze parti per la pubblicazione di pod.API_KEY
: Utilizzata solo per i live streaming: una chiave API facoltativa che può essere obbligatoria per recuperare un ID stream dall'SDK DAI IMA.
L'esempio di base DAI per Android è progettato per riprodurre diversi tipi di stream, ma per la pubblicazione di pod è configurato per riprodurre un solo stream. Modifica la sezione delle variabili dell'esempio in modo che corrisponda a quanto segue:
/** 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 {
...
Creare una richiesta di stream di pod dal vivo o VOD per attivare la pubblicazione di pod
Pubblicazione di pod in live streaming
Rimuovi il metodo buildStreamRequest()
che veniva utilizzato per passare dalla creazione di diversi tipi di stream. Poi, cambia requestAndPlayAds()
in call
ImaSdkFactory.createPodStreamRequest()
per creare una richiesta di annuncio per la pubblicazione in un pod dal vivo. Infine, richiedi lo stream utilizzando 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);
}
Pubblicazione di pod di stream VOD
Rimuovi il metodo buildStreamRequest()
che veniva utilizzato per passare dalla creazione di diversi tipi di stream. Quindi, cambia requestAndPlayAds()
in call
ImaSdkFactory.createPodVodStreamRequest()
per creare una richiesta di inserzione di annunci per la pubblicazione di pod VOD. Infine, richiedi lo stream utilizzando AdsLoader.requestStream()
.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Modificare e impostare l'URL stream
Pubblicazione di pod in live streaming
Chiama StreamManager.getStreamId()
per ottenere l'ID stream. Questo valore deve poi essere inserito in STEAM_URL
sostituendo "[[STREAMID]]"
. Dopo aver apportato questa modifica, il nuovo URL dello stream può essere impostato utilizzando 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();
}
Pubblicazione di pod di stream VOD
Chiama StreamManager.getStreamId()
per ottenere l'ID stream. Poi, richiedi un URL stream al tuo partner di tecnologia video (VTP). Quindi, chiama
StreamManager.loadThirdPartyStream()
per consentire a IMA di caricare l'URL stream e eventuali
sottotitoli restituiti dal tuo 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);
}
Quando la pubblicazione di pod è attiva, IMA non effettua chiamate a
VideoStreamPlayer.loadUrl()
, quindi puoi rimuovere eventuali chiamate a
videoPlayer.setStreamUrl()
e videoPlayer.play()
.
Ripulire gli asset DAI IMA
Una volta completata la richiesta e la visualizzazione degli annunci in uno streaming di pubblicazione di pod con l'SDK DAI IMA, ti consigliamo di ripulire le risorse al termine della sessione di pubblicazione di pod. Chiama StreamManager.destroy()
per interrompere la riproduzione dello stream, interrompere tutto il monitoraggio degli annunci e rilasciare tutti gli asset stream caricati.
Per vedere altri esempi di utilizzo dell'SDK Android, consulta i sample su GitHub.