במדריך הזה מוסבר איך להוסיף הפסקות למודעה באמצעות השיטה Ad pod Timing Metadata (נתוני מטא של תזמון רצף מודעות, ATM) כדי לאחזר את התזמון והמשך המדויקים של ההפסקות למודעה, כולל מודעות לפני סרטון (pre-roll).
כדי להוסיף מודעות לפני הסרטון ולנהל את החזרה לתוכן אחרי הפסקות לפרסומות באמצע הסרטון, מומלץ להפעיל את ממשקי ה-API הבאים:
- Ad pod Timing Metadata (ATM) API: שאילתת תוצאות של החלטות לגבי רצפי מודעות, כולל משכי הזמן של המודעות ושל שקופיות החסות.
- נקודת קצה של פלח מודעה: בקשה של פלחים של מודעות או של לוחות זמנים עם אפשרות להפסיק את בלוק המודעות הנוכחי.
אופציונלית, לאירועים של שידורים חיים עם מספר גבוה של צופים בו-זמנית, מומלץ להתקשר אל Early Ad Break Notification (EABN) API כדי לתזמן החלטות לגבי הצגת מודעות לפני תחילת ההפסקה למודעה.
דרישות מוקדמות
כדי להתחיל, צריך להגדיר אירוע של שידור חי מסוג הפניה אוטומטית להצגת מודעות בשידור חי (DAI). בוחרים אחת מהשיטות הבאות:
- ממשק המשתמש של Ad Manager: הגדרת שידור חי ל-DAI.
- Ad Manager API: משתמשים בספריית לקוח (אפשרויות זמינות) כדי לקרוא לשיטה
LiveStreamEventService.createLiveStreamEvents. מגדירים את הפרמטרLiveStreamEvent.dynamicAdInsertionTypeלערךPOD_SERVING_REDIRECT.
אחזור מקור נתוני התוכן
כשמשתמש בוחר אירוע בשידור חי, אפליקציית הלקוח שולחת בקשת סטרימינג אל Google Ad Manager. בתגובה של הסטרימינג, האפליקציה מחלצת את מזהה הסשן של Google DAI ואת המטא-נתונים כדי לכלול אותם בבקשת מניפסט הסטרימינג.
בדוגמה הבאה מועבר מזהה סשן של Google DAI למניפולטור של מניפסט:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
במהלך העיבוד של בקשת ההפעלה של תוכן הווידאו, צריך לאחסן את מזהה הסשן של Google DAI ואת CUSTOM_ASSET_KEY מהבקשה כדי להתכונן להוספת מודעות.
אחזור מטא-נתונים של תזמון רצפי מודעות
כדי לאחזר את התזמון של רצף המודעות, יש לבצע את השלבים הבאים:
- יצירת טוקן HMAC.
- שולחים קריאה ל-ATM API עם אסימון HMAC.
בקשת מטא-נתונים של תזמון למודעות לפני סרטון
כדי לבדוק את הגדרות הפרסומות שלפני הסרטון באירוע בשידור חי, אפשר להשתמש באפשרויות הבאות:
כדי לאחזר את תוצאות ההחלטה לגבי מודעה לפני סרטון (pre-roll), שולחים בקשה ל-ATM API.
בדוגמה הבאה מוצגת בקשה למודעות לפני סרטון (pre-roll) דרך ATM:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"
בקשה למטא-נתוני תזמון של מודעות באמצע סרטון
כדי לאחזר מטא-נתונים של רצפי מודעות להצגת מודעות באמצע הסרטון, פועלים לפי השלבים הבאים:
- ניתוח מניפסט השידור החי כדי למצוא את סמני המודעות שמכילים את התזמון ואת משך הזמן של כל הפסקה למודעה באמצע הסרטון.
- מפעילים את נקודת הקצה (endpoint) של ATM API כדי לבקש את משך הזמן המדויק של רצף המודעות והמסך השחור. ה-API מחזיר אובייקט JSON עם תוצאות ההחלטה של בלוק המודעות.
בדוגמה הבאה מוצגת בקשה ל-ATM עבור מודעות באמצע הסרטון (mid-roll):
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"
אם הפעולה בוצעה בהצלחה, הפלט ייראה כמו אובייקט ה-JSON הבא:
{
"status": "final",
"ads": [
{
"duration_ms": 5046,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
}
}
}
],
"slate": {
"duration_ms": 0,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
}
}
}
}
הוספת מודעות למניפסט של התוכן
בקטעים הבאים מוסבר איך לשנות את מניפסט השידור החי ולהוסיף את פלחי המודעות.
זיהוי פלחים של הפסקות למודעות והוספת אי-רציפות
במהלך העיבוד של כל מניפסט של וריאנט, צריך לזהות את התגים EXT-X-CUE-IN ו-EXT-X-CUE-OUT בפיד, שמציינים את ההתחלה והסיום של הפסקת הפרסום.
מחליפים את התגים EXT-X-CUE-IN ו-EXT-X-CUE-OUT ברכיבי EXT-X-DISCONTINUITY כדי שנגן הווידאו של הלקוח יוכל לעבור בין תוכן למודעות.
במניפסט לדוגמה הבא, התגים EXT-X-CUE-IN ו-EXT-X-CUE-OUT מוחלפים:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
בדוגמה הבאה מוצג מניפסט שהוחלף:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
פלחים של מודעות DAI ב-Google לא מוצפנים. אם התוכן מוצפן, צריך להסיר את ההצפנה על ידי הוספת רכיב EXT-X-KEY:METHOD=NONE לפני פלח המודעה הראשון של כל הפסקה לפרסומות. בסוף הפסקה למודעה, מוסיפים שוב הצפנה על ידי הוספת תג EXT-X-KEY מתאים.
כדאי לעקוב אחרי שעת ההתחלה, משך הזמן והאינדקס של ההפסקה למודעה הקרובה.
יצירת כתובות URL של פלחים לפרסום
מחליפים את פילוחי התוכן בין התגים EXT-X-DISCONTINUITY בכתובות URL
לכל פלח מודעות. כדי לקבוע כמה מקטעי מודעות להוסיף, משתמשים בערך ads.segment_durations.values שמופיע בתגובת ה-JSON מ-ATM API.
כדי לסיים מוקדם את רצף המודעות כשמזהים תג EXT-X-CUE-IN, מוסיפים את הפרמטר d= לכתובת ה-URL של פלח המודעה הסופי. הפרמטר הזה מקצר את הפלח כדי שלא ישפיע על ציר הזמן של נגן הווידאו של הלקוח.
בדוגמה הבאה מורכבת כתובת URL של פלח מודעה לפני הסרטון למניפסט. הערה: פלחי המודעות מתבססים על אינדקס שמתחיל בספרה אפס:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
בדוגמה הבאה מוצג איך להרכיב כתובת URL של פלח מודעה באמצע הסרטון במניפסט:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
בדוגמה הבאה מוסיפים פלחי מודעות למניפסט:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4
בניית פלחים של לוח
כדי למלא את הפער בין המודעה לתוכן, מוסיפים קטעי לוח.
משתמשים במערך slates.segment_durations.values מתגובת ה-JSON של ATM API כדי לקבוע את משך הזמן של כל פלח של לוח. חוזרים על רצף משכי הזמן של הפלחים לפי הצורך כדי למלא את כל ההפסקה למודעה.
בדוגמה הבאה מוצג פלח של לוח:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
הערך slate/0 בדוגמה מייצג את מספר האיטרציה של הלוח. כדי לקבוע אם להתחיל ב-0 ולהגדיל את המספר הזה בכל לולאה של הלוח, או להשאיר אותו ב-0 בכל האיטרציות, צריך לעיין בתאימות של נגן הווידאו של הלקוח וביכולת שלו לשמור במטמון.
ניהול החזרה לתוכן
אחרי שמוסיפים את כל רצפי המודעות, בוחרים באחת מהשיטות הבאות כדי לחזור לתוכן:
| שיטה | תיאור | ההשפעה על נגן הווידאו של הלקוח |
|---|---|---|
| מילוי בפלחים של לוח | מכניס את קטעי הלוח ומריץ את הלוח בלופ. ממלא את משך הזמן ומוסיף אלמנטים של EXT-X-DISCONTINUITY בין כל חזרה של הלוח. |
ללא אפקטים. המעבר מנגן הווידאו לתוכן מתבצע ללא שינוי בציר הזמן. |
| התאמה מחדש באמצעות פלח יחיד של לוח | הוספה של מקטע יחיד של לוח. הפרמטר d= משמש למילוי משך הזמן עד להתחלת התוכן. |
ללא אפקטים. המעבר מנגן הווידאו לתוכן מתבצע ללא שינוי בציר הזמן. |
| החזרה מיידית | הוספת פלחים של תוכן. | ציר הזמן של נגן הווידאו משתנה. נגן הווידאו של הלקוח צריך לטפל בציר הזמן שמשתנה. |
אופציונלי: תזמון של הפסקה למודעה
כדי לשפר את שיעור המילוי, צריך לשלוח הודעה על הפסקת פרסום מוקדמת (EABN) עם משך רצף המודעות, פרמטרים מותאמים אישית של טירגוט ונתוני אותות SCTE-35. פרטים נוספים זמינים במאמר בנושא שליחת התראות על הפסקות פרסומות מוקדמות.