IMA DAI SDK auf Roku-Geräten verwenden

Livestreams abspielen, die bei der Google Cloud Video Stitcher API registriert sind

In dieser Anleitung wird beschrieben, wie Sie mit dem IMA DAI SDK für Roku einen Livestream für ein Ereignis anfordern und abspielen, das bei der Google Cloud Video Stitcher API registriert ist. Außerdem erfahren Sie, wie Sie während der Wiedergabe eine Werbeunterbrechung einfügen.

Dieser Leitfaden erweitert das grundlegende Beispiel aus dem Startleitfaden für die dynamische Anzeigenbereitstellung mit IMA.

Informationen zur Integration in andere Plattformen oder zur Verwendung der clientseitigen IMA SDKs finden Sie unter Interactive Media Ads SDKs.

Google Cloud-Projekt einrichten

Geben Sie die folgenden Variablen zur Verwendung im IMA SDK ein:

Standort
Die Google Cloud-Region, in der die Live-Konfiguration erstellt wurde: LOCATION
Projektnummer
Die Google Cloud-Projektnummer, für die die Video Stitcher API verwendet wird: PROJECT_NUMBER
OAuth-Token

Das kurzlebige OAuth-Token eines Dienstkontos mit der Video Stitcher-Nutzerrolle:

OAUTH_TOKEN

Weitere Informationen finden Sie unter Kurzlebige Anmeldedaten für Dienstkonten erstellen. Das OAuth-Token kann für mehrere Anfragen wiederverwendet werden, solange es nicht abgelaufen ist.

Netzwerkcode

Der Ad Manager-Netzwerkcode für die Anzeigenanfragen: NETWORK_CODE

Live-Konfigurations-ID
Die Live-Konfigurations-ID, die Sie beim Erstellen der Livestream-Veranstaltung angegeben haben: LIVE_CONFIG_ID
Benutzerdefinierter Asset-Schlüssel
Der benutzerdefinierte Asset-Schlüssel in Ad Manager, der beim Erstellen einer Konfiguration für ein Livestream-Ereignis mit der Video Stitcher API generiert wird: CUSTOM_ASSET_KEY

Einfaches Beispiel herunterladen

Laden Sie das IMA Roku DAI Basic Example herunter und führen Sie es aus. Klicke im Videoplayer auf die Wiedergabeschaltfläche, um den Kurzfilm „Tears of Steel“ zu starten. Er enthält alle 30 Sekunden Werbeunterbrechungen.

Livestream anfordern

Verwenden Sie die Funktion sdk.createVideoStitcherLiveStreamRequest(), um den Beispielstream durch Ihren Cloud Video Stitcher-Livestream zu ersetzen. Sobald Ihre Sitzung für die dynamische Anzeigenbereitstellung aktiv ist, können Sie über die Google Ad Manager-UI die generierten Sitzungen für die dynamische Anzeigenbereitstellung suchen, um sie zu Monitoring- und Fehlerbehebungszwecken zu nutzen.

Im vorhandenen Beispiel gibt es bedingte Anweisungen, um zu bestimmen, ob eine VOD-StreamRequest oder eine Live-StreamRequest erstellt werden soll. Damit dies mit der Google Cloud Video Stitcher API funktioniert, fügen Sie einen neuen Pfad hinzu, um mit den zuvor generierten Werten eine Live-StreamRequest für Cloud Video Stitcher zu erstellen.

Beispiel

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

Nachdem du diese Änderungen hinzugefügt hast, lade die App neu, um deinen benutzerdefinierten Livestream anzufordern und abzuspielen.

Optional: Optionen für Streamingsitzungen hinzufügen

Passen Sie Ihre Streamanfrage an. Fügen Sie dazu Sitzungsoptionen hinzu, um die standardmäßige Konfiguration der Cloud Video Stitcher API zu überschreiben. Füllen Sie dazu den Parameter videoStitcherSessionOptions in Ihrem StreamRequest-Objekt aus.

Wenn Sie eine unbekannte Option angeben, gibt die Cloud Video Stitcher API den HTTP-Fehler 400 zurück. Weitere Informationen finden Sie in der Anleitung zur Fehlerbehebung.

Sie können beispielsweise die Manifestoptionen mit dem folgenden Code-Snippet überschreiben, das zwei Streammanifeste mit Wiedergaben anfordert, die von der niedrigsten zur höchsten Bitrate sortiert sind.


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)

Werbeunterbrechung einfügen

Über die Google Cloud Video Stitcher API werden für jede Werbeunterbrechung Anzeigen eingefügt, die aus dem Anzeigen-Tag abgerufen werden. Werbeunterbrechungen werden im Manifest durch Anzeigenmarkierungen gekennzeichnet. Anzeigenmarkierungen werden vom Livestreamencoder eingefügt.

Die Anzeige wird sofort nach dem Einfügen der Werbeunterbrechung wiedergegeben.

Bereinigen

Nachdem Sie nun einen Livestream mit der Google Cloud Video Stitcher API gehostet und über das IMA DAI SDK für Roku angefordert haben, müssen Sie alle Bereitstellungsressourcen bereinigen.

Folgen Sie der Anleitung zur Livestream-Bereinigung, um nicht benötigte Ressourcen und Assets zu entfernen.