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

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

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

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

فيديوهات البث المباشر وفق بروتوكول HTTP ‏(HLS) بتنسيق CMAF

تستخدم بثات 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.