توفّر واجهة برمجة التطبيقات 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 |
مَعلمة افتراضية تتوافق مع تنسيق ساحة المشاركات. أحد الخيارات التالية:
|
استرداد مجموعة بث المحتوى
استخدِم 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
مثال: |
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.
مثال: |
خيارات DAI | ||
dash_profile |
Optional |
ملف تعريف MPEG-DASH المطلوب تطبيقه على بيانات مجموعة الإعلانات المتسلسلة. يتم استخدام هذا الإعداد
لبيانات DASH فقط. القيمتان المسموح بإدراجهما هما live أو on-demand . القيمة التلقائية هي on-demand .
تتطابق القيمة
تتطابق القيمة |
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>
مصادر إضافية
- تشغيل عرض الإعلانات المتسلسلة باستخدام حزمة تطوير البرامج لإعلانات الوسائط التفاعلية:
- إمكانية تشغيل Pod عبر واجهة برمجة التطبيقات DAI