העברת תוכן לשידור חי ב-YouTube באמצעות RTMPS

במסמך הזה מוסבר איך להשתמש ב-RTMPS כדי לשדר נתונים בשידור חי ב-YouTube ממקודד. ‫RTMPS הוא סטרימינג וידאו רגיל של RTMP ‏ (RealTime Messaging Protocol) שמועבר דרך חיבור SSL. המסמך הזה מיועד לספקי מקודדים שרוצים להוסיף תמיכה ב-RTMPS למקודדים שכבר תומכים ב-RTMP.

פרוטוקול RTMPS הוא בחירה טובה לרוב התוכן של משתמשים רגילים, במיוחד אם נדרש זמן אחזור נמוך. במאמר השוואה בין פרוטוקולים להטמעת נתונים מופיעה סקירה כללית של הפרוטוקולים השונים להטמעת נתונים שנתמכים ב-YouTube בשידור חי.

דרישות

יש כמה דרישות מוקדמות לשליחת RTMPS ל-YouTube בשידור חי:

  • כל חלק בכתובת ה-URL של החיבור (<protocol>://<server>/<path>) צריך להיות נכון:
    • הפרוטוקול חייב להיות rtmps.
    • השרת חייב להיות נקודת קצה תקפה להעלאה ב-RTMPS ב-YouTube.
    • הנתיב חייב להיות שם אפליקציית RTMP תקין של YouTube בשידור חי.
  • החיבור צריך להתבצע ליציאה 443 בשרת ההטמעה.
  • הזרמת המולטימדיה צריכה להתבצע באמצעות RTMPS, כלומר באמצעות RTMP דרך חיבור SSL.

קבלת כתובת ה-URL של החיבור

אם המקודד שלכם כבר משתמש ב-YouTube Live API, התהליך לקבלת כתובת URL להטמעת נתונים ב-RTMPS דומה לזה של RTMP. שולחים בקשת LiveStreams insert (POST) כדי ליצור זרם חדש של נתונים. בתגובה, השדה cdn.ingestionInfo.rtmpsIngestionAddress מציין את כתובת ה-URL של RTMPS. אם אתם תומכים בהעברה כפולה, כתובת הגיבוי היא cdn.ingestionInfo.rtmpsBackupIngestionAddress.

יצירת החיבור

משתמשים בספריית השקעים המועדפת כדי ליצור חיבור SSL/TLS ליציאה 443 בשרת שכתובת ה-URL של ההעברה מציינת. מכיוון ש-TLS פועל רק בשכבת התעבורה, שם המארח של השרת לא נדרש כדי ליזום את החיבור, אבל הוא נדרש לאימות עם השרתים שלנו. לכן חשוב להוסיף את התוסף SNI (Server Name Indication) ללחיצת היד של SSL, ולהגדיר את שם השרת לשם המארח של השרת שאליו מתחברים.

אחרי שנוצר חיבור SSL, משתמשים בו כחיבור לספריית הלקוח של RTMP. לחיבור SSL מאותחל יש אותו API כמו לחיבור TCP רגיל, ולכן ספריית RTMP אמורה לפעול עם שניהם באופן זהה.

פתרון בעיות

שגיאות SSL

אם ניסיתם ליצור חיבור SSL אבל קיבלתם אישור לא חוקי, כנראה שאתם מתחברים לשרת של YouTube שמצפה ל-RTMP. חשוב לוודא שבשם השרת שבו אתם משתמשים מופיע rtmps – שימו לב ל-s.

אם כתובת ה-URL נראית נכונה אבל עדיין מופיעה שגיאת SSL, יכול להיות שאתם מתחברים ליציאה לא נכונה. מוודאים שאתם מתחברים ליציאה 443.

אם כתובת ה-URL והיציאה נכונות, יכול להיות שספריית ה-SSL לא מטפלת באישור בצורה נכונה. מחפשים הודעות אבחון ברמה נמוכה לגבי כשלים ב-SSL, ובודקים שוב שאתם משתמשים ב-SNI בתהליך הלחיצה.

תם פרק הזמן שהוקצב להתחברות

אם אתם מצליחים להתחבר לשרת, אבל הספרייה של RTMP מגיעה לזמן קצוב לתפוגה בלי לקבל תגובה הגיונית, יכול להיות שהגדרתם חיבור RTMP בטקסט גלוי לשרת YouTube שמצפה ל-RTMPS. חשוב לוודא שאתם יוצרים חיבור SSL ולא חיבור TCP רגיל.