Pakiet Interactive Media Ads (IMA) Dynamic Ad Insertion SDK (DAI) korzysta z metadanych osadzonych w segmentach multimedialnych strumienia (metadane w strumieniu) 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.
Twoja aplikacja odpowiada za przechwytywanie metadanych i przekazywanie ich do pakietu IMA DAI SDK. Pakiet SDK udostępnia metodę
StreamManager.onMessage()
, która służy do przekazywania tych informacji. Ta metoda przekazuje metadane w postaci obiektu msg udostępnianego przez port roVideo. Obiekty te są następnie przetwarzane przez pakiet IMA DAI SDK w celu ustalenia czasu zdarzeń reklam. Metoda 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ą metody 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 zintegrować z aplikacją obsługę metadanych strumienia w pętli , znajdziesz w przewodniku IMA Roku dla początkujących. Pętla obsługi metadanych znajduje się w sekcji dotyczącej detektora zdarzeń i rozpoczęcia strumienia.
Strumienie HLS CMAF
Strumienie Linear DAI HLS korzystające z Common Media Application Framework (CMAF) przekazują metadane z synchronizacją czasową za pomocą pól eMSGv1 w strumieniu zgodnie ze standardem ID3 przez CMAF. Pola eMSG są osadzane na początku każdego segmentu multimedialnego, a każde pole ID3 eMSG zawiera PTS względem ostatniej przerwy w strumieniu.
W przypadku IMA Roku wszystkie strumienie HLS CMAF wysyłają dane ID3 w strumieniu w formacie eMSGv0. IMA łączy informacje podane w formacie eMSGv0 z informacjami z obiektu wideo.
Aby umożliwić prawidłowe parsowanie zdarzeń ID3 strumienia HLS CMAF, musisz wysłać swój
obiekt wideo w żądaniu strumienia za pomocą
StreamRequest.videoObject.