Riprodurre live streaming registrati con l'API Google Cloud Video Stitcher
Questa guida mostra come utilizzare l'SDK IMA DAI per tvOS 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 sezione Come iniziare guida per IMA DAI.
Per informazioni sull'integrazione con altre piattaforme o sull'utilizzo degli SDK lato client IMA, consulta 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 attiva:
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 l'utente dello stitching video ruolo:
OAUTH_TOKEN
Scopri di più su creazione di credenziali di breve durata per i servizi Google Cloud. 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 dal vivo che hai specificato durante la creazione dell'evento in 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 e prepara l'esempio di base
Scarica gli esempi DAI IMA per tvOS ed estrai l'esempio di base in una nuova cartella. Questo esempio è un modello Xcode basato su Cocoapods per caricare l'SDK IMA.
Per preparare l'esempio da eseguire, assicurati che CocoaPods sia installato, quindi apri cartella di esempio di base nel terminale ed esegui questo comando:
pod install --repo-update
Al termine del comando, vedrai un file denominato BasicExample.xcworkspace
nella
cartella del progetto. Apri questo file in Xcode ed esegui l'esempio per assicurarti che il video di test e gli annunci vengano riprodotti come previsto.
Richiedere un live streaming
Per sostituire lo stream di esempio con il tuo live streaming, devi utilizzare lo
IMAVideoStitcherLiveStreamRequest
classe che crea automaticamente un annuncio
sessione 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 richiedere uno stream VOD o una
in live streaming dai server DAI di Google. Per far funzionare l'esempio con Google
API Cloud Video Stitcher, dovrai sostituire l'attuale requestStream
con una funzione che utilizza la classe IMAVideoStitcherLiveStreamRequest
:
ViewController.m
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
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";
static NSString *const kBackupStreamURLString =
@"http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/"
@"master.m3u8";
@interface ViewController () <IMAAdsLoaderDelegate, IMAStreamManagerDelegate>
...
- (void)requestStream {
IMAAVPlayerVideoDisplay *videoDisplay =
[[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.playerViewController.player];
IMAAdDisplayContainer *adDisplayContainer =
[[IMAAdDisplayContainer alloc] initWithAdContainer:self.adContainerView];
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kLocation
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:self.adDisplayContainer
videoDisplay:self.videoDisplay
userContext:nil];
[self.adsLoader requestStreamWithRequest:request];
}
(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 compilando il parametro
videoStitcherSessionOptions
nella richiesta
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 opzioni del file manifest con il seguente snippet di codice, che richiede due manifest dello stream con immagini ordinate dalla velocità in bit più bassa a quella più alta.
Objective-C
// Define session options JSON string.
// The following session options are examples. Use session options
// that are compatible with your video stream.
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.
// The following session options are examples. Use session options
// that are compatible with your video stream.
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 puoi 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 un'interruzione pubblicitaria. Le interruzioni pubblicitarie sono indicate nel file manifest utilizzando gli indicatori di annunci. Gli indicatori degli annunci sono inserito dal codificatore del live streaming.
Se utilizzi il tuo live streaming, devi inserire l'indicatore di annuncio. Per Per ulteriori informazioni sugli indicatori di annunci HLS e DASH supportati, consulta documentazione sugli indicatori di annunci.
Se hai creato un live streaming utilizzando l'API Google Cloud Livestream, 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 tvOS, è importante ripulire le risorse di pubblicazione.
Segui le pulire i live streaming per rimuovere risorse e asset non necessari.