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

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

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

تطبيقك مسؤول عن جمع البيانات الوصفية وإعادة توجيهها إلى "حزمة 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. يحتوي قسم متتبِّع الأحداث وبدء البث في الدليل على حلقة معالجة البيانات الوصفية.

متطلبات تنسيق البث والحاوية

لتفعيل تتبُّع الإعلانات من جهة العميل على Roku، عليك استخدام شرائح الوسائط في بث DAI المجمّع بتنسيق حاوية متوافق. تسمح هذه العملية لنظام التشغيل Roku OS باستخراج البيانات الوصفية المحدّدة بوقت.

يتيح مشغّل الوسائط Roku Media Player استخراج البيانات الوصفية المضمّنة بتنسيق ID3 في تنسيقات الحاويات التالية:

  • MPEG-2 Transport Stream ‏ (TS)
  • Fragmented MP4
  • Common Media Application Format ‏ (CMAF)

لا تتوافق شرائح البث الصوتي الأساسية غير المعالَجة، مثل شرائح Advanced Audio Coding ‏ (AAC) غير المعالَجة، مع البيانات الوصفية المحدّدة بوقت على نظام التشغيل Roku OS. لا يمكن لمشغّل الوسائط Roku Media Player استخراج البيانات الوصفية المحدّدة بوقت بتنسيق ID3 من شرائح البث الصوتي غير المعالَجة بتنسيق AAC، ما يمنع حزمة IMA SDK من تلقّي أحداث البيانات الوصفية وإرسال مرّات ظهور الإعلانات أو إشارات التتبُّع. بالنسبة إلى جميع شرائح البث الصوتي فقط وشرائح البث الصوتي مع الفيديو، عليك استخدام شرائح بتنسيق حاوية مجمّع متوافق، مثل TS أو MP4 أو CMAF.

شرائح البث CMAF بتنسيق HLS

تُمرِّر شرائح البث الخطي DAI بتنسيق HLS التي تستخدم Common Media Application Framework ‏ (CMAF) البيانات الوصفية المحدّدة بوقت من خلال مربّعات eMSGv1 المضمّنة التي تتّبع معيار ID3 من خلال CMAF. تكون مربّعات eMSG هذه مضمّنة في بداية كل شريحة وسائط، ويحتوي كل مربّع eMSG بتنسيق ID3 على PTS نسبيًا إلى آخر انقطاع في البث.

بالنسبة إلى IMA Roku، تُرسِل جميع شرائح البث CMAF بتنسيق HLS بيانات ID3 المضمّنة باستخدام تنسيق eMSGv0. تجمع IMA المعلومات التي يوفّرها تنسيق eMSGv0 مع المعلومات من عنصر الفيديو.

لإتاحة تحليل أحداث ID3 لشرائح البث CMAF بتنسيق HLS بشكلٍ صحيح، عليك إرسال عنصر الفيديو في طلب البث باستخدام StreamRequest.videoObject.