کیت توسعه نرمافزاری درج آگهی پویا (DAI) برای تبلیغات رسانههای تعاملی (IMA) به اطلاعات فراداده تعبیهشده در بخشهای رسانهای جریان (فراداده درونباند) یا در فایل مانیفست جریان (فراداده درونمانیفست) برای ردیابی موقعیت بینندگان و رویدادهای تبلیغاتی سمت کلاینت متکی است. فراداده از جریان DAI در قالبهای مختلف، بسته به نوع جریانی که پخش میشود، در دسترس است. کیت توسعه نرمافزاری IMA DAI تمام قالبهای فراداده را از طریق یک 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 با استفاده از چارچوب کاربرد رسانهای مشترک (CMAF)، فرادادههای زمانبندیشده را از طریق جعبههای eMSGv1 درونباندی و با پیروی از استاندارد ID3 از طریق CMAF عبور میدهند. این جعبههای eMSG در ابتدای هر بخش رسانهای تعبیه شدهاند و هر eMSG ID3 حاوی یک PTS نسبت به آخرین ناپیوستگی در جریان است.
برای IMA Roku، تمام جریانهای HLS CMAF دادههای درون باند ID3 را با استفاده از فرمت eMSGv0 ارسال میکنند. IMA اطلاعات ارائه شده توسط فرمت eMSGv0 را با اطلاعات شیء ویدیویی ترکیب میکند.
برای فعال کردن تجزیه صحیح رویدادهای جریان HLS CMAF ID3، باید شیء ویدیوی خود را در درخواست جریان با استفاده از StreamRequest.videoObject ارسال کنید.