L'SDK Interactive Media Ads (IMA) Dynamic Ad Insertion (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 pubblicitari 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 passarli 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.
Requisiti relativi al formato e al container dello stream
Per attivare il monitoraggio degli annunci lato client su Roku, devi utilizzare segmenti multimediali nello stream DAI confezionati in un formato container supportato. Questo processo consente a Roku OS di estrarre i metadati temporizzati.
Roku Media Player supporta l'estrazione dei metadati ID3 in-band nei seguenti formati container:
- Stream di trasporto MPEG-2 (TS)
- MP4 frammentato
- Common Media Application Format (CMAF)
Gli stream audio elementari non elaborati, come i segmenti Advanced Audio Coding (AAC) non elaborati, non sono supportati per i metadati temporizzati su Roku OS. Roku Media Player non può estrarre i metadati temporizzati ID3 dagli stream audio AAC non elaborati, il che impedisce all'SDK IMA di ricevere eventi di metadati e di inviare impressioni pubblicitarie o beacon di monitoraggio. Per tutti gli stream solo audio e di rendering audio, devi utilizzare stream con packaging in formato container supportato, come TS, MP4 o CMAF.
Stream HLS CMAF
Gli stream HLS DAI lineari che utilizzano Common Media Application Framework (CMAF) passano 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.