Riprodurre live streaming registrati con l'API Google Cloud Video Stitcher
Questa guida spiega come utilizzare l'SDK IMA DAI per iOS 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 si espande sull'esempio di base della Guida introduttiva per l'IMA DAI.
Per informazioni sull'integrazione con altre piattaforme o sull'utilizzo degli SDK IMA lato client, consulta gli SDK Interactive Media Ads.
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 live:
LOCATION
- Numero progetto
- Il numero di progetto Google Cloud utilizzando l'API Video Stitcher:
PROJECT_NUMBER
- Token OAuth
Token OAuth di breve durata di un account di servizio con il ruolo utente Strumento di stitching video:
OAUTH_TOKEN
Ulteriori informazioni sulla creazione di credenziali di breve durata per gli account di servizio. Il token OAuth può essere riutilizzato in più richieste purché non sia scaduto.
- Codice di rete
Il codice di rete Ad Manager per richiedere annunci:
NETWORK_CODE
- ID configurazione live
- L'ID configurazione dal vivo che hai specificato durante la creazione dell'evento in live streaming:
LIVE_CONFIG_ID
- Chiave asset personalizzata
- La chiave asset personalizzata di Ad Manager generata durante il processo di creazione di una
configurazione per un evento in live streaming
con l'API Video Stitcher:
CUSTOM_ASSET_KEY
- Contesto utente
- Contesto utente per il monitoraggio delle richieste. Può essere
nil
. Il valore predefinito ènil
in questa guida.
Scarica e prepara l'esempio di base
Scarica gli esempi di DAI IMA per iOS ed estrai l'esempio di base in una nuova cartella. Questo esempio è un progetto Xcode che si basa su Cocoapods per caricare l'SDK IMA.
Per preparare l'esecuzione dell'esempio, assicurati che CocoaPods sia installato, quindi apri la cartella dell'esempio di base nel terminale ed esegui questo comando:
pod install --repo-update
Una volta completato il comando, nella cartella del progetto vedrai un file denominato BasicExample.xcworkspace
. Apri questo file in Xcode ed esegui l'esempio per assicurarti che
il video e gli annunci di prova vengano riprodotti come previsto.
Richiedi un live streaming
Per sostituire lo stream di esempio con il live streaming, devi utilizzare la classe IMAVideoStitcherLiveStreamRequest
che crea automaticamente una sessione annuncio con Google Ad Manager. Puoi utilizzare l'interfaccia utente di Google Ad Manager per individuare le sessioni DAI generate a scopo di monitoraggio e debug.
Nel campione esistente sono disponibili alcuni esempi per la richiesta di uno streaming VOD o di un live streaming dai server DAI di Google. Per far funzionare l'esempio con l'API Google Cloud Video Stitcher, devi sostituire l'attuale funzione requestStream
con una che utilizza la classe IMAVideoStitcherLiveStreamRequest
:
ViewController.m
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
/// Fallback URL in case something goes wrong in loading the stream. If all goes well,
/// this will not be used.
static NSString *const kTestAppContentUrl_M3U8 =
@"//devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";
static NSString *const kLiveConfigId = @"LIVE_CONFIG_ID";
static NSString *const kLocation = @"LOCATION";
static NSString *const kProjectNumber = @"PROJECT_NUMBER";
static NSString *const kOAuthToken = @"OAUTH_TOKEN";
static NSString *const kNetworkCode = @"NETWORK_CODE";
static NSString *const kCustomAssetKey = @"CUSTOM_ASSET_KEY";
@interface ViewController () <IMAAdsLoaderDelegate, IMAStreamManagerDelegate>
...
- (void)requestStream {
// Create an ad display container for ad rendering.
IMAAdDisplayContainer *adDisplayContainer =
[[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView
viewController:self
companionSlots:nil];
// Create an IMAAVPlayerVideoDisplay to give the SDK access to your video player.
IMAAVPlayerVideoDisplay *imaVideoDisplay =
[[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.contentPlayer];
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kLocation
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:nil];
[self.adsLoader requestStreamWithRequest:request];
}
(Facoltativo) Aggiungere opzioni per la sessione di streaming
Personalizza la richiesta di streaming aggiungendo opzioni di sessione per eseguire l'override della configurazione predefinita dell'API Cloud Video Stitcher compilando il parametro videoStitcherSessionOptions
nella tua IMAVideoStitcherLiveStreamRequest.
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 eseguire l'override delle opzioni del file manifest con il seguente snippet di codice, che richiede due manifest dello stream con interpretazioni ordinate dalla velocità in bit più bassa a quella più alta.
Objective-C
// define session options JSON string
NSString *sessionOptionsStr =
@"{"
" \"manifestOptions\": {"
" \"includeRenditions\":["
" {\"bitrateBps\": 3000, \"codecs\": \"hvc1.1.4.L126.B0, mp4a.40.2\"},"
" {\"bitrateBps\": 2000, \"codecs\": \"avc1.64001f, mp4a.40.2\"},"
" ]"
" }"
"}";
// convert JSON NSString to NSDictionary
NSData *sessionOptionsData = [sessionOptionsStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSDictionary *sessionOptions = [NSJSONSerialization
JSONObjectWithData:sessionOptionsData
options:0
error:&error];
// make stream request
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kRegion
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions];
[self.adsLoader requestStreamWithRequest:request];
Swift
// define session options JSON string
let sessionOptionsStr = """
{
"manifestOptions": {
"includeRenditions": [
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
],
"bitrateOrder": "ascending"
}
}
"""
// convert JSON string to dictionary
guard let sessionOptionsData = sessionOptionsStr.data(using: .utf8, allowLossyConversion: false) else { return nil }
let sessionOptions = try? JSONSerialization.jsonObject(with: sessionOptionsData, options: .mutableContainers)
// make stream request
let request = IMAVideoStitcherLiveStreamRequest(
liveStreamEventID:ViewController.liveConfigId
region:ViewController.region
projectNumber:ViewController.projectNumber
OAuthToken:ViewController.oAuthToken
networkCode:ViewController.networkCode
customAssetKey:ViewController.customAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions)
adsLoader?.requestStream(with: request)
Esegui il progetto, quindi potrai richiedere e riprodurre il tuo live streaming personalizzato.
Inserisci 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 manifest mediante indicatori di annunci. Gli indicatori degli annunci vengono inseriti dal codificatore del live streaming.
Se stai utilizzando il tuo live streaming, devi inserire l'indicatore dell'annuncio. Per ulteriori informazioni sugli indicatori di annunci HLS e DASH supportati, consulta la documentazione relativa agli indicatori di annuncio.
Se hai creato un live streaming utilizzando l'API Google Cloud Livestream, inserisci un evento di canale di interruzione pubblicitaria.
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 iOS, è importante ripulire tutte le risorse di pubblicazione.
Segui la guida alla pulizia dei live streaming per rimuovere risorse e asset non necessari.