Riproduci live streaming registrati con l'API Google Cloud Video Stitcher
Questa guida illustra come utilizzare l'SDK IMA DAI per Roku 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
Scarica l'esempio di base
Scarica ed esegui l'esempio di DAI Basic IMA Roku. Fai clic sul pulsante di riproduzione sul video player per avviare il cortometraggio "Tears of Steel", che contiene interruzioni pubblicitarie ogni 30 secondi.
Richiedi un live streaming
Per sostituire lo stream di esempio con il live streaming Cloud Video Stitcher, utilizza la funzione sdk.createVideoStitcherLiveStreamRequest()
. Una volta che la sessione DAI è attiva, puoi utilizzare l'interfaccia utente di Google Ad Manager per
individuare le sessioni DAI generate
a scopo di monitoraggio e debug.
Nell'esempio esistente, sono presenti istruzioni condizionali per determinare se creare un StreamRequest
VOD o un StreamRequest
attivo. Per farla funzionare con
l'API Google Cloud Video Stitcher, aggiungi un nuovo percorso per creare un StreamRequest
Cloud Video Stitcher pubblicato utilizzando i valori generati
in precedenza.
Esempio
basic_example/components/MainScene.xml
<?xml version="1.0" encoding="utf-8" ?>
<component name="MainScene" extends="Scene" initialFocus = "myVideo">
<script type="text/brightscript">
<![CDATA[
function init()
m.video = m.top.findNode("myVideo")
m.video.notificationinterval = 1
m.testLiveStream = {
title: "Livestream",
assetKey: "c-rArva4ShKVIAkNfy6HUQ",
apiKey: "",
type: "live"
}
m.testVodStream = {
title: "VOD stream"
contentSourceId: "2548831",
videoId: "tears-of-steel",
apiKey: "",
type: "vod"
}
m.testVideoStitcherLiveStream = {
title: "Video Stitcher Livestream",
customAssetKey: "CUSTOM_ASSET_KEY",
networkCode: "NETWORK_CODE",
liveConfigId: "LIVE_CONFIG_ID",
region: "LOCATION",
projectNumber: "PROJECT_NUMBER",
oAuthToken: "OAUTH_TOKEN",
apiKey: "",
type: "stitcherLive"
}
loadImaSdk()
end function
function loadImaSdk() as void
m.sdkTask = createObject("roSGNode", "imasdk")
m.sdkTask.observeField("sdkLoaded", "onSdkLoaded")
m.sdkTask.observeField("errors", "onSdkLoadedError")
' Set this to the stream data you would like to play.
selectedStream = m.testVideoStitcherLiveStream
m.videoTitle = selectedStream.title
m.sdkTask.streamData = selectedStream
m.sdkTask.observeField("urlData", "urlLoadRequested")
m.sdkTask.video = m.video
' Setting control to run starts the task thread.
m.sdkTask.control = "RUN"
end function
basic_example/components/Sdk.xml
Sub loadStream()
sdk = m.sdk
sdk.initSdk()
setupVideoPlayer()
request = {}
streamData = m.top.streamData
if streamData.type = "live"
request = sdk.CreateLiveStreamRequest(streamData.assetKey, streamData.apiKey)
else if streamData.type = "vod"
request = sdk.CreateVodStreamRequest(streamData.contentSourceId, streamData.videoId, streamData.apiKey)
else if streamData.type = "stitcherLive"
request = sdk.CreateVideoStitcherLiveStreamRequest(
streamData.customAssetKey,
streamData.networkCode,
streamData.liveConfigId,
streamData.region,
streamData.projectNumber,
streamData.oAuthToken
)
else
request = sdk.CreateStreamRequest()
end if
request.player = m.player
request.adUiNode = m.top.video
requestResult = sdk.requestStream(request)
If requestResult <> Invalid
print "Error requesting stream ";requestResult
Else
m.streamManager = Invalid
While m.streamManager = Invalid
sleep(50)
m.streamManager = sdk.getStreamManager()
End While
If m.streamManager = Invalid or m.streamManager["type"] <> Invalid or m.streamManager["type"] = "error"
errors = CreateObject("roArray", 1, True)
print "error ";m.streamManager["info"]
errors.push(m.streamManager["info"])
m.top.errors = errors
Else
m.top.streamManagerReady = True
addCallbacks()
m.streamManager.start()
End If
End If
End Sub
Dopo aver aggiunto queste modifiche, ricarica l'app per richiedere e riprodurre il tuo live streaming personalizzato.
(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 mediante la compilazione del parametro videoStitcherSessionOptions
nell'oggetto StreamRequest.
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.
request = sdk.CreateVideoStitcherLiveStreamRequest(customAssetKey, networkCode, liveConfigId, region, projectNumber, oAuthToken)
request.player = m.player
request.adUiNode = m.top.video
sessionOptions = {
"manifestOptions": {
"includeRenditions":[
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
]
}
}
request.videoStitcherSessionOptions = sessionOptions
requestResult = sdk.requestStream(request)
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 correttamente un live streaming utilizzando l'API Google Cloud Video Stitcher e lo hai richiesto utilizzando l'SDK IMA DAI per Roku, è importante eseguire la pulizia di tutte le risorse di pubblicazione.
Segui la guida alla pulizia dei live streaming per rimuovere risorse e asset non necessari.