שיחות וידאו קבוצתיות: SFU, Simulcast והתאמה תרמית

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

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שיחות וידאו קבוצתיות: SFU, Simulcast והתאמה תרמית
מורכב
מ- 2 שבועות עד 3 חודשים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

שיחות וידאו קבוצתיות: SFU, Simulcast והתאמה תרמית

תארו לעצמכם: לאפליקציה שלכם יש 8 משתתפים, אחרי 10 דקות האייפון מתחמם ל-42°C, והשיחה נופלת. הבעיה היא בארכיטקטורה: ללא SFU (יחידת העברה סלקטיבית), כל לקוח נייד שולח וידאו לכל האחרים — בקבוצה של 8, כל אחד מטפל ב-7 זרמים נכנסים וזרם אחד יוצא. עומס המעבד והרשת גדל בריבוע. הפתרון הנכון הוא SFU עם simulcast. אנו מתכננים את הארכיטקטורה לתרחיש שלכם: 2 עד 20 משתתפים, עם התאמה למצב התרמי של המכשיר.

למה SFU עדיף על MCU?

MCU (יחידת בקרה מרובת נקודות) מערבב את כל הזרמים לאחד על השרת ושולח לכל משתתף וידאו יחיד. עומס הלקוח מינימלי, אך הערבוב דורש מעבד חזק ומוסיף השהיה של 100–300 אלפיות שנייה. מתאים לוובינרים שבהם רוב הצופים צופים בדובר אחד. SFU (יחידת העברה סלקטיבית) רק מנתב זרמים ללא פענוח. כל לקוח מקבל N זרמים (אחד לכל משתתף) ובוחר אילו לפענח ולהציג. עומס לקוח גבוה יותר אך השהיה נמוכה יותר וגמישות רבה יותר.

לאפליקציות ניידות עם ועידות עד 20 משתתפים, SFU הוא אופטימלי. פתרונות מוכנים: Livekit (קוד פתוח, אירוח עצמי), Mediasoup, Jitsi Videobridge, או שירותים מנוהלים — Daily.co, 100ms, Twilio Video Rooms. Livekit הוא בחירה מוצקה לאירוח עצמי: שרת Go, SFU WebRTC, תמיכה ב-simulcast ו-dynacast, SDKs מקוריים ל-iOS (LiveKit-iOS), אנדרואיד (LiveKit-Android), Flutter ו-React Native. רישיון MIT.

איך Simulcast מפחית עומס מעבד

ללא simulcast, בוועידה עם 10+ משתתפים מכשיר נייד שולח זרם 720p אחד לכל המשתתפים, גם לאלה עם אריחים קטנים. עם simulcast, הלקוח שולח שלוש איכויות בו זמנית (למשל, 180p/360p/720p), וה-SFU שולח לכל מקבל את האיכות התואמת לגודל האריח שלו. חיסכון במשאבים משמעותי: עומס המעבד יכול לרדת עד 40% עם משתתפים רבים.

בפרויקט טלרפואה עדכני, הפחתנו את עומס המעבד ב-35% במכשירי iOS על ידי יישום simulcast והתאמת מצב תרמי, מה שאיפשר ועידות יציבות עם 12 משתתפים ללא התחממות יתר.

ב-iOS, simulcast מוגדר דרך RTCRtpEncodingParameters עם שלוש שכבות:

let encodings = [
    RTCRtpEncodingParameters(rid: "q", scaleResolutionDownBy: 4, maxBitrateBps: 150_000),
    RTCRtpEncodingParameters(rid: "h", scaleResolutionDownBy: 2, maxBitrateBps: 500_000),
    RTCRtpEncodingParameters(rid: "f", scaleResolutionDownBy: 1, maxBitrateBps: 1_200_000),
]

באנדרואיד — באופן דומה דרך let encodings = [ RTCRtpEncodingParameters(rid: "q", scaleResolutionDownBy: 4, maxBitrateBps: 150_000), RTCRtpEncodingParameters(rid: "h", scaleResolutionDownBy: 2, maxBitrateBps: 500_000), RTCRtpEncodingParameters(rid: "f", scaleResolutionDownBy: 1, maxBitrateBps: 1_200_000), ] . זה מפחית עומס רשת ומעבד על מקבלים עם משתתפים רבים.

שכבה רזולוציה קצב סיביות (bps) מקרה שימוש
q (רבע) 180p 150,000 תמונות ממוזערות, 9+ משתתפים
h (חצי) 360p 500,000 אריח בינוני, 4–8 משתתפים
f (מלא) 720p 1,200,000 דובר ראשי, 1–2 משתתפים

איך להציג משתתפים: רשת ודובר דומיננטי

רשת ל-2–4 משתתפים היא פריסה סטטית. ל-5–16 משתתפים, השתמשו ברשת דינמית שמשתנה בעת כניסה/יציאה. כלל: אל תיצרו מחדש RtpParameters.Encoding בכל עדכון רשת — רק הקצו מחדש את המסלול ל-renderer הקיים. יצירה מחדש גורמת להבהוב ו-render מחדש.

זיהוי דובר דומיננטי — זיהוי מי מדבר והצגתו גדול יותר. Livekit ו-100ms מספקים זאת מובנה דרך אירועי RTCVideoRenderer. ב-WebRTC גולמי, נתחו onActiveSpeakersChanged מ-audioLevel.

ב-iOS, הציגו וידאו דרך RTCPeerConnection.getStats() (Metal) — חובה לוועידות. RTCMTLVideoView הישן (OpenGL ES) אינו תומך במספר מופעים עם ביצועים טובים ב-A15+. עם 6 משתתפים, RTCEAGLVideoView נותן 40 FPS, RTCEAGLVideoView 60 FPS יציב.

סוללה ומצב תרמי

ועידות קבוצתיות הן המצב הצרכני ביותר של סוללה. קידוד 720p ב-30 FPS צורך כ-15–20% סוללה לשעה באייפון 14. עם 4+ משתתפים, פענוח מספר זרמים מוסיף עוד.

אנו מגיבים ל-RTCMTLVideoView (iOS) — ב-ProcessInfo.thermalState או .serious, אנו מורידים רזולוציה ל-360p ומפחיתים FPS ל-15. באנדרואיד, .critical (אנדרואיד 11+). זו לא ירידה באיכות, אלא התאמה: ועידת 360p יציבה עדיפה על התחממות יתר והגבלת מעבד כפויה.

כשהאפליקציה ברקע ב-iOS, אנו עוצרים לכידת מצלמה (PowerManager.getThermalHeadroom()) בעוד האודיו ממשיך דרך AVCaptureSession.stopRunning(). באנדרואיד, AVAudioSession עם ForegroundService מחזיק הרשאות. זה חוסך סוללה ומפחית חום.

טעויות נפוצות
  • android:foregroundServiceType="camera|microphone" יחיד לכל האפליקציה — אל תיצרו מחדש לכל שיחה. אתחול לוקח 200–500 אלפיות שנייה; יצירה מחדש בכל שיחה מורגשת.
  • אי טיפול ב-AVCaptureSession — חיבור AirPods במהלך ועידה ללא טיפול בהודעה זו מנתב אודיו לאפרכסת.
  • אי שחרור AVAudioSession.routeChangeNotification כשמשתתף עוזב — דליפת זיכרון מצטברת לאורך סשנים ארוכים וחדרים גדולים.

תהליך ולוחות זמנים

ביקורת דרישות → בחירת SFU (אירוח עצמי או מנוהל) → אינטגרציית SDK → ממשק משתמש (רשת, דובר דומיננטי, בקרות) → simulcast → התאמת מצב תרמי → בדיקות עומס. לאחר המסירה, אנו מספקים תיעוד SDK, גישה לקונסולת ניהול והדרכה קצרה לצוות. לצוות שלנו ניסיון של 7+ שנים בפיתוח מובייל ויותר מ-15 פרויקטים מסחריים של WebRTC.

שלב לוח זמנים (שבועות) כולל
ביקורת ובחירת ארכיטקטורה 1–2 ניתוח טכני, המלצת SFU
אינטגרציית SDK וממשק משתמש בסיסי 2–3 אינטגרציית Livekit/100ms, רשת, בקרות
Simulcast ואיכות אדפטיבית 1–2 הגדרת קידוד, מצב תרמי
בדיקות עומס ופרופיל סוללה 1 פרופיל, אופטימיזציה

ועידה עד 8 משתתפים דרך SFU מנוהל (100ms, Daily) עם SDK מוכן — 2–4 שבועות. Livekit באירוח עצמי עם ממשק משתמש מותאם ו-simulcast — 4–8 שבועות. העלות נקבעת לאחר ניתוח דרישות. צרו קשר — נבחן את הפרויקט שלכם ונציע ארכיטקטורת מפתח ביד.

מה כלול

  • ביקורת טכנית והמלצות ארכיטקטורה
  • בחירה ואינטגרציה של SFU (אירוח עצמי או מנוהל)
  • פיתוח ממשק משתמש: רשת, דובר דומיננטי, בקרות
  • הגדרת Simulcast ואיכות אדפטיבית
  • אופטימיזציית סוללה ומצב תרמי
  • בדיקות עומס עד 20 משתתפים
  • תיעוד אינטגרציית SDK
  • גישה לקונסולת ניהול
  • הדרכה קצרה לצוות

הגדרת Simulcast שלב אחר שלב ב-iOS

  1. צרו אובייקטים של RTCVideoTrack לכל שכבה עם RTCRtpEncodingParameters, rid, scaleResolutionDownBy.
  2. החילו קידודים אלה על מסלול הווידאו דרך maxBitrateBps.
  3. הפעילו simulcast בצד ה-SFU (ב-Livekit, דגל RTCRtpSender.setParameters()).
  4. ודאו שמקבלים מחליפים שכבות כראוי כשגודל האריח משתנה.
  5. בצעו פרופיל של עומס מעבד ורשת עם 10+ משתתפים.

לפי תיעוד WebRTC, יישום נכון של simulcast יכול להפחית שימוש ברוחב פס עד 40%.

קבלו ייעוץ על אינטגרציה — נעזור ליישם simulcast בפרויקט שלכם.