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
.