Pod Serving API מספק גישה למודעות וידאו ברצף (pod) עם קצב נתונים אדפטיבי, שמוכן כך שניתן יהיה לחבר אותו ישירות לפלייליסט מדיה מסוג 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 |
פרמטר היפותטי שתואם לפורמט הסטרימינג. אחד מהשניים:
|
אחזור מקור נתוני התוכן
משתמשים ב-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 |
רשימה של נקודות סימון בתוך תוכן הסרטון שבהן יוצגו ההפסקות למודעות באמצע הסרטון. נקודות העצירה נמדדות בשניות עם נקודה צפה (floating-point).
חובה רק בתשובות VMAP שמכילות מודעות Mid-roll באמצעות הזחות זמן מבוססות-מיקום. זהו מצב לא נפוץ. |
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 |
חובה אם פרופיל הקידוד מכיל אודיו. מותר להשתמש בה רק אם הסוג הוא media. פרטים נוספים בהמשך |
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 |
התאריך והשעה שבהם הפלייליסטים של רצפי המודעות האלה תקפים, כמחרוזת זמן תאריך (datetime) לפי פורמט ISO8601 בפורמט yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm .
|
ad_pods |
רשימה של רצפי מודעות שנבחרו לשידור הזה. |
רצף מודעות | |
manifest_uris |
רק לשידורים ב-HLS. מפה של מזהי פרופילי קידוד למזהי URI של מניפסט HLS. |
mpd_uri |
רק לשידורי DASH. ה-URI של ה-MPD של DASH. |
type |
סוג רצף המודעות. סוגי רצפי המודעות הם: pre , mid או post .
|
start |
רק למודעות באמצע הסרטון (mid-roll). המיקום בסטרימינג שבו צריך להוסיף את רצף המודעות, בשניות עם נקודה צפה. |
duration |
משך הזמן של רצף המודעות הזה בשניות עם נקודה צפה. |
midroll_index |
רק למודעות באמצע הסרטון (mid-roll). המדד של רצף המודעות הנוכחי באמצע הסרטון. ההוספה לאינדקס מתחילה ב-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 (Content Delivery Network) לצורך אירוח. הפלייליסט הסופי עם המשתנים הרבים הוא קבוצה של קישורים למניפסטים האלה שמתארחים ב-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
{...}
דוגמה למניפסט של מודעות Pod
זהו התוכן של המניפסט 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 שעבר הכנה בצורה נכונה צריך לכלול כמה תקופות, שכל אחת מהן מכילה כמה ייצוגים. כל ייצוג צריך להתאים לאחד מהפרופילים שלכם לקידוד. כל רצף מודעות שמוחזר מ-Ad Manager הוא גם קובץ MPD שמכיל רצף של תקופות עם ייצוגים תואמים.
כדי לחבר את קובצי ה-MPD האלה, קודם צריך לרשום את זמני ההתחלה של כל רצף המודעות. במודעות לפני סרטון, צריך להוסיף את תקופות הרצף של מודעות לפני סרטון לפני כל תקופת תוכן. במודעות בסוף הסרטון, מוסיפים את תקופות הרצף של מודעות בסוף הסרטון אחרי כל תקופות התוכן. בודקים את כל התקופות ב-MPD של התוכן, תוך מעקב אחרי משך הזמן שחלף בכל תקופות התוכן שעברו עיבוד. כשמגיעים לגבול בין תקופות שתואמות לזמן ההתחלה של רצף מודעות, מוסיפים את התקופות מקובץ ה-MPD התואם של רצף המודעות באמצע הסרטון (mid-roll) בגבול הזה.
קובץ ה-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:
- הפעלת מודעות ב-Podcast באמצעות DAI API