فواصل الإعلانات

نظرة عامة

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

أنواع الإعلانات

إنّ "حزمة تطوير البرامج (SDK) لاستقبال الويب" توفّر إمكانية إدراج الإعلانات من جهة العميل (CSAI) والخادم. إدراج إعلان مدمج (SSAI). يمكن ضبط الإعلانات المجمَّعة العميل يدويًا من خلال أو استخراجه من ملفات نموذج VAST وVMAP. يجب تحديد الإعلانات المستندة إلى الخادم يدويًا قبل تحميل المحتوى مضمّن أو ديناميكيًا أثناء تشغيل المحتوى كـ مضمّن وموسَّع الإعلانات. في ما يلي وصف تفصيلي لعمليات التنفيذ لكل نوع من أنواع الإعلانات هذه.

دمج يدوي من العميل

الفاصل الإعلاني اليدوي المدمج مع العميل هو نوع من الفواصل الإعلانية التي يتم دمجها. معًا بواسطة العميل ويتم تحديدها يدويًا بواسطة التطبيق باستخدام واجهات برمجة التطبيقات لحزمة تطوير البرامج (SDK). هذا النوع من الإعلانات غير مضمّن في تدفق المحتوى الرئيسي. تشير رسالة الأشكال البيانية على "BreakClip" تقديم contentId وهو عنوان URL يشير إلى محتوى الإعلان contentType ووصف شكل محتوى الإعلان title.

يجب أن يتضمّن Break isEmbedded أو expanded تم تعيينها إلى القيمة الافتراضية false. تشير رسالة الأشكال البيانية position يمكن ضبطه على فاصل إعلاني إعلان ما قبل التشغيل أو إعلان أثناء التشغيل أو إعلان ما بعد التشغيل (يمكنك الاطّلاع على مزيد من المعلومات في تقسيم تحديد الموضع). عند إعداد إعلان لتشغيله، تُنشئ حزمة تطوير البرامج (SDK) لجهاز الويب الإضافي مثيل مشغِّل آخر لتحميله وتشغيل محتوى الإعلان تتطلّب هذه الفواصل stitched timeline ويجب أن تكون تمت إضافتها ثابتًا (يمكنك الاطّلاع على مزيد من المعلومات في إدراج الإعلانات). يوضح النموذج أدناه أساسيات تنفيذ إعلان من إنشاء العميل:

// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';

// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;

// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
    'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.

VAST

تتيح حزمة تطوير البرامج (SDK) لاستقبال الويب إضافة VAST العادي الخاص بـ IAB (عرض إعلانات الفيديو). النماذج). وعند توفيره، يتم تحليل نموذج XML لإنشاء مقطع فاصل مدمج العميل عند الدخول إلى الفاصل.

لإنشاء إعلان VAST، يجب أن يُنشئ تطبيق المُستلِم VastAdsRequest وتحديده في BreakClip vastAdsRequest الموقع. يجب أن يحتوي كائن VastAdsRequest إما على adsResponse ( سلسلة تمثيلية لنموذج XML نفسه) أو adTagUrl (عنوان URL حيث تتم استضافة نموذج XML). إذا تم تحديد عنوان URL، ستتولى حزمة SDK استرجاع النموذج. يلي أحرف Break المغلفة الاصطلاحات للإعلانات المجمّعة من قِبل العميل. يمكن إضافة هذه الإعلانات مع إعلانات أخرى يدويًا تضمين العميل في الفواصل نفسها أو في فواصل منفصلة نفس الجزء من المحتوى. يوضح المثال أدناه التنفيذ الأساسي لنموذج عرض إعلانات فيديو (VAST) الإعلان:

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'

// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;

// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
    'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.

عند إدخال Break يحتوي على VAST BreakClip، يبدأ مستقبل الويب ستجلب حزمة تطوير البرامج (SDK) النموذج، ثم تحلّله بشكل اختياري. أثناء التحليل، يمكن لحزمة SDK ستؤدي إلى إنشاء BreakClip جديدة وتعبئتها بالقيم المستخرجة من النموذج مثل contentId وcontentType وtitle وduration whenSkippable، وclickThroughUrl. إنّ id للمقطع الذي تم إنشاؤه للفاصل هو يتم ضبطه على GENERATED:N حيث يكون N عددًا صحيحًا يزيد بمقدار 1 لكل قيمة جديدة. تم إنشاء مقطع فاصل VAST بدءًا من 0. بعد ذلك، تتم إضافة الإعلان الذي تم إنشاؤه إلى مصفوفة BreakClip. قيمة id لكل مقطع فاصل VAST في Break الحالي هو ثم استبداله بالمقطع الفاصل المقابل الذي تم إنشاؤه للفاصل id. المقتطفات لتوضيح التغييرات في MEDIA_STATUS الرسائل المتعلقة بالإعلانات قبل دخول هذه الفاصل الإعلاني وبعده.

معلومات Break وBreakClip قبل إدخال فاصل إعلاني باستخدام إعلانات VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "bc_vast"
    ],
    "position": 0,
    "isWatched": false
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  }
]

معلومات Break وBreakClip بعد إدخال فاصل إعلاني باستخدام إعلانات VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "GENERATED:0"
    ],
    "position": 0,
    "isWatched": true
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  },
  {
    "id": "GENERATED:0",
    "contentId": "https://example.com/break-clip-1.mpd",
    "contentType": "application/dash+xml",
    "title": "Ad Title Extracted from Template",
    "duration": 10,
    "whenSkippable": 5,
    "clickThroughUrl": "https://example.com/ad-target"
  }
]

عرض إعلانات الفيديو (VMAP)

إنّ حزمة تطوير البرامج (SDK) لاستقبال الويب تتيح قوائم تشغيل إعلانات الفيديو المتعددة لمكتب IAB. القياسية. عند توفير VMAP، ستحلل حزمة SDK استلام الويب ملف VMAP الاستجابة وإنشاء كائنات Break مدمجة من العميل لأي <AdBreak> الإدخالات في الرد. وستُنشئ أيضًا السمة BreakClips المناسبة باستخدام عنصر vastAdsRequest لكل إدخال <AdSource> يتم تقديمه في VMAP. إلى لتمكين VMAP من إدراج الإعلانات في المحتوى، يجب أن ينشئ التطبيق VastAdsRequest وتعيينه إلى vmapAdsRequest خاصية MediaInformation في LoadRequestData. يجب إدراج هذه الإعلانات بشكل ثابت (يمكنك الاطّلاع على المزيد في إدراج الإعلانات). وفي ما يلي مقتطف يوضح إنشاء طلب VMAP.

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'

// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;

مضمّنة

الفاصل الإعلاني المضمّن هو نوع من الفواصل الإعلانية يتم تضمينها من جهة الخادم. في البث المباشر للمحتوى الرئيسي. تم طرح مدة Break. من مدة المحتوى الرئيسي عند احتساب وقت الوسائط.

يجب أن توفّر "BreakClip" duration لمحتوى الإعلان، title يجب أن يتضمّن Break isEmbedded تم الضبط على true expanded تم الضبط على false. تشير رسالة الأشكال البيانية position يمكن ضبطه على فاصل إعلاني ما قبل التشغيل أو إعلان أثناء التشغيل. الفواصل الإعلانية ما بعد التشغيل هي مدعومة بقيم position دقيقة موجبة. يمكنك الاطّلاع على مزيد من المعلومات حول هذا الموضوع في تحديد موضع فاصل. عندما يتم عرض الإعلان تعمل حزمة أدوات استقبال الويب على الويب لتشغيل البث المباشر في شكل شرائح المضمنة فيه. لا تتوفّر آلية تحميل إضافية لنوع الإعلان هذا. تظهر البيانات الوصفية ذات الصلة للإعلان للمستخدم بعد أن يدخل رأس التشغيل ضمن النطاق الزمني للفاصل. تتطلّب هذه الفواصل embedded timeline ويجب إضافتها. ثابتًا (اطّلِع على مزيد من المعلومات في قسم إدراج الإعلانات). تشير رسالة الأشكال البيانية يعرض النموذج التالي تنفيذًا أساسيًا لإعلان embedded.

// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
    'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.

تضمين موسّع

الفاصل الإعلاني الموسّع المضمّن هو نوع من الفواصل الإعلانية التي يتم دمجها في الخادم. بجانب تدفق المحتوى الرئيسي. يتم تضمين مدة Break. في مدة المحتوى الرئيسي عند احتساب وقت الوسائط.

يجب أن توفّر "BreakClip" duration لمحتوى الإعلان، title يجب أن يتضمّن Break isEmbedded تم الضبط على true expanded تم الضبط على true تشير رسالة الأشكال البيانية position يمكن ضبطه على فاصل إعلاني ما قبل التشغيل أو إعلان أثناء التشغيل. الفواصل الإعلانية ما بعد التشغيل هي مدعومة بقيم position موجبة. يمكنك الاطّلاع على مزيد من المعلومات حول هذا الموضوع في تحديد موضع فاصل. عندما يتم عرض الإعلان تعمل حزمة أدوات استقبال الويب على الويب لتشغيل البث المباشر في شكل شرائح المضمنة فيه. لا تتوفّر آلية تحميل إضافية لنوع الإعلان هذا. تظهر البيانات الوصفية ذات الصلة للإعلان للمستخدم بعد أن يدخل رأس التشغيل ضمن النطاق الزمني للفاصل. تتطلّب هذه الفواصل embedded timeline ويمكن إضافتها إما ثابتًا أو ديناميكيًا (يمكنك الاطّلاع على المزيد في إدراج الإعلانات). يوضح النموذج أدناه أساسيات تنفيذ إعلان embedded expanded:

// Create the BreakClip.
let clipEmbeddedExpanded =
    new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
    'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;

أنواع المخطط الزمني للّاعب

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

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

توضّح الأشكال من 1 إلى 3 أدناه بعض المحتوى الذي يتضمن أنواع إعلانات متنوعة قيم الجدول الزمني المعنية. يتم ضبط المحتوى مع فاصل إعلان ما قبل التشغيل. تضمين مقطعَين فواصل فاصلة وفواصل إعلان أثناء التشغيل وإعلان ما بعد التشغيل مقطع فاصل فردي. وقت الساعة الجدارية منذ بداية تشغيل المحتوى، وقت الوسائط للمحتوى الرئيسي، ووقت الفاصل حاليًا تتم محاذاة مقطع الفاصل أثناء التشغيل أسفل كل شكل.

المخطط الزمني للإعلانات المجمّعة من العميل
الشكل 1: المخطط الزمني الذي يمثّل جزءًا من المحتوى وفواصله الإعلانية الثلاث المخصّصة للعميل.


المخطط الزمني للإعلانات المضمّنة التي تم تركيبها من الخادم
الشكل 2: المخطط الزمني الذي يمثّل بعض المحتوى وفواصله الإعلانية الثلاث المدمجة والمدمجة من الخادم.


المخطط الزمني للإعلانات الموسَّعة المضمّنة التي تم تركيبها من الخادم
الشكل 3: المخطط الزمني الذي يمثّل بعض المحتوى وفواصله الإعلانية الموسَّعة المضمّنة التي تم تركيبها من الخادم.

موضع الفاصل

تسمح حزمة Web لجهاز SDK للمطوّرين بتحديد أماكن الفواصل الإعلانية. عن طريق تحديد position الخاصة بـ Break. تتوافق هذه القيمة مع وقت وسائط المحتوى الرئيسي ويمكن استخدامها لإنشاء فواصل إعلانية تشمل pre-roll وmid-roll وpost-roll. ويتم تعريفها على النحو التالي:

موضع الفاصل الوصف
إعلان ما قبل التشغيل فاصل إعلاني يتم تشغيله قبل المحتوى الرئيسي. هذا هو تتم الإشارة إليها بتعيين breakPosition على 0
إعلان أثناء التشغيل فاصل إعلاني يتم تشغيله أثناء المحتوى. يشار إليها بالرمز ضبط breakPosition على الوقت الذي يتم فيه عرض الفاصل الإعلاني البداية أكبر من بداية المحتوى الرئيسي، وقت انتهاء الفاصل الإعلاني أقل من وقت انتهاء المحتوى الرئيسي. الوقت.
إعلان ما بعد التشغيل فاصل إعلاني يتم تشغيله بعد المحتوى الرئيسي. هذا هو تتم الإشارة إليها بتعيين breakPosition على -1 مخططات زمنية مركّبة بالنسبة إلى الترميز المضمَّنة المخططات الزمنية breakPosition على مدة المحتوى الرئيسي المطروحة من خلال لمدة الفاصل. ولا يمكن استخدامها مع المحتوى المباشر.

مصفوفة إمكانية التشغيل التفاعلي

كنقطة مرجعية سريعة، يعرض الجدول 1 نظرة عامة على أنواع الإعلانات توافقها مع الميزات المتعلّقة بالإعلانات

الجدول 1: مصفوفة إمكانية التشغيل التفاعلي للإعلانات
دعم الميزات إعلان يدوي من إنشاء العميل VAST عرض إعلانات الفيديو (VMAP) إعلان مضمّن إعلان موسّع مضمّن
متوافقة مع VAST دمج يدوي من العميل لا ينطبق تضمين موسّع مضمّنة
المخطط الزمني مخيَّط مخيَّط مخيَّط مضمّنة مضمّنة
إدراج إعلان ثابتة ثابتة ثابتة ثابتة ثابت، ديناميكي
إزالة الإعلان
إعلان ما قبل التشغيل
إعلان أثناء التشغيل
إعلان ما بعد التشغيل
تخطّي الإعلان
اعتراض محاولة الكسر
أداة اعتراض تحميل المقطع

فعاليات

عند وقوع أحداث الفواصل الرئيسية، ترسل حزمة تطوير البرامج (SDK) للبث الأحداث من النوع. BreaksEvent يمكن لتطبيق مستلِم الاشتراك في هذه الأجهزة باستخدام PlayerManager addEventListener واجهة برمجة التطبيقات.

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

يتم إدراج أنواع الأحداث في الجدول 2 مع وصف تفصيلي على عند فصلهم من العمل.

مراحل إيقاف الأحداث
الشكل 4: مراحل نشاط أحداث الاستراحة.
الجدول 2: تقسيم الأحداث وأوصافها.
حدث استراحة الوصف
BREAK_STARTED يتم تنشيطها عندما يكون وقت الوسائط الحالي للمحتوى الرئيسي يساوي position من استراحة لم تتم مشاهدتها.
BREAK_CLIP_LOADING يتم تنشيطه فقط عند بدء تحميل مقطع يوقف المخطط الزمني المُدمَج.
BREAK_CLIP_STARTED يتم تشغيله عند بدء تشغيل مقطع فاصل.
BREAK_CLIP_ENDED يتم الإطلاق عند انتهاء مقطع فاصل. تشير رسالة الأشكال البيانية endedReason ستتم ملؤها في الحالات التالية:
  • يظهر المقطع الذي تم دمجه ضمن مخطط زمني تم تشغيله بالكامل.
  • إنّ المقطع الذي تم دمجه ضمن مخطط زمني يؤدي إلى الانتقال إلى مقطع فاصل آخر.
  • ويتم تخطّي أي مقطع فاصل.
  • تمّ تشغيل المقطع الأخير من الفاصل الإعلاني بالكامل في فاصل مضمّن بعد التشغيل.
  • حدث خطأ.
BREAK_ENDED يتم إطلاقه عند انتهاء آخر مقطع فاصل إعلاني.

إدراج إعلان

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

إدراج إعلان ثابت

