{"id":32314,"date":"2019-10-31T21:46:17","date_gmt":"2019-10-31T18:46:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer\/"},"modified":"2019-10-31T21:46:17","modified_gmt":"2019-10-31T18:46:17","slug":"webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","title":{"rendered":"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere\" src=\"\/wp-content\/uploads\/2019\/04\/d185b546f5fc4c15021481c0cc2fedbd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDin primele zile de lucru asupra sistemului de supraveghere video \u00een cloud, ne-am confruntat cu o problem\u0103, f\u0103r\u0103 solu\u021bia c\u0103reia Ivideon ar fi fost sortit e\u0219ecului \u2013 a fost Everestul nostru, al c\u0103rui ascensiune ne-a consumat mult\u0103 energie, dar acum, \u00een sf\u00e2r\u0219it, am reu\u0219it s\u0103 plant\u0103m un ice-axe \u00een v\u00e2rful acestui puzzle multiplatform\u0103.<\/p>\n<p>Sistemul de transmitere a sunetului \u0219i video-ului prin Internet nu trebuie s\u0103 depind\u0103 de echipamentele hardware, clien\u021bii web \u0219i standardele suportate de acestea, \u0219i, de asemenea, trebuie s\u0103 func\u021bioneze corect \u00een prezen\u021ba Network Address Translators \u0219i a firewall-urilor. Utilizatorul sistemului de supraveghere video \u00een cloud dore\u0219te s\u0103 aib\u0103 acces la serviciu, chiar dac\u0103 utilizeaz\u0103 camere analogice, iar transmisiile live prefer\u0103 s\u0103 le vizioneze pe cele mai moderne dispozitive. <\/p>\n<p>Este foarte important ca utilizatorul s\u0103 vizioneze video cu o laten\u021b\u0103 minim\u0103. Practic, singura modalitate de a afi\u0219a video cu laten\u021b\u0103 sc\u0103zut\u0103 \u00een browser este de a utiliza WebRTC (comunic\u0103ri web \u00een timp real). WebRTC este un set de tehnologii pentru transmiterea peer-to-peer a video-ului \u0219i sunetului \u00een browsere, destinat ini\u021bial transmiterii \u0219i red\u0103rii fluxurilor video cu laten\u021b\u0103 sc\u0103zut\u0103. Acest lucru implic\u0103, printre altele, utilizarea protocolului UDP.<\/p>\n<p>\u00cenainte de a v\u0103 spune ce le ofer\u0103 utilizatorului noul motor, v\u0103 vom aminti de ce \u0219i pentru ce sus\u021binem tehnologiile HLS \u0219i de ce am decis s\u0103 avans\u0103m.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Motorul HLS: avantaje \u0219i dezavantaje<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere\" src=\"\/wp-content\/uploads\/2019\/04\/f025d08eb22f7785090b8bc60194643c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(<noindex><a rel=\"nofollow\" href=\"https:\/\/www.encoding.com\/http-live-streaming-hls\/\">c<\/a><\/noindex>)<\/p>\n<p>Tehnologia HLS (HTTP Live Streaming) a fost dezvoltat\u0103 de Apple, a\u0219a c\u0103 nu este de mirare c\u0103 sprijinul ini\u021bial a ap\u0103rut pe dispozitivele acestui brand. \u00cen prezent, majoritatea set-top box-urilor \u0219i multe dispozitive care func\u021bioneaz\u0103 pe sistemul de operare Android pot reda videoclipuri \u00een format HLS.<\/p>\n<p>Motorul HLS utilizeaz\u0103 pentru transmiterea video-ului un codec video cunoscut, H264, \u00eempreun\u0103 cu fluxuri audio AAC sau MP3. \u00centregul flux de date audio \u0219i video este ambalat \u00eentr-un container de transport MPEG-TS. Pentru a fi transmis prin protocolul HTTP, informa\u021biile din flux sunt \u00eemp\u0103r\u021bite \u00een fragmente, descrise \u00een playlist-uri m3u8. Doar dup\u0103 aceea aceste fragmente, \u00eempreun\u0103 cu playlist-urile, sunt transmise prin HTTP. \u00cemp\u0103r\u021birea \u00een fragmente implic\u0103 automat o \u00eent\u00e2rziere \u00een secunde. Aceast\u0103 caracteristic\u0103 a containerului MPEG-TS. <\/p>\n<p>Motorul HLS suport\u0103, de asemenea, fluxuri multiple cu bitrate-uri diferite, Live\/VOD. <\/p>\n<p><b>Principalele avantaje ale HLS:<\/b><\/p>\n<ul>\n<li>suport \u00eencorporat \u00een toate browserele principale;<\/li>\n<li>u\u0219urin\u021ba de implementare (comparativ cu WebRTC);<\/li>\n<li>este foarte convenabil \u0219i eficient s\u0103 organiza\u021bi diverse transmisii pentru un public mare, deoarece pute\u021bi \u00eenc\u0103rca segmente pe CDN o singur\u0103 dat\u0103.<\/li>\n<\/ul>\n<p>\nCu toate c\u0103 motorul este simplu, lucrurile nu sunt at\u00e2t de u\u0219oare pe c\u00e2t par. Principala problem\u0103 este c\u0103 dezvoltatorii de playere ter\u021b\u0103 parte s-au distan\u021bat de recomand\u0103rile Apple, de exemplu, \u00een ceea ce prive\u0219te formatele audio acceptate. \u00cen special, mul\u021bi dezvoltatori au \u00eenceput s\u0103 adauge func\u021bionalitatea de a lucra cu fluxuri audio populare: video mpeg2, audio mpeg2 \u0219i altele. Din aceast\u0103 cauz\u0103, a fost necesar s\u0103 se creeze formate diferite de liste de redare pentru diferite playere.<\/p>\n<p>Dar una dintre cele mai mari probleme ale motorului HLS este \u00eent\u00e2rzierea mare \u00een transmisia datelor.<\/p>\n<h2>Istoricul \"\u00eent\u00e2rzierilor\"<\/h2>\n<p>\nPrincipala cauz\u0103 a \u00eent\u00e2rzierii mari la HLS se \u00eendreapt\u0103 spre faptul c\u0103 programatorii au creat motorul pentru a ob\u021bine o calitate maxim\u0103 a imaginii. Prin urmare, parametrii intervalului de cadre utilizat \u0219i dimensiunea buffer-ului de redare pur \u0219i simplu nu se potrivesc pentru desf\u0103\u0219urarea transmisiunilor video live. Din acest motiv, apare o \u00eent\u00e2rziere destul de mare \u00een transmisia video, care poate ajunge la 5-7 secunde.<\/p>\n<p>Pe de o parte, aceasta este o \u00eent\u00e2rziere mic\u0103, de exemplu, pentru cei care vizioneaz\u0103 un film de pe un server de video hosting. Dar pentru sistemele de supraveghere, \u00eent\u00e2rzierea \u00een transmisia video poate avea o importan\u021b\u0103 foarte mare.<\/p>\n<p>Dac\u0103 observa\u021bi un birou unde angaja\u021bii se deconecteaz\u0103 o dat\u0103 pe or\u0103 de la monitoare, atunci o \u00eent\u00e2rziere de 5 secunde nu are nicio importan\u021b\u0103. Dar utilizatorii au \u00eenceput s\u0103 se pl\u00e2ng\u0103 c\u0103, de exemplu, \u00een timpul transmiterii unui meci de fotbal, \u00een chat s-a scris deja GOOOOOL, dar \u00een video nu a ap\u0103rut \u00eenc\u0103 :). Avem deja o serie de cazuri de utilizare \u00een care Ivideon trebuie s\u0103 \u00eenlocuiasc\u0103 practic Skype.<\/p>\n<p>Se poate \u00eenfrunta \u00eent\u00e2rzierea \u00een HLS? R\u0103spunsul la aceast\u0103 \u00eentrebare sun\u0103 ca un discurs al unui fum\u0103tor experimentat de \u0219obolani la o lec\u021bie \u00een fa\u021ba deratizatorilor \u00eenceputori: \u201e\u0218obolanii nu pot fi extermina\u021bi, dar popula\u021bia lor poate fi redus\u0103 la un minim rezonabil\u201d. La fel este \u0219i cu \u00eent\u00e2rzierea \u00een HLS, nu o putem elimina complet, dar pe pia\u021b\u0103 exist\u0103 solu\u021bii care permit reducerea semnificativ\u0103 a \u00eent\u00e2rzierii.<\/p>\n<h2>T\u0103ieturi mici<\/h2>\n<p>\nO alt\u0103 problem\u0103 a motorului este utilizarea fi\u0219ierelor mici pentru transmisia datelor. S-ar p\u0103rea c\u0103 ce poate fi r\u0103u \u00een asta?<\/p>\n<p>Oricine a \u00eencercat s\u0103 copieze un num\u0103r mare de fi\u0219iere mici de pe un suport pe altul a observat cu siguran\u021b\u0103 c\u0103 viteza de scriere pentru un astfel de set este mult mai mic\u0103 dec\u00e2t cea a unui singur fi\u0219ier mare cu acela\u0219i volum. De asemenea, intensitatea acces\u0103rii discului dur cre\u0219te semnificativ, ceea ce afecteaz\u0103 \u00een general performan\u021ba \u00eentregului computer. Prin urmare, transmiterea datelor video sub form\u0103 de fragmente mici de 10 secunde contribuie de asemenea la o \u00eent\u00e2rziere mai mare a motorului.<\/p>\n<p>S\u0103 rezum\u0103m pe scurt toate avantajele \u0219i dezavantajele tehnologiei HLS.<\/p>\n<p><b>Avantajele HLS:<\/b><\/p>\n<ol>\n<li>Posibilitatea de a func\u021biona cu orice dispozitiv. Pute\u021bi viziona video pe orice dispozitiv modern, fie c\u0103 este vorba de smartphone, tablet\u0103, laptop sau PC desktop. Principalul lucru este ca browserul web s\u0103 fie o versiune modern\u0103 \u0219i s\u0103 fie compatibil cu HTML5 \u0219i Media Source Extensions.<\/li>\n<li>Calitate excelent\u0103 a imaginii. Func\u021bia utilizat\u0103 de transmitere adaptiv\u0103 a datelor permite schimbarea dinamic\u0103 a calit\u0103\u021bii fluxului video \u00een func\u021bie de l\u0103\u021bimea de band\u0103 a conexiunii la internet, iar algoritmul tinde s\u0103 men\u021bin\u0103 calitatea la maxim.<\/li>\n<li>Nu este nevoie de o configurare complex\u0103 a echipamentului utilizatorului.<\/li>\n<\/ol>\n<p>\n<b>Dezavantaje:<\/b><\/p>\n<ol>\n<li>Suport limitat pentru func\u021bionarea motorului pe anumite dispozitive.<\/li>\n<li>\u00cent\u00e2rzieri mari \u00een transmiterea imaginii.<\/li>\n<li>Cre\u0219terea semnificativ\u0103 a cheltuielilor \u0219i complexitatea optimiz\u0103rii din cauza utiliz\u0103rii fi\u0219ierelor de dimensiuni mici. Datorit\u0103 caracteristicilor containerului, nu vom putea ob\u021bine niciodat\u0103 o \u00eent\u00e2rziere mai mic\u0103 dec\u00e2t dimensiunea segmentului.<\/li>\n<\/ol>\n<p>\nDezavantajele HLS au dep\u0103\u0219it pentru noi avantajele sale \u0219i ne-au f\u0103cut s\u0103 c\u0103ut\u0103m op\u021biuni alternative.<\/p>\n<h2>Ce este WebRTC<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere\" src=\"\/wp-content\/uploads\/2019\/04\/0cf3c13dba71f6b268113af77841e521.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(<noindex>c<\/noindex>)<\/p>\n<p>Platforma WebRTC a fost dezvoltat\u0103 de Google \u00een 2011 pentru a transmite date video \u0219i audio \u00een flux \u00eentre browsere \u0219i aplica\u021bii mobile cu o \u00eent\u00e2rziere minim\u0103. Acest lucru se face prin utilizarea protocolului standard UDP \u0219i a unor algoritmi speciali de control al fluxului. Ast\u0103zi, este un proiect cu surs\u0103 deschis\u0103, care este activ sus\u021binut de Google \u0219i \u00een dezvoltare.<\/p>\n<p>WebRTC este un set de tehnologii pentru transmiterea video \u0219i audio peer-to-peer. Adic\u0103, de exemplu, browserele utilizatorilor pot transmite date direct \u00eentre ele, f\u0103r\u0103 a utiliza servere externe pentru stocarea \u0219i procesarea datelor. Toate informa\u021biile sunt de asemenea procesate de browsere \u0219i aplica\u021bii mobile ale utilizatorilor finali.<\/p>\n<p>Confortul \u0219i capacit\u0103\u021bile mari ale acestei tehnologii au fost apreciate de dezvoltatorii tuturor browserelor populare. \u00cen prezent, suportul pentru WebRTC este implementat \u00een Mozilla Firefox, Opera, Google Chrome (\u0219i toate browserele bazate pe Chromium), precum \u0219i \u00een aplica\u021biile mobile pentru Android \u0219i iOS.<\/p>\n<p>\u00cen ciuda tuturor calit\u0103\u021bilor sale incontestabile, WebRTC are c\u00e2teva dezavantaje semnificative. <\/p>\n<h2>Dificult\u0103\u021bi de alegere<\/h2>\n<p>\nTehnologia WebRTC este mult mai complicat\u0103 \u00een ceea ce prive\u0219te interac\u021biunile de re\u021bea, deoarece este bazat\u0103 pe P2P. Este greu de debug-uit, testat \u0219i poate avea un comportament imprevizibil. \u00cen plus, trebuie s\u0103 dep\u0103\u0219im NAT-ul \u0219i firewall-urile, necesit\u00e2nd asigurarea func\u021bion\u0103rii \u00een re\u021bele unde UDP este blocat.<\/p>\n<p>Implementarea WebRTC de la Google este foarte greu de utilizat. Exist\u0103 chiar o \u00eentreag\u0103 companie care ofer\u0103 servicii de construc\u021bie a SDK-ului. \u00cen plus, integrarea solu\u021biei de la Google cu sistemul nostru a fost foarte dificil\u0103, astfel \u00eenc\u00e2t s\u0103 nu fie necesar\u0103 recompunerea \u00eentregului video.<\/p>\n<p>Cu toate acestea, ne-am dorit de mult timp s\u0103 oferim utilizatorilor posibilitatea de a lucra cu un flux video 'live' complet \u0219i de a minimiza decalajul imaginii de pe ecran fa\u021b\u0103 de evenimentele \u00een sine. \u00cen plus, am dorit s\u0103 facem utilizarea camerelor PTZ mai confortabil\u0103, unde \u00eent\u00e2rzierile au o semnifica\u021bie critic\u0103.<\/p>\n<p>Av\u00e2nd \u00een vedere c\u0103 alte solu\u021bii pentru combaterea \u00eent\u00e2rzierilor au, deocamdat\u0103, func\u021bionalitate limitat\u0103 \u0219i func\u021bioneaz\u0103 semnificativ mai r\u0103u, am decis s\u0103 folosim WebRTC. <\/p>\n<h2>Ce am f\u0103cut<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere\" src=\"\/wp-content\/uploads\/2019\/04\/714f94de43114e552e4d818e9ec927ae.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIntegrarea eficient\u0103 a platformei WebRTC nu este o sarcin\u0103 u\u0219oar\u0103. Orice calcule gre\u0219ite sau inexactit\u0103\u021bi pot duce la faptul c\u0103 \u00eent\u00e2rzierile \u00een transmiterea fluxului video nu numai c\u0103 nu scad fa\u021b\u0103 de alte platforme, ci pot chiar cre\u0219te.<\/p>\n<p>Pentru func\u021bionarea corect\u0103 a WebRTC, mai \u00eent\u00e2i trebuie realizat\u0103 o modernizare tehnologic\u0103 a stivei pentru a lucra cu video-web. Acesta a fost ceea ce am realizat.<\/p>\n<p>La \u00eenceput, am implementat serverul de semnalizare WebRTC peste Websocket \u0219i am desf\u0103\u0219urat un server peer WebRTC \u00een cloud bazat pe SDK webrtc.org. Rolul s\u0103u este de a distribui fluxuri video c\u0103tre clien\u021bii peer WebRTC \u00een format H.264 + Opus\/G.711 f\u0103r\u0103 recodificarea video.<\/p>\n<p>Am ales Websocket ca protocol de semnalizare deoarece beneficiaz\u0103 deja de un suport de calitate \u00een toate browserele web populare. Acest lucru permite reducerea semnificativ\u0103 nu doar a cheltuielilor de dezvoltare, ci \u0219i a timpului \u0219i resurselor necesare pentru re\u00eenc\u0103rc\u0103rile TCP \u0219i TLS \u00een compara\u021bie cu AJAX.<\/p>\n<p>Problema este c\u0103, \u00een mod implicit, WebRTC nu ofer\u0103 un protocol de semnalizare necesar pentru configurarea, \u00eentre\u021binerea \u0219i \u00eentreruperea corect\u0103 a comunica\u021biei video \u00een timp real \u00eentre aplica\u021biile de surs\u0103 \u0219i cele client.<\/p>\n<p>\u0218i pentru a implementa tehnologia de semnalizare pe cont propriu, a fost necesar s\u0103 dezvolt\u0103m propriul server de semnalizare cu suport pentru mai multe protocoale web (Websocket, WebRTC). De asemenea, cu posibilit\u0103\u021bi de gestionare sigur\u0103 a sesiunilor \u0219i notific\u0103rilor \u00een timp real, gestionarea video \u0219i multe alte parametrii.<\/p>\n<p>Am dep\u0103\u0219it limit\u0103rile P2P reduc\u00e2nd laten\u021ba nu prin P2P, ci prin UDP \u0219i gestionarea fluxului pentru a reduce \u00eent\u00e2rzierea. Acest lucru este, de asemenea, \u00eencorporat \u00een WebRTC, av\u00e2nd \u00een vedere c\u0103 principalul caz de utilizare este conversa\u021biile p2p prin browser.<\/p>\n<p>\u00cen clientul mobil, am realizat un player folosind SDK webrtc.org, deoarece doar acesta a implementat corect gestionarea fluxului, are toate schemele cunoscute de Forward Error Correction (FEC) \u0219i a implementat corect mecanismul de retransmitere a pachetelor pentru toate browserele. Un alt aspect important este c\u0103 SDK webrtc.org este activ dezvoltat de Google.<\/p>\n<h2>Care este rezultatul implement\u0103rii WebRTC?<\/h2>\n<p>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/vk.com\/video_ext.php\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><br \/>\nPentru a viziona flux video live din camere, am ad\u0103ugat \u00een cabinetul personal un nou player optimizat bazat pe WebRTC. Acesta asigur\u0103 o vitez\u0103 mare de \u00eenc\u0103rcare a fluxului video \u0219i elimin\u0103 complet problema acumul\u0103rii \u00eent\u00e2rzierii pe m\u0103sur\u0103 ce timpul de vizionare cre\u0219te.<\/p>\n<p>Dup\u0103 implementarea suportului WebRTC \u00een serviciul cloud Ivideon, putem afirma cu \u00eencredere c\u0103 acum clien\u021bii no\u0219tri pot viziona video \u00een direct complet. Acum, \u00eent\u00e2rzierea \u00een transmiterea fluxului video nu dep\u0103\u0219e\u0219te un secund\u0103! Spre deosebire, vechiul motor HLS asigura livrarea video cu o \u00eent\u00e2rziere de 5-7 secunde. Diferen\u021ba de vitez\u0103 a demonstr\u0103rii video este foarte semnificativ\u0103, iar utilizatorul o va observa imediat dup\u0103 ce \u00eencepe s\u0103 utilizeze serviciul nostru video.<\/p>\n<p>A\u0219a cum ne-am a\u0219teptat, implementarea noului player a permis cre\u0219terea reac\u021biei PTZ \u0219i a comunic\u0103rii vocale cu camera.<\/p>\n<p><img decoding=\"async\" alt=\"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere\" src=\"\/wp-content\/uploads\/2019\/04\/b6775b11fbc6d97a7cede32cccc471ab.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExist\u0103 un singur aspect subtil asupra c\u0103ruia dorim s\u0103 atragem aten\u021bia. Noul player WebRTC func\u021bioneaz\u0103 deocamdat\u0103 \u00een modul de testare. Din acest motiv, nu \u00eel activ\u0103m pentru to\u021bi clien\u021bii no\u0219tri \u00een mod implicit. Dar \u00eel pute\u021bi activa singuri, activ\u00e2nd op\u021biunea corespunz\u0103toare \u00een set\u0103rile camerei (pentru aceasta trebuie s\u0103 accesa\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.ivideon.com\/my\/\">panoul de control<\/a><\/noindex>).<\/p>\n<h2>Particularit\u0103\u021bile implement\u0103rii WebRTC \u00een serviciul Ivideon<\/h2>\n<p>\n<img decoding=\"async\" alt=\"WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere\" src=\"\/wp-content\/uploads\/2019\/04\/247e640fa9334a0c144cc6b4296dc23b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWebRTC este \u00een prezent o tehnologie experimental\u0103. Suportul s\u0103u nu este \u00eenc\u0103 implementat corect \u00een toate browserele \u0219i dispozitivele utilizatorilor, precum \u0219i \u00een toate camerele.<\/p>\n<p>Acest fapt explic\u0103 de ce nu am f\u0103cut WebRTC playerul principal pentru to\u021bi utilizatorii deocamdat\u0103.<\/p>\n<p>Deocamdat\u0103 recomand\u0103m utilizarea WebRTC doar \u00een browserele Google Chrome. Cele mai recente versiuni de Firefox \u0219i Safari suport\u0103 de asemenea aceast\u0103 tehnologie, dar, din p\u0103cate, \u00eenc\u0103 instabil. <\/p>\n<p>Nu am implementat \u00eenc\u0103 suportul WebRTC pentru browserele de pe dispozitivele mobile. Acum, dac\u0103 accesa\u021bi de pe un dispozitiv mobil \u0219i activa\u021bi WebRTC, acest mod nu va func\u021biona. Cu toate acestea, WebRTC este disponibil \u00een aplica\u021biile noastre mobile pentru <noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.ivideon.client&amp;hl=ru\">Android<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/itunes.apple.com\/ru\/app\/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D0%BD%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-ivideon\/id464234175?mt=8\">iOS<\/a><\/noindex>.<\/p>\n<p>\u0218i \u00een \u00eencheiere, discut\u00e2nd despre particularit\u0103\u021bile implement\u0103rii WebRTC \u00een serviciul nostru, men\u021bion\u0103m \u00eenc\u0103 dou\u0103 aspecte subtile.<\/p>\n<p>\u00cen primul r\u00e2nd, tehnologia este orientat\u0103 spre transmiterea video \u00een timp real. Prin urmare, dac\u0103 l\u0103\u021bimea de band\u0103 a canalului dvs. nu este suficient\u0103 pentru transmiterea fluxului video, ve\u021bi observa caderea cadrelor (cu HLS, ve\u021bi observa \u00eenghe\u021barea video \u0219i cre\u0219terea \u00eent\u00e2rzierei, dar cadrele nu vor c\u0103dea), \u00eens\u0103 video va fi \u00een continuare transmis \u00een timp real.<\/p>\n<p>\u00cen al doilea r\u00e2nd, deoarece tehnologia este destinat\u0103 s\u0103 func\u021bioneze exact cu video live \u00een timp real, nu o folosim pentru a lucra cu date video arhivate.<\/p>\n<h2>Alte modific\u0103ri \u00een serviciu<\/h2>\n<p>\n\u00cen prezent, Flash nu mai este implicat \u00een mecanismul de selec\u021bie automat\u0103 a motorului. Este \u00eenc\u0103 posibil s\u0103 folosi\u021bi un astfel de player, dar pentru aceasta trebuie s\u0103-l selecta\u021bi manual \u00een set\u0103rile contului sau ale camerei. Nu este o chestiune de mod\u0103, pur \u0219i simplu, conform statisticilor noastre de utilizare, utilizatorii care lucreaz\u0103 cu Flash aproape c\u0103 nu mai exist\u0103. \u0218i \u00een tentativa de a determina dac\u0103 browserul utilizatorului \u00eel suport\u0103, pierdem aproximativ 2 secunde din timp pre\u021bios. <\/p>\n<p>Iat\u0103 pe scurt modific\u0103rile pe care le ve\u021bi \u00eent\u00e2lni \u00een sistemul nostru de supraveghere video cloud \u0219i \u00een portalul personal. R\u0103m\u00e2ne\u021bi al\u0103turi de noi \u0219i urm\u0103ri\u021bi nout\u0103\u021bile!<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ivideon\/blog\/449326\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0431\u0435\u0437 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430 Ivideon \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0440\u0435\u0441\u0442 \u2013 \u044d\u0442\u043e \u0431\u044b\u043b \u043d\u0430\u0448 \u042d\u0432\u0435\u0440\u0435\u0441\u0442, \u0432\u043e\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043d\u044f\u043b\u043e \u0443\u0439\u043c\u0443 \u0441\u0438\u043b, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e, \u0432\u043e\u0442\u043a\u043d\u0443\u043b\u0438 \u043b\u0435\u0434\u043e\u0440\u0443\u0431 \u0432 \u043c\u0430\u043a\u0443\u0448\u043a\u0443 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0431\u0443\u0441\u0430. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u0432\u0443\u043a\u0430 \u0438 \u0432\u0438\u0434\u0435\u043e \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, Web-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32314","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47WebRTC \u0438 \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0438\u0434\u0435\u043e \u0441 \u043a\u0430\u043c\u0435\u0440 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:46:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47WebRTC \u0219i supravegherea video: cum am \u00eenvins \u00eent\u00e2rzierea video de la camere | ProHoster","description":"Din primele zile de lucru la.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47WebRTC \u0438 \u0432\u0438\u0434\u0435\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0431\u0435\u0434\u0438\u043b\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0443 \u0432\u0438\u0434\u0435\u043e \u0441 \u043a\u0430\u043c\u0435\u0440 | ProHoster","og:description":"\u0421 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/webrtc-i-videonablyudenie-kak-my-pobedili-zaderzhku-video-s-kamer","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:46:17+00:00","article:modified_time":"2019-10-31T18:46:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32314","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 10:17:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:17:44","updated":"2026-01-21 10:17:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=32314"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32314\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/24131"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=32314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=32314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=32314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}