WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat

WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat

Që në ditët e para të punës në një sistem të mbikqyrjes video cloud, ne u përballëm me një problem, pa zgjidhje për të cilin mund të hiqnim dorë nga Ivideon - ky ishte Everesti ynë, ngjitja që mori shumë energji, por tani më në fund kemi nguli një sëpatë akulli në krye të enigmës ndër-platformë.

Sistemi për transmetimin e audios dhe videos në internet nuk duhet të varet nga pajisjet, klientët e Uebit dhe standardet që ata mbështesin, dhe gjithashtu të funksionojë saktë në prani të Përkthyesve të Adresave të Rrjetit dhe mureve të zjarrit. Një përdorues i mbikqyrjes video në cloud dëshiron të hyjë në shërbim, edhe nëse përdor kamera analoge dhe preferon të shikojë transmetimin e drejtpërdrejtë të videos në pajisjen më moderne.

Është shumë domethënëse që përdoruesi dëshiron të shikojë video me vonesë minimale. Pothuajse e vetmja mënyrë për të shfaqur video me vonesë të ulët në një shfletues është përdorimi i WebRTC (komunikim në internet në kohë reale). WebRTC është një grup teknologjish për transmetimin peer-to-peer të videos dhe audios në shfletues, i projektuar fillimisht për transmetimin dhe riprodhimin e transmetimeve video me vonesë të ulët. Për këtë qëllim ndër të tjera përdoret protokolli UDP.

Para se t'ju tregojmë se çfarë i jep përdoruesi motori i ri, do t'ju kujtojmë pse dhe pse mbështesim teknologjitë HLS dhe pse vendosëm të vazhdojmë.

Motori HLS: të mirat dhe të këqijat

WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat
(c)

Технология HLS (HTTP Live Streaming) разработана в Apple, поэтому не удивительно, что впервые её поддержка появилась на устройствах именно этого бренда. На сегодняшний день видеоряд в формате HLS также умеют воспроизводить практически все телевизионные приставки и многие устройства, работающие на ОС Android.

Motori HLS përdor kodekun e njohur të videos H264 në kombinim me transmetimet audio AAC ose MP3 për të transmetuar të dhëna video. I gjithë transmetimi i të dhënave audio dhe video paketohet në një kontejner transporti MPEG-TS. Për transmetim nëpërmjet protokollit HTTP, informacioni që përmban transmetimi ndahet në fragmente të përshkruara në listat e luajtjes m3u8. Dhe vetëm atëherë këto fragmente, së bashku me listat e luajtjes, transmetohen përmes HTTP. Thyerja automatikisht nënkupton një vonesë në sekonda. Kjo është një veçori e kontejnerit MPEG-TS.

Motori HLS gjithashtu mbështet transmetime me shumë bitrate, Live/VOD.

Përparësitë kryesore të HLS:

  • mbështetje e integruar në të gjithë shfletuesit kryesorë;
  • lehtësia e zbatimit (krahasuar me WebRTC);
  • Është shumë i përshtatshëm dhe efikas për të organizuar të gjitha llojet e transmetimeve për një audiencë të madhe për shkak të faktit se segmentet mund të ngarkohen një herë në një CDN.

Pavarësisht nga thjeshtësia e motorit, jo gjithçka është aq e qetë sa duket. Problemi kryesor është se zhvilluesit e luajtësve të palëve të treta janë larguar nga rekomandimet e Apple, për shembull për sa i përket formateve të mbështetura audio. Në veçanti, shumë zhvillues filluan të shtojnë aftësinë për të punuar me transmetime audio të njohura: video mpeg2, audio mpeg2, etj. Si rezultat, ata duhej të krijonin formate të ndryshme të listës së luajtjes për lojtarë të ndryshëm.

Por një nga problemet më të mëdha me motorin HLS është vonesa e lartë në transferimin e të dhënave.

Origjina e "frenave"

Arsyeja kryesore për vonesën e lartë të HLS qëndron në faktin se programuesit krijuan motorin për të marrë imazhe me cilësi më të lartë. Prandaj, parametrat e intervalit të kornizës së përdorur dhe madhësia e tamponit të riprodhimit thjesht nuk janë të përshtatshme për transmetime video të drejtpërdrejta. Për shkak të kësaj, ka një vonesë mjaft të lartë në transmetimin e pamjeve video, e cila mund të jetë 5-7 sekonda.

Nga njëra anë, kjo nuk është shumë, për shembull, për ata që shikojnë një film nga një server pritës video. Por për sistemet e mbikqyrjes video, vonesa në transmetimin e pamjeve video mund të jetë shumë e rëndësishme.

Nëse jeni duke parë një zyrë ku punonjësit shikojnë nga monitorët e tyre një herë në orë, atëherë një vonesë prej 5 sekondash nuk ka fare rëndësi. Por njerëzit filluan të ankohen se, për shembull, kur transmetonin një ndeshje futbolli, ata tashmë shkruan GOOOOL në chat, por kjo nuk është ende në video :). Ne tashmë kemi një numër rastesh përdoruesish ku Ivideon duhet të zëvendësojë praktikisht Skype.

A është e mundur të mposhtet latente në HLS? Përgjigja për këtë pyetje tingëllon si fjalimi i një shfarosësi me përvojë miu në një leksion për specialistët fillestarë të kontrollit të dëmtuesve: "Minjtë nuk mund të shfarosen, por numri i tyre mund të reduktohet në një minimum të arsyeshëm." Njësoj me vonesën në HLS, nuk do të jetë e mundur të zvogëlohet në zero, por ka zgjidhje në treg që mund të reduktojnë ndjeshëm vonesën.

Prerje të imta

Një tjetër disavantazh i motorit është përdorimi i skedarëve të vegjël për transferimin e të dhënave. Do të duket se çfarë nuk shkon me këtë?

Kushdo që është përpjekur të kopjojë një numër të madh skedarësh të vegjël nga një medium në tjetrin, me siguri ka vënë re se shpejtësia e shkrimit të një grupi të tillë është shumë më e ulët se një skedar i madh me të njëjtën madhësi. Dhe intensiteti i aksesit në hard disk rritet ndjeshëm, gjë që përgjithësisht ndikon negativisht në performancën e të gjithë kompjuterit. Prandaj, transmetimi i të dhënave video në copa të vogla 10 sekondash gjithashtu kontribuon në rritjen e vonesës së motorit.

Le të përmbledhim shkurtimisht të gjitha të mirat dhe të këqijat e teknologjisë HLS.

Përparësitë e HLS:

  1. Aftësia për të punuar me çdo pajisje. Ju mund të shikoni video në çdo pajisje moderne, qoftë smartfon, tablet, laptop apo kompjuter desktop. Gjëja kryesore është që shfletuesi i internetit të jetë i përditësuar dhe i pajtueshëm me HTML5 dhe Zgjerimet e Burimit të Medias.
  2. Cilësi e shkëlqyer e imazhit. Funksioni adaptiv i transmetimit të të dhënave ju lejon të ndryshoni në mënyrë dinamike cilësinë e videos së transmetuar në varësi të gjerësisë së brezit të lidhjes së internetit, ndërsa algoritmi përpiqet të ruajë cilësinë maksimale.
  3. Nuk ka nevojë për konfigurim kompleks të pajisjeve të përdoruesit.

Disavantazhet:

  1. Mbështetje e kufizuar për të punuar me motorin në disa pajisje.
  2. Vonesa të mëdha në transmetimin e imazhit.
  3. Rritje e ndjeshme e shpenzimeve dhe kompleksitetit të optimizimit për shkak të përdorimit të skedarëve të vegjël. Për shkak të natyrës së kontejnerit, ne kurrë nuk do të mund të marrim një vonesë më të ulët se madhësia e segmentit.

Disavantazhet e HLS peshuan më shumë se avantazhet e tij për ne dhe na detyruan të kërkojmë opsione alternative.

Çfarë është WebRTC

WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat
(c)

Platforma WebRTC u zhvillua nga Google në 2011 për të transmetuar të dhëna video dhe audio në transmetim midis shfletuesve dhe aplikacioneve celulare me vonesë minimale. Për këtë, përdoret protokolli standard UDP dhe algoritmet speciale të kontrollit të rrjedhës. Sot është një projekt me kod të hapur, mirëmbahet në mënyrë aktive nga Google dhe po zhvillohet.

WebRTC është një grup teknologjish për transmetimin peer-to-peer video dhe audio. Kjo do të thotë, për shembull, shfletuesit e përdoruesve që përdorin WebRTC mund të transferojnë të dhëna tek njëri-tjetri drejtpërdrejt, pa përdorur serverë të largët për ruajtjen dhe përpunimin e të dhënave. I gjithë informacioni përpunohet gjithashtu nga shfletuesit e përdoruesve fundorë dhe aplikacionet celulare.

