WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות

WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות

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

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

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

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

מנוע HLS: יתרונות וחסרונות

WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות
(c)

טכנולוגיית HLS (HTTP Live Streaming) פותחה על ידי אפל, ולכן אין זה מפתיע שהיא נתמכה לראשונה במכשירי אפל. כיום, וידאו HLS נתמך גם כמעט בכל ממירים ובמכשירים רבים המריצים את מערכת ההפעלה. Android.

מנוע HLS משתמש בקודק הווידאו הידוע H264 בשילוב עם זרמי שמע AAC או MP3 להזרמת נתוני וידאו. כל זרם נתוני האודיו והווידאו נארז במכל MPEG-TS. לצורך שידור דרך פרוטוקול HTTP, המידע הכלול בזרם מחולק לקטעים המתוארים ברשימות השמעה של m3u8. ורק לאחר מכן, קטעים אלה, יחד עם רשימות ההשמעה, מועברים דרך HTTP. חלוקה לקטעים אוטומטית פירושה עיכוב של שניות. זוהי תכונה של המכל MPEG-TS.

מנוע ה-HLS תומך גם בזרמים מרובי קצבי סיביות, בשידור חי/VOD.

היתרונות העיקריים של HLS:

  • תמיכה מובנית בכל הדפדפנים העיקריים;
  • קלות יישום (בהשוואה ל-WebRTC);
  • נוח ויעיל מאוד לארגן כל מיני שידורים לקהל גדול בזכות העובדה שניתן להעלות קטעים ל-CDN פעם אחת.

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

אבל אחת הבעיות הגדולות ביותר עם מנוע HLS היא זמן ההשהיה הגבוה בהעברת נתונים.

מקורות ה"בלמים"

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

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

אם אתם צופים במשרד שבו עובדים מתנתקים מהמסכים שלהם פעם בשעה, אז עיכוב של 5 שניות בכלל לא משנה. אבל אנשים התחילו להתלונן ש, למשל, כששידרו משחק כדורגל, הם כבר כתבו GOOOAL בצ'אט, אבל זה עדיין לא בוידאו :). כבר יש לנו מספר מקרי משתמשים שבהם Ivideon אמור כמעט להחליף את סקייפ.

האם ניתן להתגבר על העיכוב ב-HLS? התשובה לשאלה זו נשמעת כמו מדביר חולדות מנוסה הנותן הרצאה למדבירים מתחילים: "לא ניתן להדביר חולדות, אך ניתן לצמצם את אוכלוסייתן למינימום סביר". כך גם לגבי העיכוב ב-HLS, לא ניתן יהיה לחסל אותו עד אפס, אך ישנם פתרונות בשוק שיכולים להפחית משמעותית את העיכוב.

קצוץ דק

חיסרון נוסף של המנוע הוא השימוש בקבצים קטנים להעברת נתונים. מה הבעיה בזה, אתם אולי שואלים?

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

בואו נסכם בקצרה את כל היתרונות והחסרונות של טכנולוגיית HLS.

יתרונות HLS:

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

חסרונות:

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

החסרונות של HLS עלו על יתרונותיו עבורנו ואילצו אותנו לחפש אפשרויות חלופיות.

מה זה WebRTC

WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות
(c)

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

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

הנוחות והיכולות הנרחבות של טכנולוגיה זו זכו להערכה רבה על ידי מפתחי כל הדפדפנים הפופולריים. תמיכה ב-WebRTC זמינה כעת ב-Mozilla Firefox, Opera, Google Chrome (ובכל הדפדפנים מבוססי Chromium), כמו גם באפליקציות מובייל הפועלות. Android ו-iOS.

למרות כל יתרונותיו הבלתי מעורערים, ל-WebRTC יש מספר חסרונות משמעותיים.

קשיי בחירה

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

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

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

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

מה עשינו

WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות

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

כדי ש-WebRTC יעבוד כראוי, קודם כל, יש צורך לבצע מודרניזציה טכנולוגית של ה-stack לעבודה עם וידאו באינטרנט. וזה מה שעשינו.

ראשית, יישמנו שרת פרוטוקול איתות WebRTC דרך Websocket, וגם פרסנו שרת עמית WebRTC בענן המבוסס על ערכת פיתוח התוכנה webrtc.org. משימתו היא להפיץ זרמי וידאו לעמיתים של WebRTC של הלקוח בפורמט H.264 + Opus/G.711 ללא קידוד וידאו מחדש.

בחרנו ב-Websocket כפרוטוקול איתות מכיוון שכבר יש לו תמיכה איכותית בכל דפדפני האינטרנט הפופולריים. הודות לכך, ניתן להפחית משמעותית לא רק את עלויות הפיתוח, אלא גם לא לבזבז זמן ומשאבים על לחיצות יד חוזרות ונשנות של TCP ו-TLS בהשוואה ל-AJAX.

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

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

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

בלקוח הנייד, יישמנו את הנגן באמצעות ערכת פיתוח התוכנה של webrtc.org, מכיוון שרק הוא יישם נכון את בקרת הזרימה, את כל תוכניות תיקון השגיאות הקדמיות (FEC) הידועות, ומנגנון מיושם נכון לשליחת חבילות מחדש עבור כל הדפדפנים. חשוב גם ש-SDK של webrtc.org יפותח באופן פעיל על ידי גוגל.

מהי התוצאה של יישום WebRTC?


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

לאחר הטמעת תמיכת WebRTC בשירות הענן של Ivideon, אנו יכולים לומר בביטחון מלא שלקוחותינו יכולים כעת לצפות בוידאו חי מלא. כעת העיכוב בשידור רצף הווידאו אינו עולה על שנייה אחת! לשם השוואה, מנוע HLS הקודם סיפק אספקת וידאו עם עיכוב של 5-7 שניות. ההבדל במהירות הדגמת הווידאו הוא משמעותי מאוד, והמשתמש יבחין בו מיד לאחר תחילת העבודה עם שירות הווידאו שלנו.

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

WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות

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

תכונות של יישום WebRTC בשירות Ivideon

WebRTC ומעקב וידאו: איך ניצחנו את השהיית הווידאו ממצלמות

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

זו בדיוק הסיבה שעדיין לא הפכנו את נגן WebRTC לברירת המחדל עבור כל המשתמשים.

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

עדיין לא יישמנו תמיכה ב-WebRTC עבור דפדפנים במכשירים ניידים. נכון לעכשיו, אם תיכנסו ממכשיר נייד ותפעילו את WebRTC, מצב זה לא יעבוד. עם זאת, WebRTC זמין באפליקציות המובייל שלנו עבור Android и iOS.

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

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

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

שינויים נוספים בשירות

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

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

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster