Diffuser une webcam à partir du Raspberry Pi (grace à motion)

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 ).

    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 [email protected] 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 :
      acces_rasp.png

    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)
    ff_bb.png

  • 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.
    vlc_bb.png

  • Enfin, je voulais pouvoir voir les vidéos depuis mon téléphone Android . J’ai donc téléchargé l’application qui accepte là aussi le htaccess. Bref, un truc trop pratique 🙂
    port_bb.png

    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 [email protected] , 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) :

    IMG_1017.JPG