Das IMA DAI SDK (Dynamic Ad Insertion, dynamische Anzeigenbereitstellung) verwendet Metadaten, die in die Media-Segmente des Streams (In-Band-Metadaten) oder in die Streaming-Manifestdatei (In-Manifest-Metadaten) eingebettet sind, um die Positionen der Zuschauer und clientseitige Anzeigenereignisse zu erfassen. Metadaten sind im DAI-Stream in verschiedenen Formaten verfügbar, je nachdem, welcher Stream wiedergegeben wird. Das IMA DAI SDK verarbeitet alle Metadatenformate über eine einzige API.
Ihre App ist für das Erfassen von Metadaten und das Weiterleiten an das IMA DAI SDK verantwortlich. Das SDK bietet die Methode StreamManager.onMessage()
, um diese Informationen zu übergeben. Diese Methode leitet Metadaten in Form eines msg
-Objekts weiter, das vom roVideo-Port bereitgestellt wird. Diese Objekte werden dann vom IMA DAI SDK verarbeitet, um das Timing für Werbeereignisse festzulegen. Sie akzeptiert ein einzelnes Argument:
msg
: Ein msg-Typ-Objekt, das vom roVideo-Port bereitgestellt wird.
Beispielcode für Metadaten
Hier sehen Sie ein Beispiel dafür, wie Sie die Metadaten vom roVideo-Port verarbeiten und über StreamManager.onMessage()
an das IMA DAI SDK übergeben.
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
Weitere Informationen dazu, wie du die Stream-Metadaten für die Schleifenverarbeitung in deine App einbindest, findest du im IMA-Roku-Startleitfaden. Der Abschnitt Event-Listener und Stream-Start des Leitfadens enthält die Metadaten-Verarbeitungsschleife.
HLS-CMAF-Streams
Bei linearen DAI-HLS-Streams mit dem Common Media Application Framework (CMAF) werden Zeitmetadaten in In-Band-eMSGv1-Feldern gemäß dem ID3-über-CMAF-Standard übergeben. Diese eMSG-Felder sind am Anfang jedes Media-Segments eingebettet. Jedes ID3-eMSG enthält einen PTS relativ zur letzten Unterbrechung im Stream.
Bei IMA Roku werden alle HLS-CMAF-Streams mit In-Band-ID3-Daten im eMSGv0-Format gesendet. IMA kombiniert Informationen aus dem eMSGv0-Format mit Informationen aus dem Videoobjekt.
Damit ID3-Ereignisse in HLS-CMAF-Streams richtig geparst werden können, müssen Sie Ihr Videoobjekt in der Streamanfrage mit StreamRequest.videoObject
senden.