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

Plattform auswählen:HTML5 Roku

Das IMA DAI SDK (Interactive Media Ads Dynamic Ad Insertion SDK) 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 dafür verantwortlich, Metadaten zu erfassen und an das IMA DAI SDK weiterzuleiten. 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-Startleitfaden für Roku. 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 zeitgesteuerte Metadaten über In-Band-eMSGv1-Felder gemäß dem ID3-über-CMAF-Standard weitergegeben. 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 von HLS-CMAF-Streams richtig geparst werden können, müssen Sie Ihr Videoobjekt in der Streamanfrage mit StreamRequest.videoObject senden.