jeudi 29 juin 2006

Les webcams sous Linux


Les webcams sous Linux

Les webcams sont de plus en plus utilisées. Elle permette d'ajouter une autre dimension lors de communication avec des logiciels de messageries instantanés. Il est enfin de possible de voir la personne. Un autre aspect non négligeable est la sécurité, les webcams permettent de surveiller un endroit à très faible coût.

Les webcams sont supportées sous Linux grâce au driver spca5xx. La liste des caméras supportées est disponible à mxhaard.

Installation

Les caméras sont maintenant détecté automatiquement. La procédures ci-dessous est gardé à des fins informatiques et n'est donc plus nécessaire.

Débranchez votre caméra avant de continuer. Télécharger le paquet de votre distribution (rpm, deb...).

Si aucun n'est disponible, télécharger les sources des drivers.
L'installation des sources nécessite d'avoir les sources du noyau, gcc, make, SDL-devel. Effectuer les commandes ci-dessous avec le compte administrateur (root).
make clean
make
make install

Ensuite exécutez la commande
modprobe spca5xx

Branchez votre caméra, si vous tapez dans une console la commande dmesg, vous devriez avoir de l'information concernant votre caméra. Si rien n'apparait, débrancher votre caméra et redémarrer votre machine. Ensuite rebrancher votre caméra et vérifier si vous obtenez bien les informations décrites plutôt. Si vous n'obtenez toujours rien, demander de l'aide sur notre forum.

Utilisation de votre webcam

Messagerie instantanée

Kopete gère de multiples protocoles de messagerie instantanée. Vous pouvez utiliser votre caméra avec les protocoles de Yahoo et de msn. Pour tester si votre caméra fonctionne, démarrez kopete, cliquer sur le menu Configuration et ensuite sur Configurer.... Finalement cliqué sur l'icône représentant une caméra. Après quelques secondes, vous devriez voir les images capturées par la caméra. Assurez-vous d'avoir la version la plus récente de kopete.

CamStream

CamStream est un logiciel qui permet d'enregistrer des images et de les envoyer sur un serveur. Des vidéos peuvent être enregistrés.





Nous pouvons remarquer qu'il est possible d'employer camstream pour surveiller un lieu. Il suffit de spécifier un serveur ftp afin qu'il puisse recevoir les images capturées. Ce logiciel prend des captures à intervalles réguliers, il y a pas de détection de mouvement de réalisée. Si l'interface de temps entre deux captures est faible, l'espace pris peut rapidement devenir important.

Motion

Motion est un logiciel parfait pour effectuer de la surveillance. Une tonne de paramètres sont disponibles.

Installation

L'installation de motion n'est pas très évidente. Motion nécessite ffmpeg, mais seul quelques versions bien spécifiques fonctionne. Si votre distribution offre un paquet pour motion employé le.

Téléchargez la version de ffmpeg disponible ici spécialement pour motion.
Effectuez les commandes suivantes
./configure --enable-shared
make
make install

FFMPEG est maintenant installé. Assurez-vous d'avoir MySQL ou PostgreSQL pour installer Motion. La librairie jpeg est aussi nécessaire. Tapez les commandes suivantes
./configure
make
make install

Une fois que motion est installé, il faut le configurer. Rechercher le fichier motion-dist.conf et changer son nom pour motion.conf. Copiez le fichier qui a été renommé dans le répertoire de votre usager. Sous Suse, ce fichier ce trouve dans le répertoire /usr/local/etc/.
Quelques propriétés doivent être modifiées.
Changer la valeur pour la norme employée dans votre région.
# The video norm to use (only for video capture and TV tuner cards)
# Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
norm 1

Changez la hauteur et largeur des images capturées.
# Image width (pixels). Valid range: Camera dependent, default: 352
width 640 

# Image height (pixels). Valid range: Camera dependent, default: 288
height 480 
Indiquez le nombre maximal d'images que votre caméra peut capturé, la plupart son limité à 30 images par seconde.
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 30 

Ajustez les différents paramètres disponibles pour la caméra au niveau de l'image. Il peut être utile de démarrer motion, changer les valeurs et ainsi de suite jusqu'à ce que le résultat réponde à nos attentes.
# Set the initial brightness of a video device.
# If auto_brightness is enabled, this value defines the average brightness level
# which Motion will try and adjust to.
# Valid range 0-255, default 0 = disabled
brightness 150

# Set the contrast of a video device.
# Valid range 0-255, default 0 = disabled
contrast 150

# Set the saturation of a video device.
# Valid range 0-255, default 0 = disabled
saturation 0

# Set the hue of a video device (NTSC feature).
# Valid range 0-255, default 0 = disabled
hue 0

La quantité de détails différents dans une image afin de détecter qu'il y a eu réellement un mouvement. Cette valeur peut s'avérer importante si votre webcam est située près d'une fenêtre ouverte. Une valeur plus élevée que 1 évitera de prendre des images du rideau qui bouge.
# Picture frames must contain motion at least the specified number of frames
# in a row before they are detected as true motion. At the default of 1, all
# motion is detected. Valid range: 1 to thousands, recommended 1-10
minimum_motion_frames 1
La dernière possibilité qui sera vue est la gestion des évènements. Motion permet d'effectuer des actions lorsqu'un évènement démarre, termine... Il est ainsi possible d'exécuter un script. Les possibilités deviennent alors illimitées. Il y a un évènement qui se produit lorsqu'un enregistrement vidéo débute et se termine. Il y en a un autre lorsque capture est effectué.
# Do not sound beeps when detecting motion (default: on)
# Note: Motion never beeps when running in daemon mode.
quiet on

# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap 
; on_event_start value

# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option gap.
; on_event_end value

# Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
# To give the filename as an argument to a command append it with %f
#; on_picture_save value
on_picture_save /home/paul/bin/send_email.sh %f

# Command to be executed when a motion frame is detected (default: none)
; on_motion_detected value

# Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_start value

# Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
# To give the filename as an argument to a command append it with %f
; on_movie_end value

Il est possible de remarquer avec le code ci-dessus que le script send_email.sh est excuté lorsqu'une image est sauvegardé, %f est envoyé en paramètre à ce script. À toutes les fois qu'une image est sauvegardée, elle est envoyée par courriel.
Motion sauvegarde en local les images. Si un voleur réussit à voler votre ordinateur, vos images seront perdues. Il est donc important que vous sauvegardez vos images et vidéo à un autre endroit. Si votre voleur est futé, il analysera votre ordinateur et pourrait trouver le lieu distant de sauvegarde que vous avez employé. Une solution peut consister à crypter votre disque dur. Pensez sécurité!
En parcourant le fichier de configuration de Motion, regarder bien les options, il y en a beaucoup. Il est possible par exemple de tout entreposé dans une base de données.

Démarrage de motion

Motion intègre un serveur Web, le port 8080 est utilisé. Il est possible de configuré motion, d'effectuer des captures d'écran, démarré l'enregistrement vidéo.... avec l'interface Web. Motion ne possède pas d'interface graphique mise à part cet interface là.
motion -c /home/paul/motion.conf

Nous avons vu comment utiliser sa caméra web sous Linux ainsi que divers logiciels qui peuvent mettre à contribution votre caméra.