Obsługa metadanych czasowych w liniowych strumieniach DAI

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.