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.
Wenn Sie Ihren eigenen Livestream verwenden, müssen Sie die Anzeigenmarkierung einfügen. Weitere Informationen zu den unterstützten HLS- und DASH-Anzeigenmarkierungen finden Sie in der Dokumentation zu Anzeigenmarkierungen.
Wenn Sie einen Livestream mit der Google Cloud Livestream API erstellt haben, fügen Sie ein Kanalereignis für eine Werbeunterbrechung ein.
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.