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

توفّر واجهة برمجة التطبيقات Pod Presentation 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 الذي تم جمعه من طلب البيان لاختيار بث المحتوى لربطه بالإعلانات.

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

لطلب الإعلانات من "مدير الإعلانات"، على الخادم تقديم طلب 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 التي تتضمن إعلانات أثناء التشغيل باستخدام معادلة الوقت النسبة المئوية وهذا أمر غير شائع.

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 فقط. خريطة لمعرّفات الملفات الشخصية للترميز إلى معرّفات الموارد المنتظمة (URI) لبيان HLS
mpd_uri لأحداث بث DASH فقط. عنوان URI لـ 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_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>

مصادر إضافية