Пакет 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
.