معالجة البيانات الوصفية المحددة بوقت في ساحات مشاركات DAI الخطية

اختيار المنصة: HTML5 Roku

تعتمد حزمة تطوير البرامج (SDK) لتكنولوجيا "إدراج الإعلان الديناميكي" (DAI) من "إعلانات الوسائط التفاعلية" (IMA) على معلومات البيانات الوصفية المضمّنة في مقاطع الوسائط الخاصة بالبث (البيانات الوصفية المضمّنة في النطاق)، أو في ملف بيان البث (البيانات الوصفية المضمّنة في البيان) لتتبُّع مواضع المشاهدين وأحداث الإعلانات من جهة العميل. تتوفّر البيانات الوصفية من بث DAI بتنسيقات مختلفة، وذلك استنادًا إلى نوع البث الذي يتم تشغيله. تتعامل حزمة تطوير البرامج (SDK) الخاصة بـ IMA DAI مع جميع أشكال البيانات الوصفية من خلال واجهة برمجة تطبيقات واحدة.

تطبيقك مسؤول عن تسجيل البيانات الوصفية وإعادة توجيهها إلى حزمة تطوير البرامج (SDK) الخاصة بميزة "إعلانات البث المباشر" في IMA. توفّر حزمة SDK الطريقة 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. تجمع "إعلانات الوسائط التفاعلية" المعلومات المقدَّمة بتنسيق eMSGv0 مع المعلومات الواردة من عنصر الفيديو.

لتفعيل التحليل السليم لأحداث ID3 في بث HLS CMAF، يجب إرسال عنصر الفيديو في طلب البث باستخدام StreamRequest.videoObject.