IMA (Interactive Media Ads) DAI (Dynamic Ad Insertion) SDK อาศัยข้อมูลเมตาที่ฝังอยู่ในส่วนสื่อของสตรีม (ข้อมูลเมตาในแบนด์) หรือในไฟล์ Manifest ของการสตรีม (ข้อมูลเมตาใน Manifest) เพื่อติดตามตำแหน่งของผู้ดูและเหตุการณ์โฆษณาฝั่งไคลเอ็นต์ ข้อมูลเมตาพร้อมใช้งานจากสตรีม 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 ส่วน Listener เหตุการณ์และการเริ่มต้นสตรีม ของคู่มือจะมีลูปการจัดการข้อมูลเมตา
ข้อกำหนดเกี่ยวกับรูปแบบและคอนเทนเนอร์ของสตรีม
หากต้องการเปิดใช้การติดตามโฆษณาฝั่งไคลเอ็นต์ใน Roku คุณต้องใช้ส่วนสื่อในสตรีม DAI ที่บรรจุอยู่ในรูปแบบคอนเทนเนอร์ที่รองรับ กระบวนการนี้ช่วยให้ Roku OS แยกข้อมูลเมตาที่กำหนดเวลาได้
Roku มีเดียเพลเยอร์ รองรับการแยกข้อมูลเมตา ID3 ในแบนด์ในรูปแบบคอนเทนเนอร์ต่อไปนี้
- MPEG-2 Transport Stream (TS)
- Fragmented MP4
- Common Media Application Format (CMAF)
ระบบไม่รองรับสตรีมเสียงระดับประถมศึกษาแบบดิบ เช่น ส่วน Advanced Audio Coding (AAC) แบบดิบ สำหรับข้อมูลเมตาที่กำหนดเวลาใน Roku OS Roku Media Player ไม่สามารถแยกข้อมูลเมตา ID3 ที่กำหนดเวลาจากสตรีมเสียง AAC แบบดิบ ซึ่งจะป้องกันไม่ให้ IMA SDK ได้รับเหตุการณ์ข้อมูลเมตาและส่งสัญญาณขอโฆษณาหรือสัญญาณติดตาม สำหรับสตรีมเสียงเท่านั้นและสตรีมการแสดงเสียง คุณต้องใช้สตรีมที่มีการบรรจุรูปแบบคอนเทนเนอร์ที่รองรับ เช่น TS, MP4 หรือ CMAF
สตรีม 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