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.
Dieser Leitfaden erweitert das grundlegende Beispiel aus dem Abschnitt Erste Schritte Leitfaden für die dynamische Anzeigenbereitstellung mit IMA-Werten.
Informationen zur Integration mit anderen Plattformen oder zur Verwendung des IMA clientseitige SDKs siehe Interactive Media Ads SDKs.
Google Cloud-Projekt einrichten
Gib die folgenden Variablen für die Verwendung im IMA SDK ein:
- Standort
- Google Cloud-Region
in dem 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 dem Video Stitcher-Nutzer Rolle:
OAUTH_TOKEN
Weitere Informationen zu Kurzlebiges OAuth erstellen Tokens Das OAuth-Token kann für mehrere Anfragen wiederverwendet werden, solange abgelaufen.
- 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 finden Sie unter Cloud Stitching – Konfigurationsanleitung für VOD-Inhalte
Grundlegendes Beispiel einrichten
Lade das einfache Beispiel für die IMA Roku-Dynamic Ad Serving-Plattform herunter und führe es aus. Klicken Sie auf die Wiedergabeschaltfläche im Videoplayer, um den Kurzfilm „Tears of Steel“ zu starten. 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,
und eine VOD-StreamRequest
oder eine StreamRequest
-Livedatei zu erstellen. Neuen Pfad hinzufügen zu
ein Cloud Video Stitcher-VOD-StreamRequest
mithilfe der Werte generieren,
.
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
Aktualisiere die App, 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 Sie eine unbekannte Option angeben, In der Video Stitcher API wird ein HTTP 400-Fehler zurückgegeben. 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": {
"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)
Bereinigen
Nachdem du nun erfolgreich einen VOD-Stream gehostet hast, über die Google Cloud Video Stitcher API und über das IMA DAI SDK angefordert. bei Roku sollten alle bereitgestellten Portionen Ressourcen.
Folge der Anleitung unter VOD-Bereinigung, um alle nicht benötigten Ressourcen und Assets zu entfernen.