מבוא
במסמך הזה מוסבר על מחזור החיים של שידור חי ב-YouTube שנוצר ומנוהל באמצעות YouTube Live Streaming API ו-YouTube Content ID API.
משאבים וסוגי משאבים
כמו שמוסבר במדריך תחילת העבודה, משאב הוא ישות נתונים פרטנית עם מזהה ייחודי. כדי ליצור אירועים בשידור חי ב-YouTube ולנהל אותם, תצטרכו להשתמש בכמה סוגים שונים של מקורות מידע שמוגדרים כחלק מ-YouTube Data API או מ-YouTube Content ID API. המשאבים שמפורטים בכותרת YouTube Live Streaming API מוגדרים טכנית בממשקי ה-API האחרים האלה, אבל הם מפורטים בנפרד כי הם משמשים רק לשידורים חיים.
מקורות מידע בנושא YouTube Live Streaming API
מקורות מידע בנושא YouTube Data API
מקורות מידע על YouTube Content ID API
יצירה וניהול של שידור חי
בשלבים הבאים מוסבר איך ליצור אירוע בשידור חי ב-YouTube ואיך לנהל אותו. השלבים מחולקים לשלבים הבאים:
שלב 1: הגדרת השידור
שלב 1.1: יצירת השידור
מתקשרים לשיטה liveBroadcasts.insert
כדי להוסיף את השידור ללוח הזמנים של אירועים בשידור חי ב-YouTube. במשאב liveBroadcast
שמוסיפים צריך להגדיר ערכים למאפיינים שמפורטים בהמשך.
חשוב לפעול בהתאם להנחיות הבאות כשמגדירים את השידור:
אם רוצים להגדיר שלב בדיקה לשידור, שבו אפשר לצפות בשידור הווידאו בלי שצופים אחרים יוכלו לצפות בו, צריך להגדיר את המאפיין
contentDetails.monitorStream.enableMonitorStream
לערךtrue
ואת המאפייןcontentDetails.enableAutoStart
לערךfalse
. אלה ערכי ברירת המחדל של שני המאפיינים.אם רוצים ליצור הפניה מהשידור המוקלט, צריך להגדיר את המאפיין
contentDetails.recordFromStart
של השידור לערךtrue
. אם רוצים שהסרטון המוקלט יהיה זמין להפעלה מיד אחרי סיום השידור, צריך להגדיר את המאפייןcontentDetails.enableDvr
לערךtrue
. (לשני הנכסים האלה יש ערך ברירת מחדל שלtrue
).אתם יכולים לעדכן כל אחד מהמאפיינים של
contentDetails
כל עוד הסטטוס של השידור הואcreated
אוready
.אפשר לעדכן את שעת ההתחלה המתוזמנת ואת שעת הסיום המתוזמנת של השידור כל עוד הסטטוס שלו הוא
created
,ready
אוtesting
.אפשר לעדכן בכל שלב את השם, התיאור וסטטוס הפרטיות של השידור, וגם שדות אחרים של מטא-נתונים שכלולים במשאב
video
של השידור.
הערה: אם אתם רוצים שהסרטון יהיה זמין רק למשתמשים ספציפיים ב-YouTube, צריך להגדיר את ערך המאפייןstatus.privacyStatus
ל-unlisted
או ל-private
, בהתאם לצרכים שלכם.
עיבוד התגובה מה-API
כשקוראים ל-method liveBroadcasts.insert
, התשובה של ה-API מכילה את המשאב liveBroadcast
שיצרתם. הקוד צריך לחלץ ולאחסן את id
מהמשאב הזה. תצטרכו את הערך הזה כדי לזהות את השידור בבקשות API עתידיות. (אפשר גם לזהות את משאב video
שמתאים למשאב liveBroadcast
באמצעות אותו מזהה).
שלב 1.2: יצירת הזרם
משאב liveStream
מאפשר לכם להעביר את הסרטון ל-YouTube, והוא מתאר את התוכן שאתם מעבירים. כל שידור צריך להיות משויך לשידור חי אחד בלבד.
קוראים לשיטה liveStreams.insert
כדי ליצור את זרם הווידאו של האירוע. כשיוצרים את הסטרימינג, צריך להגדיר ערכים למאפיינים שמפורטים בהמשך:
חוץ משם השידור, אי אפשר לעדכן את הערכים האלה אחרי שהשידור נוצר. אם אתם צריכים לשנות אותם, אתם צריכים ליצור סטרימינג אחר על ידי חזרה על השלב הזה. התהליך הזה מוסבר בפירוט רב יותר בשלב 3.5 בהמשך המאמר.
יש לכם גם אפשרות להגדיר ערכים למאפיינים הבאים:
-
snippet.description
– אפשר לעדכן את תיאור השידור אחרי שיוצרים אותו, כמו את שם השידור. הכותרת והתיאור לא גלויים למשתמשי YouTube.
contentDetails.isReusable
- מציין אם אפשר להשתמש בסטרימינג שוב, כלומר אם אפשר לשייך אותו לכמה שידורים. הערך של המאפיין הזה קובע למעשה אם יש קשר מסוג 'רבים לאחד' או 'אחד לאחד' בין מקורותliveBroadcast
ו-liveStream
בערוץ:- אם משתמשים בערך ברירת המחדל של המאפיין, שהוא
true
, אפשר להשתמש באותו מקורliveStream
לכל השידורים של הערוץ. כלומר, לא צריך לחזור על השלב הזה (1.2) לכל שידור. במקום זאת, אפשר פשוט להשתמש שוב במזהה מקור הנתונים לשידורים הבאים. - אם מגדירים את ערך המאפיין ל-
false
, צריך ליצור שידור חדש לכל שידור.
- אם משתמשים בערך ברירת המחדל של המאפיין, שהוא
אחרי ששולחים את בקשת ה-API ליצירת מקור הנתונים, תגובת ה-API מכילה את משאב liveStream
שיצרתם. הקוד צריך לחלץ את id
מהמשאב הזה ולאחסן אותו. תצטרכו את הערך הזה כדי לזהות את הסטרים בבקשות API עתידיות.
שלב 1.3: קישור השידור לסטרימינג
אחרי שיצרתם את המשאבים liveBroadcast
ו-liveStream
, אתם צריכים לקשר ביניהם באמצעות השיטה liveBroadcasts.bind
. הפעולה הזו מקשרת את חלקי הווידאו שתשדרו ל-YouTube לשידור האירוע של הסרטון הזה.
כשקוראים ל-method liveBroadcasts.bind
, מגדירים את הפרמטר id
למזהה השידור שהתקבל בשלב 1.1 ואת הפרמטר streamId
למזהה הסטרימינג שהתקבל בשלב 1.2.
שלב 2: שליחת תביעה על התוכן
אם רוצים להציג מודעות במהלך השידור, צריך לשלוח תביעת זכויות יוצרים על סרטון השידור לפני שהאירוע מתחיל. השלבים הבאים מסבירים את התהליך הזה. שימו לב: כל הקריאות ל-API שמוזכרות בשלב הזה מוגדרות ב-YouTube Content ID API.
שלב 2.1: יצירת נכס
משאב asset
מייצג פריט של קניין רוחני. במקרה הזה, הנכס הוא השידור שלכם. מתקשרים אל השיטה assets.insert
כדי ליצור את הנכס.
תגובת ה-API תכיל את המשאב asset
שיצרתם. הקוד צריך לחלץ ולאחסן את id
מהמשאב הזה, כי תצטרכו את הערך הזה כדי לזהות את הנכס בבקשות עתידיות ל-API.
שלב 2.2: הגדרת הבעלות על הנכס
נתוני הבעלות של נכס מזהים את הבעלים של הנכס ואת האזורים שבהם הם הבעלים של הנכס. הנתונים האלה משמשים את YouTube כדי לקבוע איפה בעל התוכן יכול להגדיר את המדיניות לגבי סרטון שהוגשה לגביו תלונה על הפרת זכויות יוצרים.
לדוגמה, אם יש לכם זכות לשדר אירוע בארצות הברית, ולגורם שידור אחר יש את אותן זכויות בקנדה, כל אחד מכם יכול להגדיר מדיניות שונה לסרטון השידור ולסרטונים שהועלו על ידי משתמשים שתואמים לסרטון השידור. מדיניות ההתאמה שלכם תחול על סרטונים תואמים שהועלו על ידי משתמשים בארצות הברית, ומדיניות ההתאמה של הבעלים השני תחול על סרטונים תואמים בקנדה.
כדי להגדיר את האזורים שבהם אתם הבעלים של הנכס, צריך להפעיל את השיטה ownership.update
.
בבקשה הזו, מגדירים את הפרמטר assetId
לערך id
ששמרתם בשלב 2.1.
שלב 2.3: הגדרת מדיניות ההתאמה של הנכס
מדיניות ההתאמה של נכס מסבירה מה מערכת YouTube צריכה לעשות כשמשתמש מעלה סרטון שתואם לקובץ עזר שמשויך לנכס. במקרה כזה, מדיניות ההתאמה תציין איך מערכת YouTube צריכה לטפל בסרטון שהועלה וזהה לשידור החי שלכם.
הערה: כדאי להגדיר מדיניות התאמה אם אתם מתכננים ליצור קובץ עזר מהשידור שלכם ולהשתמש בו כדי לזהות סרטונים שהועלו על ידי משתמשים ושיש בהם התאמה לשידור שלכם. אם לא, אפשר לדלג על השלב הזה.
כדי להגדיר את מדיניות ההתאמה, קודם צריך לזהות את המדיניות שרוצים להחיל. אפשר לאחזר רשימה של מדיניות קיימת באמצעות קריאה לשיטה policies.list
, או להגדיר מדיניות חדשה באמצעות קריאה לשיטה policies.insert
. בכל מקרה, צריך לתעד את id
של המדיניות שרוצים להחיל.
אחרי שמזהים את המדיניות, מפעילים את השיטה assetMatchPolicy.update
. בבקשה הזו, מגדירים את הפרמטר assetId
לערך id
ששמרתם בשלב 2.1.
שלב 2.4: הצהרה על זכויות יוצרים בסרטון
בשלב הזה, יוצרים הצהרה על זכויות יוצרים שמקשרת בין הסרטון שיוצג בשידור חי לבין הנכס שיצרתם בשלב 2.1. התלונה מגדירה מדיניות שחלה רק על סרטון השידור שלכם. (סרטונים שהועלו על ידי משתמשים ושתואמים לסרטון השידור שלכם מכוסים על ידי מדיניות ההתאמה שהוגדרה בשלב הקודם).
כדי ליצור תביעה, קוראים ל-method claims.insert
. במשאב claim
שמוסיפים, צריך להגדיר ערכים למאפיינים הבאים:
-
assetId
– הערך הזה התקבל בשלב 2.1. -
videoId
– זהו מזהה השידור שהשגתם בשלב 1.1. -
policy
– זהו משאבpolicy
. כדי להחיל מדיניות קיימת, מגדירים את המאפייןid
של המשאב למזהה של המדיניות הקיימת. בשלב הקודם מוסבר איך מאחזרים את המזהה של מדיניות קיימת. -
contentType
– מגדירים את הערך הזה כ-audiovisual
.
עיבוד התגובה מה-API
כשמוסיפים את התלונה, תגובת ה-API תכיל את משאב claim
שיצרתם. הקוד צריך לחלץ את id
מהמשאב הזה ולאחסן אותו. תשתמשו בערך הזה בהמשך כדי ליצור הפניה מהסרטון המעובד.
שלב 2.5: עדכון הגדרות המודעות לשידור
כדי להציג מודעות לפני שהצופים מתחילים לצפות בשידור או במהלך הפסקות בשידור, צריך להגדיר את אפשרויות הפרסום בסרטון.
- אם מפעילים מודעות לפני תחילת התוכן בשידור, כל הצופים יראו מודעה כשהם יתחילו לצפות בשידור, גם אם הם יתחילו לצפות באמצע השידור.
- אם תפעילו מודעות באמצע הסרטון בשידור, תוכלו להוסיף נקודות לציון הפסקות למודעות במהלך השידור.
כדי להפעיל מודעות, קוראים לשיטה videoAdvertisingOptions.update
. בבקשה, מגדירים את הפרמטר videoId
לערך השידור id
שהתקבל בשלב 1.1. כדי לזהות את פורמטי המודעות (preroll
, midroll
או postroll
) שרוצים להפעיל, משתמשים במאפיין adFormats[]
של רכיב videoAdvertisingOption
.
שלב 3: בדיקה
בשלב הזה, מטמיעים נגן שמציג את שידור המוניטור של השידור, כדי לבדוק את חוויית הצפייה. השידור לצורך בקרה הוא שידור פרטי שמאפשר לכם לראות תצוגה מקדימה של סרטון השידור כפי שהוא יוצג לצופים ב-YouTube.
שימו לב שאפשר לבדוק את שידור הסרטון רק אם הפעלתם את שידור הבקרה שלו. כברירת מחדל, הזרמות לניטור של שידורים מופעלות. כדי להשבית את שידור המעקב של שידור, צריך להגדיר את המאפיין contentDetails.monitorStream.enableMonitorStream לערך false
כשיוצרים או מעדכנים את השידור.
שלב 3.1: הטמעת נגן של שידור ממצלמה
מאחזרים את השידור באמצעות השיטה liveBroadcasts.list
ומחלצים את הערך של המאפיין contentDetails.streamDetails.monitorStreamEmbedHtml
. הערך הזה
כולל את קוד ה-HTML שנדרש להטמעת נגן YouTube שמציג את
השידור של המסך.
שלב 3.2: מתחילים את הסרטון
מתחילים לשדר את הווידאו בשידור הווידאו.
שלב 3.3: מוודאים שזרם הווידאו פעיל
מפעילים את ה-method liveStreams.list
כדי לאחזר את המשאב liveStream
שמשויך לשידור. מוודאים שהערך של המאפיין status.streamStatus
הוא active
, מה שמציין שהשרתים של YouTube מקבלים נתונים מהמקודד שלכם בצורה תקינה.
שלב 3.4: מעבירים את סטטוס השידור לבדיקה
קוראים לשיטה liveBroadcasts.transition
כדי לעדכן את הסטטוס של השידור. מגדירים את ערך הפרמטר id
למזהה השידור שהתקבל בשלב 1.1, ואת ערך הפרמטר broadcastStatus
ל-testing
.
אחרי שמפעילים את השיטה liveBroadcasts.transition
, יכול להיות שיעברו כמה שניות, או אפילו עד דקה, עד שהמעבר יסתיים. במהלך הזמן הזה, צריך לשלוח בקשות ל-API כדי לבדוק את סטטוס השידור. עד שהמעבר יסתיים, הסטטוס של השידור יהיה testStarting
. הסטטוס יהיה testing
כשהמעבר יסתיים.
שלב 3.5: השלמת הבדיקה
אם הבדיקה עברה בצורה חלקה, אפשר לעבור אל שלב 4. עם זאת, במקרים מסוימים, יכול להיות שתצטרכו לבצע בדיקות נוספות. לדוגמה, אם הבדיקה מגלה ששידור הווידאו לא מוגדר בצורה נכונה, צריך לתקן את זה לפני שממשיכים בשידור.
אם שידור הווידאו לא מוגדר בצורה נכונה, צריך לבטל את הקישור של השידור הקיים (ולמחוק אותו) וליצור שידור חדש. לדוגמה, יכול להיות שהסטרים לא מוגדר בצורה נכונה אם מצוין בו פורמט וידאו שגוי.
-
כדי לבטל את הקישור של שידור הווידאו, צריך לבצע קריאה ל-method
liveBroadcasts.bind
משלב 1.3. בבקשת ה-API, מגדירים את הפרמטרid
לערךid
שהתקבל בשלב 1.1. אל תכללו את הפרמטרstreamId
בבקשה. -
כדי למחוק את זרם הווידאו, צריך לבצע קריאה ל-method
liveStreams.delete
. בבקשה, מגדירים את הפרמטרid
לערךid
שהתקבל בשלב 1.2. -
חוזרים על שלב 1.2 כדי ליצור משאב
liveStream
חדש שמוגדר בצורה נכונה. לאחר מכן חוזרים על שלב 1.3 כדי לקשר את הסטרימינג החדש לשידור, ועל שלבים 3.1 עד 3.3 כדי לבדוק את הסטרימינג החדש.
שלב 3.6: הפעלת המאפיינים autoStart
ו-autoStop
אחרי שתסיימו את שלב הבדיקה בהצלחה, תוכלו להגדיר את המאפיינים של השידור contentDetails.enableAutoStart
וcontentDetails.enableAutoStop
לערך true
לפני שהשידור עצמו יתחיל. אי אפשר להגדיר את המאפיינים האלה לערך true
לפני שלב הבדיקה, כי הבדיקה תגרום בפועל להתחלת השידור.
שלב 4: שידור
בשלב הזה, הקהל יכול לצפות בסרטון השידור.
שלב 4.1: מתחילים את הסרטון
מתחילים לשדר את הווידאו בשידור הווידאו.
שלב 4.2: מוודאים שזרם הווידאו פעיל
מפעילים את ה-method liveStreams.list
כדי לאחזר את המשאב liveStream
שמשויך לשידור. מוודאים שהערך של המאפיין status.streamStatus
הוא active
, מה שמציין שהשרתים של YouTube מקבלים נתונים מהמקודד שלכם בצורה תקינה.
שלב 4.3: מעבירים את הסטטוס של השידור לשידור חי
חשוב: אחרי השלב הזה, הקהל יוכל לראות את הסרטון.
קוראים לשיטה liveBroadcasts.transition
כדי לעדכן את הסטטוס של השידור. מגדירים את ערך הפרמטר id
למזהה השידור שהתקבל בשלב 1.1, ואת ערך הפרמטר broadcastStatus
ל-live
.
אם מגדירים את המאפיין contentDetails.enableAutoStart
של משאב liveBroadcast
לערך true
, לא צריך להפעיל את השיטה liveBroadcasts.transition
.
אחרי שמבצעים את הקריאה הזו ל-API – או אם הגדרתם את המאפיין contentDetails.enableAutoStart
לערך true
, אחרי שמתחילים את השידור – בדרך כלל צריך להמתין 5 עד 10 שניות עד שהמעבר הזה יסתיים. יכול להיות שיחלפו עד דקה עד שהמעבר יסתיים. במהלך הזמן הזה, כדאי לשלוח בקשות ל-API כדי לבדוק את סטטוס השידור. עד שהמעבר יסתיים, הסטטוס של השידור יהיה liveStarting
. הסטטוס יהיה live
כשהמעבר יסתיים והצופים יוכלו לצפות בשידור שלכם מהנקודה הזו בשידור המוניטור.
חשוב לשים לב להשפעות הבאות של הפקודה הזו:
- אם הפעלתם את שידור הבקרה לשידור שלכם – ראו שלב 3.1 – תוכלו לראות את שידור הבקרה בנגן מוטמע.
- אם הגדרתם ערך למאפיין
contentDetails.streamDetails.broadcastStreamDelayMs
של השידור, יהיה עיכוב של פרק הזמן הזה בשידור, שגלוי לצופים אחרים.
שלב 4.4: הוספת הפסקות לפרסום לשידור
מפעילים את method liveBroadcasts.cuepoint
כדי להוסיף cuepoint. יכול להיות שנקודת ה-cue תפעיל הפסקה למודעה. במשאב cuepoint
שמופיע בגוף הבקשה, מגדירים את המאפיין durationSecs
למשך ההפסקה הרצוי (בשניות) שרוצים להציג. (ערך ברירת המחדל הוא 30
).
בשלב הזה, מערכת YouTube מנסה להפעיל מודעה בנגן הווידאו לכל הצופים שצפו בשידור כשהוכנס סימן המודעה. הצגת המודעה תלויה במגוון גורמים, כמו זמינות המודעה והיסטוריית הצפייה של הצופה במודעות. צופים שיוצגו להם הפסקות לפרסום יחזרו לשידור שלכם כשההפסקות יסתיימו, ואילו צופים שלא יוצגו להם מודעות ימשיכו לצפות בשידור במהלך ההפסקות.
במדריך תחילת העבודה יש מידע נוסף על חוויית הצפייה במהלך הפסקת פרסומות בשידור חי.
שלב 5: סיום השידור
שלב 5.1: הפסקת השידור
בזה מסתיימת הבדיקה של מערכת השידור החי ב-YouTube.
שלב 5.2: מעבירים את סטטוס השידור ל'הושלם'
כשרוצים להפסיק את השידור, קוראים לשיטה liveBroadcasts.transition
של ה-API כדי לעדכן את סטטוס השידור. מגדירים את הערך של הפרמטר id
למזהה השידור שהתקבל בשלב 1.1, ואת הערך של הפרמטר broadcastStatus
ל-complete
.
אם הגדרתם את המאפיינים contentDetails.recordFromStart
וcontentDetails.enableDvr
של השידור לערך true
, הקהל יוכל לצפות מיד בהפעלה של האירוע החי כשהוא יסתיים.
שלב 6: יצירת קובץ עזר
אחרי שהצילום בזמן אמת מסתיים, אפשר ליצור קובץ עזר מהסרטון שצולם. הפעולה הזו מורה ל-YouTube לחפש סרטונים שהועלו על ידי משתמשים ותואמים לשידור, ולטפל בהם בהתאם למדיניות ההתאמה שהגדרתם בשלב 2.3.
חשוב: כדי ליצור את ההפניה, צריך להגדיר את המאפיין contentDetails.recordFromStart
של השידור לערך true
.
שלב 6.1: שולחים שאילתה ל-Data API כדי לקבל את הסטטוס של הסרטון
כדי ליצור הפניה מסרטון, צריך להמתין עד ש-YouTube יסיים לעבד את השידור או את הסרטון שהועלה. כדי לקבוע אם הסרטון סיים את העיבוד, צריך להפעיל את השיטה videos.list
של YouTube Data API, להגדיר את הפרמטר part
לערך status
ואת הפרמטר id
למזהה השידור ששמרתם בשלב 1.1.
תשובת ה-API לבקשת הבדיקה שלכם תכיל משאב video
.
אם הערך של מאפיין status.uploadStatus במשאב הזה הוא processed
, ממשיכים לשלב 6.2.
שלב 6.2: יצירת קובץ עזר מהסרטון שעבר עיבוד
כדי ליצור את ההפניה, קוראים לשיטה references.insert
של Content ID API ומגדירים את הפרמטר claimId
למזהה התביעה ששמרתם בשלב 2.4.
שליחת תוכן לשידור חי במערכת Content ID
חלק מהשותפים של YouTube יכולים ליצור עותק להשוואה לפני שהשידור שלהם עובר למצב testing
, אבל התכונה הזו לא זמינה לכל השותפים. במהלך השידור, YouTube יוצר ומעדכן באופן שוטף את ההפניה משידור האירוע בשידור חי. בנוסף, מערכת YouTube מחפשת סרטונים תואמים שהועלו על ידי משתמשים בזמן שהשידור עדיין מתבצע. שימו לב שאם יוצרים עותק לצורך השוואה לפני תחילת השידור, ההקלטה של השידור מופעלת באופן אוטומטי, ואי אפשר להשבית אותה אחרי יצירת העותק.
כדי להפעיל את השידור שלכם למסירת תוצאות של Content ID בשידור חי, נסו לבצע את הפעולות שמתוארות בשלב 6.2 אחרי שליחת הצהרה על זכויות יוצרים לגבי הסרטון בשלב 2.4.
אם החשבון של השותף לא אושר ליצירת הפניה לשידור חי לפני שהשידור מתרחש, ה-API יחזיר שגיאה fingerprintingNotAllowed
. במקרה כזה, צריך לחכות עד שהשידור יסתיים, כמו שמתואר בשלבים 6.1 ו-6.2 למעלה, לפני שיוצרים את קובץ העזר.