تعتمد حزمة تطوير البرامج لإدراج الإعلانات الديناميكي (DAI) من "إعلانات الوسائط التفاعلية" (IMA) على معلومات البيانات الوصفية المضمّنة في مقاطع الوسائط الخاصة بالبث (البيانات الوصفية المضمّنة في البث) أو في ملف بيان البث (البيانات الوصفية المضمّنة في البيان) لتتبُّع مواضع المشاهدين وأحداث الإعلانات من جهة العميل. تتوفّر البيانات الوصفية من بث DAI بتنسيقات مختلفة، وذلك حسب نوع البث الذي يتم تشغيله. تتعامل حزمة تطوير البرامج (SDK) الخاصة بخدمة "الإعلانات الديناميكية أثناء عرض الفيديو" من "إعلانات الوسائط التفاعلية" مع جميع أشكال البيانات الوصفية من خلال واجهة برمجة تطبيقات واحدة.
تطبيقك هو المسؤول عن تسجيل البيانات الوصفية وإعادة توجيهها إلى حزمة تطوير البرامج (SDK) الخاصة بميزة "الإعلانات الديناميكية أثناء البث" في IMA. توفّر حزمة تطوير البرامج الطريقة
StreamManager.onMessage()
لتمرير هذه المعلومات. تعيد هذه الطريقة توجيه البيانات الوصفية في شكل عنصر msg يوفّره منفذ roVideo. بعد ذلك، تتم معالجة هذه العناصر بواسطة حزمة تطوير البرامج (SDK) الخاصة بميزة "إدخال الإعلانات الديناميكي" في "إعلانات الوسائط التفاعلية" لتحديد توقيت أحداث الإعلانات. تتلقّى هذه الدالة وسيطة واحدة:
-
msg: عنصر من نوع msg تقدّمه حزمة roVideo.
رمز نموذجي للبيانات الوصفية
في ما يلي مثال على كيفية التعامل مع البيانات الوصفية من منفذ roVideo وتمريرها إلى حزمة تطوير البرامج IMA DAI من خلال 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. يحتوي قسم متتبِّع الأحداث وبدء البث في الدليل على حلقة معالجة البيانات الوصفية.
فيديوهات البث المباشر بتنسيق CMAF وفق بروتوكول HLS
تستخدم بثات HLS الخاصة بإدراج الإعلان الديناميكي (DAI) الخطية التي تستخدم معيار 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.