Regarder des diffusions en direct enregistrées auprès de l'API Google Cloud Video Stitcher
Ce guide explique comment utiliser le SDK IMA DAI pour Roku afin de demander et de lire une diffusion en direct pour un événement enregistré avec l'API Google Cloud Video Stitcher. Il explique également comment insérer une coupure publicitaire pendant la lecture.
Ce guide développe l'exemple de base du guide de démarrage pour l'insertion dynamique d'annonces IMA.
Pour en savoir plus sur l'intégration à d'autres plates-formes ou sur l'utilisation des SDK IMA côté client, consultez la page SDK Interactive Media Ads.
Configurer un projet Google Cloud
Saisissez les variables suivantes à utiliser dans le SDK IMA:
- Emplacement
- Région Google Cloud dans laquelle votre configuration active a été créée :
LOCATION
- Numéro du projet
- Numéro de projet Google Cloud utilisant l'API Video Stitcher :
PROJECT_NUMBER
- Jeton OAuth
Jeton OAuth de courte durée d'un compte de service avec le rôle utilisateur d'assembleur vidéo :
OAUTH_TOKEN
Découvrez comment créer des identifiants éphémères pour les comptes de service. 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 les demandes d'annonces :
NETWORK_CODE
- ID de la configuration en ligne
- ID de configuration du direct que vous avez spécifié lors de la création de votre événement en direct :
LIVE_CONFIG_ID
- Clé d'élément personnalisé
- Clé d'élément personnalisé Ad Manager générée lors de la création d'une configuration pour un événement de diffusion en direct avec l'API Video Stitcher :
CUSTOM_ASSET_KEY
Télécharger l'exemple de base
Téléchargez et exécutez l'exemple de base pour l'insertion dynamique d'annonces pour Roku IMA. 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 une diffusion en direct
Pour remplacer l'exemple de flux par votre diffusion en direct Cloud Video Stitcher, utilisez la fonction sdk.createVideoStitcherLiveStreamRequest()
. Une fois que votre session d'insertion dynamique d'annonce est active, vous pouvez utiliser l'interface utilisateur de Google Ad Manager pour localiser les sessions générées à des fins de surveillance et de débogage.
L'exemple existant contient des instructions conditionnelles permettant de déterminer s'il faut créer un StreamRequest
de VOD ou un StreamRequest
en direct. Pour qu'il fonctionne avec l'API Google Cloud Video Stitcher, ajoutez un nouveau chemin d'accès pour construire un StreamRequest
en direct 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.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
Une fois ces modifications ajoutées, actualisez l'application pour demander et lire votre diffusion en direct personnalisée.
(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 renvoie une erreur HTTP 400. Pour obtenir de l'aide, consultez le guide de dépannage.
Par exemple, vous pouvez remplacer les options du fichier manifeste par l'extrait de code suivant, qui demande deux fichiers manifestes de flux avec les renvois classés du débit le plus faible au débit le plus élevé.
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)
Insérer une coupure publicitaire
L'API Google Cloud Video Stitcher insère les annonces extraites du tag d'emplacement publicitaire pour chaque coupure publicitaire. Les coupures publicitaires sont indiquées dans le fichier manifeste à l'aide de repères d'annonces. Les repères d'annonce sont insérés par l'encodeur de diffusion en direct.
Si vous utilisez votre propre diffusion en direct, vous devez insérer le marqueur d'annonce. Pour en savoir plus sur les repères d'annonce HLS et DASH compatibles, consultez la documentation sur les repères d'annonce.
Si vous avez créé une diffusion en direct à l'aide de l'API Google Cloud Livestream, insérez un événement de canal de coupure publicitaire.
L'annonce est diffusée immédiatement après l'insertion de la coupure publicitaire.
Effectuer un nettoyage
Maintenant que vous avez hébergé une diffusion en direct à l'aide de l'API Google Cloud Video Stitcher et que vous l'avez demandée à l'aide du SDK IMA DAI pour Roku, il est important de nettoyer toutes les ressources de diffusion.
Suivez le guide de nettoyage de la diffusion en direct pour supprimer les ressources et les éléments inutiles.