הוספת מודעות באמצעות מטא-נתונים של תזמון בלוקים של מודעות

במדריך הזה מוסבר איך להוסיף הפסקות למודעה באמצעות השיטה Ad pod Timing Metadata (נתוני מטא של תזמון רצף מודעות, ATM) כדי לאחזר את התזמון והמשך המדויקים של ההפסקות למודעה, כולל מודעות לפני סרטון (pre-roll).

כדי להוסיף מודעות לפני הסרטון ולנהל את החזרה לתוכן אחרי הפסקות לפרסומות באמצע הסרטון, מומלץ להפעיל את ממשקי ה-API הבאים:

  • Ad pod Timing Metadata (ATM) API: שאילתת תוצאות של החלטות לגבי רצפי מודעות, כולל משכי הזמן של המודעות ושל שקופיות החסות.
  • נקודת קצה של פלח מודעה: בקשה של פלחים של מודעות או של לוחות זמנים עם אפשרות להפסיק את בלוק המודעות הנוכחי.

אופציונלית, לאירועים של שידורים חיים עם מספר גבוה של צופים בו-זמנית, מומלץ להתקשר אל Early Ad Break Notification (EABN) API כדי לתזמן החלטות לגבי הצגת מודעות לפני תחילת ההפסקה למודעה.

דרישות מוקדמות

כדי להתחיל, צריך להגדיר אירוע של שידור חי מסוג הפניה אוטומטית להצגת מודעות בשידור חי (DAI). בוחרים אחת מהשיטות הבאות:

אחזור מקור נתוני התוכן

כשמשתמש בוחר אירוע בשידור חי, אפליקציית הלקוח שולחת בקשת סטרימינג אל 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 מהבקשה כדי להתכונן להוספת מודעות.

אחזור מטא-נתונים של תזמון רצפי מודעות

כדי לאחזר את התזמון של רצף המודעות, יש לבצע את השלבים הבאים:

  1. יצירת טוקן HMAC.
  2. שולחים קריאה ל-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"

בקשה למטא-נתוני תזמון של מודעות באמצע סרטון

כדי לאחזר מטא-נתונים של רצפי מודעות להצגת מודעות באמצע הסרטון, פועלים לפי השלבים הבאים:

  1. ניתוח מניפסט השידור החי כדי למצוא את סמני המודעות שמכילים את התזמון ואת משך הזמן של כל הפסקה למודעה באמצע הסרטון.
  2. מפעילים את נקודת הקצה (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:17.450
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXTINF:2.450,
contentorigin.com/6.ts
#EXT-X-CUE-IN
#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/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.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
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.000,
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.000,
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
#EXTINF:2.450,
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/3.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

בניית פלחים של לוח

כדי למלא את הפער בין המודעה לתוכן, מוסיפים קטעי לוח. משתמשים במערך slates.segment_durations.values מתגובת ה-JSON של ATM API כדי לקבוע את משך הזמן של כל פלח של לוח. חוזרים על רצף משכי הזמן של הפלחים לפי הצורך כדי למלא את כל ההפסקה למודעה.

כדי לחזור לתוכן לפני שרצף המודעות מסתיים, למשל כשמזהים תג EXT-X-CUE-IN, מוסיפים את הפרמטר d= לכתובת ה-URL של קטע השקופית הסופי. הפרמטר הזה מקצר את הפלח כדי שלא ישפיע על ציר הזמן של נגן הווידאו של הלקוח. הערך של הפרמטרים d= צריך להיות מספר שלם שמייצג את משך הזמן באלפיות השנייה שבו צריך לקצר את הפלח.

בדוגמה הבאה מוצג פלח של לוח:

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= באלפיות השנייה כדי להתאים לנקודת ההתחלה של התוכן.

חזרה מיידית: כדי להוסיף קטע של לוח החלקה יחיד לשינוי מיקום, משתמשים בפרמטר d= ואחריו בתוכן.

נגן הווידאו חוזר לתוכן בלי ציר זמן ששונה.

בדוגמה הבאה נוצר מעבר על ידי מילוי שארית משך ההפסקה למודעה בקטעי לוח.

#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-DISCONTINUITY
#EXTINF:5.000,
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.000,
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.000,
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
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
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/1.ts?stream_id=SESSION_ID&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

בשיטה הזו, הכלי לשינוי קובץ המניפסט מריץ בלולאה את לוח התוצאות לפי הצורך ומוסיף את פרמטר כתובת ה-URL d= רק לפלח האחרון של לוח התוצאות. התהליך הזה מתבצע בדיוק בזמן ההתחלה המתוכנן של התוכן הבסיסי.

בדוגמה הבאה אפשר לראות איך משתמשים בקטע אחד של לוח חלק עם הפרמטר d= כדי לשמור על דיוק ציר הזמן של הנגן כשלא ממלאים את כל ההפסקה שנותרה בלוחות חלקים שמופעלים בלולאה.

#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-DISCONTINUITY
#EXTINF:5.000,
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.000,
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.000,
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:2.450,
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&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

אופציונלי: תזמון של הפסקה למודעה

כדי לשפר את שיעור המילוי, צריך לשלוח הודעה על הפסקת פרסום מוקדמת (EABN) עם משך רצף המודעות, פרמטרים מותאמים אישית של טירגוט ונתוני אותות SCTE-35. פרטים נוספים זמינים במאמר בנושא שליחת התראות על הפסקות פרסומות מוקדמות.