Motion
Motion est un logiciel de détection vidéo et qui permet de diffuser un flux vidéo via internet par le protocole HTTP. C'est une solution simple pour diffuser le flux de sa webcam en ligne ou pour détecter des mouvements dans le champ d'une caméra par exemple.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
- Avoir activé les dépôts Universe.
- Avoir une webcam qui fonctionne.
Pour vérifier l'installation de votre webcam saisir dans un terminal :
gstreamer-properties
dans Video/Test, le test devrait afficher l'image de votre webcam.
Installation
Il suffit d'installer le paquet motion
Lancement automatique
Par défaut, le daemon motion n'est pas activé/démarré.
Si l'on veut l'activer, il faut mettre à 'Yes' la variable start_motion_daemon dans le fichier /etc/default/motion.
En mode utilisateur (hors daemon), le mieux est de copier le fichier /etc/motion/motion.conf dans son propre dossier personnel. Dans un terminal :
sudo cp /etc/motion/motion.conf ~/
Puis, mettre les bons droits :
sudo chown $USER ~/motion.conf
Configuration de base pour une webcam
Reportez-vous au fichier /usr/share/motion/examples/motion-dist.conf ou au site du développeur http://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigFileOptionsr
Maintenant nous allons éditer le fichier motion.conf
Les variables sont nombreuses et relativement bien expliquées en lignes de commentaires.
Les principaux paramètres a changer sont : target_dir, width & height (résolution). Les remplacer par les valeurs de votre choix.
Voici un exemple de motion.conf :
daemon off process_id_file /var/run/motion/motion.pid setup_mode off videodevice /dev/video0 v4l2_palette 8 input 8 norm 0 frequency 0 rotate 0 width 640 height 480 framerate 2 minimum_frame_time 0 netcam_tolerant_check off auto_brightness off brightness 0 contrast 0 saturation 0 hue 0 roundrobin_frames 1 roundrobin_skip 1 switchfilter off threshold 1500 threshold_tune off noise_level 32 noise_tune on despeckle EedDl smart_mask_speed 0 lightswitch 0 minimum_motion_frames 1 pre_capture 0 post_capture 0 gap 60 max_mpeg_time 0 output_all off output_normal on output_motion off quality 75 ppm off ffmpeg_cap_new on ffmpeg_cap_motion off ffmpeg_timelapse 0 ffmpeg_timelapse_mode daily ffmpeg_bps 500000 ffmpeg_variable_bitrate 0 ffmpeg_video_codec swf ffmpeg_deinterlace off snapshot_interval 0 locate off text_right %Y-%m-%d\n%T-%q text_changes off text_event %Y%m%d%H%M%S text_double off target_dir /tmp/motion snapshot_filename %v-%Y%m%d%H%M%S-snapshot jpeg_filename %v-%Y%m%d%H%M%S-%q movie_filename %v-%Y%m%d%H%M%S timelapse_filename %Y%m%d-timelapse webcam_port 8081 webcam_quality 50 webcam_motion off webcam_maxrate 1 webcam_localhost off webcam_limit 0 control_port 8080 control_localhost on control_html_output on track_type 0 track_auto off track_motorx 0 track_motory 0 track_maxx 0 track_maxy 0 track_iomojo_id 0 track_step_angle_x 10 track_step_angle_y 10 track_move_wait 10 track_speed 255 track_stepsize 40 quiet on sql_log_image on sql_log_snapshot on sql_log_mpeg off sql_log_timelapse off sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', %q', '%n', '%Y-%m-%d %T', '%C')
Ici, les mouvements détectés par la webcam seront sauvegardés au format swf, résolution 640x480 dans le répertoire /tmp/motion.
Le flux video de la webcam sera accessible par tous (webcam_localhost off) sur le port 8081.
Pour démarrer le processus :
motion -c motion.conf
Configuration pour plusieurs webcams
Lorsque plusieurs webcams sont utilisées, il faut dédier un fichier threadN.conf par webcam.
A la fin du fichier motion.conf, rajouter une ligne par webcam.
thread /chemin_jusque_fichier_thread.conf
Chaque fichier thread.conf reprend des paramètres du motion.conf qu'il va forcer pour chacune des webcams. Bien renseigner le paramètre videodevice qui doit etre different pour chaque fichier thread.conf.
Par défaut, les scripts de post-capture et de pré-capture /usr/local/motion-extras/ ne sont pas fournis lors de l'installation du paquet motion.
Exemple de fichier thread.conf
videodevice /dev/video1 input 8 text_left CAMERA COULOIR 1 target_dir /tmp/motion webcam_port 6881
Mettre en place une vidéosurveillance à distance
Grâce à Motion et Dropbox
« Vidéosurveiller son domicile », c'est bien, mais encore faut-il pouvoir consulter les images simplement et rapidement, de l'extérieur de votre réseau ! Je vous propose donc un petit tutoriel, très simple, qui vous permettra de consulter les images de votre système de surveillance depuis votre smartphone ou tout ordinateur connecté à Internet.
La démarche ci-dessous a été testée sur Ubuntu 12.04 et sur Debian Wheezy 7.1.
Ce qu'il vous faut
- Votre ordinateur (avec Ubuntu ou Debian),
- Une webcam fonctionnant avec votre ordinateur,
- Votre smartphone,
- Un compte Dropbox valide.
Ce qu'il faut faire
- Installez Motion sur votre ordinateur.
- Configurez Motion (avec les droits d'administration,modifiez /etc/motion/motion.conf, comme indiquez plus haut) : personnellement, en plus des réglages basiques, j'ajoute de réaliser 1 capture d'image toutes les demi-heures (cela peut s'avérer très pratique si la détection de mouvement ne détecte pas quelque chose) : avec les
- Installer Dropbox sur votre ordinateur comme indiqué ici : https://www.dropbox.com/install2
- Une fois l'installation de Dropbox réalisée, un dossier nommé « Dropbox » est créé dans votre dossier personnel : il vous faut maintenant indiquer à Motion (en modifiant la cible de destination des images enregistrées de Motion dans le fichier motion.conf à la ligne : « target_dir ») d'enregistrer les images dans ce nouveau dossier « Dropbox ».
- Enfin, installez Dropbox sur votre smartphone et synchronisez-le.
La mise en route de la vidéosurveillance
- Démarrez Dropbox sur votre ordinateur :
$ ~/.dropbox-dist/dropboxd
- Démarrer Motion
sudo motion -c /etc/motion/motion.conf
Désormais, vos images enregistrées dans le dossier Dropbox sont automatiquement sauvegardées en lignes vers votre stockage Dropbox ! Il ne vous reste plus qu'à les consulter quand vous le souhaitez avec votre smartphone !
Autres méthodes
Description à venir.
Problèmes connus
Erreur de segmentation, support ioctl
Si vous avez une erreur de segmentation au lancement, essayez avec :
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so motion -c motion.conf
Cette commande peux résoudre sur certaines machines , l'erreur ci dessous : VIDIOC_G_JPEGCOMP not supported but it should be (does your webcam driver support this ioctl?)
http://www.lavrsen.dk/foswiki/bin/view/Motion/SupportQuestion2009x01x20x183230
Unable to find a palette format
Si votre webcam fonctionne avec d'autres logiciels (cheese etc…) mais pas avec motion, et que l'on a une erreur du type "unable to find a palette format", la commande suivante peut résoudre ce problème :
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so motion:
Attention sous Ubuntu 14.04 LTS la commande est la suivante
LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so motion
Sous Ubuntu 16.04 LTS pour une architecture 64bits la commande est la suivante
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so motion
Voir aussi
- Site originel de Motion passé sur GitHub
- qmotion :http://slist.lilotux.net/linux/qmotion/index_fr.html qui fait entre autre l'envoi ftp.
- Kmotion avec interface web http://kmotion.eu/mediawiki/index.php/Main_Page