أداة معالجة البيان لأحداث البث عند الطلب

توفّر واجهة برمجة تطبيقات Pod Serving API إمكانية الوصول إلى مجموعات إعلانات الفيديو المتسلسلة التي تعمل بمعدل نقل بيانات تكيُّفي مُعدّة بطريقة يمكن تجميعها مباشرةً في قائمة تشغيل وسائط HLS أو MPEG-DASH الموجّهة للمستخدم.

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

تلقّي طلبات بيان البث

يجب أن يوفّر معالج البيان نقطة نهاية لواجهة برمجة التطبيقات للاستماع إلى طلبات البيان من تطبيق العميل الخاص بمشغّل الفيديو. ويجب أن تجمع نقطة النهاية هذه معرّف البث من تطبيق مشغّل العميل على الأقل. ويتم استخدام رقم تعريف البث هذا لتحديد جلسة البث الخاصة بـ "مدير الإعلانات" في طلبات مجموعة الإعلانات المتسلسلة.

يجب أيضًا جمع بعض المعلومات الأخرى لتحديد مصدر المحتوى المناسب، مثل Content ID.

مثال على نقطة نهاية طلب البيان

GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
مَعلمات المسار
stream_id رقم تعريف مصدر بيانات "مدير الإعلانات" من تطبيق مشغّل فيديو العميل
content_id معرّف افتراضي مطابق لفيديو المحتوى في نظامك
format مَعلمة افتراضية تتوافق مع تنسيق البث. أحد الخيارَين التاليَين:
mpd لتدفقات MPEG-DASH
m3u8 بالنسبة إلى أحداث البث المباشر وفق بروتوكول HTTP (HLS)

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

يمكنك استخدام Content ID الذي تم جمعه من طلب البيان لاختيار مصدر المحتوى المطلوب تركيبه مع الإعلانات.

طلب بيانات مجموعة الإعلانات المتسلسلة

ولطلب الإعلانات من "مدير إعلانات Google"، على الخادم تقديم طلب POST إلى نقطة نهاية مجموعات الإعلانات، مع تمرير الملفات الشخصية للترميز المطلوبة وعلامة الإعلان ومعلَمات الاستهداف. يتضمّن هذا الطلب أيضًا رقم تعريف مصدر البيانات الذي جمعته في الخطوة 1.

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

POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
مَعلمات المسار
network_code رمز شبكة "مدير الإعلانات 360" للناشر.
stream_id رقم تعريف البث من تطبيق مشغّل الفيديو الخاص بالعميل

نص JSON

مَعلمات النص الأساسي
encoding_profiles Required قائمة بتمثيل JSON للملفات الشخصية للترميز التي تريد تلقّيها لكل فاصل إعلاني اطّلِع على التفاصيل أدناه.

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

ad_tag Required علامة إعلان لطلب إعلانات VMAP.
cuepoints Optional قائمة بنقاط تشغيل البث المباشر للمحتوى حيث يتم إدراج الفواصل الإعلانية أثناء التشغيل. يتم قياس نقاط عرض الأحداث بالثواني النقطة العائمة.

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

content_duration_seconds Optional مدة المحتوى بالثواني.

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

manifest_type Optional تمثّل هذه السمة تنسيق مصادر بيانات الإعلانات المطلوبة، إما hls أو dash. القيمة التلقائية هي hls.
dai_options Optional خيارات إضافية تتحكّم في جوانب عرض البيانات. اطّلِع على التفاصيل أدناه.
ملف الترميز الشخصي
profile_name Required معرّف لملف الترميز هذا. ويمكن أن تكون هذه القيمة أي سلسلة تختارها، ولكن لا يمكن أن تكون لديك ملفات شخصية متعددة للترميز تحمل الاسم نفسه في مصدر البيانات نفسه.
type Required نوع ترميز مجموعة البث الذي يصفه ملف الترميز هذا. أنواع المحتوى هي: media وiframe وsubtitles.
container_type Required تنسيق الحاوية الذي يستخدمه هذا الملف الشخصي للترميز. تنسيقات الحاويات هي: mpeg2ts وfmp4cmaf وhls_packed_audio
video_settings Optional هذه السمة مطلوبة إذا كان نوع الملف الشخصي للترميز هو iframe. وبخلاف ذلك، لا يُسمح به إلا إذا كان نوع الوسائط يحتوي على فيديو. اطّلِع على التفاصيل أدناه.
audio_settings Optional مطلوبة إذا كان الملف الشخصي للترميز يحتوي على صوت. مسموح به فقط إذا كان النوع وسائط. اطّلِع على التفاصيل أدناه.
subtitle_settings Optional مطلوبة إذا كان الملف الشخصي للترميز يحتوي على ترجمات مصاحبة. اطّلِع على التفاصيل أدناه.
إعدادات الفيديو
codec Required سلسلة برنامج ترميز RFC6381

