Zeitgesteuerte Metadaten in linearen Streams für die dynamische Anzeigenbereitstellung verarbeiten

Das Interactive Media Ads (IMA) Dynamic Ad Platzhalter SDK (DAI) basiert auf Metadateninformationen, die in die Mediensegmente des Streams eingebettet sind (In-Band-Metadaten), oder in der Streaming-Manifestdatei (in den Manifest-Metadaten), um die und clientseitige Anzeigenereignisse. Metadaten sind im Stream für die dynamische Anzeigenbereitstellung verfügbar. in verschiedenen Formaten, je nach Art des wiedergegebenen Streams. Dynamische Anzeigenbereitstellung IMA Das SDK verarbeitet alle Metadatenformate über eine einzige API.

Ihre App ist dafür verantwortlich, Metadaten zu erfassen und an das IMA DAI SDK weiterzuleiten. Das SDK bietet die StreamManager.onMessage() um diese Informationen zu übergeben. Mit dieser Methode werden Metadaten in Form eines msg-Objekts weitergeleitet, das vom roVideo-Port bereitgestellt wird. Diese Objekte werden dann von IMA DAI SDK verwenden, um den Zeitplan für Anzeigenereignisse festzulegen. Sie brauchen nur einen Argument:

  • msg: Ein Objekt vom Typ „msg“, das vom roVideo-Port bereitgestellt wird.

Beispielcode für Metadaten

Hier ist ein Beispiel für die Verarbeitung der Metadaten vom roVideo-Port 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 zum Einbinden von Schleifenverarbeitungsstream-Metadaten in Ihrer App verwenden, finden Sie Startleitfaden für IMA Roku Die Abschnitt für Event-Listener und Stream-Start der Anleitung enthält die Schleife für die Metadatenverarbeitung.

HLS-CMAF-Streams

Bei linearen dynamischen Anzeigenbereitstellungs-HLS-Streams mit dem Common Media Application Framework (CMAF) werden getaktete Metadaten über In-Band-eMSGv1-Boxen gemäß dem ID3-bis-CMAF-Standard übergeben. Diese eMSG-Boxen sind am Anfang jedes Mediensegments eingebettet, wobei jede ID3 eMSG Folgendes enthält: einen PTS-Wert relativ zur letzten Diskontinuität im Stream.

Bei IMA Roku senden alle HLS-CMAF-Streams In-Band-ID3-Daten im eMSGv0-Format. IMA kombiniert im eMSGv0-Format bereitgestellte Informationen mit Informationen vom Videoobjekt entfernt.

Damit die ID3-Ereignisse des HLS-CMAF-Streams richtig geparst werden, müssen Sie Ihren in der Streamanfrage mithilfe von StreamRequest.videoObject