ממשק ה-API לסטרימינג בשידור חי של YouTube מאפשר ליצור, לעדכן ולנהל אירועים בשידור חי ב-YouTube. באמצעות ה-API ניתן לתזמן אירועים (שידורים) ולשייך אותם לזרמי וידאו שמייצגים את תוכן השידור עצמו.
ממשק ה-API של הסטרימינג בשידור חי מורכב למעשה מרכיבים של ממשק ה-API של נתונים של YouTube ושל ממשק ה-API של Content ID ב-YouTube. ממשק Data API מאפשר למשתמשי YouTube לנהל את חשבונות YouTube שלהם, ו-YouTube Content ID API מאפשר אינטראקציה עם מערכת ניהול הזכויות של YouTube. עם זאת, כל המשאבים שמרכיבים את ממשק ה-API של סטרימינג בשידור חי משמשים אך ורק ליצירה ולניהול של אירועים בשידור חי.
מסמך זה מיועד למפתחים שרוצים לכתוב אפליקציות שיקלו על שידור חי ב-YouTube. המאמר מסביר את המושגים הבסיסיים של YouTube ושל ממשק ה-API עצמו. יש כאן גם סקירה כללית של הפונקציות השונות שנתמכות ב-API.
מושגים בסיסיים
- שידורים
- שידור מייצג אירוע שאפשר לצפות בו ב-YouTube בזמן שהוא מתרחש. ניתן גם להקליט ולשמור את השידורים כסרטוני YouTube, כדי שמשתמשים יוכלו לצפות בהם לאחר מכן.
- זרמים
- סטרימינג הוא מזהה של תוכן וידאו האודיו שמועבר אל YouTube. כל שידור משויך לזרם וידאו אחד.
- נקודות סימון
- נקודת סימון מייצגת הפסקה למודעה שניתן להוסיף לשידור חי.
תרחישים לדוגמה ל-API
הרשימה הבאה מציעה מספר דרכים לשימוש ב-API באפליקציה שלכם:
-
תזמון שידורים וקביעת הגדרות שידור. האפליקציה שלך יכולה לאפשר למשתמשים להגדיר מראש הגדרות שידור, ולאחר מכן לבחור את ההגדרות שיחולו על שידור מסוים.
-
שיוך שידורי וידאו ושידורים חיים.
-
תוכלו לאפשר לשדרנים להגדיר פרטים לגבי שידור מסוים ולגבי הסרטון שלו (באמצעות YouTube Data API) בו-זמנית.
-
פשט את המעברים בין מצבי השידור (
testing
,live
וכו') ואפשר למשתמשים להוסיף נקודות עצירה (Ccuepoints).
לפני שמתחילים
-
נדרש חשבון Google כדי לגשת ל-Google API Console, לבקש מפתח API ולרשום את האפליקציה.
-
יש לרשום את הבקשה ב-Google כדי שהיא תוכל לשלוח בקשות API.
-
לאחר רישום הבקשה, צריך לבחור ב-YouTube Data API כאחד מהשירותים שבהם האפליקציה משתמשת:
- צריך לעבור אל API Console ולבחור את הפרויקט שרשמת כרגע.
- נכנסים לדף של ממשקי ה-API שמופעלים. ברשימת ממשקי ה-API, מוודאים שהסטטוס של YouTube Data API v3 הוא ON. אם אתם שותפי תוכן של YouTube, עליכם לוודא שממשק ה-API של YouTube Content ID API.
-
להכיר את המושגים הבסיסיים של פורמט הנתונים JSON (JavaScript Object Notation). JSON הוא פורמט נתונים נפוץ ובלתי תלוי בשפה, שמספק ייצוג טקסט פשוט של מבני נתונים שרירותיים. למידע נוסף: json.org.
הרשאת בקשות API
כפי שצוין קודם לכן, 'ממשק API לסטרימינג בשידור חי' משתמש בפונקציונליות שהיא חלק מבחינה טכנית מה-YouTube Data API או מה-YouTube Content ID API. תוכלו להשתמש בממשק ה-API של Content ID כדי לספק ל-YouTube מטא נתונים, פרטי בעלות ופרטי מדיניות עבור הנכסים שלכם. (שידור וידאו בשידור חי הוא דוגמה לנכס). ה-API מאפשר לכם גם להצהיר על זכויות יוצרים בסרטונים ולהגדיר מדיניות בנושא מודעות עבור הסרטונים.
בקטע הזה מוסברות דרישות ההרשאה לבקשות שנשלחות אל Content ID API, השונות מהדרישות לאישור בקשות אחרות של Live Streaming API.
- מתבצעת התקשרות אל Data API
- בקשת ה-API חייבת לקבל אישור מחשבון Google שערוץ ה-YouTube המשודר שלו נמצא בבעלותו.
- מתבצעת התקשרות אל Content ID API
- בקשת ה-API חייבת לקבל אישור מחשבון Google המקושר לבעלי התוכן שערוץ ה-YouTube המשודר נמצא בבעלותו.
מקורות מידע וסוגי משאבים
משאב הוא ישות נתונים נפרדת שיש לה מזהה ייחודי. בטבלה הבאה מתוארים הסוגים השונים של המשאבים שתשתמשו בהם באמצעות Live Streaming API. מבחינה טכנית, כל המשאבים האלה מוגדרים בפועל כחלק מה-YouTube Data API או מה-YouTube Content ID API. עם זאת, המשאבים liveBroadcast
, liveStream
ו-cuepoint
משמשים רק ליצירה ולניהול של אירועים בשידור חי.
מקורות מידע | |
---|---|
liveBroadcast |
מכיל מידע על אירוע שמשודר ב-YouTube. משאב liveBroadcast הוא תוסף למשאב של סרטונים ב-YouTube ומגדיר מטא-נתונים של סרטונים שיתאימו לשידור חי, אבל לא לסרטונים אחרים ב-YouTube.לכן, משאב liveBroadcast מתאים למשאב אחד בלבד של סרטון ב-YouTube.
למעשה, למשאב liveBroadcast ולמשאב video יש אותו מזהה. אחרי יצירת השידור באמצעות ממשק ה-API לסטרימינג בשידור חי, תהיה לך אפשרות להשתמש ב-YouTube Data API כדי לספק מטא-נתונים נוספים על הסרטון. |
liveStream |
מכיל מידע על זרם הווידאו שאתם משדרים ל-YouTube. הזרם מספק את התוכן שישודר למשתמשי YouTube. אחרי שיוצרים משאב liveStream , אפשר לקשר אותו למשאב liveBroadcast אחד בדיוק. (בדומה, את המשאב liveBroadcast אפשר לקשר רק למשאב liveStream אחד. |
cuepoint |
הוספת נקודת סימון בשידור הווידאו של השידור, שעשויה להפעיל הפסקה למודעה. אפשר להשתמש בשיטה liveBroadcasts.cuepoint
כדי להוסיף נקודת סימון במהלך שידור.
|
video |
מייצג סרטון YouTube אחד. כפי שצוין למעלה, משאב liveBroadcast הוא תוסף של משאב video . אפשר להשתמש ב-YouTube Data API כדי לעדכן מטא-נתונים לגבי הסרטון, למשל: מיקום ההקלטה או האזורים שבהם ניתן יהיה לצפות בשידור. |
videoAdvertisingOptions |
מגדיר את הגדרות הפרסום של וידאו (או שידור). אתם משתמשים בYouTube Content ID API כדי להגדיר אפשרויות פרסום. |
asset |
מייצג קטע של קניין רוחני, כמו סרט או פרק מתוך תוכנית. במקרה זה, וידאו השידור הוא הנכס. אפשר להשתמש בYouTube Content ID API כדי ליצור ולנהל asset משאבים. |
claim |
קישור סרטון לנכס שהסרטון תואם לו. אפשר ליצור הצהרה על זכויות יוצרים באמצעות YouTube Content ID API כדי לזהות את עצמך כבעלים של הסרטון המשודר. |
policy |
המדיניות הזו מגדירה כללים שמציינים את הנסיבות שבהן אתם רוצים שהתוכן שלכם יהיה זמין לצפייה ב-YouTube או הצגת התוכן ב-YouTube. עליך להחיל מדיניות על סרטון השידור שלך וכן לציין מדיניות ש-YouTube יחיל על סרטונים שהועלו על ידי משתמשים ושמתאימים לסרטון השידור שלך. |
פעולות נתמכות
בטבלה הבאה מפורטות השיטות השונות שנתמכות ב-API:
פעולות | |
---|---|
list |
שולפת (GET ) רשימה של אפס משאבים או יותר. |
insert |
יוצר (POST ) משאב חדש. |
update |
משנה (PUT ) משאב קיים כדי לשקף נתונים בבקשה שלך. |
bind |
מקשר משאב liveBroadcast עם משאב liveStream או מסיר קישור כזה. |
transition |
משנה את הסטטוס של משאב liveBroadcast ומפעיל תהליכים המשויכים לסטטוס החדש. לדוגמה, כשמעבירים את הסטטוס של שידור מסוים ל-testing , המערכת של YouTube מתחילה לשדר את הסרטון לשידור המוניטור של אותו שידור. |
delete |
הסרה (DELETE ) של משאב ספציפי. |
בטבלה הבאה מפורטות הפעולות הנתמכות בסוגים שונים של משאבים. פעולות הוספה, עדכון או מחיקה של משאבים מחייבות תמיד הרשאת משתמש. במקרים מסוימים, שיטות list
תומכות גם בבקשות מורשות וגם בבקשות לא מורשות, שבהן בקשות לא מורשות מאחזרות רק נתונים ציבוריים, ואילו בקשות מורשות יכולות לאחזר גם מידע שמוגבל למשתמש המאומת הנוכחי.
פעולות נתמכות | |||||||
---|---|---|---|---|---|---|---|
list | insert | update | bind | transition | cuepoint | delete | |
liveBroadcast | |||||||
liveStream |
משאבים חלקיים
ה-API מאפשר ולמעשה דורש אחזור של משאבים חלקיים כדי שאפליקציות יימנעו מהעברה, ניתוח ואחסון של נתונים מיותרים. הגישה הזו גם מבטיחה שממשק ה-API ישתמש במשאבי רשת, מעבד (CPU) וזיכרון בצורה יעילה יותר.
הפרמטר part
הוא פרמטר נדרש לכל בקשת API שמאחזרת או מחזירה משאב YouTube Data API. הפרמטר מזהה מאפיין משאב אחד או יותר ברמה העליונה (שאינו מקונן) שצריכים להיכלל בתגובת ה-API. לדוגמה, משאב liveStream
כולל את החלקים הבאים:
snippet
cdn
status
כל החלקים האלה הם אובייקטים שמכילים מאפיינים מקוננים, ורואים את האובייקטים האלה כקבוצות של שדות מטא-נתונים ששרת ה-API עשוי לאחזר (או לא יכול). לכן, כדי להשתמש בפרמטר part
צריך לבחור את רכיבי המשאבים שבהם האפליקציה משתמשת בפועל. דרישה זו משרתת שתי מטרות חשובות:
- התכונה הזו מפחיתה את זמן האחזור בכך שהיא מונעת משרת ה-API לבזבז זמן באחזור שדות מטא-נתונים שהאפליקציה שלך לא משתמשת בהם.
- הוא מפחית את השימוש ברוחב הפס על ידי הפחתה (או ביטול) של כמות הנתונים המיותרים שהיישום שלך עשוי לאחזר.
עם הזמן, ככל שהמשאבים מתווספים, כך היתרונות האלה רק גדלים, מאחר שהאפליקציה לא תבקש נכסים חדשים שהיא לא תומכת בהם.
טיפים ושיטות מומלצות
הצהרה על זכויות יוצרים בתוכן
אם ברצונך להציג מודעות במהלך השידור, עליך לתבוע בעלות על סרטון השידור לפני תחילת האירוע. כדי לשלוח תלונה על הפרת זכויות יוצרים בתוכן, עליכם להיות שותפי תוכן של YouTube שמשתתפים בתוכנית Content ID.
תהליך תביעת הבעלות על סרטון משידור חי שונה מהתהליך הרגיל של הצהרה על זכויות יוצרים בסרטון. בעת הצהרה על זכויות יוצרים בסרטון בשידור חי, עליכם ליצור הצהרה על זכויות יוצרים לפני שהסרטון קיים בפועל. ה-API תומך בכך, והמסמך חיי השידור מסביר את הקריאות ל-YouTube Content ID API שמאפשרות ליצור את הטענה שלכם.
תצוגה מקדימה ובדיקה של התוכן
לאחר קבלת זרם הווידאו הנכנס, YouTube יוכל לשדר את הסרטון בשני שידורים יוצאים שונים:
-
המעקב אחרי השידור מאפשר לכם לצפות בתצוגה מקדימה של שידור הווידאו (ולבדוק אותו). זהו שידור פרטי שנגיש רק לכם. אפשר להעביר שידור לשלב
testing
רק אם השידור המוניטור מופעל. בשידור המעקב לא מוצגות הפסקות למודעות. -
השידור החי הוא הסטרימינג שגלוי לקהל שלכם. אפשר להגדיר את סטטוס הפרטיות של השידור ל-
public
, ל-private
או ל-unlisted
. (שידור פרטי גלוי רק למשתמשים שהוזמנו במפורש לצפות בו, בעוד ששידור לא רשום גלוי לכל מי שיש לו קישור לצפות בו).אפשר לבחור לעכב את השידור, כך שלא יופעל בו-זמנית עם זרם המעקב. על ידי השהיית זרם השידור, אתה יכול לקבל שליטה מדויקת יותר על הזמן שבו אתה מכניס נקודות עצירה לשידור.
עם זאת, השהיה של השידור החי עשויה להקשות על מי שצופה בשידור החי ליצור אינטראקציה עם הצופים. בנוסף, השהיית השידור מעלה את הסבירות שצופים יגלו פרטים חשובים לגבי האירוע ממקורות אחרים שאינם השידור שלך. לדוגמה, אם אתם משדרים אירוע ספורט בהשהיה של 60 שניות, הצופים עשויים לקבל מידע על רגעים קריטיים באירוע ממקורות חדשותיים אחרים בזמן אמת לפני שהם יראו אותם בשידור.
YouTube ממליץ להפעיל את זרם המעקב עבור השידור שלך כדי שתוכל לבדוק את התוכן שלך. עליך לבחור אם להשהות את השידור גם בהתבסס על הרצון שלך לשלוט בתזמון של נקודות הרמז, ולא ברצון שלך לקיים אינטראקציה עם הקהל או לספק כיסוי בזמן אמת של אירוע.
הצגת מודעות באמצע הסרטון (mid-roll) במהלך שידור חי
במהלך שידור, אפשר להוסיף נקודת סימון כדי לציין שההפסקה למודעה צריכה להתחיל בשידור בהקדם האפשרי או במועד ספציפי. ההפסקה למודעות מאפשרת ל-YouTube להציג מודעות באמצע הסרטון במהלך השידור.
להפסקות למודעות יש את המאפיינים הבאים:
-
יש לו משך זמן מוגדר מראש, שאותו מגדירים באמצעות המאפיין
durationSecs
של המשאבcuepoint
. כשההפסקה למודעה מסתיימת, הצופים חוזרים לשידור החי. -
כשמתרחשת הפסקה למודעה, מודעה מופעלת בנגן הווידאו רק עבור צופים שצופים בשידור לאחר הכנסת נקודת ה-Cuepoint. מודעה לא מוצגת כשהצופים מרעננים את הדף שבו מופעל השידור, או כשמבקרים מתחילים לצפות בשידור לאחר הכנסת נקודת ה-Cuepoint.
רצף השלבים הבאים משקף את השיטה המומלצת להוספת הפסקה למודעה במהלך השידור:
הגדרת הפרשי זמן
בעת הכנסת נקודת רמז, ניתן לציין שהיא תוכנס מיד או שיש להכניס אותה בנקודה ספציפית בשידור. האפשרויות שעומדות לרשותך משתנות אם השידור של הסרטון מתעכב.
-
אם השידור החי שלך לא מתעכב, אפשר להוסיף את נקודת העצירה מיד או להשתמש בנכס
walltimeMs
כדי שההפסקה למודעות תתחיל בזמן מסוים.-
כדי להתחיל את ההפסקה למודעה מיד, צריך להפעיל את השיטה
liveBroadcasts.cuepoint
. במשאב בגוף הבקשה, מגדירים את הערך של המאפייןinsertionOffsetTimeMs
ל-0
, או לא מציינים ערך לנכס הזה ולא מציינים ערך עבור המאפייןwalltimeMs
.חשוב: לתשומת ליבכם: הצופים לא רואים את תוכן המודעה שמתקבל באופן מיידי. ייתכן עיכוב של כ-30 שניות עד שתוכן המודעה יהיה גלוי למשתמשים. במהלך העיכוב הזה, השידור עדיין יהיה גלוי לצופים שלך, ועליך לצפות בשידור כדי לקבוע מתי תוכן המודעה יוצג בפועל במקום השידור למעקב.
-
כדי להתחיל את ההפסקה למודעה במועד מסוים, צריך לקרוא לשיטה
liveBroadcasts.cuepoint
ולהשתמש במאפייןwalltimeMs
כדי לציין את השעה הרצויה. ערך המאפיין הוא מספר שלם שמייצג חותמת זמן של תקופה של זמן מערכת.
-
כדי להתחיל את ההפסקה למודעה מיד, צריך להפעיל את השיטה
-
אם השידור החי שלך מתעכב, אפשר להוסיף את נקודת הסימון מיד כפי שמתואר למעלה, לציין את שעת השעון כפי שמתואר למעלה או לציין קיזוז זמן כדי לקבוע מתי ההפסקה למודעות תתחיל. קיזוז הזמן מציין נקודה בשידור שבה הצופים אמורים לראות מודעה.
ערך ההיסט נמדד באלפיות שנייה מתחילת השידור של הצג עבור השידור שלך. חשוב לשים לב שאם בשידור יש שלב בדיקה, השידור של המוניטור יתחיל כשהשידור שלך יעבור לסטטוס
testing
. אחרת, השידור של הצג יתחיל כשהשידור שלך יעבור לסטטוסlive
.כשמוסיפים נקודת סימון, צריך להגדיר את המאפיין
insertionOffsetTimeMs
של המשאבcuepoint
בהתאם לקיזוז הרצוי.
חשבו את ערך ההיסט הזמן
כדי לאחזר את ערך ההיסט, צריך לקרוא לפונקציה getCurrentTime
של ממשק ה-API של נגן YouTube עבור הנגן שמפעיל את השידור המוניטור. אפשר להשתמש בערך שאוחזר כדי להוסיף את נקודת הרמז לשידור בזמן אמת.
את הערכים האפשריים לזמן ההיסט ניתן לחשב כטווח הבא:
[(elapsed_time - broadcast_delay + Δ), (elapsed_time - Δ)]
Δ
הוא מאגר של חמש שניות בתחילת הזמן הקצוב לתפוגה האפשרי ובסיום פרק הזמן האפשרי, כשמערכת YouTube לא יכולה להוסיף נקודת ציון באופן מדויק. לדוגמה:
- בשידור יש שלב בדיקה באורך חמש דקות.
- השידור מתעכב 60 שניות אחרי השידור בצג.
- השדרן מוסיף את נקודת הסימון ארבע דקות אחרי המעבר לסטטוס
live
. (שלוש דקות לאחר ששידור השידור הופך לגלוי.)
במקרה הזה, הטווח האפשרי של זמני ההיסט הוא [(485,000), (535,000)]
.
המועדים האלה מצוינים באלפיות שנייה ומחושבים לפי הערכים הבאים:
elapsed_time=540000
– השידור של הצג פעל במשך תשע דקות (540 שניות, 540,000 אלפיות השנייה) כשמתבצעת קריאה ל-methodliveBroadcasts.cuepoint
.broadcast_delay=60000
– שידור השידור בהשהיה של 60 שניות, או 60,000 אלפיות השנייה.Δ=5000
– מאגר הנתונים הזמני של חמש השניות שבהן לא ניתן להכניס את נקודת הסימן בצורה אמינה.
פתרון בעיות וטיפול בשגיאות
ההנחיות הבאות מסבירות איך לפתור בעיות ספציפיות שעלולות להתעורר. מומלץ גם לעיין בתיעוד השגיאות כדי לראות רשימות של שגיאות שכל שיטת API עשויה להחזיר.
-
כששידור עובר מסטטוס אחד לאחר, יכול להיות שהוא יוקצה באופן זמני לסטטוס אחר בזמן שהמערכת של YouTube משלים את הפעולות שקשורות למעבר. לדוגמה, אם תשלחו בקשת
liveBroadcasts.transition
לשינוי הסטטוס של שידור מסוים מready
לtesting
, המערכת של YouTube תגדיר את סטטוס השידור ל-testStarting
ואז תבצע את הפעולות שקשורות לשינוי הסטטוס. לאחר שכל הפעולות האלה יושלמו, YouTube יעדכן את סטטוס השידור לtesting
, ויציין שהמעבר הושלם.אם שידור נתקע בסטטוס
testStarting
אוliveStarting
, עליך להפעיל את השיטהliveBroadcasts.delete
ולמחוק את השידור. לאחר מכן אפשר ליצור שידור חדש, לקשר אותו לשידור החי ולהמשיך בתהליך הבדיקה.כפי שצוין בתיעוד של השיטה
liveBroadcasts.transition
, עליך לוודא שהערך של המאפייןstatus.streamStatus
עבור הזרם המשויך לשידור שלך הואactive
לפני הקריאה לשיטה הזו.