IMA DAI SDK auf Roku verwenden

VOD-Streams abspielen, die bei der Google Cloud Video Stitcher API registriert sind

In diesem Leitfaden wird gezeigt, wie du mit dem IMA DAI SDK für Roku eine Google Cloud VOD-Stream-Sitzung anforderst und wiedergibst.

In diesem Leitfaden wird das einfache Beispiel aus dem Einstiegsleitfaden für die dynamische Anzeigenbereitstellung in IMA erweitert.

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

Wenn Sie sich eine fertige Beispielintegration ansehen oder nachvollziehen möchten, laden Sie das Beispiel für den Cloud-Video-Stitcher herunter.

Google Cloud-Projekt einrichten

Gib die folgenden Variablen für die Verwendung im IMA SDK ein:

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

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

OAUTH_TOKEN

Weitere Informationen zum Erstellen kurzlebiger OAuth-Tokens Das OAuth-Token kann für mehrere Anfragen wiederverwendet werden, solange es nicht abgelaufen ist.

Netzwerkcode

Der Ad Manager-Netzwerkcode zum Anfordern von Anzeigen: NETWORK_CODE

VOD-Konfigurations-ID

Die VOD-Konfigurations-ID für den VOD-Stream: VOD_CONFIG_ID

Weitere Informationen zum Erstellen der VOD-Konfigurations-ID findest du im Leitfaden zum Erstellen einer VOD-Konfiguration für die Cloud-Stitching-Funktion.

Einfaches Beispiel einrichten

Lade das einfache Beispiel für die IMA Roku-Dynamic Ad Serving-Plattform herunter und führe es aus. Klicken Sie im Videoplayer auf die Wiedergabeschaltfläche, um den Kurzfilm „Tears of Steel“ zu starten. Dieser enthält alle 30 Sekunden Werbeunterbrechungen.

VOD-Stream anfordern

Verwende die Funktion sdk.createVideoStitcherVodStreamRequestWithVodConfig(), um den Beispielstream durch deinen VOD-Stream mit Anzeigen zu ersetzen. In der Google Ad Manager-Benutzeroberfläche können Sie die generierten dynamischen Anzeigenaufrufe finden, um sie zu überwachen und zu beheben.

Im vorhandenen Beispiel gibt es bedingte Anweisungen, um zu bestimmen, ob eine VOD-StreamRequest oder eine Live-StreamRequest erstellt werden soll. Füge einen neuen Pfad hinzu, um mit den zuvor generierten Werten einen Cloud Video Stitcher-VOD StreamRequest 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.testVideoStitcherVodStream = {
      title: "My Stream Title",
      vodConfigId: "VOD_CONFIG_ID",
      networkCode: "NETWORK_CODE",
      region: "LOCATION",
      projectNumber: "PROJECT_NUMBER",
      oAuthToken: "OAUTH_TOKEN",
      apiKey: "",
      title: "Video Stitcher VOD Stream",
      type: "stitcherVod"
    }

    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.testVideoStitcherVodStream
    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 = "stitcherVod"
    request = sdk.createVideoStitcherVodStreamRequest(
      streamData.vodConfigId,
      streamData.networkCode,
      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

Lade die App neu, um deinen benutzerdefinierten VOD-Stream anzufordern und abzuspielen.

(Optional) Optionen für die Streamingsitzung hinzufügen

Du kannst deine Streamanfrage anpassen, indem du Sitzungsoptionen hinzufügst, um die Standardkonfiguration der Cloud Video Stitcher API zu überschreiben. Fülle dazu den Parameter videoStitcherSessionOptions in deinem StreamRequest-Objekt aus.

Wenn du eine nicht erkannte Option angibst, antwortet die Cloud Video Stitcher API mit einem HTTP-Fehler 400. Weitere Informationen finden Sie in der Anleitung zur Fehlerbehebung.

Du kannst die Manifest-Optionen beispielsweise mit dem folgenden Code-Snippet überschreiben. Dabei werden zwei Streammanifeste mit Darstellungen angefordert, die von der niedrigsten bis zur höchsten Bitrate sortiert sind.


request = sdk.createVideoStitcherVodStreamRequestWithVodConfig(vodConfigId, networkCode, region, projectNumber, oAuthToken)

request.player = m.player
request.adUiNode = m.top.video

' The following session options are examples. Use session options
' that are compatible with your video stream.
sessionOptions = {
  "manifestOptions": {
    "bitrateOrder": "ascending"
  }
}
request.videoStitcherSessionOptions = sessionOptions

requestResult = sdk.requestStream(request)

Bereinigen

Nachdem du einen VOD-Stream mit der Google Cloud Video Stitcher API gehostet und über das IMA DAI SDK für Roku angefordert hast, solltest du alle Bereitstellungsressourcen bereinigen.

Folge der Anleitung unter VOD-Bereinigung, um alle nicht benötigten Ressourcen und Assets zu entfernen.