#1 Le 04/07/2008, à 10:41
- tcherny86
Service de surveillance par webcam
Webcam est un programme qui capture des images et les envois vers un serveur.
Installation
$ sudo apt-get install webcam
Exemple de fichier de configuration : ~/.webcamrc
[grab]
device = /dev/video0
text = "webcam %Y-%m-%d %H:%M:%S"
infofile = filename
fg_red = 255
fg_green = 255
fg_blue = 255
width = 320
height = 240
delay = 3
wait = 0
input = composite1
norm = pal
rotate = 0
top = 0
left = 0
bottom = -1
right = -1
quality = 75
trigger = 0
once = 0
[ftp]
host = www
user = webcam
pass = xxxxxx
dir = public_html/images
file = webcam.jpeg
tmp = uploading.jpeg
passive = 1
debug = 0
auto = 0
local = 0
ssh = 0
Pour avoir des explications concernant les paramètres du fichier de configuration :
http://www.lea-linux.org/cached/index/S … ebcam.html
Exécution du programme
Tout simplement,
$ webcam
Mise en place en tant que service
Copier le fichier de configuration dans /etc/webcam.conf
$ sudo cp ~/.webcamrc /etc/webcam.conf
Création du script /etc/init.d/webcam
#! /bin/sh
### BEGIN INIT INFO
# Provides: webcam
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: Server for the webcam
# Description: captures images and uploads them to a Web-Server
# via ftp or ssh in a endless loop.
### END INIT INFO
# Author: tcherny <tcherny@free.fr>
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="the Webcam daemon"
NAME=webcam
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="/etc/webcam.conf"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
# 3 if no grabber device available
log_daemon_msg "Starting $DESC" "$NAME"
DEVICE_PARAM=$(grep device $DAEMON_ARGS)
DEVICE=${DEVICE_PARAM##*\ }
[ -e $DEVICE ] || ( echo "the video device is missing : $DEVICE" ; return 3 )
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $DAEMON -- \
$DAEMON_ARGS > /dev/null 2>&1 \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
Lancement / Arrêt
$ sudo /etc/init.d/webcam start
$ sudo /etc/init.d/webcam stop
Pour un démarrage automatique
$ sudo update-rc.d webcam defaults
vous êtes filmé !!!
#2 Le 05/07/2008, à 14:24
- d.xav
Re : Service de surveillance par webcam
Super, ce truc !
J'ai essayé la version "programme simple" c'est-à-dire sans le service. Ca marche impeccable même sur mon site web free.
Par contre j'ai dû changer le paramètre input:
device = /dev/video1
parce que sur /dev/video0 j'ai ma carte télé. J'ai identifié le fichier correspondant à ma webcam avec
$ xawtv -hwscan
Pour ma webcam Logitech QuickCam Pro 4000, j'ai dû changer les paramètres input et norm :
input = usb
norm = webcam
J'ai identifié ces paramètres avec la commande:
$ v4lctl -c /dev/video1 list
Hors ligne
#3 Le 07/07/2008, à 11:26
- Pingu63
Re : Service de surveillance par webcam
Salut je vient de regarder dans les depot et il existe deux logiciel qui semble faire la même chose, webcamd et webcam-serveur, je n'ai pas le temps de chercher comment il fonctionne, mais il semble qu'il n'y a pas besoin de créer de script pour leur exécution vu qu'il s'agit de démon.
Merci pour ton tuto qui est très intéressent.
Pingu
Hors ligne
#4 Le 08/07/2008, à 11:35
- tcherny86
Re : Service de surveillance par webcam
Salut je vient de regarder dans les depot et il existe deux logiciel qui semble faire la même chose, webcamd et webcam-serveur, je n'ai pas le temps de chercher comment il fonctionne, mais il semble qu'il n'y a pas besoin de créer de script pour leur exécution vu qu'il s'agit de démon.
Merci pour ton tuto qui est très intéressent.
Pingu
Oui j'avais vu également ces alternatives.
Mais le problème c'est qu'à l'installation de webcamd, il veux également m'installer le serveur X ; or ça ne m'intéressait pas car je suis sur une ubuntu server.
Quant à webcam-server, à vérifier, mais je crois qu'il ne fait pas d'envoi FTP. Il faut un applet java pour interroger le serveur. C'est une utilisation différente.
Le fonctionnement de webcam (tout court) m'intéressait beaucoup plus personnellement, mais il me manquait justement le fonctionnement en "service".
Voilà
#5 Le 21/07/2008, à 10:35
- MiNiShOoTeR
Re : Service de surveillance par webcam
Salut à tous!
Merci pour le tuto mais est-ce qu'il est possible de transferer les clichés dans un dossier local quelconque plutôt que sur un serveur FTP?
Je demande sa car je ne possède pas de FTP et ne connait aucun moyen d'en avoir un...
(Meme après avoir recherché c'est pas gagné... :S )
Merci d'avance!
EDIT : Si je supprime carrément la section FTP dans la config, les cliché seront uniquement archivés et je les aurais sur l'ordi non? J'essai tout de suite!
Apparement sa ne marche pas... si quelqu'un a une solution je suis preneur!
Dernière modification par MiNiShOoTeR (Le 21/07/2008, à 11:00)
Hors ligne
#6 Le 21/07/2008, à 18:31
- -Remaille-
Re : Service de surveillance par webcam
Pour le ftp, tu peux t'inscrire à un accès gratuit bas débit chez free, ils vont t'envoyer un kit de connexion et tes pass. Tu pourras ensuite créer un ftp de 10Go, gratos
(si tu n'es pas déja chez free... car sinon il suffit d'activer ton compte pour les pages perso)
Hors ligne
#7 Le 22/07/2008, à 18:06
- MiNiShOoTeR
Re : Service de surveillance par webcam
Ok merci Remaille, je vais faire sa!
Hors ligne
#8 Le 25/07/2008, à 13:19
- tcherny86
Re : Service de surveillance par webcam
Merci pour le tuto mais est-ce qu'il est possible de transferer les clichés dans un dossier local quelconque plutôt que sur un serveur FTP?
Pour répondre à cette question, regarde du côté de l'option 'local' de la section ftp du fichier de configuration. Elle permet de désactiver le transfert et de stocker les clichés en local.
Regarde la section [ftp] de cette page :
http://www.lea-linux.org/cached/index/S … ebcam.html
#9 Le 01/12/2008, à 00:38
- missou
Re : Service de surveillance par webcam
Bonjour,
C'est vraiment superbe ce tuto, je ne suis vraiment pas une "pro" dans le monde linux, mais ceci, je le comprend!
Les prises photos, ça fonctionne, et ça s'enregistre dans un dossier en locale (avec archive mais pour le ftp, j'obtiens:
moi@kubuntu:~$ webcam
reading config file: /home/moi/.webcamrc
/home/moi/.webcamrc:24: syntax error
video4linux webcam v1.5 - (c) 1998-2002 Gerd Knorr
grabber config:
size 320x240 [none]
input usb, norm webcam, jpeg quality 75
rotate=0, top=0, left=0, bottom=240, right=320
compare: max=30,avg=10
compare: max=39,avg=10
la ligne 24, dans mon fichier est:
host = monsiteweb.com
alors heu... j'ai aussi essayé avec l'adresse ip de mon site, avec le www. ou le http://www. devant l'adresse normal mais j'obtiens toujours le syntax error...
Quelqu'un sait ce qu'il faut faire pour corriger cela ?
Merci
#10 Le 03/12/2008, à 17:09
- missou
Re : Service de surveillance par webcam
Bonjour,
(...)
alors heu... j'ai aussi essayé avec l'adresse ip de mon site, avec le www. ou le http://www. devant l'adresse normal mais j'obtiens toujours le syntax error...
C'est réglé... il suffisait de refaire le copier coller avec les données du tuto, puis mes paramètres et maintenant, ça fonctionne