Interactive Media Ads (IMA) Dynamic Ad Insertion SDK (DAI) mengandalkan informasi metadata yang disematkan dalam segmen media streaming (metadata in-band), atau dalam file manifes streaming (metadata in-manifest) untuk melacak posisi penonton dan peristiwa iklan sisi klien. Metadata tersedia dari streaming DAI dalam berbagai format, bergantung pada jenis streaming yang diputar. IMA DAI SDK menangani semua format metadata melalui satu API.
Aplikasi Anda bertanggung jawab untuk mengambil metadata dan meneruskannya ke IMA DAI SDK. SDK menawarkan metode
StreamManager.onMessage()
untuk meneruskan informasi ini. Metode ini meneruskan metadata dalam bentuk objek msg yang disediakan oleh port roVideo. Objek ini kemudian diproses oleh IMA DAI SDK untuk menetapkan waktu peristiwa iklan. Metode ini memerlukan satu argumen:
msg: objek jenis msg yang disediakan oleh port roVideo.
Kode contoh metadata
Berikut contoh cara menangani metadata dari port roVideo dan meneruskannya ke IMA DAI SDK melalui 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
Untuk mengetahui informasi selengkapnya tentang cara menggabungkan metadata streaming penanganan loop ke dalam aplikasi, lihat panduan memulai IMA Roku. Bagian pemroses peristiwa dan awal streaming dari panduan ini berisi loop penanganan metadata.
Streaming CMAF HLS
Streaming HLS DAI Linear menggunakan Common Media Application Framework (CMAF) meneruskan metadata berjangka waktu melalui kotak eMSGv1 in-band yang mengikuti ID3 melalui CMAF standar. Kotak eMSG ini disematkan di awal setiap segmen media, dengan setiap eMSG ID3 berisi PTS relatif terhadap diskontinuitas terakhir dalam streaming.
Untuk IMA Roku, semua streaming CMAF HLS mengirim data ID3 in-band menggunakan format eMSGv0. IMA menggabungkan informasi yang diberikan oleh format eMSGv0 dengan informasi dari objek video.
Untuk mengaktifkan penguraian yang tepat atas peristiwa ID3 streaming CMAF HLS, Anda harus mengirim
objek video dalam permintaan streaming menggunakan
StreamRequest.videoObject.