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

Выберите платформу: HTML5 Roku

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

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

  • 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 .