SDK Penyisipan Iklan Dinamis (DAI) Iklan Media Interaktif (IMA) 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.
Persyaratan format dan penampung streaming
Untuk mengaktifkan pelacakan iklan sisi klien di Roku, Anda harus menggunakan segmen media dalam streaming DAI yang dikemas dalam format penampung yang didukung. Proses ini memungkinkan Roku OS mengekstrak metadata berjangka waktu.
Roku Media Player mendukung ekstraksi metadata ID3 in-band pada format penampung berikut:
- MPEG-2 Transport Stream (TS)
- MP4 yang terfragmentasi
- Common Media Application Format (CMAF)
Streaming audio dasar mentah, seperti segmen Advanced Audio Coding (AAC) mentah, tidak didukung untuk metadata berjangka waktu di Roku OS. Roku Media Player tidak dapat mengekstrak metadata berjangka waktu ID3 dari streaming audio AAC mentah, yang mencegah IMA SDK menerima peristiwa metadata dan mengirimkan tayangan iklan atau beacon pelacakan. Untuk semua streaming khusus audio dan streaming rendering audio, Anda harus menggunakan streaming dengan pengemasan format penampung yang didukung, seperti TS, MP4, atau CMAF.
Streaming CMAF HLS
Streaming HLS DAI linear yang 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.