Pakiet SDK do dynamicznego wstawiania reklam (DAI) w interaktywnych reklamach medialnych (IMA) korzysta z informacji o metadanych osadzonych w segmentach multimedialnych strumienia (metadane w pasie) lub w pliku manifestu strumienia (metadane w manifeście), aby śledzić pozycje widzów i zdarzenia reklam po stronie klienta. Metadane są dostępne w strumieniu DAI w różnych formatach w zależności od typu odtwarzanego strumienia. Pakiet IMA DAI SDK obsługuje wszystkie formaty metadanych za pomocą jednego interfejsu API.
Aplikacja odpowiada 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
dostarczonego przez port roVideo. Te obiekty są następnie przetwarzane przez pakiet IMA DAI SDK w celu ustalenia czasu zdarzeń związanych z reklamami. Przyjmuje 1 argument:
msg
: obiekt typu msg udostępniany przez port roVideo.
Przykładowy kod metadanych
Oto przykład obsługi metadanych z portu roVideo i przekazywania ich do pakietu IMA DAI 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 tym, jak włączyć metadane strumienia obsługi pętli w aplikacji, znajdziesz w przewodniku IMA Roku. W sekcji dotyczącej odbiornika zdarzeń i rozpoczęcia strumienia przewodnika znajduje się pętla obsługi metadanych.
Strumienie HLS CMAF
Strumienie HLS DAI linearne korzystające z Common Media Application Framework (CMAF) przekazują metadane czasowe za pomocą pól eMSGv1 w paśmie zgodnie ze standardem ID3 przez CMAF. Te pola eMSG są osadzone na początku każdego segmentu multimedialnego, a każde pole ID3 eMSG zawiera znacznik PTS względny w stosunku do ostatniej nieciągłości w strumieniu.
W przypadku IMA Roku wszystkie strumienie HLS CMAF wysyłają dane ID3 w paśmie w formacie eMSGv0. IMA łączy informacje podane w formacie eMSGv0 z informacjami z obiektu wideo.
Aby umożliwić prawidłowe parsowanie zdarzeń ID3 w strumieniu HLS CMAF, musisz wysłać obiekt wideo w żądaniu strumienia za pomocą parametru StreamRequest.videoObject
.