Lire des flux VOD enregistrés avec l'API Google Cloud Video Stitcher
Ce guide explique comment utiliser le SDK IMA DAI pour Roku afin de demander et de lire une session de streaming VOD Google Cloud.
Ce guide développe l'exemple de base du guide de démarrage pour la diffusion d'annonces interstitielles IMA.
Pour en savoir plus sur l'intégration à d'autres plates-formes ou sur l'utilisation des SDK côté client IMA, consultez la page SDK Interactive Media Ads.
Si vous souhaitez consulter ou suivre un exemple d'intégration terminée, téléchargez l'exemple d'assembleur vidéo Cloud.
Configurer un projet Google Cloud
Saisissez les variables suivantes à utiliser dans le SDK IMA:
- Emplacement
- Région Google Cloud dans laquelle votre configuration VOD a été créée :
LOCATION
- Numéro du projet
- Numéro du projet Google Cloud utilisant l'API Video Stitcher :
PROJECT_NUMBER
- Jeton OAuth
Le jeton OAuth de courte durée d'un compte de service avec le rôle utilisateur Video Stitcher:
OAUTH_TOKEN
Découvrez comment créer des jetons OAuth éphémères. Le jeton OAuth peut être réutilisé pour plusieurs requêtes tant qu'il n'a pas expiré.
- Code de réseau
Code de réseau Ad Manager pour demander des annonces :
NETWORK_CODE
- ID de configuration de la vidéo à la demande
ID de configuration VOD du flux VOD :
VOD_CONFIG_ID
Pour en savoir plus sur la création de l'ID de configuration VOD, consultez le guide de création d'un ID de configuration VOD pour le collage dans le cloud.
Configurer l'exemple de base
Téléchargez et exécutez l'exemple de base de l'insertion dynamique d'annonces IMA pour Roku. Cliquez sur le bouton de lecture du lecteur vidéo pour lancer le court-métrage "Tears of Steel", qui contient des coupures publicitaires toutes les 30 secondes.
Demander un flux de vidéo à la demande
Utilisez la fonction sdk.createVideoStitcherVodStreamRequestWithVodConfig()
pour remplacer le flux d'échantillon par votre flux VOD concaténé avec des annonces. Vous pouvez utiliser l'interface utilisateur de Google Ad Manager pour localiser les sessions DAI générées à des fins de surveillance et de débogage.
Dans l'exemple existant, des instructions conditionnelles déterminent si une StreamRequest
VOD ou une StreamRequest
en direct doit être créée. Ajoutez un nouveau chemin pour créer un StreamRequest
VOD Cloud Video Stitcher à l'aide des valeurs générées précédemment.
Exemple :
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
Rechargez l'application pour demander et lire votre flux VOD personnalisé.
(Facultatif) Ajouter des options de session de streaming
Personnalisez votre requête de flux en ajoutant des options de session pour remplacer la configuration par défaut de l'API Cloud Video Stitcher en renseignant le paramètre videoStitcherSessionOptions
dans votre objet StreamRequest.
Si vous fournissez une option non reconnue, l'API Cloud Video Stitcher répondra par une erreur HTTP 400. Pour obtenir de l'aide, consultez le guide de dépannage.
Par exemple, vous pouvez remplacer les options de fichier manifeste avec l'extrait de code suivant, qui demande deux fichiers manifestes de flux avec des rendus triés du débit le plus bas au plus élevé.
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)
Effectuer un nettoyage
Maintenant que vous avez hébergé un flux VOD à l'aide de l'API Google Cloud Video Stitcher et que vous l'avez demandé à l'aide du SDK IMA DAI pour Roku, il est important de nettoyer toutes les ressources de diffusion.
Suivez le guide de nettoyage des contenus VOD pour supprimer toutes les ressources et composants inutiles.