Utilizzare l'SDK IMA DAI su Roku

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.

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.