Riprodurre i live streaming registrati con l'API Google Cloud Video Stitcher
Questa guida mostra come utilizzare l'SDK IMA DAI per Android per richiedere e riprodurre un live streaming per un evento registrato con l'API Google Cloud Video Stitcher e come inserire un'interruzione pubblicitaria durante la riproduzione.
Questa guida amplia l'esempio di base riportato nella guida introduttiva per l'IMA DAI.
Per informazioni sull'integrazione con altre piattaforme o sull'utilizzo degli SDK lato client IMA, consulta SDK Interactive Media Ads.
Se vuoi visualizzare o seguire un'integrazione di esempio completata, scarica l'esempio di Video Stitcher di Cloud.
Configura un progetto Google Cloud
Inserisci le seguenti variabili da utilizzare nell'SDK IMA:
- Località
- La regione Google Cloud
in cui è stata creata la configurazione attiva:
LOCATION
- Numero progetto
- Il numero del progetto Google Cloud che utilizza l'API Video Stitcher:
PROJECT_NUMBER
- Token OAuth
Il token OAuth a breve termine di un account di servizio con il ruolo utente Video Stitcher:
OAUTH_TOKEN
Scopri di più sulla creazione di credenziali di breve durata per gli account di servizio. Il token OAuth può essere riutilizzato in più richieste, a condizione che non sia scaduto.
- Codice di rete
Il codice di rete Ad Manager per la richiesta di annunci:
NETWORK_CODE
- ID configurazione live
- L'ID configurazione live specificato durante la creazione dell'evento di live streaming:
LIVE_CONFIG_ID
- Chiave asset personalizzata
- La chiave dell'asset personalizzato Ad Manager generata durante la procedura di creazione di una configurazione per un evento in live streaming con l'API Video Stitcher:
CUSTOM_ASSET_KEY
Scarica l'esempio di base
Scarica ed esegui l'esempio di base IMA Android DAI. Fai clic sul pulsante Riproduci nel video player per avviare lo short film "Lacrime di acciaio", che contiene interruzioni pubblicitarie ogni 30 secondi.
Richiedere un live streaming
Per sostituire lo stream di esempio con il tuo live streaming, devi utilizzare
ImaSdkFactory.createVideoStitcherLiveStreamRequest()
per creare una sessione di annunci con Google Ad Manager. Puoi utilizzare l'interfaccia utente di Google Ads Manager per individuare le sessioni DAI generate a scopo di monitoraggio e debugging.
Nel sample esistente sono presenti istruzioni condizionali per richiedere uno stream VOD o un live streaming. Per farlo funzionare con l'API Google Cloud Video Stitcher,
devi aggiungere un nuovo percorso per restituire un StreamRequest
creato utilizzando
ImaSdkFactory.createVideoStitcherLiveStreamRequest()
.
Ecco un esempio:
videoplayerapp/SampleAdsWrapper.java
private sdkFactory ImaSdkFactory;
...
private enum ContentType {
LIVE_HLS,
LIVE_DASH,
// Add a Live HLS Google Cloud type.
LIVE_HLS_GOOGLE_CLOUD,
VOD_HLS,
VOD_DASH,
}
// Set CONTENT_TYPE to the associated enum for the
// stream type you would like to test.
private static final ContentType CONTENT_TYPE =
ContentType.LIVE_HLS_GOOGLE_CLOUD;
...
@Nullable
private StreamRequest buildStreamRequest() {
StreamRequest request;
switch (CONTENT_TYPE) {
...
case LIVE_HLS_GOOGLE_CLOUD:
// Live HLS stream generated by the Google Cloud Video Stitcher API.
request = sdkFactory.createVideoStitcherLiveStreamRequest(
"NETWORK_CODE",
"CUSTOM_ASSET_KEY",
"LIVE_CONFIG_ID",
"LOCATION",
"PROJECT_NUMBER",
"OAUTH_TOKEN"
);
request.setFormat(StreamFormat.HLS);
return request;
}
// Content type not selected.
return null;
}
...
Ricarica l'app per richiedere e riprodurre il live streaming personalizzato.
(Facoltativo) Aggiungi opzioni per la sessione di streaming
Personalizza la richiesta di stream aggiungendo opzioni di sessione per eseguire l'override della configurazione predefinita dell'API Cloud Video Stitcher utilizzando StreamRequest.setVideoStitcherSessionOptions()
.
Se fornisci un'opzione non riconosciuta, l'API Cloud Video Stitcher risponderà con un errore HTTP 400. Per assistenza, consulta la guida alla risoluzione dei problemi.
Ad esempio, puoi sostituire le opzioni manifest con lo snippet di codice seguente, che richiede due manifest di stream con le rappresentazioni ordinate dalla maggiore alla minore velocità in bit.
public void requestAndPlayAds() {
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
StreamRequest streamRequest = buildStreamRequest();
// The following session options are examples. Use session options
// that are compatible with your video stream.
Map<String, Object> sessionOptions = Map.of(
"manifestOptions", Map.of(
"includeRenditions", List.of(
Map.of(
"bitrateBps", 3000, "codecs",
"hvc1.1.4.L126.B0, mp4a.40.2"),
Map.of(
"bitrateBps", 2000,
"codecs", "avc1.64001f, mp4a.40.2")
),
"bitrateOrder", "ascending"
)
);
/* sessionOptions JSON structure.
* {
* "manifestOptions": {
* "includeRenditions": [
* {"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
* {"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
* ],
* "bitrateOrder": "ascending"
* }
* };
*/
streamRequest.setVideoStitcherSessionOptions(sessionOptions);
adsLoader.requestStream(streamRequest);
}
Inserire un'interruzione pubblicitaria
L'API Google Cloud Video Stitcher inserisce gli annunci recuperati dal tag annuncio per ogni interruzione pubblicitaria. Le interruzioni pubblicitarie sono indicate nel file manifest utilizzando gli indicatori di annunci. Gli indicatori di annunci vengono inseriti dal codificatore del live streaming.
Se utilizzi il tuo live streaming, devi inserire l'indicatore di annuncio. Per maggiori informazioni sugli indicatori di annunci HLS e DASH supportati, consulta la documentazione sugli indicatori di annunci.
Se hai creato un live streaming utilizzando l'API Live Stream di Google Cloud, inserisci un evento di interruzione pubblicitaria del canale.
L'annuncio viene riprodotto immediatamente dopo l'inserimento dell'interruzione pubblicitaria.
Esegui la pulizia
Ora che hai ospitato un live streaming utilizzando l'API Google Cloud Video Stitcher e lo hai richiesto utilizzando l'SDK IMA DAI per Android, è importante ripulire le risorse di pubblicazione.
Segui la guida alla pulizia dei live streaming per rimuovere risorse e asset non necessari.