Pakiet DAI SDK do interaktywnych reklam medialnych (IMA) korzysta z informacji o metadanych umieszczonych w segmentach multimediów w strumieniu (metadane w obrębie pasma) lub w pliku manifestu (metadane w pliku manifestu), aby śledzić pozycję użytkowników i zdarzenia reklamowe po stronie klienta. Metadane są dostępne w strumieniu z DAI w różnych formatach w zależności od typu odtwarzanego strumienia. Pakiet IMA SDK Roku obsługuje wszystkie formaty metadanych za pomocą jednego interfejsu API.
Twoja aplikacja jest odpowiedzialna za przechwytywanie metadanych i przekazywanie ich do pakietu IMA DAI SDK. Pakiet SDK udostępnia metodę StreamManager.onMessage()
do przekazywania tych informacji. Ta metoda przekazuje metadane w postaci obiektu msg
udostępnionego przez port roVideo. Obiekty te są następnie przetwarzane przez pakiet IMA DAI SDK w celu określenia czasu wyświetlania zdarzeń reklamowych. Wymaga tylko jednego argumentu:
msg
: obiekt typu wiadomości udostępniany przez port roVideo.
Przykładowy kod metadanych
Oto przykład obsługi metadanych z portu roVideo i przekazywania ich do pakietu IMA SDK za pomocą 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
Więcej informacji o dodawaniu metadanych strumienia do obsługi pętli w aplikacji znajdziesz we wprowadzeniu do obsługi IMA Roku. Sekcja odbiornika i początku strumienia przewodnika zawiera pętlę obsługi metadanych.
Strumienie HLS CMAF
Liniowe strumienie HLS z dynamicznym wstawianiem reklam, które używają platformy Common Media Application Framework (CMAF) przekazują metadane z włączonym czasem w paśmie eMSGv1 zgodnie ze standardem ID3 przez CMAF. Te pola eMSG są umieszczane na początku każdego segmentu multimediów, przy czym każda nieciągłość ID3 eMSG zawiera PTS względem ostatniej nieciągłości w strumieniu.
W przypadku IMA Roku wszystkie strumienie HLS CMAF wysyłają w paśmie dane o identyfikatorze 3 w formacie eMSGv0. IMA łączy informacje podane w formacie eMSGv0 z informacjami z obiektu wideo.
Aby włączyć prawidłową analizę zdarzeń identyfikatora 3 strumienia HLS CMAF, musisz wysłać obiekt wideo w żądaniu strumienia za pomocą StreamRequest.videoObject
.