L'SDK Interactive Media Ads (IMA) per l'inserimento di annunci dinamici (DAI) si basa sulle informazioni dei metadati incorporate nei segmenti multimediali dello stream (metadati in-band) o nel file manifest dello streaming (metadati in-manifest) per monitorare le posizioni degli spettatori e gli eventi degli annunci lato client. I metadati sono disponibili dallo stream DAI in diversi formati, a seconda del tipo di stream riprodotto. L'SDK IMA DAI gestisce tutti i formati di metadati tramite una singola API.
La tua app è responsabile dell'acquisizione dei metadati e del loro inoltro all'SDK IMA DAI. L'SDK offre il
StreamManager.onMessage()
metodo 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 degli eventi pubblicitari. Accetta un singolo argomento:
msg: un oggetto di tipo msg fornito dalla porta roVideo.
Codice campione dei metadati
Ecco un esempio di come gestire i metadati dalla porta roVideo e trasmetterli 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 i metadati dello stream di gestione dei loop nella tua app, consulta la guida introduttiva di IMA Roku. La sezione del listener di eventi e dell'inizio dello stream della guida contiene il loop di gestione dei metadati.
Stream HLS CMAF
Gli stream HLS DAI lineari che utilizzano il Common Media Application Framework (CMAF) trasmettono i metadati temporizzati tramite le caselle eMSGv1 in-band seguendo lo standard ID3 tramite CMAF. Queste caselle eMSG sono incorporate all'inizio di ogni segmento multimediale, con ogni eMSG ID3 contenente un PTS relativo all'ultima discontinuità nello stream.
Per IMA Roku, tutti gli stream HLS CMAF inviano dati ID3 in-band utilizzando il formato eMSGv0. IMA combina le informazioni fornite dal formato eMSGv0 con le informazioni dell'oggetto video.
Per consentire l'analisi corretta degli eventi ID3 dello stream HLS CMAF, devi inviare il tuo
oggetto video nella richiesta di stream utilizzando
StreamRequest.videoObject.