يتميز إدراج الإعلان الثابت بإضافة البيانات الوصفية ذات الصلة للإعلان قبل إلى إنشاء اللاعبين. يتم توفير هذه المعلومات في MediaInformation من LoadRequestData. على سبيل المثال، يمكن ضبط هذا الإجراء في مرسِل متصل طلب التحميل الأصلي أو إدراجه من خلال تطبيق WebRecipient عن طريق اعتراض طلب "LOAD". بعد إرجاع LoadRequestData إلى حزمة SDK لاستقبال الويب للمعالجة، يتم إنشاء المشغِّل. الاطّلاع على المزيد على جارٍ تحميل الوسائط. العيّنة أدناه إعلانًا من إنشاء العميل تتم إضافته إلى طلب LOAD يدويًا. اعتراضية.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD, loadRequestData => {

  // Create the BreakClip.
  let clipClient = new cast.framework.messages.BreakClip('bc_client');
  clipClient.title = 'The Ad Title to be displayed during playback';
  clipClient.contentId = 'https://example.com/ad.mp4';
  clipClient.contentType = 'video/mp4';

  // Create the Break using the BreakClip id above.
  let breakPostrollClient = new cast.framework.messages.Break(
      'break_postroll_client', ['bc_client'], -1);

  // Set the ad information in the load request data.
  let media = loadRequestData.media;
  media.breakClips = [clipClient];
  media.breaks = [breakPostrollClient];

  return loadRequestData;
});

إدراج إعلان ديناميكي

يتّصف الإدراج الديناميكي للإعلانات بضبط فاصل إعلاني أثناء عرض المحتوى التشغيل. ويتم ذلك من خلال الحصول على نسخة افتراضية من BreakManager وإجراء الاتصال الـ addBreak واجهة برمجة التطبيقات. يتطلب هذا معلمين على الأقل، إعلان موسّع Break و صفيف من BreakClip يتم تضمين خاصية ثالثة اختيارية لفرض إرسال التغييرات إلى المرسلون المتصلون من خلال بث MediaStatus عند الضبط على true. فعندما إضافة فواصل وفواصل، يجب أن تكون أرقام التعريف المقابلة فريدة. هذه الإعلانات يمكن إضافتها فقط بعد إنشاء المشغّل. تنشيط حزمة تطوير البرامج (SDK) لمستلِم الويب الـ PLAYER_LOADING الحدث بمجرد إنشاء المشغّل. شاهد النموذج أدناه الذي يعرض الاستخدام في معالج أحداث يستجيب للتغييرات في البيانات الوصفية ذات رقم التعريف 3 (ID3) لمجموعة البث ينشئ العنصرَين Break وBreakClip لإدراجه في المخطط الزمني.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {

  // Create the BreakClip.
  let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
  let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);

  // Add the break and break clip.
  breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});

إزالة الإعلان الديناميكي

لإزالة الفواصل الديناميكية، يجب أن يطلب التطبيق removeBreakById أثناء التشغيل. تستخدم الدالة معرّف سلسلة للفاصل ليكون من الجدول الزمني. يجب أن تشير السمة breakId المحددة إلى تضمين فاصل إعلاني موسّع. إذا تم رصد أي نوع آخر من الفواصل الإعلانية، يتم إنشاء الفاصل ستظل في الجدول الزمني. راجِع النموذج أدناه الذي يؤدي إلى إزالة الفاصل الإعلاني.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.removeBreakById('break_midroll_embedded_expanded');

طريقة عمل الفواصل

تحدّد حزمة تطوير البرامج (SDK) سلوكًا تلقائيًا عند دخول اللاعب للفواصل أو مغادرتها. وتوفّر طريقة لتخصيصها بشكل أكبر باستخدام بعض واجهات برمجة التطبيقات المتوفرة بوصة BreakManager

سلوك الفواصل الإعلانية التلقائية

عند إدخال Break أثناء تشغيل محتوى عادي أو من خلال التقديم/الترجيع على Break، ستقيّم حزمة SDK ما إذا كان المستخدم قد سبق وشاهدها من خلال التحقّق من الـ isWatched الموقع. وعند إنشاء الفاصل الإعلاني، تكون القيمة التلقائية لهذه السمة هي false. في حال حذف الخاصية هي true، ولن يتم تشغيل الفاصل عند الدخول إليه بشكل رئيسي. سيستمر تشغيل المحتوى. إذا كانت السمة false، ستكون الفاصل الإعلاني كما يلي: يتم تشغيلها عند إدخالها.

