ניהול שידורי מדיה וירטואליים ב-Meet Media API

בהקשר של כנסים ב-WebRTC, זרמי מדיה וירטואליים הם זרמי מדיה שנוצרים על ידי יחידת העברה סלקטיבית (SFU) כדי לצבור ולחלק מדיה ממספר משתתפים. בניגוד לשידורי מדיה ישירים מ-peer-to-peer, שיוצרים רשת מורכבת של חיבורים בכנסים גדולים, שידורי מדיה וירטואליים מפשטים את הטופולוגיה. ה-SFU מקבל שידורי מדיה נפרדים מכל משתתף ומעביר באופן סלקטיבי את השידורים הפעילים או הרלוונטיים למשתתפים אחרים, ומבצע להם מפולפסיקציה לקבוצה קטנה וקבועה יותר של שידורי מדיה וירטואליים יוצאים.

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

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

תופסים

לכל משדר-מקלט בבעלות הלקוח יש RtpReceiver ייעודי ו'טראק מדיה' ייעודי שמקבל את זרמי ה-RTP של האודיו מהשרתים של Meet.

לכל טראק יש מזהה ייחודי והוא מקבל זרם ייחודי משלו של חבילות RTP ממקור המדיה הספציפי הזה. לדוגמה, טראק א' יכול לקבל אודיו מ-production-1, בזמן שטראק ב' מקבל אודיו מ-production-2.

SSRCs

לכל חבילה של RTP יש ערך כותרת של Synchronization Source (SSRC) שמקשר אותה לטראק ספציפי.

סשנים של אודיו דרך Meet Media API משתמשים בשלושה מקורות מדיה נפרדים, לכל אחד מהם SSRC סטטי משלו. לאחר יצירתם, ערכי ה-SSRC האלה לא משתנים במהלך הסשן.

מקורות נתונים וירטואליים

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

המקור שתרם (CSRC) בכותרות של מנות ה-RTP מזהה את המקור האמיתי של מנות ה-RTP. כשמשתתפים מצטרפים לועידה ב-Meet, המערכת מקצה להם מזהה CSRC ייחודי. הערך הזה נשאר קבוע עד שהם יוצאים.

מאחר שמספר מזהי ה-SSRC נשאר קבוע במהלך הסשן של Meet Media API, אלה שלושת התרחישים האפשריים:

  1. יש יותר משתתפים מאשר מקורות SSRC זמינים:

    מערכת Meet מעבירה את שלושת האנשים עם הקול הכי חזק בשלושת ה-SSRC. מאחר שכל זרם RTP נמצא ב-SSRC ייעודי משלו, אין ערבוב בין הזרמים.

    ב-Meet, שלושת האנשים עם הקול הכי חזק מועברים דרך שלושת ה-SSRC.
    איור 1. ב-Meet, שלושת האנשים עם הקול הכי חזק מועברים דרך שלושת ה-SSRC.

    אם אחד מהשידורים המקוריים בפגישה כבר לא נחשב לאחד מהשידורים הקולניים ביותר, מערכת Meet מחליפה את חבילות ה-RTP שמרכיבות את ה-SSRC לשידור הקולני ביותר.

    מערכת Meet מעבירה את חבילות ה-RTP לאדם החדש עם הקול הכי חזק.
    איור 2. מערכת Meet מעבירה את חבילות ה-RTP לאדם החדש עם הקול הכי חזק.
  2. מספר המשתתפים הפעילים נמוך משלושת מזהי ה-SSRC של האודיו:

    בתרחיש שבו יש יותר מזהויות SSRC מאשר שידורים בכנס, מערכת Meet ממפה את כל חבילות האודיו הזמינות למזהה SSRC ייחודי משלה. כל מזהי SSRC שלא בשימוש עדיין מוכנים וזמינים, אבל לא מועברות חבילות RTP.

    Meet ממפה את חבילות האודיו הזמינות ל-SSRC ייחודי משלו.
    איור 3. Meet ממפה את חבילות האודיו הזמינות ל-SSRC ייחודי משלו.
  3. מספר המשתתפים הפעילים שווה לשלושת מזהי ה-SSRC של האודיו:

    בתרחיש שבו יש מספר שווה של משתתפים ומספר שווה של מזהים SSRC זמינים, המדיה של כל משתתף ממופה למזהה SSRC ייעודי. המיפויים האלה נשמרים כל עוד התרחיש הספציפי הזה נמשך.

    מערכת Meet ממפה את המדיה של כל משתתף למזהה SSRC ייעודי.
    איור 4. מערכת Meet ממפה את המדיה של כל משתתף למזהה SSRC ייעודי.