Utiliser le SDK IMA pour l'insertion dynamique d'annonce sur Roku

Lire des flux VOD enregistrés avec l'API Google Cloud Video Stitcher

Ce guide explique comment utiliser le SDK IMA DAI Roku pour demander et lire un Flux de vidéo à la demande Google Cloud session.

Ce guide développe l'exemple de base du guide de démarrage pour la DAI 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.

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 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 l'utilisateur Video Stitcher rôle:

OAUTH_TOKEN

En savoir plus sur de création d'authentifications OAuth de courte durée les jetons. 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 configuration de la vidéo à la demande

ID de configuration VOD du flux de vidéo à la demande: 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'application IMA DAI pour Roku Basic. Exemple : Cliquez sur le bouton de lecture. sur le lecteur vidéo pour lancer le court-métrage "Tears of Steel", inclut des coupures publicitaires toutes les 30 secondes.

Demander un flux de vidéo à la demande

Utilisez les sdk.createVideoStitcherVodStreamRequestWithVodConfig() pour remplacer l'échantillon de flux par votre flux de vidéo à la demande assemblé avec l'annonce. 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.

L'exemple existant contient des instructions conditionnelles pour déterminer s'il faut créer un StreamRequest de VOD ou un StreamRequest en direct. Ajouter un chemin d'accès à construire un StreamRequest Cloud Video Stitcher VOD à 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

Actualisez l'application pour demander et lire votre flux de vidéo à la demande personnalisé.

(Facultatif) Ajouter des options de session de streaming

Personnalisez votre demande de diffusion en ajoutant des options de session pour remplacer celles par défaut configuration de l'API Cloud Video Stitcher en renseignant le champ videoStitcherSessionOptions dans votre StreamRequest .

Si vous fournissez une option non reconnue, l'API Cloud Video Stitcher répondra par une erreur HTTP 400. Consultez le guide de dépannage pour obtenir de l'aide.

Par exemple, vous pouvez ignorer options du fichier manifeste avec l'extrait de code suivant, qui demande deux fichiers manifestes de flux avec rendus classés du débit le plus faible au débit le 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": {
    "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)

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 Nettoyage des vidéos à la demande pour supprimer les ressources et les éléments inutiles.