
Des dels primers dies de treball en un sistema de videovigilància al núvol, ens vam trobar davant d'un problema, sense una solució al qual podríem renunciar a Ivideon: aquest era el nostre Everest, una escalada que va costar molta energia, però ara per fi tenim va enganxar un piolet a la part superior del trencaclosques multiplataforma.
El sistema de transmissió d'àudio i vídeo a través d'Internet no ha de dependre dels equips, dels clients web i dels estàndards que admeten, i també funciona correctament en presència de traductors d'adreces de xarxa i tallafocs. Un usuari de videovigilància al núvol vol accedir al servei, encara que faci servir càmeres analògiques, i prefereix veure l'emissió de vídeo en directe amb el dispositiu més modern.
És molt significatiu que l'usuari vulgui veure vídeos amb un retard mínim. Gairebé l'única manera de mostrar vídeos amb una latència baixa en un navegador és utilitzar WebRTC (comunicacions web en temps real). WebRTC és un conjunt de tecnologies per a la transmissió peer-to-peer de vídeo i àudio en navegadors, dissenyades inicialment per a la transmissió i reproducció de fluxos de vídeo amb baixa latència. Amb aquesta finalitat, entre altres coses, s'utilitza el protocol UDP.
Abans d'explicar-vos què ofereix el nou motor a l'usuari, us recordarem per què i per què donem suport a les tecnologies HLS i per què hem decidit seguir endavant.
Motor HLS: pros i contres

()
La tecnologia HLS (HTTP Live Streaming) va ser desenvolupada per Apple, per la qual cosa no és estrany que fos compatible amb els dispositius Apple per primera vegada. Avui dia, el vídeo HLS també és compatible amb pràcticament tots els descodificadors i molts dispositius que executen el sistema operatiu. Android.
El motor HLS utilitza el conegut còdec de vídeo H264 en combinació amb fluxos d'àudio AAC o MP3 per transmetre dades de vídeo. Tot el flux de dades d'àudio i vídeo s'empaqueta en un contenidor de transport MPEG-TS. Per a la transmissió mitjançant el protocol HTTP, la informació continguda en el flux es divideix en fragments descrits a les llistes de reproducció m3u8. I només llavors aquests fragments, juntament amb les llistes de reproducció, es transmeten mitjançant HTTP. La fragmentació automàtica significa un retard en segons. Aquesta és una característica del contenidor MPEG-TS.
El motor HLS també admet fluxos multibitrate, Live/VOD.
Principals avantatges de HLS:
- suport integrat en tots els navegadors principals;
- facilitat d'implementació (en comparació amb WebRTC);
- És molt còmode i eficient organitzar tot tipus d'emissions per a una gran audiència, ja que els segments es poden pujar a un CDN una vegada.
Malgrat la senzillesa del motor, no tot és tan suau com sembla. El principal problema és que els desenvolupadors de reproductors de tercers s'han allunyat de les recomanacions d'Apple, per exemple, pel que fa als formats d'àudio compatibles. En particular, molts desenvolupadors van començar a afegir la capacitat de treballar amb fluxos d'àudio populars: vídeo mpeg2, àudio mpeg2, etc. Com a resultat, van haver de crear diferents formats de llistes de reproducció per a diferents reproductors.
Però un dels problemes més grans del motor HLS és l'alta latència en la transferència de dades.
Els orígens dels "fres"
El motiu principal de l'alta latència d'HLS rau en el fet que els programadors van crear el motor per obtenir imatges de la màxima qualitat. Per tant, els paràmetres de l'interval de fotogrames utilitzats i la mida de la memòria intermèdia de reproducció simplement no són adequats per a les emissions de vídeo en directe. A causa d'això, hi ha un retard força elevat en la transmissió d'imatges de vídeo, que pot ser de 5 a 7 segons.
D'una banda, això no és gaire, per exemple, per a aquells que veuen una pel·lícula des d'un servidor d'allotjament de vídeo. Però per als sistemes de videovigilància, el retard en la transmissió de les imatges de vídeo pot ser molt important.
Si mireu una oficina on els empleats miren des dels seus monitors una vegada per hora, un retard de 5 segons no importa gens. Però la gent va començar a queixar-se que, per exemple, quan emetia un partit de futbol, ja escrivien GOOOOL al xat, però això encara no apareix al vídeo :). Ja tenim una sèrie de casos d'usuari en què Ivideon pràcticament hauria de substituir Skype.
És possible superar la latència en HLS? La resposta a aquesta pregunta sembla el discurs d'un exterminador de rates experimentat en una conferència a especialistes novells en control de plagues: "Les rates no es poden exterminar, però el seu nombre es pot reduir a un mínim raonable". Igual que amb el retard en HLS, no serà possible reduir-lo a zero, però hi ha solucions al mercat que poden reduir significativament el retard.
Talls fins
Un altre desavantatge del motor és l'ús de fitxers petits per a la transferència de dades. Sembla que què hi ha de dolent amb això?
Qualsevol que hagi intentat copiar un gran nombre de fitxers petits d'un mitjà a un altre probablement s'ha adonat que la velocitat d'escriptura d'aquest conjunt és molt inferior a la d'un fitxer gran de la mateixa mida. I la intensitat d'accés al disc dur augmenta significativament, cosa que generalment afecta negativament el rendiment de tot l'ordinador. Per tant, la transmissió de dades de vídeo en petits fragments de 10 segons també contribueix a augmentar la latència del motor.
Resumim breument tots els avantatges i els contres de la tecnologia HLS.
Avantatges de l'HLS:
- Capacitat de treballar amb qualsevol dispositiu. Podeu veure vídeos en qualsevol dispositiu modern, ja sigui un telèfon intel·ligent, una tauleta, un ordinador portàtil o un ordinador de sobretaula. El més important és que el navegador web estigui actualitzat i compatible amb HTML5 i extensions de fonts multimèdia.
- Excel·lent qualitat d'imatge. La funció de transmissió de dades adaptativa utilitzada us permet canviar dinàmicament la qualitat del vídeo transmès en funció de l'ample de banda de la connexió a Internet, mentre que l'algorisme s'esforça per mantenir la màxima qualitat.
- No cal una configuració complexa de l'equip de l'usuari.
Desavantatges:
- Suport limitat per treballar amb el motor en alguns dispositius.
- Alts retards en la transmissió de la imatge.
- Augment significatiu de la sobrecàrrega i la complexitat de l'optimització a causa de l'ús de fitxers petits. A causa de la naturalesa del contenidor, mai podrem obtenir una latència inferior a la mida del segment.
Els inconvenients de l'HLS van superar els seus avantatges per a nosaltres i ens van obligar a buscar opcions alternatives.
Què és WebRTC

()
La plataforma WebRTC va ser desenvolupada per Google l'any 2011 per transmetre dades de vídeo i àudio en streaming entre navegadors i aplicacions mòbils amb una latència mínima. Per a això, s'utilitzen el protocol UDP estàndard i algorismes especials de control de flux. Avui és un projecte de codi obert, Google el manté activament i s'està desenvolupant.
WebRTC és un conjunt de tecnologies per a la transmissió d'àudio i vídeo peer-to-peer. És a dir, per exemple, els navegadors d'usuari que utilitzen WebRTC poden transferir dades entre ells directament, sense utilitzar servidors remots per emmagatzemar i processar dades. Tota la informació també és processada pels navegadors i aplicacions mòbils dels usuaris finals.
La comoditat i les àmplies capacitats d'aquesta tecnologia han estat apreciades pels desenvolupadors de tots els navegadors populars. Actualment, la compatibilitat amb WebRTC està disponible a Mozilla Firefox, Opera, Google Chrome (i tots els navegadors basats en Chromium), així com a les aplicacions mòbils que s'executen. Android i iOS.
Malgrat tots els seus indubtables avantatges, WebRTC té diversos desavantatges importants.
Dificultats d'elecció
La tecnologia WebRTC és molt més complexa pel que fa a les interaccions de xarxa a causa del fet que es tracta de P2P. És difícil depurar, provar i es pot comportar de manera imprevisible. Al mateix temps, hem de superar NAT i tallafocs, hem de garantir el funcionament en xarxes on UDP està bloquejat.
La implementació WebRTC de Google és molt difícil d'utilitzar. Fins i tot hi ha una empresa sencera que ofereix serveis de muntatge d'SDK. A més, la implementació de Google va ser molt difícil d'integrar amb el nostre sistema sense tornar a codificar tot el vídeo.
No obstant això, fa temps que volíem oferir als usuaris l'oportunitat de treballar amb un vídeo "en directe" complet i minimitzar el retard entre la imatge a la pantalla i els esdeveniments en si. A més, teníem el desig de fer més còmode l'ús de càmeres PTZ, on els retards són crítics.
Tenint en compte que altres implementacions anti-lag encara tenen una funcionalitat limitada i funcionen notablement pitjor, vam decidir utilitzar WebRTC.
Què hem fet

Implementar correctament la plataforma WebRTC no és una tasca fàcil. Qualsevol error de càlcul o inexactitud pot provocar que els retards en la transmissió de vídeo no només no disminueixin en comparació amb altres plataformes, sinó que fins i tot augmentin.
Perquè WebRTC funcioni correctament, en primer lloc, cal realitzar una actualització tecnològica de la pila per treballar amb vídeo web. Això és el que vam fer.
Primer, vam implementar un servidor de protocol de senyalització WebRTC a Websocket i també vam implementar un servidor WebRTC igual al núvol basat en l'SDK webrtc.org. La seva tasca és distribuir fluxos de vídeo als clients WebRTC iguals en format H.264 + Opus/G.711 sense transcodificació de vídeo.
Hem escollit Websocket com a protocol de senyalització perquè ja té suport d'alta qualitat en tots els navegadors web populars. A causa d'això, podeu reduir significativament no només la sobrecàrrega de desenvolupament, sinó també evitar perdre temps i recursos en encaixades de mans TCP i TLS repetides en comparació amb AJAX.
El fet és que, per defecte, WebRTC no proporciona el protocol de senyalització necessari per configurar, mantenir i finalitzar correctament la comunicació de vídeo en temps real entre les aplicacions font i client.
I per implementar de manera independent la tecnologia de senyalització, vam necessitar desenvolupar el nostre propi servidor de senyalització amb suport per a diversos protocols web (Websocet, WebRTC). I amb la possibilitat de gestionar de manera segura sessions i notificacions en temps real, gestió de vídeos i molt més.
Hem superat les limitacions de P2P reduint la latència no mitjançant P2P, sinó mitjançant UDP i control de flux per reduir la latència. Això també està integrat a WebRTC, ja que el cas d'ús principal són les converses p2p mitjançant un navegador.
En el client mòbil, hem implementat el reproductor mitjançant l'SDK webrtc.org, ja que només implementa correctament el control de flux, té tots els esquemes de correcció d'errors directes (FEC) coneguts i implementa correctament el mecanisme de reenviament de paquets per a tots els navegadors. També és important que l'SDK webrtc.org estigui sent desenvolupat activament per Google.
Quin és el resultat de la implementació de WebRTC?
Per veure el vídeo en directe des de les càmeres, hem afegit un nou reproductor optimitzat basat en WebRTC al vostre compte personal. Proporciona velocitats ràpides de càrrega de vídeo i elimina completament el problema de la latència acumulada a mesura que augmenta el temps de visualització.
Després d'introduir el suport WebRTC al servei al núvol d'Ivideon, podem dir amb total confiança que els nostres clients ara poden veure vídeos en directe complets. Ara el retard a l'hora d'emetre seqüències de vídeo no supera un segon! Com a comparació, el motor HLS anterior proporcionava l'entrega de vídeo amb un retard de 5-7 segons. La diferència de velocitat de demostració de vídeo és molt important i l'usuari la notarà immediatament després de començar a treballar amb el nostre servei de vídeo.
Com esperàvem, la implementació del nou reproductor ha millorat la capacitat de resposta de la PTZ i la comunicació de veu amb la càmera.

Només hi ha un punt subtil sobre el qual volem cridar l'atenció. El nou reproductor WebRTC està treballant actualment en mode de prova. I és per això que no l'activem per defecte per a tots els nostres clients. Però podeu activar-lo vosaltres mateixos activant l'element corresponent a la configuració de la càmera (per fer-ho, aneu a ).
Característiques de la implementació de WebRTC al servei Ivideon

WebRTC encara és una tecnologia experimental en aquest moment. El seu suport encara no està implementat correctament en tots els navegadors i dispositius d'usuari, i tampoc en totes les càmeres.
Precisament per això encara no hem fet que el reproductor WebRTC sigui per defecte per a tots els usuaris.
De moment, us recomanem que utilitzeu WebRTC només als navegadors Google Chrome. Les últimes versions de Firefox i Safari també admeten aquesta tecnologia, però, malauradament, encara és inestable.
Encara no hem implementat el suport WebRTC per als navegadors en dispositius mòbils. Actualment, si inicieu sessió des d'un dispositiu mòbil i activeu WebRTC, aquest mode no funcionarà. Tanmateix, WebRTC està disponible a les nostres aplicacions mòbils per и .
I per concloure la història sobre les característiques de la implementació de WebRTC al nostre servei, observem dos punts més subtils.
En primer lloc, la tecnologia se centra a transmetre vídeo en directe en temps real. Per tant, si el vostre canal no té prou amplada de banda per transmetre el vídeo, notareu caigudes de fotogrames (amb HLS notareu que el vídeo s'esvaeix i augmenta la latència, però no hi haurà caigudes de fotogrames), però el vídeo encara s'emetrà en real. temps.
En segon lloc, com que la tecnologia està dissenyada per treballar específicament amb vídeo en directe en temps real, no la fem servir per treballar amb dades de vídeo arxivades.
Altres canvis en el servei
En aquest moment, Flash ja no participa en el mecanisme de selecció automàtica del motor. Encara podeu utilitzar aquest reproductor, però per fer-ho heu de seleccionar-lo manualment a la configuració del compte o de la càmera. No es tracta d'un homenatge a la moda, és que segons les estadístiques del nostre servei pràcticament no queden usuaris treballant amb Flash. I intentant determinar si el navegador de l'usuari ho admet, perdem uns 2 segons de temps preciós.
Aquí teniu una breu visió general dels canvis que us esperen al nostre sistema de videovigilància al núvol i al nostre compte personal. Queda't amb nosaltres i segueix les notícies!
Font: www.habr.com
