توفّر Pod Serving API إمكانية الوصول إلى مجموعات إعلانات الفيديو ذات معدّل نقل البيانات التكيُّفي والمُعدَّة بطريقة تتيح دمجها مباشرةً في قائمة تشغيل وسائط HLS أو MPEG-DASH موجّهة للمستخدمين.
يركز هذا الدليل على تنفيذ معالجة أساسية لملف بيان عرض مجموعات المحتوى الخادم لأحداث البث المباشر عند الطلب.
تلقّي طلبات بيان أحداث البث
يجب أن يوفّر أداة التحكّم في البيان نقطة نهاية لواجهة برمجة التطبيقات لتلقّي طلبات البيان من تطبيق عميل مشغّل الفيديو. على الأقل، يجب أن تجمع نقطة النهاية هذه معرّف البث من تطبيق عميل مشغّل الفيديو. ويُستخدَم معرّف البث هذا لتحديد جلسة البث في "مدير إعلانات Google" في طلبات مجموعات الإعلانات المتسلسلة.
عليك أيضًا جمع بعض المعلومات الأخرى لتحديد مجرى المحتوى المناسب، مثل رقم تعريف المحتوى.
مثال على نقطة نهاية طلب البيان
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
مَعلمات المسار | |||||
---|---|---|---|---|---|
stream_id |
معرّف البث في "مدير الإعلانات" من تطبيق مشغّل الفيديو على الجهاز | ||||
content_id |
رقم تعريف افتراضي يتوافق مع فيديو المحتوى في نظامك | ||||
format |
مَعلمة افتراضية تتوافق مع تنسيق البث أحد الخيارَين التاليَين:
|
استرداد مجموعة بث المحتوى
استخدِم رقم تعريف المحتوى الذي تم جمعه من طلب البيان لاختيار محتوى البث الذي تريد دمجه مع الإعلانات.
طلب ملفات بيان مجموعات الإعلانات
لطلب الإعلانات من "مدير إعلانات Google"، يجب أن يُرسل خادمك طلب POST إلى نقطة نهاية ad pods، مع تمرير الملفات الشخصية المطلوبة لتشفير البيانات وعلامة الإعلان. يتضمّن هذا الطلب أيضًا معرّف البث الذي جمعته في الخطوة 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
مثال: |
bitrate |
Required |
عدد صحيح يمثّل الحد الأقصى لمعدّل نقل بيانات الفيديو لهذا الملف الشخصي بالبايت في الثانية |
frames_per_second |
Required |
عدد اللقطات في الثانية بالتنسيق العشري للفيديو |
resolution |
Required |
قيمة بترميز JSON تحتوي على "عرض" الفيديو و"ارتفاعه" بالبكسل
مثال: |
إعدادات الصوت | ||
codec |
Required |
سلسلة ترميز RFC6381
مثال: |
bitrate |
Required |
عدد صحيح يمثّل الحد الأقصى لمعدل نقل البيانات الصوتي لهذا الملف الشخصي بالبايت في
الثانية.
مثال: |
channels |
Required |
عدد صحيح يمثّل عدد قنوات الصوت، بما في ذلك قنوات التردد المنخفض |
sample_rate |
Required |
عدد صحيح يمثّل معدّل أخذ العينات الصوتية بالهرتز
مثال: |
إعدادات الترجمة | ||
format |
Required |
تنسيق الملف المستخدَم للترجمة والشرح المضمّنين في الفيديو والقيمتان المسموح بإدراجهما هما
webvtt أو ttml .
|
language |
Optional |
لغة الترجمة والشرح بتنسيق سلسلة لغة RFC5646 في حال توفّر هذه القيمة،
لا تُستخدَم إلا لعرض DASH.
مثال: |
خيارات إدراج الإعلانات الديناميكية | ||
dash_profile |
Optional |
الملف الشخصي لتنسيق MPEG-DASH الذي سيتم تطبيقه على ملفات بيان مجموعات الإعلانات يُستخدَم هذا الإعداد
لملفات بيان DASH فقط. القيم المسموح بها هي live أو
on-demand . تكون القيمة التلقائية on-demand .
تتوافق القيمة
تتوافق القيمة |
ad_pod_timeout |
Optional |
الحدّ الأقصى للوقت الذي يمكن قضاؤه في اختيار الإعلانات وإنشاء مجموعات إعلانية، بالثواني المتغيرة
بعد انقضاء هذه الفترة، يعرض "مدير إعلانات Google" أيّ
إعلانات تم اختيارها من قبل في استجابة ad_pods ويتوقف عن
المعالجة.
|
sam_id |
Optional |
يحدِّد مفتاح تصحيح أخطاء بديلاً يمكن استخدامه للبحث عن الجلسات في مراقب activity. |
الردّ
مَعلمات الاستجابة | |
---|---|
valid_for |
المدة التي تكون فيها قوائم تشغيل مجموعات الإعلانات هذه صالحة بتنسيق dhms
(أي الأيام أو الساعات أو الدقائق أو الثواني).
|
valid_until |
التاريخ والوقت اللذان تظلّ قوائم تشغيل مجموعات الإعلانات هذه صالحة لهما بصفتها سلسلة وقت وتاريخ ISO8601
بتنسيق yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm .
|
ad_pods |
قائمة بمجموعات الإعلانات المتسلسلة التي تم اختيارها لهذا البث |
مجموعة إعلانات متسلسلة | |
manifest_uris |
لأحداث البث المباشر وفق بروتوكول HTTP (HLS) فقط. تعيين أرقام تعريف الملفات الشخصية لتشفير الفيديو إلى معرّفات الموارد المنتظمة لملفات بيان HLS |
mpd_uri |
لأحداث البث باستخدام بروتوكول DASH فقط. معرّف الموارد المنتظم (URI) لملف وصف "البث الديناميكي التكيُّفي عبر HTTP" (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، سيكون بث المحتوى عبارة عن قائمة تشغيل متعدّدة الإصدارات تتضمّن روابط إلى بيانات عرض بث منفصلة، واحدة لكل ملف شخصي لتشفير المحتوى. يجب إدراج مجموعات الإعلانات في كلّ من ملفات بيان الأسعار هذه. وتتمثّل إحدى الطرق للقيام بذلك في تجهيز جميع نماذج بيانات الأسعار ونقلها إلى شبكة توصيل محتوى (CDN) لأجل استضافتها. قائمة التشغيل النهائية التي تتضمّن الأسعار المتغيرة هي مجموعة من الروابط التي تؤدي إلى ملفات البيان التي تستضيفها شبكة توصيل المحتوى (CDN).
تكرار الملفات التجارية لتشفير الفيديوهات
لكل ملفّ تعريف ترميز، اجمع جميع ملفات بيان مجموعات الإعلانات المرتبطة من
استجابة "مدير إعلانات Google"، بالإضافة إلى أوقات البدء المرتبطة بها. بالنسبة إلى مجموعات الإعلانات المتسلسلة التي تظهر قبل التشغيل، اضبط وقت البدء على 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) وhosting at 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
{...}
إنشاء قائمة تشغيل تتضمّن عدّة صيغ
اجمع عناوين شبكة توصيل المحتوى لكل بيان خيار مكتمل، بالإضافة إلى تفاصيل ملف التعريف المطابق لتشفير الفيديو، وجمِّع النتائج في بيان متعدّد الخيارات جديد. يتم عرض بيان المستخدم هذا كردّ على طلب البيان الذي تلقّيته في الخطوة 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 المُعدّ بشكل صحيح من عدّة فترات، تحتوي كلّ منها على عدّة تمثيلات. يجب أن يتطابق كل تمثيل مع أحد ملفات ترميزك. كل مجموعة إعلانية مُدرَجة من "مدير إعلانات Google" هي أيضًا ملف 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>
مراجع إضافية
- تشغيل عرض مجموعة إعلانات متسلسلة باستخدام حزمة تطوير البرامج لإعلانات الوسائط التفاعلية:
- تشغيل ملفات البودكاست باستخدام واجهة برمجة التطبيقات DAI