Обработка синхронизированных метаданных в линейных потоках DAI.

SDK динамической вставки рекламы (DAI) интерактивной медиарекламы (IMA) использует информацию метаданных, встроенную в медиасегменты потока (внутриполосные метаданные) или в файл манифеста потоковой передачи (метаданные в манифесте), для отслеживания позиций зрителей и клиентов. -сторонние рекламные мероприятия. Метаданные доступны из потока DAI в разных форматах, в зависимости от типа воспроизводимого потока. IMA DAI SDK обрабатывает все форматы метаданных через единый API.

Ваше приложение отвечает за сбор метаданных и их пересылку в IMA DAI SDK. SDK предлагает метод StreamManager.onMessage() для передачи этой информации. Этот метод пересылает метаданные в форме объекта msg , предоставляемого портом roVideo. Эти объекты затем обрабатываются IMA DAI SDK для определения времени рекламных событий. Требуется один аргумент:

  • msg : объект типа msg, предоставляемый портом roVideo.

Пример кода метаданных

Вот пример того, как обрабатывать метаданные из порта roVideo и передавать их в IMA DAI SDK через 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

Дополнительные сведения о том, как включить метаданные потока обработки циклов в ваше приложение, см. в руководстве по началу работы с IMA Roku . Раздел руководства «Прослушиватель событий и запуск потока» содержит цикл обработки метаданных.

HLS CMAF-потоки

Линейные потоки DAI HLS с использованием Common Media Application Framework (CMAF) передают синхронизированные метаданные через внутриполосные блоки eMSGv1 в соответствии со стандартом ID3 через CMAF . Эти блоки eMSG встроены в начало каждого медиасегмента, причем каждый eMSG ID3 содержит PTS относительно последнего разрыва в потоке.

Для IMA Roku все потоки HLS CMAF отправляют внутриполосные данные ID3 с использованием формата eMSGv0. IMA объединяет информацию, предоставленную форматом eMSGv0, с информацией из видеообъекта.

Чтобы обеспечить правильный анализ событий ID3 потока HLS CMAF, необходимо отправить видеообъект в запросе потока с помощью StreamRequest.videoObject .