Vidéosurveillance avec webcam usb et ZoneMinder

S’il y a bien une chose où je suis à la ramasse, c’est tout les gadgets censé composé un pc normal.

En l’occurence par exemple, une webcam.

Une petite publicité e.leclerc dans ma boîte aux lettres (celle en feraille dehors, pas l’autre la vrai…), me fit part d’une promotion sur les webcams et poussait par je ne sais quelle envie compulsive, j’ai donc fait l’acquisition d’une Logitech S 5500 pour 49 euros.

 

Logitech S5500

 

Ne me croyez pas idiot, j’ai quand même vérifier sur le nain ternet qu’elle fonctionnait sous Linux.

 

Cette webcam fonctionne avec le driver UVC V4L2 (http://linux-uvc.berlios.de/)

 

Si vous avez un kernel récent (supérieur au 2.6.26-rc9), il est inclus dedans, sinon, tout comme moi, recompiler le noyau pour intégrer le support V4L que j’avais désactiver :

 

<*> Video For Linux

       [*]   Enable Video For Linux API 1 (DEPRECATED)

       ---   Enable Video For Linux API 1 compatible Layer

       [*]   Video capture adapters  --->

       [ ]   Radio Adapters  --->

       < > DVB for Linux

       [*] DAB adapters

 

Video capture adapters

     [ ]   Enable advanced debug functionality

     [*]   Autoselect pertinent encoders/decoders and other helper chips

     [*]   V4L USB devices  --->

 

Et pis c’est tout.

 

Après c’est du standard :

svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk
make
make install
rmmod uvcvideo
modprobe uvcvideo

 

Pour streamer facilement et sans bouffer les ressources CPU, il existe un excellent outil : UVCSTREAMER.

 

On récupère les sources :

svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer

On s epositionne dans le bon répertoire :

cd uvc-streamer
make
cp ./uvc_stream /usr/local/bin

Et voila, vous pouvez lancer le stream :

/usr/local/bin/uvc_stream -f 1 -r 320x240 -b

l’option f = le nombre de frame par seconde

l’option r = la résolution

l’option b = en tache de fond

bref -h vous donnera toutes les options.

 

Un petit tour de navigateur sur l’ip du pc : http://ipdupc:8080

Et voila, le flux s’affiche, magique.

 

C’est rigolo mais pas assez geek…

 

Après quelques recherches sur divers forums, je découvris enfin un produit intéressant et opensource : ZoneMinder.

Je vous laisse lire la présentation succinte ICI .

 

Si vous êtes sous Debian SID, le package est présent dans les dépôts.

 

Pour les autres, comme moi, qui etes sous Etch, vous devez vous coltiner tout à la main.

 

Les dépendances sont nombreuses (mysql5-dev, apache2, php5, pleins de modules perl etc…)

Le moyen le plus simple est de se baser sur les dépendances de SID sur http://packages.debian.org/sid/zoneminder et de l’adapter à Etch.

 

On downloade les sources ICI .

 

J’ai utiliser les option des compilation suivantes :

./configure –prefix=/opt/zoneminder –with-libarch=lib –with-webdir=/opt/www/zm –with-cgidir=/opt/www/zm/cgi-bin –with-webuser=www-data –with-webgroup=www-data ZM_SSL_LIB=openssl

make

J’ai eu quelques soucis à la compilation, surtout dans le fichier zm_mpeg.cpp, et bourin, j’ai virer le bout de code génant dedans 🙂

 

Ensuite, on créer une base mysql et on injecte le SQL dedans :

 

cd db
mysql -u root -p -h localhost
mysql -u root -p -h localhost < zm_create.sql
mysql -u root -p -h localhost

puis

make install

 

Un petit vhost sous Apache2 dans le genre :

 

<VirtualHost 192.168.0.1:80>
ServerAdmin webmaster@localhost

DocumentRoot /opt/www/zm

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /opt/www/zm>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

</Directory>
ScriptAlias /cgi-bin/ /opt/www/zm/cgi-bin/
<Directory « /opt/www/zm/cgi-bin/ »>
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Et voila, vous pouvez lancer le bouzin :

zmpkg.pl start

La documentation est bien faite pour pouvoir vous dépatouiller :

http://www.zoneminder.com/wiki/index.php/Documentation

 

 

Le problème sur lequel j’ai passer le plus de temps, c’est la gestion directe de ma webcam par ZoneMinder.

 

Impossible de la faire marcher avec des erreurs dans tout les sens et après avoir essayer toutes les bidouilles possibles, j’ai découvert que le support V4L2 n’est pas encore supporté !!! 🙁

 

Argh… il faudra attendre la version 1.24.

 

Mais pas de soucis, ZoneMinder sait lire un flux distant.. donc celui d’UVCStreamer 😀

 

zm1

zm2

zm3

 

Un clic sur Cam01 et une fenêtre s’ouvre pour voir ce qu’il se passe en direct (mode monitor).

En mode Record, cela enregistre (dingue non 🙂 )

 

La force de ce logiciel, c’est la définition de zone dans votre flux webcam. Vous pouvez sélectionner certaines zones de surveillance et de non-surveillance et pour lequel vous établissez des actions d’alarmes (envoi d’un mail, d’un sms, enregistrement de la vidéo et transfert en FTP etc…)

 

Bref, un VRAI logiciel de Vidéosurveillance.

 

Je vous invite chaudement à consulter la page de Marcel Ryser ici : http://www.m-ryser.ch/surveillance.php

 

Savez également que ZoneMinder sait utiliser le protocole X10 (pour la domotique).

 

Bref, je n’ai pas fait tout le tour des possiblités de ZoneMinder mais il est vraiment impressionnant et les forums sont très actifs.

 

Vous pouvez mettre plusieurs webcam bien sûr et devenir le Bigbrother de votre domicile 😀 😀

 

1984

 

EDIT : Comme me le signale un visiteur, je vous rappelle que la videosurveillance est soumise aux lois en vigueur dans notre pays.

Ah ces commerciaux, ils sont très fort pour nous coller des backlinks :-p (après enquète, cette société est tellement plus intéréssée par sa pub et son CA que par l’esprit Opensource que je vire le backlink)

Si par contre, au point de vue professionnel, la vidéosurveillance vous intéresse, allez la :

http://www.entreprise-transparence.com/

Eux, ce sont des vrais, des pros, des purs 😉

 

Ce billet a été posté dans geekerie, linux, matériel et taggé , , . Bookmark ce permalink.

15 commentaires sur “Vidéosurveillance avec webcam usb et ZoneMinder

  1. Bonjour,
    je vais tester le logiciel.
    Cependant, je vous invite à compléter votre article très intéressant et complet de deux points, pour ne pas risquer d’induire vos lecteurs à se trouver dans l’illégalité :
    – les obligations légales liées aux lois en vigueur et régissant la vidéosurveillance en France et notamment celles de l’arrêté du 3 Août 2007
    – les liens vers les sites de la Préfecture de Police de Paris et de la CNIL (le partie technique de la déclaration fera le bonheur de tout vrai geek).
    Sinon, very geek indeed !
    Bien cordialement,
    Emmanuel Reynaud
    Directeur Commercial

  2. bonjour ton article est impressionnant mw je suis un sénégalais je devais presenter un memoire sur la telesurveillance sur ip.Mais à ce moment j’ai configuré mon serveur apache2 sur ubuntu qui marche à merveille et mon mysql et aussi zoneminder mais mon problème en est que je peux pas recupérer faire visualiser les images de ma webcam sur zoneminder.je pense que je peux compter sur ton aide pour régler le truc

  3. Merci :-p

    Comme dis dans l’article, si ta Webcam utilise un pilote V4L2, ZoneMinder ne peut pas le recuperer nativement.
    D’ou l’utilisation d’uvc-streamer. En lancant le stream et en te connectant sur http://tonPC:8080, tu devrais voir le flux de la webcam (sans zoneminder pour l’instant).
    Ensuite, reste à spécifier à ZoneMinder d’aller chercher cette URL.

  4. salut
    je reviens sur la scène du crime dont je suis accusé.
    Intéressant de présenter mon confrère (que je salue au passage) d’entreprise transparence comme complètement désintéressé, alors que je ne serai qu’un horrible marchand. Qui n’avance pas masqué au passage vous en conviendrait.

    Plus sérieusement, mon point de vue était surtout de rappeler que nos chers geeks ont peut-être raison de se foutre de la loi mais pas de l’ignorer.
    Alors tant mieux si François et moi sommes autres choses que de simples marchands, parce que c’est un milieu bien limite entre nous.

    Maintenant sur l’open Source, intéressant comme critique, alors que nous travaillons avec des programmes sous Linux depuis le début. Et là aussi, je salue le profil atypique de François et ses réalisations.

    Sans rancune, de toute façon votre blog me fait marrer à chaque fois (l’installation de FT par ex), j’y reviendrai encore.
    Allez pas la peine de le diffuser si vous préférez.
    Emmanuel

  5. Bien sur sur que je diffuse 🙂

    Vous avez votre droit de réponse bien entendu.

    Si je me permet de le mettre en avant, c’est que l’on rencontre souvent François dans les discussions opensource sur les canaux de discussion variés et que l’on connait son implication dans ce milieu. Maintenant loin de moi l’idée de dire qu’il n’est pas « intéressé » également, il faut bien faire vivre son entreprise 😀

    sans rancune également 😉

    Il n’est pas de mon niveau de dire que telle ou telle boîte de vidéosurveillance professionnelle est meilleure que l’autre, c’est plus du copinage 🙂

  6. merci pour l’élégance de la réponse.
    bon, vivement qu’on devienne copain alors !
    (partie privée : si je dis qu’on a un showroom au 302 rue de Charenton, 75012 Paris,et que vous les geeks vous êtes bienvenus, je vais me faire encore taper sur les doigts ;-))
    je peux nous prévaloir du label « Pro, pur et Dur » ?

  7. ah la la, indécrottable 🙂

    Je laisse pour l’équité entre les parties 😀

    Et si je passe sur Paris, je m’arrêterais voir si je tamponne le label :-p

  8. Emmanuel Reynaud, vous citez un arrêté récent sans le replacer dans son contexte, notamment les dispositions législatives datant de 1995 en leur version actuelle. La lecture de ces textes permet de constater somme toute assez rapidement que les exigences de l’arrêté évoqué ne sont que peu susceptibles de s’appliquer à un dispositif de ce genre, installé au sein d’un lieu d’habitation qui n’est autre qu’un domicile privé.

  9. Hello,

    juste un pti comment pour te dire qu’il existe aussi motion ( http://motion.sourceforge.net/ ), que j’utilise chez moi avec un stockage distant via sshfs, histoire que si le gars se barre avec la machine, et bien on aura quand même son joli visage en photo 🙂

  10. Tout à fait, motion est un très bon outil. 😀

    ZoneMinder fait également du stockage à distance puisqu’il enregistre dans une base MySql (prévoir de monter une connexion ssl bien évidemment)