Gérer les métadonnées planifiées dans les flux linéaires d'insertion dynamique d'annonce

Le SDK d'insertion dynamique d'annonce (DAI) d'Interactive Media Ads (IMA) s'appuie sur les informations de métadonnées intégrées aux segments multimédias du flux (métadonnées dans la bande) ou au fichier manifeste de streaming (métadonnées dans le fichier manifeste) pour suivre la position des internautes et les événements d'annonces côté client. Les métadonnées sont disponibles dans différents formats dans le flux d'insertion dynamique d'annonce, en fonction du type de flux en cours de lecture. Le SDK IMA de Roku gère tous les formats de métadonnées via une seule API.

Votre application est chargée de capturer les métadonnées et de les transmettre au SDK IMA DAI. Le SDK propose la méthode StreamManager.onMessage() pour transmettre ces informations. Cette méthode transfère les métadonnées sous la forme d'un objet msg fourni par le port roVideo. Ces objets sont ensuite traités par le SDK IMA DAI pour établir la chronologie des événements d'annonce. Elle n'accepte qu'un seul argument:

  • msg: objet de type de message fourni par le port roVideo.

Exemple de code de métadonnées

Voici un exemple de gestion des métadonnées du port roVideo et de leur transmission au SDK IMA via StreamManager.onMessage().

Sub runLoop()
  ' Forward all timed metadata events to IMA.
  m.top.video.timedMetaDataSelectionKeys = ["*"]

  ' Cycle through all the fields and set listeners.
  ' IMPORTANT: Failure to listen to the position and timedmetadata fields could
  ' result in ad impressions not being reported.
  m.port = CreateObject("roMessagePort")
  fields = m.top.video.getFields()
  for each field in fields
    m.top.video.observeField(field, m.port)
  end for

  while True
    msg = wait(1000, m.port)
    if m.top.video = invalid
      print "exiting"
      exit while
    end if

    m.streamManager.onMessage(msg)
    currentTime = m.top.video.position
    If currentTime > 3 And not m.top.adPlaying
       m.top.video.enableTrickPlay = true
    End If
  end while
End Sub

Pour en savoir plus sur l'intégration de la boucle de gestion des métadonnées de flux dans votre application, consultez le guide de démarrage d'IMA Roku. La section Écouteur d'événements et démarrage de flux du guide contient la boucle de gestion des métadonnées.

Flux CMAF HLS

Les flux HLS pour l'insertion dynamique d'annonce linéaires qui utilisent le framework d'application de médias communs (CMAF) transmettent des métadonnées minutées via des cadres eMSGv1 dans la bande, conformément à la norme ID3 à CMAF. Ces boîtes eMSG sont intégrées au début de chaque segment multimédia, et chaque eMSG ID3 contient un PTS relatif à la dernière discontinuité du flux.

Pour IMA Roku, tous les flux CMAF HLS envoient des données ID3 dans la bande au format eMSGv0. IMA combine les informations fournies par le format eMSGv0 avec celles de l'objet vidéo.

Pour permettre l'analyse correcte des événements de flux ID3 du CMAF HLS, vous devez envoyer votre objet vidéo dans la requête de flux à l'aide de StreamRequest.videoObject.