Le SDK d'insertion dynamique d'annonces (DAI) Interactive Media Ads (IMA) s'appuie sur des informations de métadonnées intégrées aux segments multimédias du flux (métadonnées in-band) ou dans le fichier manifeste de streaming (métadonnées in-manifest) pour suivre la position des spectateurs et les événements publicitaires côté client. Les métadonnées sont disponibles dans le flux DAI dans différents formats, selon le type de flux en cours de lecture. Le SDK IMA DAI 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
StreamManager.onMessage()
méthode pour transmettre ces informations. Cette méthode transmet 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 le calendrier des événements publicitaires. Il prend un seul argument :
msg: objet de type msg 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 DAI 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 des métadonnées de flux de gestion de boucle dans votre application, consultez le guide de démarrage IMA Roku. La section de l'écouteur d'événements et du démarrage du flux du guide contient la boucle de gestion des métadonnées.
Exigences concernant le format et le conteneur du flux
Pour activer le suivi des annonces côté client sur Roku, vous devez utiliser des segments multimédias dans votre flux DAI empaquetés dans un format de conteneur compatible. Ce processus permet à Roku OS d'extraire des métadonnées temporelles.
Le lecteur multimédia Roku est compatible avec l'extraction de métadonnées ID3 in-band dans les formats de conteneur suivants :
- MPEG-2 Transport Stream (TS)
- MP4 fragmenté
- Common Media Application Format (CMAF)
Les flux audio élémentaires bruts, tels que les segments bruts Advanced Audio Coding (AAC), ne sont pas compatibles avec les métadonnées temporelles sur Roku OS. Le lecteur multimédia Roku ne peut pas extraire les métadonnées temporelles ID3 des flux audio AAC bruts, ce qui empêche le SDK IMA de recevoir des événements de métadonnées et d'envoyer des balises d'impression ou de suivi d'annonces. Pour tous les flux audio uniquement et les flux de rendu audio, vous devez utiliser des flux avec un format de conteneur compatible, tel que TS, MP4 ou CMAF.
Flux HLS CMAF
Les flux HLS DAI linéaires utilisant le Common Media Application Framework (CMAF) transmettent des métadonnées temporelles via des boîtes eMSGv1 in-band suivant la norme ID3 via CMAF. Ces boîtes eMSG sont intégrées au début de chaque segment multimédia, chaque eMSG ID3 contenant un PTS par rapport à la dernière discontinuité du flux.
Pour IMA Roku, tous les flux HLS CMAF envoient des données ID3 in-band au format eMSGv0. IMA combine les informations fournies par le format eMSGv0 avec celles de l'objet vidéo.
Pour activer l'analyse correcte des événements ID3 du flux HLS CMAF, vous devez envoyer votre
objet vidéo dans la requête de flux à l'aide de
StreamRequest.videoObject.