Diffuser une webcam à partir du Raspberry Pi (grace à motion)
Comme je vous l'avais annoncé dans mon précédent article, mon objectif premier avec le Raspberry Pi était de mettre en place la diffusion d'une webcam pour surveiller mon bébé dans son lit (faire un visiophone du pauvre geek). L'étape la plus longue a été les tests des différentes solutions et le choix du logiciel final. Une fois le logiciel choisi (motion), sa mise en place a été plutôt simple et rapide. Explications :
I. Besoin
Mon besoin était simple, diffuser une vidéo au moins sur mon réseau local afin de pouvoir surveiller mon bébé dans son lit. J'avais déjà une webcam USB (Logitech QuickCam Communicate Deluxe) et ne voulais pas acheter autre chose. Par chance, ma webcam était déjà reconnue par l'OS de mon Raspberry Pi (Raspbian). Une fois la webcam branchée, un lsusb
me l'affichait :
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 046d:0992 Logitech, Inc. QuickCam Communicate Deluxe
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
J'ai commencé par tester une application ffserver couplée avec ffmpeg. C'était un peu trop lourd à mettre en place (il faut dire que mon temps disponible pour bidouiller est très réduit en ce moment). Je suis ensuite tombé sur motion. Une application qui avait l'air simple à installer et surtout à configurer. Après avoir regardé quelques tutos sur le net, j'ai décidé de me lancer. Motion intègre son serveur web et diffuse une image mjpeg (Motion JPEG). Ce qui est très bien car je ne souhaitais pas installer un apache sur mon Raspberry Pi ni diffuser une super vidéo HD. Juste un petit truc qui ne consomme pas grand chose en débit réseau.
II. Installation
L'application motion est packagée debian, donc comme j'utilise une distribution Raspbian, une simple ligne de commande suffit à l'installer :
apt-get install motion
III. Configuration
Toute la configuration se fait dans un seul fichier : /etc/motion/motion.conf. Je n'ai pas changé grand chose, peut-être que je pourrais améliorer des choses, les optimiser (si c'est le cas n'hésitez pas à me le dire) mais en tout cas pour le moment tout fonctionne correctement et ça me suffit. Voici donc les choses que j'ai modifié dans ce fichier de configuration :
- daemon on : permet de lancer motion en mode démon au démarrage du Raspberry (n'oubliez pas de modifier également le fichier /etc/default/motion pour activer le démarrage automatique);
- width 640 et height 480 : définit la résolution de notre image. J'ai mis une faible résolution (suffisante pour moi) ;
- framerate 2 : le nombre d'images par secondes prises par motion ;
- auto_brightness on : motion permet de faire une petite correction d'image, je l'ai activée ;
- output_normal off : motion enregistre par défaut les images sur le disque dur, je n'ai pas voulu le faire (c'est utile pour faire de la vidéo surveillance avec conservation des images, moi je n'en ai pas besoin) ;
- webcam_port 8081 : active le serveur web intégré et défini le port sur lequel il va écouter ;
- webcam_maxrate 2 : le nombre d'images envoyés par le serveur ;
- webcam_localhost off : je ne veux pas restreindre la diffusion de la webcam au localhost.
Une fois ce fichier modifié et enregistré, un coup de /etc/init.d/motion start
et le tour est joué.
Note : vous pouvez avoir une petite interface web de configuration en modifiant le control_port du fichier de configuration. Je n'utilise pas ce système, je le trouve trop simpliste et pas pratique du tout.
IV. Contrôle d'accès
Certains l'auront remarqué, dans la configuration actuelle, l'accès à la webcam n'est pas restreint par un mot de passe. Autrement dit, si vous avez ouvert les ports de votre routeur/box, cette vidéo sera accessible par tout le monde sans aucun contrôle (un peu comme eux).
Pour ma part, voici ce que j'ai fait :
- J'ai un accès complet sans authentification depuis mon réseau local (via l'adresse du Raspberry Pi : 192.168.0.54:8081)
- Pour les accès extérieurs (la famille, au boulot, etc.), je passe par mon serveur@home via un proxy apache sur lequel j'ai mis une authentification htaccess. Cela me permet de voir (via mon interface de consultation des logs) les heures et les personnes qui accèdent à la webcam. C'est hyper pratique :
V. Consultation
Un dernier point, je vais lister les applis avec lesquelles j'accède à cette webcam :
- N'importe quel navigateur internet, en renseignant simplement l'adresse de ma webcam (http://192.168.0.54:8010 en local ou http://mawebcam.mondomaine.fr à l'extérieur)
-
VLC me permet également d'ouvrir un flux réseau. Le plus pratique est de lancer dans un terminal (ou en faisant Alt+F2) la commande :
vlc http://mawebcam.mondomaine.fr
. Le htaccess est bien reconnu par VLC et tout fonctionne correctement.
- Enfin, je voulais pouvoir voir les vidéos depuis mon téléphone Android. J'ai donc téléchargé l'application MJpeg Viewer qui accepte là aussi le htaccess. Bref, un truc trop pratique :)
VI. Conclusion
Voila comment avec pas grand chose j'arrive à diffuser la vidéo de mon petit bout sur le Net. Mon prochain objectif et de mettre une autre webcam (sur mon serveur@home, dans mon salon) et faire une petite interface web qui me permet de voir les 2 en même temps.
Pour le moment, voici le système (simple) dans sa chambre (cliquez pour agrandir) :