عند البحث عن فواصل إعلانية سابقة، تحصل طريقة التنفيذ التلقائية على جميع Break العناصر التي يكون position فيها بين عمليات البحث seekFrom أو seekTo القيم. من قائمة الفواصل هذه، ستشغِّل حزمة تطوير البرامج (SDK) ملف Break الذي يتضمّن position. الأقرب إلى قيمة seekTo والتي تم ضبط خاصية isWatched فيها على false سيتم بعد ذلك ضبط السمة isWatched لهذا الفاصل على true وسيتم ضبط في تشغيل مقاطع الاستراحة. وبمجرد مشاهدة الفاصل، سيتم استئناف تشغيل المحتوى الرئيسي من الموضع seekTo. إذا لم يكن كذلك توجد استراحة، فلن يتم تشغيل أي فاصل وسيتم استئناف المحتوى الرئيسي يتم تشغيله في الموضع seekTo.

أثناء تشغيل الاستراحة، ستبث حزمة تطوير البرامج (SDK) أي تحديثات ذات صلة إلى الأجهزة المتصلة تطبيقات المرسل في MediaStatus ستستخدم هذه التطبيقات عمليات البث لتحديث واجهة المستخدم للإعلانات من خلال القراءة الـ breakStatus الموقع. يتمّ تحديد هذه السمة فقط أثناء تشغيل الفاصل الإعلاني.

كما يمكن لتطبيقات المستلمين الاستعلام مباشرةً عن المعلومات المتعلقة موضع رأس التشغيل بالنسبة إلى الوقت الحالي لـ BreakClip يظهر من خلال طلب الرقم PlayerManager getBreakClipCurrentTimeSec وبالمثل، يمكن للتطبيقات الاستعلام عن مدة BreakClip الحالية من خلال يتصل getBreakClipDurationSec

سلوك الفواصل الإعلانية المخصّصة

السلوك التلقائي للاستراحات ومقاطع يمكن تعديلها باستخدام setBreakClipLoadInterceptor أو setBreakSeekInterceptor الطرق المقدمة في BreakManager.

كسر محاولة اعتراض الكرة

يتيح وضع اعتراض محاولة الكسر للتطبيق التحكم في سلوك التقديم/الترجيع فوق الفواصل الإعلانية يتم تشغيل الدالة عند طلب عملية بحث يجري الانتقال للأمام أو للخلف خلال فاصل واحد أو أكثر. عند استدعائها، BreakSeekData يتم تمريره كمعلمة إلى دالة رد الاتصال. الكائن BreakSeekData يحتوي على صفيف من Break تم ضبط الخاصية position الخاصة بها على رقم بين القيمة الحالية وقت رأس التشغيل المحدد على أنه seekFrom ووقت الوصول إلى الوجهة seekTo

يسمح عنصر الاعتراض هذا بتصحيح الكائنات في الفواصل الإعلانية المناسبة للحقل "Break". تم تعديله. عند تنفيذ الفاصل، يجب أن يحدد عنصر اعتراض محاولة الفاصل الإعلان يتوقف عن التشغيل عن طريق عرض عنصر BreakSeekData تم تعديله اختياريًا. تشير رسالة الأشكال البيانية سيواصل اللاعب تشغيل كل الفواصل المضمَّنة في القيمة المعروضة. إذا كانت القيمة null أو لا يتم إرجاع أي شيء من اعتراض محاولة الكسر، فإن الكسر هو تم تخطيه.

انظر النموذج أدناه لمعرفة طريقة تنفيذ بسيطة لنظام الاعتراض الذي تلغي الإعدادات التلقائية لمشاهدة كل الفواصل الإعلانية التي تم البحث عنها باستخدام باستثناء الفواصل التي سبقت مشاهدتها.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakSeekInterceptor((breakSeekData) => {

  // Filter the breaks array by removing watched breaks.
  const unwatchedBreaks =
      breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
  breakSeekData.breaks = unwatchedBreaks;

  return breakSeekData;
});

كسر اعتراض تحميل المقطع

