کیت توسعه نرمافزار (SDK) «درج آگهی پویا» (DAI) در «آگهیهای رسانهای تعاملی» (IMA) برای ردیابی موقعیت بینندگان و رویدادهای آگهی سمت کارخواه، به اطلاعات فراداده جاسازیشده در بخشهای رسانهای جاریسازی (فراداده درونباندی) یا در فایل مانیفست جاریسازی (فراداده درونمانیفستی) متکی است. فراداده از جاریسازی DAI در قالبهای مختلف، بسته به نوع جاریسازی درحال پخش، دردسترس است. IMA DAI SDK همه قالبهای فراداده را ازطریق یک API مدیریت میکند.
برنامه شما مسئول ضبط فراداده و ارسال آن به IMA DAI 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 مراجعه کنید. بخش شنونده رویداد و شروع جاریسازی در راهنما حاوی حلقه مدیریت فراداده است.
الزامات قالب جاریسازی و محتوی
برای فعال کردن ردگیری آگهی سمت کارخواه در Roku، باید از بخشهای رسانه در جاریسازی DAI خود که در قالب محفظه پشتیبانیشده بستهبندی شده است استفاده کنید. این فرایند به Roku OS اجازه میدهد فراداده زمانبندیشده را استخراج کند.
Roku Media Player از استخراج فراداده ID3 درونباندی در قالبهای محفظه زیر پشتیبانی میکند:
- جریان حمل MPEG-۲ (TS)
- MP4 تکهتکه
- Common Media Application Format (CMAF)
جاریسازیهای صوتی ابتدایی خام، مانند بخشهای خام کدگذاری پیشرفته صوتی (AAC)، برای فراداده زمانبندیشده در Roku OS پشتیبانی نمیشوند. Roku Media Player نمیتواند فراداده زمانبندیشده ID3 را از جاریسازیهای صوتی AAC خام استخراج کند، که این امر مانع از دریافت رویدادهای فراداده توسط IMA SDK و ارسال نشانگرهای ردیابی یا ظهور آگهی میشود. برای همه جاریسازیهای فقط صوتی و با بازگردانی صوتی، باید از جاریسازیهایی با بستهبندی قالب محفظه پشتیبانیشده، مانند TS، MP4، یا CMAF استفاده کنید.
جاریسازیهای HLS CMAF
جاریسازیهای HLS درج آگهی پویا خطی بااستفاده از «چارچوب برنامه رسانه مشترک» (CMAF) فراداده زمانبندیشده را ازطریق جعبههای eMSGv1 درونباندی طبق استاندارد ID3 ازطریق CMAF منتقل میکنند. این جعبههای eMSG در ابتدای هر بخش رسانه جاسازی شدهاند و هر ID3 eMSG حاوی یک PTS نسبتبه آخرین ناپیوستگی در جاریسازی است.
برای IMA Roku، همه جاریسازیهای HLS CMAF دادههای ID3 درونباندی را بااستفاده از قالب eMSGv0 ارسال میکنند. IMA اطلاعات ارائهشده توسط قالب eMSGv0 را با اطلاعات شیء ویدیو ترکیب میکند.
برای فعال کردن تجزیه مناسب رویدادهای ID3 جاریسازی HLS CMAF، باید شیء ویدیویی خود را در درخواست جاریسازی بااستفاده از StreamRequest.videoObject ارسال کنید.