ה-API להצגת פודקאסטים מספק גישה לרצפים של מודעות וידאו עם קצב מותאם של העברת נתונים כך שיהיה אפשר לתפור אותם ישירות לתוך פרוטוקול HLS שפונה למשתמש, פלייליסט של מדיה MPEG-DASH.
המדריך הזה מתמקד בהטמעה של מניפולציה בסיסית במניפסט של הצגת Pod לשרת זרמי VOD.
קבלת בקשות למניפסט של השידור
הכלי לטיפול במניפסט צריך לספק נקודת קצה ל-API כדי להאזין למניפסט בקשות מאפליקציית הלקוח של נגן הווידאו. לכל הפחות, נקודת הקצה איסוף מזהה מקור נתונים מאפליקציית נגן הלקוח. מזהה מקור הנתונים הזה משמש לזהות את הסשן של הסטרימינג ל-Ad Manager בבקשות של רצף המודעות.
כמו כן, עליכם לאסוף מידע נוסף כדי לזהות זרם תוכן, לדוגמה, Content ID.
דוגמה לנקודת קצה (endpoint) של בקשה למניפסט
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
פרמטרים של נתיב | |||||
---|---|---|---|---|---|
stream_id |
מזהה מקור הנתונים ב-Ad Manager מאפליקציית נגן הווידאו של הלקוח. | ||||
content_id |
מזהה היפותטי שתואם לסרטון התוכן במערכת שלכם. | ||||
format |
פרמטר היפותטי שתואם לפורמט של השידור. אחת מהאפשרויות האלה:
|
אחזור של מקור התוכן
כדי לבחור את התוכן, משתמשים במערכת Content ID שנאסף מבקשת המניפסט כדי לתפור יחד עם מודעות.
בקשת מניפסטים של רצף מודעות
כדי לבקש מודעות מ-Ad Manager, השרת צריך לשלוח בקשת POST למודעה. נקודת הקצה של Pod, העברה של פרופילי הקידוד, תג המודעה והטירגוט המבוקשים . הבקשה הזו כוללת גם את מזהה מקור הנתונים שאספתם בשלב 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 שמכילות מודעות באמצע סרטון (mid-roll) באמצעות הפרשי זמן positional. זה לא תופעה נפוצה. |
content_duration_seconds |
Optional |
משך התוכן בשניות.
נדרש רק עבור תגובות VMAP שמכילות מודעות באמצע סרטון (mid-roll) באמצעות אחוזי זמן. זה לא תופעה נפוצה. |
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 שמכיל את הערך 'width' ו-'height' של הסרטון בפיקסלים.
לדוגמה: |
הגדרות אודיו | ||
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 |
לרצף מודעות באמצע סרטון בלבד. המיקום בזרם שבו רצף המודעות הזה צריך להיכנס בשניות בנקודה צפה (floating-point). |
duration |
משך הזמן של רצף המודעות הזה בשניות עם נקודה צפה (floating-point). |
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, רב-משתנים פלייליסט של קישורים למניפסטים נפרדים של זרם נתונים, אחד לכל פרופיל קידוד. המודעה שלכם צריך להוסיף Pod לכל אחד ממניפסטי הווריאנטים האלה. אחת הדרכים לעשות זאת היא להכין את כל המניפסטים של הווריאנטים ולהעביר אותם אל תוכן רשת משלוחים (CDN) עבור אירוח. הפלייליסט מרובה-המשתנים האחרון הוא קבוצת קישורים אל הפריטים האלה שמתארחים ב-CDN מניפסטים.
איטרציה מעל פרופילי קידוד
לכל פרופיל קידוד, צריך לאסוף את כל המניפסטים המשויכים של רצף המודעות מ-
התשובה של Ad Manager ומועדי ההתחלה המשויכים אליהן. למודעה לפני סרטון (pre-roll)
רצפי מודעות, צריך להגדיר את שעת ההתחלה ל-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 האלה יחד, חשוב לרשום את זמני ההתחלה של בכל רצף מודעות. עבור מודעה לפני סרטון, יש להוסיף את נקודות רצף המודעות לפני הסרטון לפני תוכן כלשהו של התקופה. במודעות בסוף סרטון, יש להוסיף את הנקודות של רצף המודעות בסוף הסרטון (post-roll) אחרי כל התוכן לתקופות שונות. לבצע איטרציה לאורך התקופות ב-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>
מקורות מידע נוספים
- הפעלת Pod באמצעות IMA SDK:
- פודקאסט להצגת מודעות באמצעות DAI API