Nouveau module disponible pour béta testeurs : Diffuser le flux RTSP d'une caméra IP


#1

Bonjour à tous,

Vous avez une caméra réseau, exposant un flux vidéo au format RTSP ?
Je vous propose de tester un nouveau module.

Attention :
C’est une version “béta” ! Merci de ne faire le test que si vous vous sentez capable de comprendre un minimum pourquoi cela ne fonctionne pas quand il y a un bug !

Principe de fonctionnement :

Il n’y a aucun moyen aujourd’hui de diffuser directement un flux RTSP dans un page Web ; il faut donc le convertir dans un format compatible, puis diffuser ce nouveau flux vers Gladys.

Il nous faut donc :

  • Une caméra IP fournissant un flux accessible par une adresse de type rtsp://......
  • Un convertisseur/serveur de flux vidéo.
  • Une box capable de lire le nouveau flux.

Commençons !

1. Votre caméra IP

Vous connaissez l’adresse de son flux ? Parfait ! Sinon, il faut le chercher dans la documentation, ou sur internet, comme par exemple sur ce site.

Une fois que vous avez l’adresse, testez-là dans VLC :

image

Tant que VLC ne diffuse pas votre caméra, inutile de continuer !

2. Le serveur

Installez le “serveur/convertisseur” depuis son dépôt
Vous pouvez l’installer sur une machine de type Windows, Mac ou Linux (testé sur un RPi3).
Pour celà, depuis le dossier dans lequel vous voulez installer le dossier du serveur :

git clone https://github.com/piznel/ffmpeg-jsmpeg.git
cd ffmpeg-jsmpeg
npm install

Puis, pour démarrer le serveur :

node index.js

remarque :
Le serveur est en “https”, avec un certificat auto-signé. Donc, vous ne pourrez pas vous connecter au serveur, tant que vous n’aurez pas validé le certificat. Pour ce faire, il faut, dans votre navigateur, allez à l’adresse :
https://ip_du_serveur:8082 (si vous n’avez pas changé de port)

Vous aurez un “joli” message vous disant que c’est pas bien, que c’est dangereux, etc. Dites alors que vous acceptez courageusement les risques :slight_smile:
Rien ne se passera visuellement, mais le certificat sera mis en exception.

3. la box

Suivez le “readme” de son dépôt :wink:, qui se trouve ici.

Remarque :

  • Vous pouvez installez le serveur sur le même RPi que Gladys ; attention cependant : il consomme de 30 à 50% de votre processeur pour la conversion !
    Dans ce cas, l’adresse du serveur est 127.0.0.1.

  • Ne soyez pas trop gourmand au niveau de la qualité, surtout si votre réseau local n’est pas très stable et/ou à faible débit.

  • Il n’y a pas de son !

  • la résolution du flux affiché est fonction de la taille de la box, mais pas de façon dynamique. Si vous redimensionner votre page, il faut la recharger pour mettre à jour.

  • le convertisseur de flux utilisé est FFmpeg. A l’installation du serveur, la dernière version sera téléchargée automatiquement selon votre système, est stocké à la racine du dossier bin du serveur.
    FFmpeg est très riche au niveau de ses commandes ; Si en console du serveur, vous voyez apparaître des erreurs récurrentes de conversion, n’hésitez pas à faire les recherches internet, pour tester de nouveaux paramètres !

  • j’utilise la librairie fluent-ffmpeg pour “wrapper” les commandes FFmpeg.

Bon visionnage à tous et merci de vos retours ! :slight_smile:


#2

Joli! Bravo pour le travail :slight_smile:

Un petit feedback: attention pour la lib https-pem que tu utilises pour générer les certificats auto-signé, comme dis la lib:

“I suggest only using this for testing and development where you just need an easy and quick way to run an HTTPS server with Node.js.”

Les certificats généré ne sont valide qu’un an je crois, et le module ne fait rien pour les renouveler.

Une solution serait peut être d’utiliser la dépendance de ce module directement ( https://www.npmjs.com/package/selfsigned ), et de limite stocker la date d’expiration quelque part (ou de trouver un moyen d’extraire la date d’expiration de la clé directement), et ensuite de faire un check au démarrage pour renouveler le certificate… (bon après je vais peut être un peu loin, c’est déjà super ce que tu as fais là!)

Je me dis que c’est d’ailleurs une très bonne question pour Gladys 4 aussi, bonne question de savoir comment on va faire! :stuck_out_tongue:


#3

Salut @pierre-gilles,

Merci :blush:

Oui, j’avais vu, et j’étais allé voir la lib selfsigned également, mais un coup de flemme, et je me suis dit que ça fera l’objet d’une évolution avec selfsigned d’intégré.
Mais c’est pas très propre, j’avoue…

Et je suis preneur de tous les commentaires sur la logique et la qualité de mon code, ça peut pas faire de mal, vu d’où je pars !


#4

Pour la qualité de code, installe eslint, eslint-config-airbnb-base, et copie colle mon fichier .eslintrc.json de Gladys 4 ( https://github.com/GladysAssistant/gladys-4-playground/blob/master/server/.eslintrc.json ), c’est la meilleure code review du monde :slight_smile: Ils sont hyper strict chez Airbnb et tu verras que ta qualité de code va grandement s’améliorer!