باستخدام أداة اعتراض تحميل مقطع الفاصل، يمكن تعديل الكائن BreakClip. قبل بدء تشغيله.

يتم طلب اعتراض تحميل مقطع الفاصل فقط فواصل مرتّبة بالمخطط الزمني ويمكن ضبطها باستخدام setBreakClipLoadInterceptor قبل الدخول إلى Break، يتم طلب الاعتراض مرة واحدة لكل فرد. تم تحديد BreakClip في هذا الفاصل. تجتاز حزمة SDK حزمة SDK الأصلية BreakClip كمعلمة لدالة الاستدعاء. يمكن للتطبيق بعد ذلك تعديل هذا BreakClip وإرجاعه كي تتمكّن حزمة تطوير البرامج (SDK) من جلب الفاصل وعرضه. مقطع بإعدادات محدثة. في حال إرجاع null أو عدم إرجاع أي عنصر، يتم استخدام الفاصل تم تخطي مقطع.

اطّلِع أدناه على مثال يعدِّل contentUrl من المقاطع الفاصلة باستخدام تستدعي دالة الأداة getUrlFromClipId حيث يكون id لـ BreakClip إلى عنوان URL.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
    (breakClip, breakClipLoadInterceptorContext) => {

  // Obtains the URL of a break clip id from a function call.
  breakClip.contentUrl = getUrlFromClipId(breakClip.id);

  return breakClip;
});

تخطي الإعلان

توفّر "حزمة تطوير البرامج (SDK) استلام الويب" واجهات برمجة تطبيقات لتخطّي الفواصل الإعلانية ومقاطع الفواصل الإعلانية الفردية. ضمن فاصل إعلاني تسمح حزمة تطوير البرامج (SDK) أيضًا للمستخدمين بتخطّي مقاطع الفواصل بشكل اختياري من خلال تتفاعل مع تطبيقات المرسل أو أجهزة الشاشة الذكية.

مقاطع الفواصل التي يمكن للمستخدم تخطيها

إنّ ضبط مقاطع الفواصل كمقاطع قابلة للتخطّي يسمح للمستخدمين بالتفاعل مع المُرسِل المرتبط. وتطبيقات وأجهزة العرض الذكية لتخطي بقية مقطع فاصل قيد التشغيل حاليًا إعداد whenSkippable إلى عدد غير سالب من الثواني إلى تفعيل هذه الميزة الكائن BreakClip. سيعتبر المشغّل أن مقطع الفاصل قابل للتخطي بعد تم تشغيل مقطع "الفاصل" خلال هذا العدد من الثواني. جارٍ ضبط هذه القيمة على 0 يتيح للمستخدمين تخطّي مقطع الفاصل على الفور.

// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.

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

تخطّي الإعلانات آليًا

يمكن أيضًا تخطّي الإعلانات تلقائيًا بدون أي تفاعل من المستخدم.

لتخطّي فترة استراحة كاملة من التشغيل، يجب أن يضبط التطبيق isWatched من Break إلى true. يمكن إجراء ذلك في أي وقت أثناء تحميل البيانات. التسلسل أو تشغيل المحتوى. يتم تقييم السمة isWatched من خلال المستخدم عند استيفاء قيمة position للاستراحة في الوقت الحالي للمحتوى الرئيسي. علامة @ من هذه النقطة، سيحدد اللاعب ما إذا كان يجب إدخال فاصل أم لا. اطّلِع على العيّنة أدناه التي تعرض كل الفواصل وتُعدّل القيمة عند تحميل المشغّل.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
    (event) => {

  // Obtain the breaks and iterate through each item to skip all ad breaks.
  let breaks = breakManager.getBreaks();
  breaks.forEach((brk) => {
    brk.isWatched = true;
  });
});

لتخطّي مقطع فاصل معيّن آليًا، يجب استخدام يجب استخدام أداة اعتراض تحميل المقطع. من أن تعرض null قيمة أو لا تعرض قيمة في دالة رد الاتصال، فإن المقطع في فسيتم تخطي هذا الفاصل.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
      (breakClip, breakClipLoadInterceptorContext) => {
  return null;
});