WebRTC et vidéo surveillance : comment nous avons vaincu le retard vidéo des caméras

WebRTC et vidéo surveillance : comment nous avons vaincu le retard vidéo des caméras

DĂšs les premiers jours de travail sur le systĂšme de vidĂ©o surveillance cloud, nous avons rencontrĂ© un problĂšme, sans la solution duquel nous aurions pu abandonner Ivideon – c'Ă©tait notre Everest, dont l'ascension a exigĂ© beaucoup d'efforts, mais maintenant, nous avons enfin plantĂ© notre piolet au sommet du casse-tĂȘte cross-platform.

Le systĂšme de transmission audio et vidĂ©o sur Internet ne doit pas dĂ©pendre du matĂ©riel, des clients web et des standards qu'ils supportent, et doit fonctionner correctement en prĂ©sence de traducteurs d'adresses rĂ©seau et de pare-feu. L'utilisateur de la vidĂ©o surveillance cloud souhaite accĂ©der au service, mĂȘme s'il utilise des camĂ©ras analogiques, et prĂ©fĂšre visionner le flux vidĂ©o en direct sur l'appareil le plus moderne.

Il est trÚs important que l'utilisateur souhaite regarder la vidéo avec un minimum de latence. La quasi-seule possibilité de montrer une vidéo avec une faible latence dans un navigateur est d'utiliser WebRTC (communications en temps réel par le web). WebRTC est un ensemble de technologies pour la transmission en peer-to-peer de vidéo et d'audio dans les navigateurs, à l'origine conçu pour transmettre et lire des flux vidéo avec une faible latence. Pour cela, entre autres, le protocole UDP est utilisé.

Avant de vous expliquer ce que le nouveau moteur apporte à l'utilisateur, nous allons rappeler pourquoi et comment 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éo surveillance : comment nous avons vaincu le retard vidéo des caméras
(c)

La technologie HLS (HTTP Live Streaming) a Ă©tĂ© dĂ©veloppĂ©e par Apple, donc il n'est pas surprenant que son support soit apparu pour la premiĂšre fois sur des appareils de cette marque. À ce jour, le contenu vidĂ©o au format HLS peut Ă©galement ĂȘtre lu par presque tous les dĂ©codeurs de tĂ©lĂ©vision et de nombreux appareils fonctionnant sous Android.

Le moteur HLS utilise pour le streaming de donnĂ©es vidĂ©o le codec vidĂ©o bien connu H264 en association avec des flux audio AAC ou MP3. L'ensemble du flux audio et vidĂ©o est encapsulĂ© dans un conteneur MPEG-TS. Pour ĂȘtre transmis via le protocole HTTP, les informations contenues dans le flux sont divisĂ©es en fragments, dĂ©crits dans des playlists m3u8. Ces fragments, ainsi que les playlists, sont ensuite transmis par HTTP. La division en fragments implique automatiquement une latence en secondes. Cette particularitĂ© du conteneur MPEG-TS.

Le moteur HLS prend également en charge les flux multi-bitrates, Live/VOD.

Les principaux avantages de HLS :

  • prise en charge intĂ©grĂ©e dans tous les navigateurs principaux;
  • facilitĂ© de mise en Ɠuvre (par rapport Ă  WebRTC);
  • il est trĂšs pratique et efficace d'organiser des diffusions Ă  un large public grĂące Ă  la possibilitĂ© de charger des segments une seule fois sur le CDN.

Malgré la simplicité du moteur, tout ne se passe pas aussi bien qu'il y paraßt. Le principal problÚme est que les développeurs de lecteurs tiers se sont écartés des recommandations d'Apple, par exemple en ce qui concerne les 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, il a fallu créer différents formats de playlist pour différents lecteurs.

Mais l'un des plus grands problÚmes du moteur HLS est le temps de latence élevé dans la transmission des données.

L'origine des "ralentissements"

La principale raison de la haute latence de HLS réside dans le fait que les programmeurs ont créé le moteur pour obtenir une qualité d'image maximale. Par conséquent, les paramÚtres de l'intervalle d'images utilisé et le volume du tampon de lecture ne conviennent tout simplement pas à la diffusion de vidéos en direct. En conséquence, il y a une latence assez élevée dans la transmission de la vidéo, qui peut atteindre 5 à 7 secondes.

D'une part, cela semble peu, par exemple pour ceux qui regardent un film depuis un serveur de vidéo. Mais pour les systÚmes de vidéosurveillance, la latence dans la transmission de la vidéo peut avoir une grande importance.

Si vous surveillez un bureau oĂč les employĂ©s se dĂ©tachent de l'Ă©cran une fois par heure, alors une latence de 5 secondes n'a aucune importance. Mais les gens ont commencĂ© Ă  se plaindre, par exemple, lors de la diffusion d'un match de football, que dans le chat, quelqu'un a dĂ©jĂ  Ă©crit GOOOOL, mais la vidĂ©o ne le montre pas encore :). Nous avons dĂ©jĂ  plusieurs cas d'utilisation oĂč Ivideon doit pratiquement remplacer Skype.

Peut-on surmonter la latence dans HLS? La réponse à cette question ressemble à un discours d'un exterminateur de rats chevronné lors d'une conférence pour des dératiseurs débutants : « On ne peut pas exterminer les rats, mais on peut réduire leur population à un minimum raisonnable ». Ainsi, concernant la latence dans HLS, il n'est pas possible de la réduire à zéro, mais il existe des solutions sur le marché qui permettent de réduire considérablement la latence.

Découpage fin

Un autre inconvénient du moteur est l'utilisation de petits fichiers pour la transmission des données. On pourrait se demander, qu'y a-t-il de mal à cela ?

Quiconque a essayĂ© de copier un grand nombre de petits fichiers d'un support Ă  un autre a sĂ»rement remarquĂ© que la vitesse d'Ă©criture de ce type d'ensemble est beaucoup plus lente que celle d'un fichier unique de mĂȘme taille. De plus, l'intensitĂ© des accĂšs au disque dur augmente considĂ©rablement, ce qui affecte globalement la performance de tout l'ordinateur. Par consĂ©quent, la transmission de donnĂ©es vidĂ©o sous forme de petits fragments de 10 secondes contribue Ă©galement Ă  une latence accrue du moteur.

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

Avantages de HLS :

  1. Compatibilité avec tous les appareils. 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 PC 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 adaptative permet de modifier dynamiquement la qualité de la vidéo transmise en fonction de la bande passante de la connexion Internet, tout en cherchant à maintenir la qualité au maximum.
  3. Pas besoin de configurations complexes de l'équipement de l'utilisateur.

Inconvénients :

  1. Support limité pour le moteur sur certains appareils.
  2. Grosse latence dans la transmission de l'image.
  3. Augmentation significative des frais généraux et complexité d'optimisation en raison de l'utilisation de fichiers de petite taille. En raison des particularités du conteneur, nous ne pourrons jamais obtenir une latence inférieure à la taille du segment.

Les inconvénients de HLS ont dépassé ses avantages pour nous et nous ont poussés à chercher des alternatives.

Qu'est-ce que WebRTC

WebRTC et vidéo surveillance : comment nous avons vaincu le retard 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 navigateurs et applications mobiles avec une latence minimale. Pour cela, elle utilise le protocole standard UDP et des algorithmes spéciaux de gestion de flux. Aujourd'hui, c'est un projet open source, activement soutenu et développé par Google.

WebRTC est un ensemble de technologies pour la transmission vidéo et audio en peer-to-peer. Par exemple, les navigateurs des utilisateurs peuvent transmettre des données directement les uns aux autres via WebRTC, sans recourir à des 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 commodité et les grandes possibilités de cette technologie ont été pleinement appréciées par les développeurs de tous les navigateurs populaires. Aujourd'hui, le support de WebRTC est implémenté dans Mozilla Firefox, Opera, Google Chrome (et tous les navigateurs basés sur Chromium), ainsi que dans les applications mobiles sur Android et iOS.

Avec tous ses indéniables avantages, WebRTC présente toutefois quelques inconvénients majeurs.

Difficultés de choix

La technologie WebRTC est beaucoup plus complexe en termes d'interactions rĂ©seau en raison de son caractĂšre P2P. Elle est difficile Ă  dĂ©panner, Ă  tester, et peut se comporter de maniĂšre imprĂ©visible. Par ailleurs, il est nĂ©cessaire de surmonter les NAT et les pare-feu, et d'assurer le fonctionnement dans des rĂ©seaux oĂč le UDP est bloquĂ©.

La mise en Ɠuvre de WebRTC par Google est trĂšs difficile Ă  utiliser. Il existe mĂȘme une entreprise qui propose des services pour assembler les SDK. De plus, il Ă©tait trĂšs difficile d'intĂ©grer l'implĂ©mentation de Google avec notre systĂšme sans rĂ©encoder toutes les vidĂ©os.

Cependant, nous avons longtemps souhaitĂ© offrir aux utilisateurs la possibilitĂ© de travailler avec un flux vidĂ©o « vivant » et de minimiser le dĂ©calage de l'image Ă  l'Ă©cran par rapport aux Ă©vĂ©nements eux-mĂȘmes. De plus, nous souhaitions rendre plus confortable l'utilisation de camĂ©ras PTZ, oĂč les retards revĂȘtent une importance critique.

Sachant que d'autres implémentations de lutte contre les retards ont actuellement des fonctionnalités limitées et fonctionnent de maniÚre nettement inférieure, nous avons décidé d'utiliser WebRTC.

Ce que nous avons fait

WebRTC et vidéo surveillance : comment nous avons vaincu le retard vidéo des caméras

Intégrer correctement la plateforme WebRTC est une tùche difficile. Toute erreur ou inexactitude peut entraßner une augmentation des retards dans la transmission du flux vidéo, au lieu de les réduire par rapport à d'autres plateformes.

Pour un fonctionnement correct de WebRTC, il est d'abord nécessaire de procéder à une modernisation technologique de la pile pour la vidéo web. Ce que nous avons fait.

Nous avons d'abord implémenté un serveur de protocole de signalisation WebRTC sur Websocket, ainsi qu'un serveur peer WebRTC dans le cloud basé sur SDK webrtc.org. Sa tùche consiste à distribuer des flux vidéo aux peers WebRTC clients au format H.264 + Opus/G.711 sans réencodage vidéo.

Nous avons choisi Websocket comme protocole de signalisation car il bénéficie déjà d'un bon support dans tous les navigateurs web populaires. Cela permet de réduire considérablement les coûts de développement et d'économiser du temps et des ressources en évitant les poignées de main TCP et TLS répétées par rapport à AJAX.

Le fait est qu'en l'état, WebRTC ne fournit pas de protocole de signalisation nécessaire pour configurer, maintenir et couper correctement la communication vidéo en temps réel entre les applications d'origine et les clients.

Ainsi, pour rĂ©aliser nous-mĂȘmes la technologie de signalisation, nous avons dĂ» dĂ©velopper notre propre serveur de signalisation prenant en charge plusieurs protocoles web (Websocket, WebRTC). Avec la possibilitĂ© de gĂ©rer en toute sĂ©curitĂ© les sessions et les notifications en temps rĂ©el, la gestion de la vidĂ©o et de nombreux autres paramĂštres.

Nous avons surmonté les limitations P2P en réduisant la latence non pas grùce au P2P, mais grùce à l'UDP et à la gestion du flux visant à réduire la latence. Cela est également intégré dans WebRTC, car le principal cas d'utilisation est les conversations P2P via le navigateur.

Dans le client mobile, nous avons implémenté un lecteur avec le SDK webrtc.org, car c'est le seul à gérer correctement le flux, avec tous les schémas connus de Correction d'Erreur Avant (FEC), et à disposer d'un mécanisme de retransmission des paquets correctement réalisé pour tous les navigateurs. Il est également important de noter que le SDK webrtc.org est activement développé par Google.

Quel est le résultat de l'implémentation de WebRTC ?


Pour visionner des vidéos en direct provenant des caméras, nous avons ajouté dans le cabinet personnel un nouveau lecteur optimisé basé sur WebRTC. Il assure une vitesse de chargement vidéo élevée et élimine complÚtement le problÚme de l'accumulation de retard au fur et à mesure que le temps de visionnage augmente.

AprÚs l'intégration du support WebRTC dans le service cloud Ivideon, nous pouvons affirmer avec certitude que nos clients ont désormais accÚs à la diffusion de vidéos en direct de qualité complÚte. Actuellement, le délai de diffusion de la vidéo ne dépasse pas une seconde ! En comparaison, l'ancien moteur HLS garantissait une diffusion avec un délai de 5 à 7 secondes. La différence de rapidité de diffusion est trÚs significative, et l'utilisateur la remarquera immédiatement aprÚs avoir commencé à utiliser notre service vidéo.

Comme nous l'avions supposĂ©, la mise en Ɠuvre du nouveau lecteur a permis d'amĂ©liorer la rĂ©activitĂ© PTZ et la communication vocale avec la camĂ©ra.

WebRTC et vidéo surveillance : comment nous avons vaincu le retard vidéo des caméras

Il y a juste un petit point sur lequel nous souhaitons attirer l'attention. Le nouveau lecteur WebRTC fonctionne encore en mode test. C'est pourquoi nous ne le connectons pas par dĂ©faut Ă  tous nos clients. Mais vous pouvez l'activer vous-mĂȘme en activant la fonction correspondante dans les paramĂštres de la camĂ©ra (pour cela, il faut se rendre dans le tableau de bord).

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

WebRTC et vidéo surveillance : comment nous avons vaincu le retard vidéo des caméras

WebRTC est pour l'instant encore une technologie expérimentale. Son support n'est pas encore correctement implémenté dans tous les navigateurs et appareils utilisateurs, ni dans toutes les caméras.

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

Pour le moment, 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, elles restent encore instables.

Nous n'avons pas encore intégré le support de WebRTC pour les navigateurs sur appareils mobiles. Actuellement, si vous accédez depuis un appareil mobile et activez WebRTC, ce mode ne fonctionnera pas. Cependant, WebRTC est disponible dans nos applications mobiles pour Android et iOS.

Pour conclure notre discussion sur les caractéristiques de l'implémentation de WebRTC dans notre service, mentionnons encore deux points délicats.

Tout d'abord, la technologie est orientĂ©e vers la diffusion de vidĂ©os en direct en temps rĂ©el. Par consĂ©quent, si la bande passante de votre connexion est insuffisante pour la transmission de la vidĂ©o, vous constaterez des pertes de trames (avec HLS, vous remarquerez des freeze de la vidĂ©o et une augmentation du dĂ©lai, tandis que les trames ne tomberont pas), mais la vidĂ©o sera tout de mĂȘme diffusĂ©e en temps rĂ©el.

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

Autres modifications dans le service

Actuellement, Flash n'est plus impliqué dans le mécanisme de sélection automatique du moteur. Il est encore possible d'utiliser ce type de lecteur, mais cela nécessite de le sélectionner manuellement dans les paramÚtres du compte ou de la caméra. Ce n'est pas une tendance, simplement, d'aprÚs les statistiques de notre service, les utilisateurs travaillant avec Flash sont presque inexistants. Et lorsque nous essayons de déterminer si le navigateur de l'utilisateur le supporte, nous perdons environ 2 secondes de temps précieux.

Voici un aperçu des changements que vous allez découvrir dans notre systÚme de vidéosurveillance en cloud et votre espace personnel. Restez avec nous et suivez les nouvelles !

Source : habr.com

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