مثال: avc1.4d000c

bitrate Required عدد صحيح يمثّل الحد الأقصى لمعدل نقل بيانات الفيديو لهذا الملف الشخصي بالبايت في الثانية.
frames_per_second Required تمثّل هذه السمة عدد اللقطات في الثانية الخاص بالنقطة العائمة للفيديو.
resolution Required قيمة بترميز JSON تحتوي على "العرض" و"الارتفاع" للفيديو بالبكسل.

مثال: {"width": 640, "height": 320}

إعدادات الصوت
codec Required سلسلة برنامج ترميز RFC6381

مثال: mp4a.40.5

bitrate Required عدد صحيح يمثّل الحد الأقصى لمعدل نقل بيانات الصوت لهذا الملف الشخصي بالبايت في الثانية.

مثال: 300000

channels Required عدد صحيح يمثّل عدد القنوات الصوتية، بما في ذلك القنوات ذات الترددات المنخفضة.
sample_rate Required عدد صحيح يمثّل معدّل العيّنة الصوتية بالهرتز.

مثال: 4800

إعدادات الترجمة
format Required تمثّل هذه السمة تنسيق الملف الذي تستخدمه الترجمة ضمن النطاق. والقيمتان المسموح بإدراجهما هما webvtt أو ttml.
language Optional لغة الترجمة كسلسلة لغة RFC5646. وفي حال توفير هذه القيمة، سيتم استخدام هذه القيمة فقط لعرض دالة DASH.

مثال: en-us

خيارات DAI
dash_profile Optional ملف MPEG-DASH الشخصي المطلوب تطبيقه على بيانات مجموعة الإعلانات المتسلسلة. يتم استخدام هذا الإعداد لبيان DASH فقط. القيمتان المسموح بإدراجهما هما live أو on-demand. القيمة التلقائية هي on-demand.

تتطابق القيمة live مع ملف MPEG-DASH الشخصي "urn:mpeg:dash:profile:isoff-live:2011".

تتطابق القيمة on-demand مع ملف MPEG-DASH الشخصي urn:mpeg:dash:profile:isoff-on-demand:2011.

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

الإجابة

مَعلمات الاستجابة
valid_for المدة التي تكون فيها قوائم تشغيل مجموعات الإعلانات المتسلسلة هذه صالحة بالتنسيق dhms (الأيام والساعات والدقائق والثواني).
valid_until تمثّل هذه السمة التاريخ والوقت حتى تكون قوائم تشغيل مجموعة الإعلانات المتسلسلة هذه صالحة كسلسلة تاريخ ووقت ISO8601 بالتنسيق yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm.
ad_pods قائمة بمجموعة الإعلانات المتسلسلة التي تم اختيارها لمصدر البيانات هذا.
مجموعة إعلانات متسلسلة
manifest_uris هذا الخيار متاح لأحداث البث المباشر وفق بروتوكول HTTP (HLS) فقط. خريطة لمعرّفات الملفات الشخصية للترميز إلى معرّفات الموارد المنتظمة (URI) لبيان HLS
mpd_uri لأحداث بث DASH فقط. هو معرّف الموارد المنتظم لـ DASH MPD.
type نوع مجموعة الإعلانات المتسلسلة. أنواع مجموعات الإعلانات المتسلسلة هي: pre أو mid أو post.
start لمجموعة الإعلانات المتسلسلة الخاصة أثناء التشغيل فقط. الموضع الذي يجب إدراج مجموعة الإعلانات المتسلسلة فيه في ساحة المشاركات، بالثانية العائمة.
duration مدة مجموعة الإعلانات المتسلسلة هذه بالثواني النقاط العائمة.
midroll_index لمجموعة الإعلانات المتسلسلة الخاصة أثناء التشغيل فقط. فهرس مجموعة الإعلانات المتسلسلة الحالية أثناء التشغيل. تبدأ الفهرسة بـ 1.

مثال على طلب (cURL)

curl -X POST \
     -d '@request-body.json' \
     -H 'Content-Type: application/json' \
  https://dai.google.com/ondemand/pods/api/v1/network/21775744923/streams/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/adpods

مثال لنص الطلب

هذا هو محتوى request_body.json المُشار إليه في طلب cURL أعلاه.

{
  "encoding_profiles": [
   {
     "profile_name": "1080p",
     "type": "media",
     "container_type": "mpeg2ts",
     "video_settings": {
       "codec": "avc1.4d000c",
       "bitrate": 5000000,
       "frames_per_second": 30.0,
       "resolution": {
         "width": 1920,
         "height": 1080
       }
     },
     "audio_settings": {
       "codec": "mp4a.40.5",
       "bitrate": 300000,
       "channels": 2,
       "sample_rate": 48000
     }
   },
   {
     "profile_name": "360p",
     "type": "media",
     "container_type": "mpeg2ts",
     "video_settings": {
       "codec": "avc1.4d000d",
       "bitrate": 1000000,
       "frames_per_second": 30.0,
       "resolution": {
         "width": 640,
         "height": 360
       }
     },
     "audio_settings": {
       "codec": "mp4a.40.5",
       "bitrate": 64000,
       "channels": 2,
       "sample_rate": 48000
     }
   },
   {
     "profile_name": "subtitles-webvtt",
     "type": "subtitles",
     "subtitle_settings": {
       "format": "webvtt"
     }
   }
 ],
 "ad_tag": "https://pubads.g.doubleclick.net/gampad/ads?...",
 "manifest_type": "hls"
}

مثال على إجابة

{
  "valid_for": "8h0m0s",
  "valid_until": "2023-03-24T08:30:26.839717986-07:00",
  "ad_pods": [
    {
      "manifest_urls":{
        "1080p": "https://{...}/pod/0/profile/1080p.m3u8",
        "360p": "https://{...}/pod/0/profile.m3u8",
        "subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt"
      },
      "type": "pre",
      "duration": 10.0
    },
    {
      "manifest_urls":{
        "1080p": "https://{...}/pod/1/profile/1080p.m3u8",
        "360p": "https://{...}/pod/1/profile.m3u8",
        "subtitles-webvtt": "https://{...}/pod/1/profile/subtitles-en.vtt"
      },
      "type": "mid",
      "start": 15.0,
      "duration": 15.0,
      "midroll_index": 1
    },
    {
      "manifest_urls":{
        ]"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
        "360p": "https://{...}/pod/2/profile.m3u8",
        "subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt""
      },
      "type": "post",
      "duration": 10.0
    }
  ]
}

تركيب مجموعات الإعلانات المتسلسلة في محتوى

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

أحداث البث المباشر وفق بروتوكول HTTP (HLS)

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

التكرار عبر ملفات تعريف الترميز

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

مثال على مصفوفة مجموعات الإعلانات المتسلسلة
"ad_pods": [
    {
      "manifest_urls":{
        "1080p": "https://{...}/pod/0/profile/1080p.m3u8",
        "360p": "https://{...}/pod/0/profile/360p.m3u8",
        "subtitles-en": "https://{...}/pod/0/profile/subitles-en.vtt"
      },
      "type": "pre",
      "duration": 10.0
    },
    {
      "manifest_urls":{
        "1080p": "https://{...}/pod/1/profile/1080p.m3u8",
        "360p": "https://{...}/pod/1/profile/360p.m3u8",
        "subtitles-en": "https://{...}/pod/1/profile/subitles-en.vtt"
      },
      "type": "mid",
      "start": 15.0,
      "duration": 15.0,
      "midroll_index": 1
    },
    {
      "manifest_urls":{
        "1080p": "https://{...}/pod/2/profile/1080p.m3u8",
        "360p": "https://{...}/pod/2/profile/360p.m3u8",
        "subtitles-en": "https://{...}/pod/2/profile/subitles-en.vtt"
      },
      "type": "post",
      "duration": 10.0
    }
  ]
مثال على قائمة تشغيل لمحتوى متعدّد الصِيَغ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://{...}/subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://{...}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://{...}/360p.m3u8
مثال على بيانات خيارات المنتج المجمّعة
Encoding profile: "1080p"
Profile settings: {...}
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
    0 -> https://{...}/pod/0/profile/1080p.m3u8
   15 -> https://{...}/pod/1/profile/1080p.m3u8
  600 -> https://{...}/pod/2/profile/1080p.m3u8

إدراج الإعلانات في كل بيان خيار

لكل مجموعة من خيارات البث، راجِع أقسام بيان المحتوى مع الاحتفاظ بالإجمالي الفعلي لوقت المحتوى المنقضي. عند الوصول إلى موضع بداية مجموعة الإعلانات المتسلسلة، عليك استخراج قائمة الأقسام من بيان مجموعة الإعلانات المتسلسلة ولفّ قائمة الشرائح في علامتَي #EXT-X-DISCONTINUITY ثم إدراج القائمة في الموقع الحالي ضمن بيان المحتوى. واصِل هذه العملية إلى أن تتم معالجة جميع مجموعات الإعلانات المتسلسلة وأحداث بث الصيغ.

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

إذا كان بيان المحتوى مشفّرًا، يجب تخزين آخر مفتاح تشفير تم العثور عليه قبل بدء مجموعة الإعلانات المتسلسلة الحالية في علامة #EXT-X-KEY. بعد ذلك، عليك إضافة العلامة #EXT-X-KEY:METHOD=NONE لإزالة التشفير قبل القسم الأول من كل مجموعة إعلانات متسلسلة. أخيرًا، عليك إضافة نسخة من علامة #EXT-X-KEY المخزَّنة قبل الجزء الأول من المحتوى بعد كل مجموعة إعلانات متسلسلة، لاستعادة تشفير المحتوى.

مثال على بيانات خيارات المنتج المجمّعة
Encoding profile: "1080p"
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
    0 -> https://dai.google.com/{...}pod/0/profile/1080p.m3u8
   15 -> https://dai.google.com/{...}pod/1/profile/1080p.m3u8
  600 -> https://dai.google.com/{...}pod/2/profile/1080p.m3u8
مثال على بيان المحتوى

هذا هو محتوى بيان https://{...}/1080p.m3u8 المُدرَج في بيانات خيارات المنتج التي تم جمعها.

#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
مثال على بيان مجموعة الإعلانات المتسلسلة

هذه هي محتوى بيان https://dai.google.com/{...}/pod/1/profile/1080p.m3u8 الوارد في بيانات خيارات المنتج المجمَّعة.

#EXTM3U
{...}
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
مثال على بيان الصيغة التي تم تركيبها

سيكون هذا هو البيان الناتج للصيغة التي تم تركيبها، والذي تم تمريره إلى شبكة توصيل المحتوى (CDN) واستضافته في https://cdn.{...}/{userid}/1080p.m3u8.

#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}

إنشاء قائمة تشغيل متعدّدة الصِيَغ

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

مثال على قائمة تشغيل نهائية متعددة الصِيَغ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://cdn.{...}-subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://cdn.{...}/{userid}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://cdn.{...}/{userid}/360p.m3u8

مجموعات بث MPEG DASH

إذا كنت تنشئ مجموعة بث بتنسيق MPEG DASH، فلن تحتاج إلا إلى إنتاج ملف واحد. يسهّل ذلك تركيب مجموعات البث DASH مقارنةً بـ HLS.

يجب أن يتألف ملف وصف العرض التقديمي (MPD) للوسائط MPEG DASH المعد بشكل صحيح من عدة نقاط، ويحتوي كل منها على تمثيلات متعددة. يجب أن يتطابق كل تمثيل مع أحد ملفات الترميز وكل مجموعة إعلانات متسلسلة يتم عرضها من "مدير الإعلانات" هي أيضًا ملف MPD يحتوي على سلسلة من النقاط ذات تمثيلات متطابقة.

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

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

مثال على تنسيق MPD للمحتوى

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M00.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
  <ProgramInformation moreInformationURL="http://.../info">
    <Title>Example Stream</Title>
  </ProgramInformation>
  <Period duration="PT0H0M15.000S" id="content-period-1">
    ...
  </Period>
  <Period duration="PT0H0M15.000S" id="content-period-2">
    ...
  </Period>
  <Period duration="PT0H0M15.000S" id="content-period-3">
    ...
  </Period>
  ...
</MPD>

مثال على تنسيق JSON لمجموعة الإعلانات المتسلسلة

[{
  "mpd_uri": "https://{...}pod/1.mpd",
  "type": "mid",
  "start": 15.0,
  "duration": 15.0,
  "midroll_index": 1
}]

مثال على تنسيق MPD لمجموعة الإعلانات المتسلسلة

هذا هو محتوى mpd_uri من مجموعة الإعلانات المتسلسلة بتنسيق JSON أعلاه.

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
  <ProgramInformation moreInformationURL="http://.../info">
    <Title>Ad Pod 1</Title>
  </ProgramInformation>
  <Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
    ...
  </Period>
  <Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
    ...
  </Period>
  <Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
    ...
  </Period>
  ...
</MPD>

مثال على ملف MPD تم تركيبه

يمكنك عرض هذا الإشعار كردّك على طلب بيان البث الأولي.

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
  <ProgramInformation moreInformationURL="http://.../info">
    <Title>Example Stream</Title>
  </ProgramInformation>
  <Period duration="PT0H0M15.000S" id="content-period-1">
    ...
  </Period>
  <Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
    ...
  </Period>
  <Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
    ...
  </Period>
  <Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
    ...
  </Period>
  <Period duration="PT0H0M15.000S" id="content-period-2">
    ...
  </Period>
  <Period duration="PT0H0M15.000S" id="content-period-3">
    ...
  </Period>
  ...
</MPD>

مراجع إضافية