Pod Serving API دسترسی به غلافهای تبلیغات ویدیویی با نرخ بیت تطبیقی را فراهم میکند که بهگونهای آماده شدهاند که میتوان آنها را مستقیماً در فهرست پخش رسانهای HLS یا MPEG-DASH قرار داد.
این راهنما بر روی اجرای یک سرور دستکاری مانیفست پایه Pod Serving برای جریان های VOD متمرکز شده است.
درخواستهای مانیفست جریان را دریافت کنید
دستکاری کننده مانیفست شما باید یک نقطه پایانی API برای گوش دادن به درخواست های مانیفست از برنامه مشتری پخش کننده ویدیو ارائه دهد. حداقل، این نقطه پایانی باید شناسه جریانی را از برنامه پخش کننده مشتری جمع آوری کند. این شناسه جریان برای شناسایی جلسه پخش جریانی به Ad Manager در درخواستهای غلاف آگهی شما استفاده میشود.
همچنین باید اطلاعات دیگری را برای شناسایی جریان محتوای مناسب جمع آوری کنید، به عنوان مثال، شناسه محتوا.
نقطه پایانی درخواست مانیفست مثال
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
پارامترهای مسیر | |||||
---|---|---|---|---|---|
stream_id | شناسه جریان Ad Manager از برنامه پخش کننده ویدیوی مشتری. | ||||
content_id | شناسه فرضی مربوط به محتوای ویدیوی سیستم شما. | ||||
format | یک پارامتر فرضی مربوط به قالب جریان. یکی از هر دو:
|
جریان محتوا را بازیابی کنید
از شناسه محتوای جمعآوریشده از درخواست مانیفست برای انتخاب جریان محتوا برای همپیوندی با تبلیغات استفاده کنید.
درخواست مانیفست آگهی
برای درخواست تبلیغات از Ad Manager، سرور شما باید یک درخواست POST به نقطه پایانی آگهیها ارسال کند و نمایههای رمزگذاری درخواستی، برچسب آگهی و پارامترهای هدف را ارسال کند. این درخواست همچنین شامل شناسه جریانی است که در مرحله 1 جمع آوری کرده اید.
در عوض، فهرستی از اشیاء پادهای تبلیغاتی حاوی فایلهای مانیفست برای پادهای تبلیغاتی درخواست شده توسط برچسب آگهی ناشر و اطلاعاتی درباره زمان و مکان درج آنها در محتوای شما دریافت میکنید.
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
پارامترهای مسیر | |
---|---|
network_code | کد شبکه Ad Manager 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 | FPS ممیز شناور ویدیو. |
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 Manager تبلیغاتی را که قبلاً در پاسخ 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 | فقط برای پخش جریانی HLS. نقشه ای از رمزگذاری شناسه های نمایه به 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
}
]
}
غلاف های تبلیغاتی را به محتوا بچسبانید
فرآیند اتصال پادهای تبلیغاتی به جریان محتوای شما بسته به اجرای شما، قالب جریان و ویژگی هایی که از مشخصات قالب برای پیاده سازی انتخاب می کنید متفاوت است. گردش کار زیر پیشنهاداتی برای نحوه مدیریت این فرآیند است. جزئیات دقیق اجرای شما ممکن است بر اساس نیازهای کسب و کار و جریان محتوای شما متفاوت باشد.
جریان های 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 آسانتر کند.
یک فایل توصیف ارائه رسانه MPEG DASH (MPD) که به درستی آماده شده است باید از چندین دوره تشکیل شده باشد که هر یک حاوی چندین نمایش باشد. هر نمایش باید با یکی از نمایه های رمزگذاری شما مطابقت داشته باشد. هر آگهی بازگردانده شده از Ad Manager نیز یک فایل MPD است که حاوی دنباله ای از دوره ها با نمایش های منطبق است.
برای اتصال این فایلهای MPD به یکدیگر، با توجه به زمانهای شروع هر آگهی شروع کنید. برای پیش از پخش، دورههای غلاف آگهی قبل از پخش را قبل از هر دوره محتوا درج کنید. برای پستها، دورههای غلاف آگهی postroll را بعد از تمام دورههای محتوا درج کنید. در طول دورههای 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 pod ad
[{
"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>
منابع اضافی
- پخش سرویس Pod با IMA SDK:
- پخش سرویس Pod با DAI API