{"id":151,"date":"2008-10-03T10:10:08","date_gmt":"2008-10-03T09:10:08","guid":{"rendered":"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/03\/videosurveillance-avec-webcam-usb-et-zoneminder\/"},"modified":"2008-10-23T21:37:34","modified_gmt":"2008-10-23T20:37:34","slug":"videosurveillance-avec-webcam-usb-et-zoneminder","status":"publish","type":"post","link":"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/03\/videosurveillance-avec-webcam-usb-et-zoneminder\/","title":{"rendered":"Vid\u00e9osurveillance avec webcam usb et ZoneMinder"},"content":{"rendered":"<p>S&rsquo;il y a bien une chose o\u00f9 je suis \u00e0 la ramasse, c&rsquo;est tout les gadgets cens\u00e9 compos\u00e9 un pc normal.<\/p>\n<p>En l&rsquo;occurence par exemple, une webcam.<\/p>\n<p>Une petite publicit\u00e9 e.leclerc dans ma bo\u00eete aux lettres (celle en feraille dehors, pas l&rsquo;autre la vrai&#8230;), me fit part d&rsquo;une promotion sur les webcams et poussait par je ne sais quelle envie compulsive, j&rsquo;ai donc fait l&rsquo;acquisition d&rsquo;une Logitech S 5500 pour 49 euros.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/logitechs5500.png\" title=\"Logitech S5500\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/logitechs5500.thumbnail.png\" alt=\"Logitech S5500\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Ne me croyez pas idiot, j&rsquo;ai quand m\u00eame v\u00e9rifier sur le nain ternet qu&rsquo;elle fonctionnait sous Linux.<\/p>\n<p>&nbsp;<\/p>\n<p>Cette webcam fonctionne avec le driver UVC V4L2 (<a href=\"http:\/\/linux-uvc.berlios.de\/\" title=\"uvc\" target=\"_blank\">http:\/\/linux-uvc.berlios.de\/)<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Si vous avez un kernel r\u00e9cent (sup\u00e9rieur au 2.6.26-rc9), il est inclus dedans, sinon, tout comme moi, recompiler le noyau pour int\u00e9grer le support V4L que j&rsquo;avais d\u00e9sactiver :<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"code\">&lt;*&gt; Video For Linux\r\n\r\n       [*]   Enable Video For Linux API 1 (DEPRECATED)\r\n\r\n       ---   Enable Video For Linux API 1 compatible Layer\r\n\r\n       [*]   Video capture adapters  ---&gt;\r\n\r\n       [ ]   Radio Adapters  ---&gt;\r\n\r\n       &lt; &gt; DVB for Linux\r\n\r\n       [*] DAB adapters<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"code\">Video capture adapters\r\n\r\n     [ ]   Enable advanced debug functionality\r\n\r\n     [*]   Autoselect pertinent encoders\/decoders and other helper chips\r\n\r\n     [*]   V4L USB devices  ---&gt;<\/pre>\n<pre class=\"code\"><\/pre>\n<p>&nbsp;<\/p>\n<p>Et pis c&rsquo;est tout.<\/p>\n<p>&nbsp;<\/p>\n<p>Apr\u00e8s c&rsquo;est du standard :<\/p>\n<pre class=\"code\">svn checkout svn:\/\/svn.berlios.de\/linux-uvc\/linux-uvc\/trunk<\/pre>\n<pre class=\"code\">make\r\nmake install\r\nrmmod uvcvideo\r\nmodprobe uvcvideo<\/pre>\n<p>&nbsp;<\/p>\n<p>Pour streamer facilement et sans bouffer les ressources CPU, il existe un excellent outil : UVCSTREAMER.<\/p>\n<p>&nbsp;<\/p>\n<p>On r\u00e9cup\u00e8re les sources :<\/p>\n<pre class=\"code\">svn co https:\/\/mjpg-streamer.svn.sourceforge.net\/svnroot\/mjpg-streamer<\/pre>\n<p>On s epositionne dans le bon r\u00e9pertoire :<\/p>\n<pre class=\"code\">cd uvc-streamer<\/pre>\n<pre class=\"code\">make<\/pre>\n<pre class=\"code\">cp .\/uvc_stream \/usr\/local\/bin<\/pre>\n<p>Et voila, vous pouvez lancer le stream :<\/p>\n<pre class=\"code\">\/usr\/local\/bin\/uvc_stream -f 1 -r 320x240 -b<\/pre>\n<pre class=\"code\"><\/pre>\n<p>l&rsquo;option f = le nombre de frame par seconde<\/p>\n<p>l&rsquo;option r = la r\u00e9solution<\/p>\n<p>l&rsquo;option b = en tache de fond<\/p>\n<p>bref -h vous donnera toutes les options.<\/p>\n<p>&nbsp;<\/p>\n<p>Un petit tour de navigateur sur l&rsquo;ip du pc : http:\/\/ipdupc:8080<\/p>\n<p>Et voila, le flux s&rsquo;affiche, magique.<\/p>\n<p>&nbsp;<\/p>\n<p>C&rsquo;est rigolo mais pas assez geek&#8230;<\/p>\n<p>&nbsp;<\/p>\n<p>Apr\u00e8s quelques recherches sur divers forums, je d\u00e9couvris enfin un produit int\u00e9ressant et opensource : <a href=\"http:\/\/www.zoneminder.com\/\" title=\"zoneminder\" target=\"_blank\">ZoneMinder<\/a>.<\/p>\n<p>Je vous laisse lire la pr\u00e9sentation succinte <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Zoneminder\" title=\"zoneminderwiki\" target=\"_blank\">ICI<\/a> .<\/p>\n<p>&nbsp;<\/p>\n<p>Si vous \u00eates sous <a href=\"http:\/\/www.debian.org\/releases\/unstable\/\" title=\"SID\" target=\"_blank\">Debian SID<\/a>, le package est pr\u00e9sent dans les d\u00e9p\u00f4ts.<\/p>\n<p>&nbsp;<\/p>\n<p>Pour les autres, comme moi, qui etes sous <a href=\"http:\/\/www.debian.org\/releases\/stable\/\" title=\"Etch\" target=\"_blank\">Etch<\/a>, vous  devez vous coltiner tout \u00e0 la main.<\/p>\n<p>&nbsp;<\/p>\n<p>Les d\u00e9pendances sont nombreuses (mysql5-dev, apache2, php5, pleins de modules perl etc&#8230;)<\/p>\n<p>Le moyen le plus simple est de se baser sur les d\u00e9pendances de SID sur <a href=\"http:\/\/packages.debian.org\/sid\/zoneminder\" title=\"zmsid\" target=\"_blank\">http:\/\/packages.debian.org\/sid\/zoneminder<\/a> et de l&rsquo;adapter \u00e0 Etch.<\/p>\n<p>&nbsp;<\/p>\n<p>On downloade les sources <a href=\"http:\/\/www.zoneminder.com\/downloads.html\" title=\"dlzoneminder\" target=\"_blank\">ICI<\/a> .<\/p>\n<p>&nbsp;<\/p>\n<p>J&rsquo;ai utiliser les option des compilation suivantes :<\/p>\n<p>.\/configure &#8211;prefix=\/opt\/zoneminder &#8211;with-libarch=lib  &#8211;with-webdir=\/opt\/www\/zm &#8211;with-cgidir=\/opt\/www\/zm\/cgi-bin &#8211;with-webuser=www-data &#8211;with-webgroup=www-data ZM_SSL_LIB=openssl<\/p>\n<p>make<\/p>\n<p>J&rsquo;ai eu quelques soucis \u00e0 la compilation, surtout dans le fichier zm_mpeg.cpp, et bourin, j&rsquo;ai virer le bout de code g\u00e9nant dedans \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<p>Ensuite, on cr\u00e9er une base mysql et on injecte le SQL dedans :<\/p>\n<p>&nbsp;<\/p>\n<p>cd db<br \/>\nmysql -u root -p -h localhost<br \/>\nmysql -u root -p -h localhost &lt; zm_create.sql<br \/>\nmysql -u root -p -h localhost<\/p>\n<p>puis<\/p>\n<p>make install<\/p>\n<p>&nbsp;<\/p>\n<p>Un petit vhost sous Apache2 dans le genre :<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;VirtualHost 192.168.0.1:80&gt;<br \/>\nServerAdmin webmaster@localhost<\/p>\n<p>DocumentRoot \/opt\/www\/zm<\/p>\n<p>&lt;Directory \/&gt;<br \/>\nOptions FollowSymLinks<br \/>\nAllowOverride None<br \/>\n&lt;\/Directory&gt;<br \/>\n&lt;Directory \/opt\/www\/zm&gt;<br \/>\nOptions Indexes FollowSymLinks MultiViews<br \/>\nAllowOverride None<br \/>\nOrder allow,deny<br \/>\nallow from all<\/p>\n<p>&lt;\/Directory&gt;<br \/>\nScriptAlias \/cgi-bin\/ \/opt\/www\/zm\/cgi-bin\/<br \/>\n&lt;Directory \u00ab\u00a0\/opt\/www\/zm\/cgi-bin\/\u00a0\u00bb&gt;<br \/>\nAllowOverride None<br \/>\nOptions ExecCGI -MultiViews +SymLinksIfOwnerMatch<br \/>\nOrder allow,deny<br \/>\nAllow from all<br \/>\n&lt;\/Directory&gt;<br \/>\n&lt;\/VirtualHost&gt;<\/p>\n<p>Et voila, vous pouvez lancer le bouzin :<\/p>\n<p>zmpkg.pl start<\/p>\n<p>La documentation est bien faite pour pouvoir vous d\u00e9patouiller :<\/p>\n<p><a href=\"http:\/\/www.zoneminder.com\/wiki\/index.php\/Documentation\" title=\"doczoneminder\" target=\"_blank\">http:\/\/www.zoneminder.com\/wiki\/index.php\/Documentation<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Le probl\u00e8me sur lequel j&rsquo;ai passer le plus de temps, c&rsquo;est la gestion directe de ma webcam par ZoneMinder.<\/p>\n<p>&nbsp;<\/p>\n<p>Impossible de la faire marcher avec des erreurs dans tout les sens et apr\u00e8s avoir essayer toutes les bidouilles possibles, j&rsquo;ai d\u00e9couvert que le support V4L2 n&rsquo;est pas encore support\u00e9 !!! \ud83d\ude41<\/p>\n<p>&nbsp;<\/p>\n<p>Argh&#8230; il faudra attendre la version 1.24.<\/p>\n<p>&nbsp;<\/p>\n<p>Mais pas de soucis, ZoneMinder sait lire un flux distant.. donc celui d&rsquo;UVCStreamer \ud83d\ude00<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/zm1.png\" title=\"zm1\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/zm1.thumbnail.png\" alt=\"zm1\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/zm2.png\" title=\"zm2\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/zm2.thumbnail.png\" alt=\"zm2\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/zm3.png\" title=\"zm3\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/zm3.thumbnail.png\" alt=\"zm3\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Un clic sur Cam01 et une fen\u00eatre s&rsquo;ouvre pour voir ce qu&rsquo;il se passe en direct (mode monitor).<\/p>\n<p>En mode Record, cela enregistre (dingue non \ud83d\ude42 )<\/p>\n<p>&nbsp;<\/p>\n<p>La force de ce logiciel, c&rsquo;est la d\u00e9finition de zone dans votre flux webcam. Vous pouvez s\u00e9lectionner certaines zones de surveillance et de non-surveillance et pour lequel vous \u00e9tablissez des actions d&rsquo;alarmes (envoi d&rsquo;un mail, d&rsquo;un sms, enregistrement de la vid\u00e9o et transfert en FTP etc&#8230;)<\/p>\n<p>&nbsp;<\/p>\n<p>Bref, un VRAI logiciel de Vid\u00e9osurveillance.<\/p>\n<p>&nbsp;<\/p>\n<p>Je vous invite chaudement \u00e0 consulter la page de Marcel Ryser ici : <a href=\"http:\/\/www.m-ryser.ch\/surveillance.php\" title=\"mryser\" target=\"_blank\">http:\/\/www.m-ryser.ch\/surveillance.php<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Savez \u00e9galement que ZoneMinder sait utiliser le protocole X10 (pour la domotique).<\/p>\n<p>&nbsp;<\/p>\n<p>Bref, je n&rsquo;ai pas fait tout le tour des possiblit\u00e9s de ZoneMinder mais il est vraiment impressionnant et les forums sont tr\u00e8s actifs.<\/p>\n<p>&nbsp;<\/p>\n<p>Vous pouvez mettre plusieurs webcam bien s\u00fbr et devenir le Bigbrother de votre domicile \ud83d\ude00  \ud83d\ude00<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/affiche_1984_1984_1.jpg\" title=\"1984\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/affiche_1984_1984_1.thumbnail.jpg\" alt=\"1984\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>EDIT<\/strong> : Comme me le signale un visiteur, je vous rappelle que la videosurveillance est soumise aux lois en vigueur dans notre pays.<\/p>\n<p>Ah ces commerciaux, ils sont tr\u00e8s fort pour nous coller des backlinks :-p (apr\u00e8s enqu\u00e8te, cette soci\u00e9t\u00e9 est tellement plus int\u00e9r\u00e9ss\u00e9e par sa pub et son CA que par l&rsquo;esprit Opensource que je vire le backlink)<\/p>\n<p>Si par contre, au point de vue professionnel, la vid\u00e9osurveillance vous int\u00e9resse, allez la :<\/p>\n<p><a href=\"http:\/\/www.entreprise-transparence.com\/\" title=\"transparence\" target=\"_blank\">http:\/\/www.entreprise-transparence.com<\/a>\/<\/p>\n<p>Eux, ce sont des vrais, des pros, des purs \ud83d\ude09<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S&rsquo;il y a bien une chose o\u00f9 je suis \u00e0 la ramasse, c&rsquo;est tout les gadgets cens\u00e9 compos\u00e9 un pc normal. En l&rsquo;occurence par exemple, une webcam. Une petite publicit\u00e9 e.leclerc dans ma bo\u00eete aux lettres (celle en feraille dehors, &hellip; <a href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/03\/videosurveillance-avec-webcam-usb-et-zoneminder\/\">Read More <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13,7,5],"tags":[58,57,59],"_links":{"self":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/151"}],"collection":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=151"}],"version-history":[{"count":0,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/151\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/categories?post=151"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/tags?post=151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}