يوضّح هذا الدليل كيفية إدراج فواصل إعلانية باستخدام طريقة "بيانات وصفية لتحديد توقيت مجموعة إعلانات متسلسلة" (ATM) من أجل جلب التوقيت والمدة المحدّدين للفواصل الإعلانية، بما في ذلك الإعلانات التمهيدية.
لإدراج إعلانات ما قبل التشغيل وإدارة العودة إلى المحتوى بعد فواصل الإعلانات أثناء التشغيل، ننصحك باستدعاء واجهات برمجة التطبيقات التالية:
- واجهة برمجة تطبيقات Ad pod Timing Metadata (ATM): تتيح طلب نتائج قرار مجموعة إعلانات متسلسلة، بما في ذلك مدة الإعلان ومدة الفاصل الإعلاني الاحتياطي.
- نقطة نهاية شريحة الإعلان: لطلب شرائح إعلانات أو لوحات إعلانات مع خيار إنهاء حزمة الإعلانات الحالية.
بالنسبة إلى أحداث البث المباشر التي تتضمّن عددًا كبيرًا من المشاهدين في الوقت نفسه، ننصحك اختياريًا باستدعاء Early Ad Break Notification (EABN) API لجدولة قرارات الإعلانات قبل بدء فاصل الإعلانات.
المتطلبات الأساسية
لبدء استخدام هذه الميزة، يجب إعداد حدث بث مباشر لنوع "إدراج الإعلانات الديناميكية" (DAI) لعمليات إعادة التوجيه الخاصة بعرض الإعلانات ضمن البودكاست. اختَر إحدى الطرق التالية:
- واجهة مستخدم "إدارة الإعلانات": إعداد بث مباشر باستخدام الإعلانات الديناميكية أثناء عرض الفيديو
- واجهة برمجة التطبيقات في "مدير إعلانات Google": استخدِم مكتبة برامج (الخيارات
المتاحة) لاستدعاء طريقة
LiveStreamEventService.createLiveStreamEvents. اضبط المَعلمةLiveStreamEvent.dynamicAdInsertionTypeعلىPOD_SERVING_REDIRECT.
استرداد مجموعة بث المحتوى
عندما يختار المستخدم حدث بث مباشر، يرسل تطبيق العميل طلب بث إلى "مدير إعلانات Google". في ردّ البث، يستخرج التطبيق رقم تعريف جلسة Google DAI والبيانات الوصفية لتضمينها في طلب بيان البث.
يمرِّر المثال التالي رقم تعريف جلسة Google DAI إلى أداة تعديل ملف البيان:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
عند معالجة طلب تشغيل محتوى الفيديو، يتم تخزين معرّف جلسة Google DAI وCUSTOM_ASSET_KEY من الطلب للتحضير لدمج الإعلانات.
استرداد البيانات الوصفية لتوقيت مجموعة إعلانات متسلسلة
لاسترداد توقيت مجموعة إعلانات متسلسلة، اتّبِع الخطوات التالية:
- إنشاء رمز مميز لرمز مصادقة الرسائل المستند إلى التجزئة (HMAC)
- استدعِ واجهة برمجة تطبيقات ATM باستخدام رمز HMAC المميز.
طلب البيانات الوصفية لتوقيت إعلانات ما قبل التشغيل
تحقَّق من إعدادات إعلانات ما قبل التشغيل لحدث البث المباشر باستخدام الخيارات التالية:
- الإعلانات التمهيدية في أحداث البث المباشر باستخدام "إدراج الإعلانات الديناميكي" (إصدار تجريبي)
- LiveStreamEvent.prerollsettings
لاسترداد نتائج قرار إعلان ما قبل التشغيل، أرسِل طلبًا إلى واجهة برمجة التطبيقات ATM.
يرسل المثال التالي طلبًا إلى ATM لعرض إعلانات ما قبل التشغيل:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"
طلب البيانات الوصفية لتحديد توقيت عرض "الإعلانات أثناء التشغيل"
لاسترداد بيانات وصفية خاصة بمجموعات الإعلانات المتسلسلة في الإعلانات أثناء التشغيل، اتّبِع الخطوات التالية:
- حلِّل ملف البث المباشر للعثور على علامات الإعلانات التي تتضمّن التوقيت والمدة لكل فاصل إعلاني أثناء التشغيل.
- اتّصِل بنقطة نهاية واجهة برمجة التطبيقات الخاصة بآلة الصرّاف الآلي لطلب المدة الدقيقة لحزمة الإعلانات ولوحة الإعلانات. تعرض واجهة برمجة التطبيقات عنصر JSON يتضمّن نتائج قرار حزمة الإعلانات.
يقدم المثال التالي طلبًا إلى "مدير إعلانات Google" لعرض إعلانات أثناء التشغيل:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"
في حال نجاح العملية، ستظهر لك نتيجة مشابهة لعنصر JSON التالي:
{
"status": "final",
"ads": [
{
"duration_ms": 5046,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
}
}
}
],
"slate": {
"duration_ms": 0,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
}
}
}
}
دمج الإعلانات في بيان المحتوى
ترشدك الأقسام التالية إلى كيفية تعديل بيان البث المباشر وإضافة مقاطع الإعلانات.
تحديد فواصل الإعلانات وإدراج فواصل
أثناء معالجة كل بيان متغير، حدِّد العلامتَين EXT-X-CUE-IN وEXT-X-CUE-OUT في البث، ما يشير إلى بداية فاصل إعلاني ونهايته.
استبدِل علامتَي EXT-X-CUE-IN وEXT-X-CUE-OUT بعناصر EXT-X-DISCONTINUITY ليتمكّن مشغّل الفيديو على الجهاز من التبديل بين المحتوى والإعلانات.
يستبدل ملف البيان التالي العلامتَين EXT-X-CUE-IN وEXT-X-CUE-OUT:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:17.450
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXTINF:2.450,
contentorigin.com/6.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
يوضّح المثال التالي ملف بيان تم استبداله:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
لا يتم تشفير شرائح إعلانات "إدراج الإعلان الديناميكي" من Google. إذا كان المحتوى مشفّرًا، عليك إزالة التشفير من خلال إدراج العنصر EXT-X-KEY:METHOD=NONE قبل أول جزء من الإعلان في كل فاصل إعلاني. في نهاية الفاصل الإعلاني، أضِف التشفير مرة أخرى من خلال إدراج EXT-X-KEY مناسب.
تتبُّع وقت البدء والمدة والفهرس للفاصل الإعلاني القادم
إنشاء عناوين URL لشرائح الجمهور الإعلانية
استبدِل شرائح المحتوى بين علامتَي EXT-X-DISCONTINUITY بعناوين URL لكل شريحة إعلان. لتحديد عدد مقاطع الإعلانات التي يجب إدراجها، استخدِم ads.segment_durations.values المقدَّمة في استجابة JSON من واجهة برمجة تطبيقات ATM.
للرجوع إلى المحتوى قبل اكتمال مجموعة إعلانات متسلسلة، مثلاً عند رصد علامة EXT-X-CUE-IN، يجب أن يضيف برنامج معالجة ملف البيان المَعلمة sd= إلى عنوان URL الخاص بمقطع الإعلان النهائي.
تعمل هذه المَعلمة على تقصير مدة المقطع لتجنُّب التأثير في المخطط الزمني لمشغّل الفيديو لدى العميل.
يجمع المثال التالي عنوان URL الخاص بشريحة "الإعلان ما قبل التشغيل" إلى البيان. يُرجى العِلم أنّ شرائح الإعلانات تستخدم فهرسًا يبدأ من الصفر:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
يجمّع المثال التالي عنوان URL الخاص بمقطع إعلان أثناء التشغيل ويضيفه إلى ملف البيان:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
يُدرج المثال التالي مقاطع إعلانية في البيان:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/3.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
إنشاء شرائح Slate
لملء الفجوة بين الإعلان والمحتوى، أدرِج مقاطع لوحة معلومات.
استخدِم مصفوفة slates.segment_durations.values من استجابة JSON لواجهة برمجة تطبيقات ATM
لتحديد مدة كل مقطع من مقاطع اللوحات الإعلانية. كرِّر تسلسل مدة الأجزاء حسب الحاجة لملء فاصل الإعلان بالكامل.
للرجوع إلى المحتوى قبل اكتمال مجموعة إعلانات متسلسلة، مثلاً عند رصد علامة
EXT-X-CUE-IN، أضِف المَعلمة sd= إلى عنوان URL لشريحة اللوحة الإعلانية النهائية. تعمل هذه المَعلمة على تقصير مدة المقطع لتجنُّب التأثير في المخطط الزمني لمشغّل الفيديو لدى العميل. يجب أن تكون قيمة المَعلمة sd= عددًا صحيحًا يمثّل المدة بالملي ثانية التي سيتم تقصير المقطع بها.
يجمع المثال التالي جزءًا من قائمة المحتوى:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
يمثّل slate/0 في المثال رقم تكرار اللوحة. راجِع توافق مشغّل الفيديو الخاص بالعميل وإمكانية التخزين المؤقت لتحديد ما إذا كان يجب البدء بالقيمة 0 وزيادة هذا الرقم لكل تكرار من اللوحة الإعلانية، أو إبقاؤه عند 0 لجميع التكرارات.
إدارة ميزة "الرجوع إلى المحتوى"
بعد أن يُدرج برنامج معالجة ملف البيان جميع المقاطع من مجموعة إعلانات متسلسلة، يجب أن يعود برنامج معالجة ملف البيان إلى بث المحتوى. للرجوع إلى بث المحتوى، اختَر إحدى الطريقتين التاليتين. تتطلّب كل طريقة شريحة إعادة محاذاة نهائية للحفاظ على دقة المخطط الزمني للبث.
الملء وإعادة المحاذاة: أدخِل شرائح اللوحة وكرِّرها.
املأ المدة الزمنية وأدرِج عناصر EXT-X-DISCONTINUITY بين كل تكرار للوحة الإعلانية. بالنسبة إلى المقطع الأخير، أضِف المَعلمة sd= بالملّي ثانية
لتتطابق مع بداية المحتوى.
العودة الفورية: أدخِل مقطعًا واحدًا من لوحة إعادة الضبط باستخدام المَعلمة sd=، ثم أضِف المحتوى.
يعود مشغّل الفيديو إلى المحتوى بدون تغيير المخطط الزمني.
ينشئ المثال التالي انتقالًا عن طريق ملء المدة المتبقية من فاصل الإعلانات بشرائح من "شاشة عرض الإعلانات".
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
في هذه الطريقة، يكرّر برنامج معالجة ملف البيان اللوحة الإعلانية حسب الحاجة، ويضيف مَعلمة عنوان URL sd= إلى آخر جزء من اللوحة الإعلانية فقط. تتطابق هذه العملية تمامًا مع وقت البدء المجدوَل للمحتوى الأساسي.
يوضّح المثال التالي كيفية استخدام مقطع واحد من لوحة الإعلانات مع المَعلمة sd= للمساعدة في الحفاظ على دقة المخطط الزمني الخاص بالمشغّل عندما لا تملأ الفاصل الإعلاني المتبقي بالكامل بلوحات إعلانات متكرّرة.
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
اختياري: جدولة فاصل إعلاني
لتحسين معدل التعبئة، أرسِل إشعارًا مبكرًا بفاصل إعلاني (EABN) يتضمّن مدة مجموعة الإعلانات المتسلسلة ومعلَمات الاستهداف المخصّصة وبيانات إشارة SCTE-35. لمزيد من التفاصيل، يُرجى الاطّلاع على إرسال إشعارات بشأن فواصل إعلانية مبكرة.