إدراج الإعلانات باستخدام البيانات الوصفية لتوقيت حزمة الإعلانات

يصف هذا الدليل كيفية إدراج فواصل إعلانية باستخدام طريقة بيانات تعريف توقيت مجموعة الإعلانات المتسلسلة (ATM) لجلب التوقيت والمدّة الدقيقَين للفواصل الإعلانية، بما في ذلك إعلانات ما قبل التشغيل.

لإدراج إعلانات ما قبل التشغيل وإدارة العودة إلى المحتوى بعد الفواصل الإعلانية أثناء التشغيل، ننصحك باستدعاء واجهات برمجة التطبيقات التالية:

  • Ad pod Timing Metadata (ATM) API: لاستعلام نتائج قرارات مجموعات الإعلانات المتسلسلة، بما في ذلك مدّتَي الإعلان والفاصل الإعلاني الاحتياطي.
  • نقطة نهاية شريحة الإعلان: لطلب شرائح الإعلانات أو اللوحات مع خيار إنهاء الفاصل الإعلاني الحالي

اختياريًا، بالنسبة إلى أحداث البث المباشر المتزامنة الكثيرة، ننصحك باستدعاء Early Ad Break Notification (EABN) API لجدولة قرارات الإعلانات قبل بدء الفاصل الإعلاني.

المتطلبات الأساسية

للبدء، تحتاج إلى إعداد حدث بث مباشر لنوع "إدراج الإعلانات الديناميكي" (DAI) من نوع إعادة توجيه عرض الفواصل الإعلانية. اختَر إحدى الطرق التالية:

استرداد مجموعة بث المحتوى

عندما يختار المستخدم حدث بث مباشر، يرسل تطبيق العميل طلب بث إلى إدارة إعلانات 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 من الطلب للتحضير لـ دمج الإعلانات.

استرداد البيانات الوصفية لتوقيت مجموعة إعلانات متسلسلة

لاسترداد توقيت مجموعة الإعلانات المتسلسلة، اتّبِع الخطوات التالية:

  1. أنشئ رمز HMAC.
  2. استدعِ واجهة برمجة التطبيقات ATM باستخدام رمز HMAC.

طلب البيانات الوصفية لتوقيت إعلانات ما قبل التشغيل

تحقَّق من إعدادات إعلانات ما قبل التشغيل لحدث البث المباشر باستخدام الخيارات التالية:

لاسترداد نتائج قرار إعلان ما قبل التشغيل، أرسِل طلبًا إلى واجهة برمجة التطبيقات 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"

طلب البيانات الوصفية لتوقيت الإعلانات أثناء التشغيل

لاسترداد البيانات الوصفية لمجموعة الإعلانات المتسلسلة للإعلانات أثناء التشغيل، اتّبِع الخطوات التالية:

  1. حلِّل بيان البث المباشر للعثور على علامات الإعلانات التي تحتوي على التوقيت والمدّة لكل فاصل إعلاني أثناء التشغيل.
  2. استدعِ نقطة نهاية واجهة برمجة التطبيقات ATM لطلب المدّة الدقيقة لمجموعة الإعلانات المتسلسلة والفاصل الإعلاني الاحتياطي. تعرض واجهة برمجة التطبيقات كائن JSON يتضمّن نتائج قرار الفاصل الإعلاني.

يرسل المثال التالي طلب 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=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.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

يعرض المثال التالي بيانًا تم استبداله:

#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.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

شرائح إعلانات Google DAI ليست مشفّرة. إذا كان المحتوى مشفّرًا، أزِل التشفير عن طريق إدراج العنصر EXT-X-KEY:METHOD=NONE قبل شريحة الإعلان الأولى لكل فاصل إعلاني. في نهاية الفاصل الإعلاني، أعِد إضافة التشفير عن طريق إدراج EXT-X-KEY مناسب.

تتبَّع وقت بدء الفاصل الإعلاني القادم ومدّته ورقمه التسلسلي.

إنشاء عناوين URL لشرائح الإعلانات

استبدِل شرائح المحتوى بين علامتَي EXT-X-DISCONTINUITY بعناوين URL لكل شريحة إعلان. لتحديد عدد شرائح الإعلانات التي تريد إدراجها، استخدِم ads.segment_durations.values المقدَّمة في استجابة JSON من واجهة برمجة التطبيقات ATM.

للعودة إلى المحتوى قبل اكتمال مجموعة إعلانات متسلسلة، مثلاً عند رصد علامة EXT-X-CUE-IN، يجب أن تضيف أداة تعديل البيان المَعلمة d= إلى عنوان 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
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

إنشاء شرائح اللوحات

لسدّ الفجوة بين الإعلان والمحتوى، أدرِج شرائح اللوحات. استخدِم مصفوفة slates.segment_durations.values من استجابة JSON لواجهة برمجة التطبيقات ATM لتحديد مدّة كل شريحة لوحة. كرِّر تسلسل مدّات الشرائح حسب الحاجة لملء الفاصل الإعلاني بالكامل.

للعودة إلى المحتوى قبل اكتمال مجموعة الإعلانات المتسلسلة، مثلاً عند رصد علامة EXT-X-CUE-IN، أضِف المَعلمة d= إلى عنوان URL لشريحة اللوحة الأخيرة. تؤدي هذه المَعلمة إلى تقصير الشريحة لتجنُّب التأثير في المخطط الزمني لمشغّل الفيديو على جهاز العميل. يجب أن تكون قيمة المَعلمات d= عددًا صحيحًا يمثّل المدّة بالملّي ثانية لتقصير الشريحة.

يجمع المثال التالي شريحة لوحة:

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 عناصر بين كل تكرار للوحة. بالنسبة إلى الشريحة الأخيرة، ألحِق المَعلمة d= بالملّي ثانية لتتطابق مع بداية المحتوى.

العودة الفورية: أدرِج شريحة لوحة واحدة لإعادة المحاذاة باستخدام المَعلمة d= ثم أتبِعها بالمحتوى.

يعود مشغّل الفيديو إلى المحتوى بدون تغيير المخطط الزمني.

ينشئ المثال التالي عملية انتقال عن طريق ملء المدّة المتبقية للفاصل الإعلاني بشرائح اللوحات.

#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&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

في هذه الطريقة، تكرِّر أداة تعديل البيان اللوحة حسب الحاجة وتلحِق مَعلمة عنوان URL ‏d= بشريحة اللوحة الأخيرة فقط. تتطابق هذه العملية بدقة مع وقت البدء المجدول للمحتوى الأساسي.

يوضّح المثال التالي كيفية استخدام شريحة لوحة واحدة مع المَعلمة d= للمساعدة في الحفاظ على دقة المخطط الزمني للمشغّل عندما لا تملأ الفاصل الإعلاني المتبقي بالكامل بلوحات مكرّرة.

#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&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

اختياري: جدولة فاصل إعلاني

لتحسين معدل التعبئة، أرسِل Early Ad Break Notification ‏ (EABN) مع مدّة مجموعة الإعلانات المتسلسلة ومَعلمات الاستهداف المخصّصة وبيانات إشارة SCTE-35. لمزيد من التفاصيل، يُرجى الاطّلاع على مقالة إرسال إشعارات الفواصل الإعلانية المبكرة.