WebRTC və video nəzarət: kameranın video gecikməsini necə yendik

WebRTC və video nəzarət: kameranın video gecikməsini necə yendik

Bulud videomüşahidə sistemi üzərində işlədiyimiz ilk günlərdən bir problemlə üzləşdik, həll etmədən İvideon-a son qoymaq mümkün idi - bu, bizim Everestimiz idi, dırmaşmaq çox güc tələb edirdi, amma indi nəhayət ilişib qaldıq. çarpaz platforma rebusunun yuxarı hissəsinə buz baltası.

Audio və videonun İnternet üzərindən ötürülməsi sistemi avadanlıqdan, Veb müştərilərdən və onların dəstəklədiyi standartlardan asılı olmamalı, həmçinin Şəbəkə Ünvan Tərcüməçiləri və firewallların iştirakı ilə düzgün işləməməlidir. Bulud videomüşahidə istifadəçisi analoq kameralardan istifadə etsə belə, xidmətə daxil olmaq istəyir və ən müasir cihazda canlı yayımlanan videoyayımı izləməyə üstünlük verir.

İstifadəçinin minimum gecikmə ilə videoya baxmaq istəməsi çox əhəmiyyətlidir. Brauzerdə aşağı gecikmə videonu göstərməyin yeganə yolu WebRTC (veb real vaxt rabitəsi) istifadə etməkdir. WebRTC, əvvəlcə aşağı gecikmə ilə video axınının ötürülməsi və səsləndirilməsi üçün nəzərdə tutulmuş brauzerlərdə video və audionun həmyaşıdlara ötürülməsi üçün texnologiyalar toplusudur. Bunun üçün digər şeylər arasında UDP protokolundan istifadə olunur.

Yeni mühərrikin istifadəçiyə nə verdiyini söyləməzdən əvvəl HLS texnologiyalarını niyə və nə üçün dəstəklədiyimizi və nə üçün davam etmək qərarına gəldiyimizi xatırladacağıq.

HLS mühərriki: müsbət və mənfi cəhətləri

WebRTC və video nəzarət: kameranın video gecikməsini necə yendik
(c)

HLS (HTTP Canlı Yayım) texnologiyası Apple tərəfindən hazırlanmışdır, buna görə də onun ilk dəfə Apple cihazlarında dəstəklənməsi təəccüblü deyil. Bu gün HLS videosu demək olar ki, bütün pristavkalar və ƏS ilə işləyən bir çox cihaz tərəfindən dəstəklənir. Android.

HLS mühərriki video məlumatı yayımlamaq üçün AAC və ya MP264 audio axınları ilə birlikdə tanınmış H3 video kodekindən istifadə edir. Bütün audio və video məlumat axını MPEG-TS nəqliyyat konteynerinə yığılır. HTTP protokolu üzərindən ötürülmə üçün axındakı məlumatlar m3u8 çalğı siyahılarında təsvir edilən fraqmentlərə bölünür. Və yalnız bundan sonra bu fraqmentlər pleylistlərlə birlikdə HTTP vasitəsilə ötürülür. Fraqmentlərə bölmə avtomatik olaraq saniyələrlə gecikmə deməkdir. MPEG-TS konteynerinin belə bir xüsusiyyəti.

HLS mühərriki həmçinin Live/VOD multibitrate axınlarını dəstəkləyir.

HLS-in əsas üstünlükləri:

  • bütün əsas brauzerlərdə daxili dəstək;
  • icra asanlığı (WebRTC ilə müqayisədə);
  • seqmentləri bir dəfə CDN-ə yükləmək mümkün olduğu üçün geniş auditoriya üçün hər cür yayımı təşkil etmək çox rahat və səmərəlidir.

Mühərrikin sadəliyinə baxmayaraq, hər şey göründüyü qədər hamar deyil. Əsas problem, üçüncü tərəf oyunçularının tərtibatçılarının, məsələn, dəstəklənən audio formatları baxımından Apple-ın tövsiyələrindən yayınmasıdır. Xüsusilə, bir çox tərtibatçılar populyar audio axınları ilə işləmək qabiliyyətini əlavə etməyə başladılar: mpeg2 video, mpeg2 audio və s. Nəticədə, biz müxtəlif oyunçular üçün müxtəlif pleylist formatları yaratmalı olduq.

Lakin HLS mühərriki ilə bağlı ən böyük problemlərdən biri məlumat ötürülməsində yüksək gecikmədir.

"Əyləclərin" mənşəyi

HLS-in yüksək gecikmə müddətinin əsas səbəbi proqramçıların mühərriki ən yüksək keyfiyyətli şəkil əldə etmək üçün yaratmalarıdır. Buna görə də, istifadə olunan çərçivə intervalının parametrləri və oxutma buferinin ölçüsü canlı video yayımları üçün sadəcə uyğun deyil. Buna görə video ardıcıllığının ötürülməsində kifayət qədər yüksək gecikmə var ki, bu da 5-7 saniyə ola bilər.

Bir tərəfdən, bu, məsələn, video hostinq serverindən film izləyənlər üçün çox deyil. Ancaq video nəzarət sistemləri üçün video ardıcıllığının ötürülməsində gecikmə çox vacib ola bilər.

İşçilərin saatda bir dəfə gözlərini monitordan çəkdiyi ofisə baxırsınızsa, o zaman 5 saniyə gecikmənin heç bir əhəmiyyəti yoxdur. Amma insanlar şikayət etməyə başladılar ki, məsələn, bir futbol matçının yayımı zamanı söhbətdə artıq GOOOOL yazıblar, amma bu hələ videoda yoxdur :). Artıq bir sıra istifadəçi hallarımız var ki, Ivideon praktiki olaraq skype-ı əvəz etməlidir.

HLS-də gecikməni aradan qaldırmaq mümkündürmü? Bu sualın cavabı təcrübəli bir siçovul məhv edənin təcrübəsiz məhv edənlərə mühazirədəki çıxışına bənzəyir: "Siçovulları məhv etmək mümkün deyil, lakin onların əhalisini ağlabatan minimuma endirmək olar." Beləliklə, HLS-də gecikmə ilə onu sıfıra endirmək işləməyəcək, lakin bazarda gecikməni əhəmiyyətli dərəcədə azalda biləcək həllər var.

İncə kəsmə

Mühərrikin başqa bir dezavantajı məlumatların ötürülməsi üçün kiçik faylların istifadəsidir. Deyəsən bu pisdir?

Çox sayda kiçik faylı bir mühitdən digərinə köçürməyə cəhd edən hər kəs belə bir toplunun yazma sürətinin eyni ölçülü bir böyük fayldan çox aşağı olduğunu fərq etməlidir. Bəli və sabit diskə girişin intensivliyi əhəmiyyətli dərəcədə artır, bu ümumiyyətlə bütün kompüterin işinə mənfi təsir göstərir. Buna görə də, video məlumatların kiçik 10 saniyəlik fraqmentlər şəklində ötürülməsi də mühərrikin gecikməsinin artmasına kömək edir.

HLS texnologiyasının bütün müsbət və mənfi cəhətlərini qısaca ümumiləşdirək.

HLS-in üstünlükləri:

  1. İstənilən cihazla işləmək bacarığı. İstənilən müasir cihazda, istər smartfon, planşet, noutbuk və ya masaüstü kompüterdə videolara baxa bilərsiniz. Əsas odur ki, veb-brauzer müasirdir və HTML5 və Media Mənbə Genişləndirmələri ilə uyğun gəlir.
  2. Əla şəkil keyfiyyəti. İstifadə olunan adaptiv məlumat ötürülməsi funksiyası internetə qoşulmanın bant genişliyindən asılı olaraq ötürülən video ardıcıllığının keyfiyyətini dinamik şəkildə dəyişməyə imkan verir, eyni zamanda alqoritm keyfiyyəti mümkün qədər yüksək tutmağa çalışır.
  3. Mürəkkəb istifadəçi avadanlığının qurulmasına ehtiyac yoxdur.

Dezavantajları:

  1. Bəzi cihazlarda mühərriklə işləmək üçün məhdud dəstək.
  2. Şəkil ötürülməsində yüksək gecikmə.
  3. Kiçik faylların istifadəsi səbəbindən əlavə xərclərin və optimallaşdırmanın mürəkkəbliyinin güclü artması. Konteynerin təbiətinə görə, heç vaxt seqment ölçüsündən az gecikmə əldə edə bilməyəcəyik.

HLS-in çatışmazlıqları onun bizim üçün üstünlüklərindən üstün oldu və bizi alternativlər axtarmağa məcbur etdi.

WebRTC nədir

WebRTC və video nəzarət: kameranın video gecikməsini necə yendik
(c)

WebRTC platforması 2011-ci ildə Google tərəfindən brauzerlər və mobil proqramlar arasında axın video və audio məlumatlarını minimum gecikmə ilə ötürmək üçün hazırlanmışdır. Bunun üçün standart UDP protokolu və xüsusi axına nəzarət alqoritmlərindən istifadə olunur. Bu gün bu, Google tərəfindən fəal şəkildə dəstəklənən və inkişaf etdirilən açıq mənbəli bir layihədir.

WebRTC həmyaşıd video və audio ötürülməsi üçün texnologiyalar toplusudur. Yəni, məsələn, WebRTC-dən istifadə edən istifadəçilərin brauzerləri məlumatların saxlanması və emalı üçün uzaq serverlərdən istifadə etmədən məlumatları birbaşa bir-birinə ötürə bilər. Bütün məlumatlar həmçinin son istifadəçilərin brauzerləri və mobil proqramlar tərəfindən işlənir.

Bu texnologiyanın rahatlığı və geniş imkanları bütün məşhur brauzerlərin tərtibatçıları tərəfindən yüksək qiymətləndirilib. WebRTC dəstəyi hazırda Mozilla Firefox, Opera, Google Chrome (və bütün Chromium əsaslı brauzerlərdə), eləcə də mobil tətbiqlərdə mövcuddur. Android və iOS.

Bütün danılmaz üstünlükləri ilə WebRTC-nin bir sıra əhəmiyyətli çatışmazlıqları var.

Seçim çətinlikləri

WebRTC texnologiyası P2P haqqında olduğuna görə şəbəkə qarşılıqlı əlaqələri baxımından daha mürəkkəbdir. Sazlamaq, sınaqdan keçirmək çətindir, gözlənilməz davrana bilər. Eyni zamanda, biz NAT və firewall-a qalib gəlməliyik, UDP-nin bloklandığı şəbəkələrdə işi təmin etməliyik.

Google-un WebRTC tətbiqindən istifadə etmək çox çətindir. Hətta SDK tikinti xidmətləri göstərən bütöv bir şirkət var. Üstəlik, Google-un tətbiqini bütün videonu yenidən kodlaşdırmadan sistemimizlə inteqrasiya etmək çox çətin idi.

Bununla belə, biz çoxdan istifadəçilərə tam hüquqlu "canlı" video ardıcıllığı ilə işləmək və hadisələrin özündən ekrandakı təsvirin gecikməsini minimuma endirmək imkanı vermək istəyirik. Üstəlik, gecikmələrin kritik olduğu yerlərdə PTZ kameraların istifadəsini daha rahat etmək istəyimiz var idi.

Digər anti-lag tətbiqlərinin hələ də məhdud funksionallığa malik olduğunu və nəzərəçarpacaq dərəcədə pis işlədiyini nəzərə alaraq, WebRTC-dən istifadə etmək qərarına gəldik.

Biz nə etmişik

WebRTC və video nəzarət: kameranın video gecikməsini necə yendik

WebRTC platformasını düzgün tətbiq etmək asan məsələ deyil. İstənilən səhv hesablama və ya qeyri-dəqiqlik ona gətirib çıxara bilər ki, video ardıcıllığının ötürülməsindəki gecikmələr digər platformalarla müqayisədə nəinki azalmayacaq, hətta artacaq.

WebRTC-nin düzgün işləməsi üçün, ilk növbədə, veb-video ilə işləmək üçün yığının texnoloji yenilənməsini həyata keçirmək lazımdır. Hansı ki, biz elədik.

Birincisi, biz Websocket üzərindən WebRTC siqnal protokolu serverini tətbiq etdik, həmçinin webrtc.org SDK əsasında buludda WebRTC peer serverini yerləşdirdik. Onun vəzifəsi video transkodlaşdırmadan H.264 + Opus/G.711 formatında müştəri WebRTC həmyaşıdlarına video axınlarını yaymaqdır.

Siqnal protokolu olaraq Websocket-i seçdik, çünki o, artıq bütün populyar veb-brauzerlərdə yaxşı dəstəyə malikdir. Bunun sayəsində siz AJAX ilə müqayisədə təkcə inkişaf xərclərini deyil, həm də təkrar TCP və TLS əl sıxmalarına vaxt və resurslar sərf etməyək əhəmiyyətli dərəcədə azalda bilərsiniz.

Məsələ ondadır ki, standart olaraq, WebRTC mənbə və müştəri proqramları arasında real vaxt rejimində video rabitəni düzgün qurmaq, saxlamaq və dayandırmaq üçün tələb olunan siqnal protokolunu təmin etmir.

Siqnal texnologiyasını müstəqil şəkildə həyata keçirmək üçün bir neçə veb protokolları (Websocet, WebRTC) dəstəyi ilə öz siqnal serverimizi inkişaf etdirməli idik. Seansları və real vaxt bildirişlərini təhlükəsiz idarə etmək, videonu idarə etmək və s. imkanı ilə.

Biz gecikməni P2P vasitəsilə deyil, gecikməni azaltmaq üçün UDP və axına nəzarət vasitəsilə azaltmaqla P2P məhdudiyyətlərini dəf etdik. Bu, həmçinin WebRTC-də qurulmuşdur, çünki əsas istifadə halı brauzer vasitəsilə p2p söhbətləridir.

Mobil müştəridə biz oyunçunu webrtc.org SDK-dan istifadə etdik, çünki o, axın nəzarətini düzgün həyata keçirən, bütün məlum İrəli Səhv Düzəliş (FEC) sxemlərinə malik olan və bütün brauzerlər üçün paketlərin yenidən göndərilməsi mexanizmini düzgün həyata keçirən yeganədir. . Webrtc.org SDK-nın Google tərəfindən fəal şəkildə hazırlanması da vacibdir.

WebRTC tətbiqinin nəticəsi nədir?


Kameralardan canlı videoya baxmaq üçün şəxsi hesabınıza WebRTC əsasında yeni optimallaşdırılmış pleyer əlavə etdik. Videonun yüksək sürətli yüklənməsini təmin edir və baxış vaxtı artdıqca gecikmənin yığılması problemini tamamilə aradan qaldırır.

Ivideon bulud xidmətində WebRTC dəstəyini tətbiq etdikdən sonra tam əminliklə deyə bilərik ki, indi müştərilərimiz tam hüquqlu canlı videoya baxa bilərlər. İndi video ardıcıllığın yayımında gecikmə bir saniyədən çox deyil! Müqayisə üçün qeyd edək ki, əvvəlki HLS mühərriki 5-7 saniyə gecikmə ilə videoların çatdırılmasını təmin edirdi. Video nümayişinin sürətindəki fərq çox əhəmiyyətlidir və istifadəçi bunu video xidmətimizlə işə başladıqdan dərhal sonra hiss edəcək.

Gözlədiyimiz kimi, yeni pleyerin tətbiqi PTZ-nin həssaslığını və kamera ilə səsli rabitəni artırmağa imkan verdi.

WebRTC və video nəzarət: kameranın video gecikməsini necə yendik

Yalnız bir incə məqam var ki, ona diqqət çəkmək istəyirik. Yeni WebRTC pleyer hələ də test rejimində işləyir. Və buna görə də biz onu standart olaraq bütün müştərilərimiz üçün aktivləşdirmirik. Ancaq kamera parametrlərində müvafiq elementi aktivləşdirməklə onu özünüz aktivləşdirə bilərsiniz (bunu etmək üçün ofis).

Ivideon xidmətində WebRTC-nin tətbiqi xüsusiyyətləri

WebRTC və video nəzarət: kameranın video gecikməsini necə yendik

WebRTC hələ də eksperimental texnologiyadır. Onun dəstəyi hələ bütün kameralarda deyil, bütün brauzerlərdə və istifadəçi cihazlarında düzgün tətbiq edilməyib.

WebRTC pleyerini hələ bütün istifadəçilər üçün əsas defolt etmədiyimizi izah edən budur.

Hələlik biz yalnız Google Chrome brauzerlərində WebRTC-dən istifadə etməyi tövsiyə edirik. Firefox və Safari-nin ən son versiyaları da bu texnologiyanı dəstəkləyir, lakin təəssüf ki, hələlik stabil deyil.

Biz hələ mobil cihazlarda brauzerlər üçün WebRTC dəstəyi tətbiq etməmişik. İndi mobil cihazdan daxil olub WebRTC-ni aktivləşdirsəniz, bu rejim işləməyəcək. Bununla belə, WebRTC mobil tətbiqlərimizdə mövcuddur Android и iOS.

Xidmətimizdə WebRTC-nin tətbiqi xüsusiyyətləri haqqında hekayəni tamamlayaraq daha iki incə məqamı qeyd edirik.

Birincisi, texnologiya real vaxt rejimində canlı video yayımına yönəlib. Buna görə də, bant genişliyiniz video ardıcıllığını ötürmək üçün kifayət deyilsə, siz çərçivənin düşməsini görəcəksiniz (HLS ilə siz videonun solmasını və gecikmə müddətinin artdığını görəcəksiniz, lakin heç bir çərçivə düşməyəcək), lakin video yenə də real olaraq yayımlanacaq. vaxt.

İkincisi, texnologiya real vaxt rejimində canlı video ilə işləmək üçün nəzərdə tutulduğundan, biz ondan arxivləşdirilmiş video məlumatları ilə işləmək üçün istifadə etmirik.

Digər xidmət dəyişiklikləri

Hazırda Flash artıq avtomatik mühərrik seçim mexanizmində iştirak etmir. Siz hələ də belə bir oyunçudan istifadə edə bilərsiniz, lakin bunun üçün hesab və ya kamera parametrlərində onu əl ilə seçməlisiniz. Bu modaya verilən qiymət deyil, sadəcə xidmətimizin statistikasına görə, Flash ilə işləyən istifadəçilər praktiki olaraq yoxdur. Və istifadəçinin brauzerinin bunu dəstəkləyib-dəstəkləmədiyini müəyyən etməyə çalışaraq, biz təxminən 2 saniyə dəyərli vaxt itiririk.

Budur, bulud əsaslı videomüşahidə sistemimizdə və şəxsi hesabımızda sizi gözləyən dəyişikliklərin qısa xülasəsi. Bizimlə qalın və xəbərləri izləyin!

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster