Gestire i metadati a tempo negli stream DAI lineari

L'SDK IMA (Interactive Media Ads) per l'inserimento di annunci dinamici (DAI) utilizza le informazioni sui metadati incorporate nei segmenti multimediali dello stream (metadati in-band) o nel file manifest dello streaming (metadati in-manifest) per tenere traccia delle posizioni degli spettatori e degli eventi annuncio lato client. I metadati dello stream DAI sono disponibili in diversi formati, a seconda del tipo di stream riprodotto. L'SDK IMA di Roku gestisce tutti i formati di metadati tramite una singola API.

La tua app è responsabile dell'acquisizione dei metadati e dell'inoltro all'SDK IMA DAI. L'SDK offre il metodo StreamManager.onMessage() per trasmettere queste informazioni. Questo metodo inoltra i metadati sotto forma di oggetto msg fornito dalla porta roVideo. Questi oggetti vengono quindi elaborati dall'SDK IMA DAI per stabilire la tempistica per gli eventi annuncio. Ci vuole un solo argomento:

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

Codice campione dei metadati

Di seguito è riportato un esempio di come gestire i metadati dalla porta roVideo e di trasferirli all'SDK IMA 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 nell'app i metadati dello stream con gestione del loop, consulta la guida introduttiva all'IMA Roku. La sezione dedicata al listener di eventi e all'avvio dello stream della guida contiene il loop di gestione dei metadati.

Flussi di dati HLS CMAF

Gli stream HLS con DAI lineari utilizzando il Common Media Application Framework (CMAF) passano i metadati timed attraverso caselle eMSGv1 nella banda seguendo lo standard ID3 attraverso CMAF. Queste caselle eMSG sono incorporate all'inizio di ciascun segmento multimediale, con ogni eMSG ID3 contenente un PTS relativo all'ultima discontinuità dello stream.

Per IMA Roku, tutti gli stream HLS CMAF inviano dati ID3 nella banda utilizzando il formato eMSGv0. IMA combina le informazioni fornite dal formato eMSGv0 con quelle dell'oggetto video.

Per consentire l'analisi corretta degli eventi ID3 dello streaming HLS CMAF, devi inviare l'oggetto video nella richiesta di streaming utilizzando StreamRequest.videoObject.