Gestire i metadati a tempo negli stream DAI lineari

L'SDK DAI (Dynamic Ad Insertion) di Interactive Media Ads (IMA) si basa su informazioni sui metadati incorporate nei segmenti multimediali dello stream (metadati in banda) o nel file manifest dello streaming (metadati in manifest) per monitorare le posizioni degli spettatori e gli eventi correlati agli annunci lato client. I metadati sono disponibili dallo streaming DAI in formati diversi, a seconda del tipo di stream riprodotto. L'IMA DAI L'SDK gestisce tutti i formati di metadati tramite un'unica API.

La tua app è responsabile dell'acquisizione dei metadati e dell'inoltro all'SDK IMA DAI. L'SDK offre la classe StreamManager.onMessage() per passare queste informazioni. Questo metodo inoltra i metadati sotto forma di Oggetto msg fornito dalla porta roVideo. Questi oggetti vengono poi elaborati l'SDK IMA DAI per stabilire la tempistica per gli eventi annuncio. È necessario un singolo argomento:

  • msg: un oggetto di tipo messaggio fornito dalla porta roVideo.

Codice campione dei metadati

Ecco un esempio di come gestire i metadati dalla porta roVideo passarla all'SDK IMA DAI tramite 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

Per ulteriori informazioni su come incorporare il loop che gestisce i metadati del flusso nella tua app, consulta le Guida introduttiva a Roku IMA. La sezione sull'ascoltatore di eventi e sull'inizio dello stream della guida contiene il loop di gestione dei metadati.

Stream CMAF HLS

Gli stream HLS DAI lineari che utilizzano il Common Media Application Framework (CMAF) trasmettono i metadati temporizzati tramite caselle eMSGv1 in banda seguendo lo standard ID3 tramite CMAF. Queste caselle eMSG sono incorporate all'inizio di ogni segmento multimediale e ogni eMSG ID3 contiene un PTS relativo all'ultima discontinuità nello stream.

Per IMA Roku, tutti gli stream CMAF HLS inviano dati ID3 in-band utilizzando il formato eMSGv0. L'IMA combina le informazioni fornite dal formato eMSGv0 con le informazioni dall'oggetto video.

Per consentire l'analisi corretta degli eventi ID3 streaming HLS CMAF, devi inviare il tuo un oggetto video nella richiesta di stream StreamRequest.videoObject