Obsługa metadanych czasowych w liniowych strumieniach DAI

Wybierz platformę: HTML5 Roku

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.