Premièrement, pourquoi ZoneMinder est-il important pour moi ?

Je veux faire une plateforme de vidéosurveillance de classe mondiale. Une plateforme que tout le monde peut utiliser. J’ai cherché sur Internet pendant des mois pour trouver un point de départ et je n’ai trouvé que le ZoneMinder comme réponse, encore et encore. Même mon propre frère me l’a suggéré. Après l’avoir utilisé et étudié le code pendant plus de deux ans, j’ai été confronté à la frustration. L’arrogance des développeurs associée à un code mal écrit. Retrouvez plus d’informations ici.

En bref, j’ai passé beaucoup de temps et d’énergie sur quelque chose qui ne fonctionnait pas et cela m’a frustré.

Les flux MJPEG sont dépassés

Avec MJPEG, vous ouvrez un nouveau flux chaque fois que vous créez une image avec une url MJPEG. Même si vous supprimez cet élément, il continuera à consommer les ressources du serveur et du client. La seule façon de gérer ce problème est actuellement de créer une iframe, une popup ou un rafraîchissement en dur.

Shinobi traite ce problème avec des flux Websocket. Comme les trames sont capturées par FFMPEG, elles sont encodées en base64 et envoyées au client. Shinobi peut également produire des flux HLS (m3u8), MJPEG (dans une iframe) et JPEG (sur un timer).

Les flux MJPEG sont limités dans de nombreux navigateurs. Environ 6 à 8 flux maximum. À moins que vous ne désactiviez cette limitation dans les paramètres du navigateur, mais bien sûr, les utilisateurs de téléphones portables n’ont normalement pas accès à cette option.

Dans Shinobi, vous n’avez pas à vous inquiéter de cela. Avec les flux Bas64 ou JPEG, vous pouvez tromper le navigateur pour qu’il vous laisse le faire quand même. Base64 utilise techniquement un seul canal vers le client, le Websocket. Alors que le JPEG ne fait que rafraîchir une image sur un timer.

Le stockage JPEG est horrible

L’enregistrement de chaque image dans un fichier séparé au format JPEG peut avoir un effet très préjudiciable sur l’espace de stockage et le matériel lui-même.

Shinobi enregistre dans des fichiers WebM et MP4. Alors que le MP4 prend beaucoup d’espace… son niveau d’utilisation du CPU pendant l’encodage pour les flux H.264 est tout simplement incroyable.

Utiliser trop de langues

La plate-forme utilise Perl, PHP, JavaScript, C++, HTML, CSS, MySQL, et probablement plus encore. Il est donc difficile de modifier le code à d’autres fins.

Shinobi utilise JavaScript, HTML, CSS et MySQL. Simple, n’est-ce pas ? Il devrait l’être.

Des méthodes dépassées

Lorsqu’il est connecté au tableau de bord, il interroge la base de données toutes les quelques minutes pour connaître les événements, en obtenant et en comptant continuellement les mêmes événements.

Shinobi utilise les Websockets pour obtenir des données en temps réel sur les vidéos et les événements.

Pour chaque caméra, un nouveau processus est créé à chaque fois qu’un spectateur ouvre un flux. 1 flux = 1 processus. Donc si vous aviez 1 caméra avec 3 flux ouverts, vous auriez 3 processus actifs pour chaque spectateur.

Shinobi utilise 1 processus par caméra pour tous les spectateurs.

Plusieurs fenêtres et pages pour les choses simples. Par exemple la fenêtre des paramètres du moniteur. Elle a plusieurs pages. Même si chaque page a un ensemble fixe d’options, toutes les entrées sont présentes sur la page. Elles sont juste cachées. Si c’était le cas, ils auraient aussi bien pu utiliser JavaScript pour afficher et masquer les champs de manière appropriée. Plutôt que d’envoyer une requête au serveur à chaque changement de page.

Shinobi a tout dans une seule fenêtre, qui est chargée sur le tableau de bord. Les champs sont remplis en fonction de la sélection de la caméra. Même dans ce cas, les détails de la caméra sont stockés dans la mémoire du navigateur du client pour charger facilement les données sans requête supplémentaire au serveur.

Comme mentionné précédemment, le ZoneMinder utilise Perl, PHP et C++. Ces langages sont puissants, sans aucun doute. Le problème réside dans leur utilisation. Le C++ nécessitera la construction de composants, ce qui rend la mise à jour difficile. PHP est entièrement synchrone, ce qui rend les opérations du client pénibles pour vous et pour le système sur lequel il fonctionne.

Shinobi utilise JavaScript, ce qui permet aux utilisateurs d’écraser simplement les anciens fichiers Shinobi avec les nouveaux, de redémarrer les processus et vous êtes mis à jour. Comme JavaScript est asynchrone et a la capacité d’acheminer les données, nous n’avons que peu de frais supplémentaires lorsqu’il s’agit de l’application du nœud elle-même.

Conclusion

En moins d’un an, Shinobi a plus de la moitié des fonctionnalités de ZoneMinder. Je ne suis pas spécial ou formé en programmation, j’ai appris à la maison – dans le sous-sol de ma mère. Quand quelqu’un s’intéresse à quelque chose, il donne son temps et ses efforts pour cela. Je me soucie de Shinobi, c’est pourquoi il a progressé si rapidement. Lisez bien de nombreux avis avant de choisir vos produits domotiques. On vous propose ainsi une autre analyse, cette fois-ci de l’avis aspirateur robot