Удобство и большие возможности данной технологии по достоинству оценили разработчики всех популярных браузеров. Сегодня поддержка WebRTC реализована в Mozilla Firefox, Opera, Google Chrome (и всеми браузерами на базе Chromium), а также в мобильных приложениях под Android dhe iOS.

Me të gjitha avantazhet e tij të padyshimta, WebRTC ka disa disavantazhe të rëndësishme.

Vështirësitë e zgjedhjes

Teknologjia WebRTC është shumë më komplekse për sa i përket ndërveprimeve në rrjet për faktin se bëhet fjalë për P2P. Është e vështirë të korrigjohet, testohet dhe mund të sillet në mënyrë të paparashikueshme. Në të njëjtën kohë, ne duhet të kapërcejmë NAT dhe firewall, duhet të sigurojmë funksionimin në rrjetet ku UDP është i bllokuar.

Implementimi i WebRTC i Google është shumë i vështirë për t'u përdorur. Ekziston edhe një kompani e tërë që ofron shërbime të montimit të SDK. Plus, zbatimi i Google ishte shumë i vështirë për t'u integruar me sistemin tonë pa ri-kodifikuar të gjithë videon.

Sidoqoftë, prej kohësh kemi dashur t'u japim përdoruesve mundësinë të punojnë me video "live" të plotë dhe të minimizojnë vonesën midis imazhit në ekran dhe vetë ngjarjeve. Plus, ne kishim një dëshirë për të bërë përdorimin e kamerave PTZ, ku vonesat janë kritike, më komode.

Duke marrë parasysh që zbatimet e tjera anti-lag kanë ende funksionalitet të kufizuar dhe funksionojnë dukshëm më keq, vendosëm të përdorim WebRTC.

Çfarë kemi bërë

WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat

Zbatimi i duhur i platformës WebRTC nuk është një detyrë e lehtë. Çdo llogaritje e gabuar ose pasaktësi mund të çojë në vonesa në transmetimin e videos jo vetëm që të mos ulet në krahasim me platformat e tjera, por edhe të rritet.

Që WebRTC të funksionojë siç duhet, para së gjithash, është e nevojshme të kryhet një azhurnim teknologjik i pirgut për të punuar me video në internet. Kështu bëmë.

Së pari, ne implementuam një server të protokollit të sinjalizimit WebRTC mbi Websocket, dhe gjithashtu vendosëm një server bashkëmoshatar WebRTC në cloud bazuar në webrtc.org SDK. Detyra e tij është të shpërndajë transmetime video tek kolegët e klientit WebRTC në formatin H.264 + Opus/G.711 pa transkodim video.

Ne zgjodhëm Websocket si protokollin e sinjalizimit sepse tashmë ka mbështetje me cilësi të lartë në të gjithë shfletuesit e njohur të internetit. Për shkak të kësaj, ju mund të zvogëloni ndjeshëm jo vetëm shpenzimet e përgjithshme të zhvillimit, por gjithashtu të shmangni humbjen e kohës dhe burimeve në shtrëngimin e përsëritur të duarve TCP dhe TLS në krahasim me AJAX.

Fakti është se, si parazgjedhje, WebRTC nuk ofron protokollin e sinjalizimit të nevojshëm për konfigurimin, mirëmbajtjen dhe përfundimin e duhur të komunikimit video në kohë reale midis aplikacioneve të burimit dhe klientit.

Dhe për të zbatuar në mënyrë të pavarur teknologjinë e sinjalizimit, na duhej të zhvillonim serverin tonë të sinjalizimit me mbështetje për disa protokolle në internet (Websocet, WebRTC). Dhe me aftësinë për të menaxhuar në mënyrë të sigurt seancat dhe njoftimet në kohë reale, menaxhimin e videove dhe shumë më tepër.

Ne i kapërcejmë kufizimet e P2P duke reduktuar vonesën jo përmes P2P, por përmes UDP dhe kontrollit të rrjedhës për të zvogëluar vonesën. Kjo është gjithashtu e integruar në WebRTC, pasi rasti kryesor i përdorimit janë bisedat p2p përmes një shfletuesi.

Në klientin celular, ne kemi implementuar luajtësin duke përdorur webrtc.org SDK, pasi vetëm ai zbaton saktë kontrollin e rrjedhës, ka të gjitha skemat e njohura të korrigjimit të gabimit përpara (FEC) dhe zbaton saktë mekanizmin për ridërgimin e paketave për të gjithë shfletuesit. Është gjithashtu e rëndësishme që SDK e webrtc.org po zhvillohet në mënyrë aktive nga Google.

Cili është rezultati i zbatimit të WebRTC?


Për të parë video drejtpërdrejt nga kamerat, ne kemi shtuar një luajtës të ri të optimizuar bazuar në WebRTC në llogarinë tuaj personale. Ai siguron shpejtësi të shpejtë të ngarkimit të videos dhe eliminon plotësisht problemin e akumulimit të vonesës kur rritet koha e shikimit.

Pas prezantimit të mbështetjes WebRTC në shërbimin cloud Ivideon, mund të themi me besim të plotë se klientët tanë tani mund të shikojnë video live të plota. Tani vonesa në transmetimin e sekuencave video nuk e kalon një sekondë! Për krahasim, motori i mëparshëm HLS ofroi shpërndarjen e videos me një vonesë prej 5-7 sekondash. Dallimi në shpejtësinë e demonstrimit të videos është shumë domethënës dhe përdoruesi do ta vërejë atë menjëherë pasi të fillojë të punojë me shërbimin tonë video.

Siç e prisnim, zbatimi i luajtësit të ri ka përmirësuar reagimin e PTZ dhe komunikimin zanor me kamerën.

WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat

Ekziston vetëm një pikë delikate për të cilën duam të tërheqim vëmendjen. Luajtësi i ri WebRTC aktualisht është duke punuar në modalitetin e testimit. Dhe kjo është arsyeja pse ne nuk e aktivizojmë atë për të gjithë klientët tanë si parazgjedhje. Por mund ta aktivizoni vetë duke aktivizuar artikullin përkatës në cilësimet e kamerës (për ta bërë këtë, shkoni te llogari personale).

Karakteristikat e zbatimit të WebRTC në shërbimin Ivideon

WebRTC dhe mbikëqyrja video: si e mposhtëm vonesën e videos nga kamerat

WebRTC është ende një teknologji eksperimentale për momentin. Mbështetja e tij ende nuk është zbatuar saktë në të gjithë shfletuesit dhe pajisjet e përdoruesve, dhe gjithashtu jo në të gjitha kamerat.

Kjo është pikërisht arsyeja pse ne nuk e kemi bërë ende luajtësin WebRTC si të paracaktuar për të gjithë përdoruesit.

Për momentin, ne rekomandojmë përdorimin e WebRTC vetëm në shfletuesit Google Chrome. Versionet më të fundit të Firefox dhe Safari gjithashtu mbështesin këtë teknologji, por, për fat të keq, ajo është ende e paqëndrueshme.

Ne nuk kemi implementuar ende mbështetjen e WebRTC për shfletuesit në pajisjet celulare. Aktualisht, nëse identifikoheni nga një pajisje celulare dhe aktivizoni WebRTC, kjo mënyrë nuk do të funksionojë. Megjithatë, WebRTC është i disponueshëm në aplikacionet tona celulare për Android и IOS.

Dhe duke përfunduar historinë në lidhje me veçoritë e zbatimit të WebRTC në shërbimin tonë, le të vërejmë dy pika më delikate.

Së pari, teknologjia është e fokusuar në transmetimin e videos live në kohë reale. Prandaj, nëse kanali juaj nuk ka gjerësi brezi të mjaftueshëm për të transmetuar videon, do të vini re rënie të kuadrove (me HLS do të vini re zbehje të videos dhe rritje të vonesës, por nuk do të ketë rënie të kuadrit), por videoja do të transmetohet sërish reale. koha.

Së dyti, meqenëse teknologjia është krijuar për të punuar në mënyrë specifike me video live në kohë reale, ne nuk e përdorim atë për të punuar me të dhënat e arkivuara të videos.

Ndryshime të tjera në shërbim

Në këtë kohë, Flash nuk është më i përfshirë në mekanizmin automatik të zgjedhjes së motorit. Mund ta përdorni akoma një luajtës të tillë, por për ta bërë këtë, duhet ta zgjidhni manualisht në llogarinë ose cilësimet e kamerës. Ky nuk është një haraç për modën, thjesht, sipas statistikave të shërbimit tonë, praktikisht nuk ka asnjë përdorues që punon me Flash. Dhe duke u përpjekur të përcaktojmë nëse shfletuesi i përdoruesit e mbështet atë, ne humbasim rreth 2 sekonda nga koha e çmuar.

Këtu është një përmbledhje e shkurtër e ndryshimeve që ju presin në sistemin tonë të mbikqyrjes video në cloud dhe llogarinë personale. Qëndroni me ne dhe ndiqni lajmet!

Burimi: www.habr.com

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster