WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras

WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras

DÚs les premiers jours de travail sur un systÚme de vidéosurveillance cloud, nous avons été confrontés à un problÚme, sans solution auquel nous pouvions abandonner Ivideon - c'était notre Everest, une ascension qui demandait beaucoup d'énergie, mais maintenant nous avons enfin collé un piolet dans le haut du puzzle multiplateforme.

Le systĂšme de transmission audio et vidĂ©o sur Internet ne doit pas dĂ©pendre de l'Ă©quipement, des clients Web et des normes qu'ils prennent en charge, et Ă©galement fonctionner correctement en prĂ©sence de traducteurs d'adresses rĂ©seau et de pare-feu. Un utilisateur de vidĂ©osurveillance cloud souhaite accĂ©der au service, mĂȘme s'il utilise des camĂ©ras analogiques, et prĂ©fĂšre regarder la diffusion vidĂ©o en direct sur l'appareil le plus moderne.

Il est trĂšs important que l'utilisateur souhaite regarder des vidĂ©os dans un dĂ©lai minimal. Presque le seul moyen d'afficher une vidĂ©o avec une faible latence dans un navigateur est d'utiliser WebRTC (communications Web en temps rĂ©el). WebRTC est un ensemble de technologies de transmission peer-to-peer de vidĂ©o et d'audio dans les navigateurs, initialement conçues pour la transmission et la lecture de flux vidĂ©o Ă  faible latence. À cette fin, le protocole UDP est utilisĂ© entre autres.

Avant de vous expliquer ce que le nouveau moteur apporte à l'utilisateur, nous vous rappellerons pourquoi et pourquoi nous soutenons les technologies HLS, et pourquoi nous avons décidé d'aller de l'avant.

Moteur HLS : avantages et inconvénients

WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras
(c)

La technologie HLS (HTTP Live Streaming) a Ă©tĂ© dĂ©veloppĂ©e par Apple ; il n’est donc pas surprenant qu’elle ait d’abord Ă©tĂ© prise en charge par les appareils Apple. Aujourd’hui, la vidĂ©o HLS est Ă©galement compatible avec la quasi-totalitĂ© des dĂ©codeurs et de nombreux appareils fonctionnant sous ce systĂšme d’exploitation. Android.

Le moteur HLS utilise le codec vidéo bien connu H264 en combinaison avec des flux audio AAC ou MP3 pour diffuser des données vidéo. L'intégralité du flux de données audio et vidéo est conditionnée dans un conteneur de transport MPEG-TS. Pour la transmission via le protocole HTTP, les informations contenues dans le flux sont divisées en fragments décrits dans les playlists m3u8. Et alors seulement, ces fragments, ainsi que les listes de lecture, sont transmis via HTTP. Le regroupement signifie automatiquement un délai en secondes. Il s'agit d'une fonctionnalité du conteneur MPEG-TS.

Le moteur HLS prend également en charge les flux multibitrates, Live/VOD.

Principaux avantages du HLS :

  • prise en charge intĂ©grĂ©e dans tous les principaux navigateurs ;
  • facilitĂ© de mise en Ɠuvre (par rapport Ă  WebRTC) ;
  • Il est trĂšs pratique et efficace d'organiser toutes sortes de diffusions auprĂšs d'un large public car les segments peuvent ĂȘtre tĂ©lĂ©chargĂ©s une seule fois sur un CDN.

MalgrĂ© la simplicitĂ© du moteur, tout n’est pas aussi fluide qu’il y paraĂźt. Le principal problĂšme est que les dĂ©veloppeurs de lecteurs tiers se sont Ă©loignĂ©s des recommandations d'Apple, par exemple en termes de formats audio pris en charge. En particulier, de nombreux dĂ©veloppeurs ont commencĂ© Ă  ajouter la possibilitĂ© de travailler avec des flux audio populaires : vidĂ©o mpeg2, audio mpeg2, etc. En consĂ©quence, ils ont dĂ» crĂ©er diffĂ©rents formats de playlist pour diffĂ©rents lecteurs.

Mais l’un des plus gros problĂšmes du moteur HLS est la latence Ă©levĂ©e du transfert de donnĂ©es.

Les origines des « freins »

La principale raison de la latence élevée de HLS réside dans le fait que les programmeurs ont créé le moteur pour obtenir des images de la plus haute qualité. Par conséquent, les paramÚtres d'intervalle de trame utilisés et la taille du tampon de lecture ne sont tout simplement pas adaptés aux diffusions vidéo en direct. De ce fait, il existe un délai assez élevé dans la transmission des séquences vidéo, qui peut aller de 5 à 7 secondes.

D'une part, ce n'est pas grand-chose, par exemple, pour ceux qui regardent un film depuis un serveur d'hĂ©bergement vidĂ©o. Mais pour les systĂšmes de vidĂ©osurveillance, le dĂ©lai de transmission des images vidĂ©o peut ĂȘtre trĂšs important.

Si vous regardez un bureau oĂč les employĂ©s lĂšvent les yeux sur leur Ă©cran une fois par heure, un dĂ©lai de 5 secondes n'a aucune importance. Mais les gens ont commencĂ© Ă  se plaindre du fait que, par exemple, lors de la diffusion d'un match de football, ils avaient dĂ©jĂ  Ă©crit GOOOOL dans le chat, mais ce n'est pas encore sur la vidĂ©o :). Nous avons dĂ©jĂ  un certain nombre de cas d'utilisateurs dans lesquels Ivideon devrait pratiquement remplacer Skype.

Est-il possible de battre la latence en HLS ? La rĂ©ponse Ă  cette question ressemble au discours d'un exterminateur de rats expĂ©rimentĂ© lors d'une confĂ©rence devant des spĂ©cialistes dĂ©butants en lutte antiparasitaire : « Les rats ne peuvent pas ĂȘtre exterminĂ©s, mais leur nombre peut ĂȘtre rĂ©duit Ă  un minimum raisonnable. » Pareil avec le retard du HLS, il ne sera pas possible de le rĂ©duire Ă  zĂ©ro, mais il existe des solutions sur le marchĂ© qui permettent de rĂ©duire considĂ©rablement le retard.

Coupes fines

Un autre inconvénient du moteur est l'utilisation de petits fichiers pour le transfert de données. Il semblerait qu'est-ce qui ne va pas avec ça ?

Quiconque a essayĂ© de copier un grand nombre de petits fichiers d'un support Ă  un autre a probablement remarquĂ© que la vitesse d'Ă©criture d'un tel ensemble est bien infĂ©rieure Ă  celle d'un gros fichier de mĂȘme taille. Et l'intensitĂ© de l'accĂšs au disque dur augmente considĂ©rablement, ce qui affecte gĂ©nĂ©ralement nĂ©gativement les performances de l'ensemble de l'ordinateur. Par consĂ©quent, la transmission de donnĂ©es vidĂ©o par petits segments de 10 secondes contribue Ă©galement Ă  augmenter la latence du moteur.

Résumons briÚvement tous les avantages et inconvénients de la technologie HLS.

Avantages du HLS :

  1. CapacitĂ© Ă  travailler avec n’importe quel appareil. Vous pouvez regarder des vidĂ©os sur n’importe quel appareil moderne, qu’il s’agisse d’un smartphone, d’une tablette, d’un ordinateur portable ou d’un ordinateur de bureau. L'essentiel est que le navigateur Web soit Ă  jour et compatible avec HTML5 et Media Source Extensions.
  2. Excellente qualité d'image. La fonction de transmission de données adaptative utilisée vous permet de modifier dynamiquement la qualité de la vidéo transmise en fonction de la bande passante de la connexion Internet, tandis que l'algorithme s'efforce de maintenir une qualité maximale.
  3. Il n'est pas nécessaire de procéder à une configuration complexe de l'équipement de l'utilisateur.

Inconvénients:

  1. Prise en charge limitée de l'utilisation du moteur sur certains appareils.
  2. Retards élevés dans la transmission des images.
  3. Augmentation significative des frais généraux et de la complexité de l'optimisation en raison de l'utilisation de petits fichiers. En raison de la nature du conteneur, nous ne pourrons jamais obtenir une latence inférieure à la taille du segment.

Les inconvénients du HLS ont pour nous dépassé ses avantages et nous ont obligés à rechercher des options alternatives.

Qu'est-ce que WebRTC

WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras
(c)

La plateforme WebRTC a été développée par Google en 2011 pour transmettre des données vidéo et audio en streaming entre les navigateurs et les applications mobiles avec une latence minimale. Pour cela, le protocole UDP standard et des algorithmes spéciaux de contrÎle de flux sont utilisés. Il s'agit aujourd'hui d'un projet open source, activement maintenu par Google et en cours de développement.

WebRTC est un ensemble de technologies pour la transmission vidéo et audio peer-to-peer. Autrement dit, les navigateurs des utilisateurs utilisant WebRTC peuvent se transférer des données directement, sans utiliser de serveurs distants pour stocker et traiter les données. Toutes les informations sont également traitées par les navigateurs et les applications mobiles des utilisateurs finaux.

La simplicité d'utilisation et les nombreuses fonctionnalités de cette technologie ont été appréciées par les développeurs de tous les navigateurs populaires. La prise en charge de WebRTC est actuellement disponible dans Mozilla Firefox, Opera, Google Chrome (et tous les navigateurs basés sur Chromium), ainsi que dans les applications mobiles qui l'exécutent. Android et iOS.

Malgré tous ses avantages incontestables, WebRTC présente plusieurs inconvénients importants.

Difficultés dans le choix

La technologie WebRTC est beaucoup plus complexe en termes d'interactions rĂ©seau car il s'agit de P2P. Il est difficile Ă  dĂ©boguer, Ă  tester et peut se comporter de maniĂšre imprĂ©visible. Dans le mĂȘme temps, nous devons surmonter le NAT et le pare-feu, nous devons garantir le fonctionnement dans les rĂ©seaux oĂč UDP est bloquĂ©.

L'implĂ©mentation WebRTC de Google est trĂšs difficile Ă  utiliser. Il existe mĂȘme une entreprise entiĂšre qui fournit des services d’assemblage de SDK. De plus, la mise en Ɠuvre de Google Ă©tait trĂšs difficile Ă  intĂ©grer Ă  notre systĂšme sans rĂ©encoder l’intĂ©gralitĂ© de la vidĂ©o.

Cependant, nous souhaitons depuis longtemps donner aux utilisateurs la possibilitĂ© de travailler avec une vidĂ©o « en direct » Ă  part entiĂšre et de minimiser le dĂ©calage entre l'image Ă  l'Ă©cran et les Ă©vĂ©nements eux-mĂȘmes. De plus, nous souhaitions rendre plus confortable l’utilisation des camĂ©ras PTZ, lĂ  oĂč les retards sont critiques.

Considérant que d'autres implémentations anti-lag ont encore des fonctionnalités limitées et fonctionnent nettement moins bien, nous avons décidé d'utiliser WebRTC.

Qu'avons-nous fait

WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras

Mettre en Ɠuvre correctement la plateforme WebRTC n'est pas une tĂąche facile. Toute erreur de calcul ou inexactitude peut entraĂźner des retards dans la transmission vidĂ©o non seulement qui ne diminuent pas par rapport Ă  d'autres plates-formes, mais qui augmentent mĂȘme.

Pour que WebRTC fonctionne correctement, il est tout d'abord nécessaire d'effectuer une mise à niveau technologique de la pile pour travailler avec la vidéo Web. C'est ce que nous avons fait.

Tout d'abord, nous avons implémenté un serveur de protocole de signalisation WebRTC sur Websocket, et avons également déployé un serveur homologue WebRTC dans le cloud basé sur le SDK webrtc.org. Sa tùche est de distribuer des flux vidéo aux homologues clients WebRTC au format H.264 + Opus/G.711 sans transcodage vidéo.

Nous avons choisi Websocket comme protocole de signalisation car il bénéficie déjà d'un support de haute qualité dans tous les navigateurs Web populaires. De ce fait, vous pouvez non seulement réduire considérablement les frais de développement, mais également éviter de perdre du temps et des ressources dans des négociations TCP et TLS répétées par rapport à AJAX.

Le fait est que, par défaut, WebRTC ne fournit pas le protocole de signalisation nécessaire pour configurer, maintenir et terminer correctement la communication vidéo en temps réel entre les applications source et client.

Et afin de mettre en Ɠuvre de maniĂšre indĂ©pendante la technologie de signalisation, nous devions dĂ©velopper notre propre serveur de signalisation prenant en charge plusieurs protocoles Web (Websocet, WebRTC). Et avec la possibilitĂ© de gĂ©rer en toute sĂ©curitĂ© les sessions et les notifications en temps rĂ©el, la gestion vidĂ©o et bien plus encore.

Nous avons surmonté les limites du P2P en réduisant la latence non pas via le P2P, mais via UDP et le contrÎle de flux pour réduire la latence. Ceci est également intégré à WebRTC, puisque le principal cas d'utilisation est celui des conversations p2p via un navigateur.

Dans le client mobile, nous avons implémenté le lecteur à l'aide du SDK webrtc.org, car lui seul implémente correctement le contrÎle de flux, possÚde tous les schémas de correction d'erreur directe (FEC) connus et implémente correctement le mécanisme de renvoi des paquets pour tous les navigateurs. Il est également important que le SDK webrtc.org soit activement développé par Google.

Quel est le rĂ©sultat de la mise en Ɠuvre de WebRTC ?


Pour visualiser la vidéo en direct des caméras, nous avons ajouté un nouveau lecteur optimisé basé sur WebRTC à votre compte personnel. Il offre des vitesses de chargement vidéo rapides et élimine complÚtement le problÚme de latence accumulée à mesure que la durée de visionnage augmente.

AprĂšs avoir introduit le support WebRTC dans le service cloud Ivideon, nous pouvons affirmer en toute confiance que nos clients peuvent dĂ©sormais regarder des vidĂ©os en direct Ă  part entiĂšre. DĂ©sormais le dĂ©lai de diffusion des sĂ©quences vidĂ©o ne dĂ©passe pas la seconde ! À titre de comparaison, le moteur HLS prĂ©cĂ©dent assurait la diffusion vidĂ©o avec un dĂ©lai de 5 Ă  7 secondes. La diffĂ©rence dans la vitesse de dĂ©monstration vidĂ©o est trĂšs significative et l'utilisateur la remarquera immĂ©diatement aprĂšs avoir commencĂ© Ă  travailler avec notre service vidĂ©o.

Comme prĂ©vu, la mise en Ɠuvre du nouveau player a amĂ©liorĂ© la rĂ©activitĂ© du PTZ et la communication vocale avec la camĂ©ra.

WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras

Il n’y a qu’un seul point subtil sur lequel nous souhaitons attirer l’attention. Le nouveau player WebRTC fonctionne actuellement en mode test. Et c'est pourquoi nous ne l'activons pas par dĂ©faut pour tous nos clients. Mais vous pouvez l'activer vous-mĂȘme en activant l'Ă©lĂ©ment correspondant dans les paramĂštres de l'appareil photo (pour cela, rendez-vous sur bureau privĂ©).

Caractéristiques de l'implémentation de WebRTC dans le service Ivideon

WebRTC et vidĂ©osurveillance : comment nous avons vaincu la latence vidĂ©o des camĂ©ras

WebRTC est encore une technologie expérimentale pour le moment. Sa prise en charge n'est pas encore correctement implémentée dans tous les navigateurs et appareils des utilisateurs, ni dans toutes les caméras.

C'est précisément pourquoi nous n'avons pas encore fait du lecteur WebRTC le lecteur par défaut pour tous les utilisateurs.

Pour l'instant, nous recommandons d'utiliser WebRTC uniquement dans les navigateurs Google Chrome. Les derniÚres versions de Firefox et Safari prennent également en charge cette technologie, mais malheureusement elle reste encore instable.

Nous n'avons pas encore implémenté la prise en charge WebRTC pour les navigateurs sur les appareils mobiles. Actuellement, si vous vous connectez depuis un appareil mobile et activez WebRTC, ce mode ne fonctionnera pas. Cependant, WebRTC est disponible dans nos applications mobiles pour Android О iOS.

Et pour conclure l'histoire sur les fonctionnalités de l'implémentation WebRTC dans notre service, notons deux points plus subtils.

PremiÚrement, la technologie est axée sur la diffusion de vidéos en direct et en temps réel. Par conséquent, si votre chaßne ne dispose pas de suffisamment de bande passante pour transmettre la vidéo, vous remarquerez des chutes d'images (avec HLS, vous remarquerez une décoloration vidéo et une latence accrue, mais il n'y aura pas de chutes d'images), mais la vidéo sera toujours diffusée en temps réel. temps.

DeuxiÚmement, puisque la technologie est conçue pour fonctionner spécifiquement avec la vidéo en direct en temps réel, nous ne l'utilisons pas pour travailler avec des données vidéo archivées.

Autres changements apportés au service

Pour le moment, Flash n'est plus impliquĂ© dans le mĂ©canisme de sĂ©lection automatique du moteur. Vous pouvez toujours utiliser un tel lecteur, mais pour ce faire, vous devez le sĂ©lectionner manuellement dans les paramĂštres du compte ou de l'appareil photo. Ce n'est pas un hommage Ă  la mode, c'est juste que selon les statistiques de notre service, il n'y a pratiquement plus d'utilisateurs travaillant avec Flash. Et en essayant de dĂ©terminer si le navigateur de l’utilisateur le prend en charge, nous perdons environ 2 secondes d’un temps prĂ©cieux.

Voici un bref aperçu des changements qui vous attendent dans notre systÚme de vidéosurveillance cloud et votre compte personnel. Restez avec nous et suivez l'actualité !

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster