Instalación de la WebCamAqui teneis un buen link para la instalación de la WebCam: http://tldp.org/HOWTO/html_single/Webcam-HOWTO
Recomiendo que utilizeis la primera opción en caso de que sea posible. Yo tengo una Logitech, Inc. Quickcam Express y utilizo el driver gspca que es un derivado del spca de Michel Xhaard.
Software para probar la webcamAqui teneis una pequeña recopilación que he hecho de programas para webcam camoramaAplicación Gnome para webCams Permite ver video mediante tu webcam y aplicar varios filtros de imagen. También puede subir capturas a un server ftp. web: http://camorama.fixedgear.org
camstreamNos permite: * Utilizar un cómodo GUI * Realizar capturas cada X tiempo * Grabar imagenes y subirlas a un servidor Sus propositos: * Video conferencia * Grabar peliculas AVI y QuickTime * Sistema de seguridad web: http://www.smcc.demon.nl/camstream |
| tar xvzf motion-* cd motion-* ./configur |
Al final nos dira algo como:
| OS : Linux pthread Support: Yes jpeg Support: Yes V4L included: Yes FFmpeg Support: Yes MYSQL Support: Yes PostgreSQL Support: No |
Si algo aparece como NO y lo queremos, tendremos que instalarlo primero y luego repetir el configure
También es recomendable hecharle un vistazo a: ./configure --help
Ahora compilamos:
| make |
Si nos dice: "Build complete, run "make install" to install Motion!" Ha funcionado bien.
Entonces instalamos:
| make instal |
Configuración
Motion es muy configurable. La configuración que vamos a seguir es para conseguir un pequeño sistema de vigilancia con una WebCam.
Motion captura 1 frame cada X tiempo, y lo compara con el anterior, si se detecta que X píxels son distintos, considera que hay movimiento. Entonces, en nuestro caso, mientras dure el movimiento grabará un vídeo en formato avi. Además cada 10 minutos hará una captura de la imagen, esto nos servirá para asegurarnos de que motion ha estado funcionando correctamente.
También activaremos un pequeño servidor http de streaming con el que podremos ver en cada momento que esta pasando desde cualquier sitio del mundo donde haya internet.
Como ya he dicho no dispone de GUI, así que la configuración debe ser editando el archivo /usr/local/etc/motion.conf
Tenemos un ejemplo de archivo de configuración que renombraremos para utilizarlo como base:
cp /usr/local/etc/motion-dist.conf /usr/local/etc/motion.conf
Ahora lo editamos. Como podremos ver, esta todo bien explicado, asi que recomiendo una lectura entera del archivo. Seguidamente comentaré las opciones más interesantes, pero podemos verlas todas mejor explicadas en la web oficial: http://www.lavrsen.dk/twiki/bin/view/Motion/MotionGuideGettingItRunning
Configuración básica
daemon on Si queremos que inicie en modo demonio (background), para las primeras veces que lo ejecuteis mejor ponerlo a off para ver la salida
setup_mode off Si queremos que arranque en modo configuración, recomendable para la primera vez
videodevice /dev/video0 Nuestra camara
input 8 El tipo de dispositivo que estamos usando. 8 es para cámaras USB
rotate 0 Si queremos rotas la imagen, va en grados: 90, 180, 270...
width 320 La anchura. Esto dependera de lo que soporte nuestra cam. Para ello recomiendo probar con uno de los prgramas antes mencionados y ver hasta que tamaño podemos llegar.
height 240 La altura.
framerate 30 Los frames por segundo que se capturaran. Eso dependerá de la cualidad que le querais dar a la imagen de video. Yo utilizo 30.
Configuración de los filtros
Esots parámetros son muy importantes para conseguir una captura nítida y de buena calidad. Recomiendo que utiliceis un programa de los antes mencionados (camorama por ejemplo) para probar los distintos valores y encontrar el mejor para nuestra camara.
auto_brightness off Si queremos que motion regule el brillo de la camara. Recomendable no activarlo.
brightness 0 El brillo. Si tenemos auto_brightness activado, sera el valor medio en que se basará motion
contrast 0 El contraste. Si es 0, se utiliza el propio de la camara
saturation 0 La saturación. Si es 0, se utiliza el propio de la camara
Opciones de detección movimiento
threshold 1500 El número de pixels que deben cambiar para considerar movimiento
night_compensate on Para detectar movimiento en frames oscuros
pre_capture 20 El número de frames que queremos que se guarden anteriores al detectar movimiento
post_capture 20 El número de frames que queremos que se guarden posteriores al detectar movimiento
max_mpeg_time 0 Máximo tiempo seguido de captura de video
low_cpu 3 El número de frames que queremos que capture mientras no detecte movimiento. Recomendable un valor pequeño para CPU's lentas.
Imagen
output_normal off
Puede ser on, off, best, first
- off: no guarda imagenes al detectar movimiento
- first: solo guarda el primer frame
- best: solo guarda el de mayor movimiento
- on: guarda todas los frames donde se detecta movimiento
output_motion off Guardar las imagenes del movimiento. Estas constan sólo de los pixels donde se detecta movimiento. Puede ser curioso, pero no recomiendo activarlo.
quality 75 la cualidad de la imagen jpeg
Video
ffmpeg_cap_new on Utilizar ffmpeg para las capturas de vídeo
ffmpeg_cap_motion off Guardar el video de los pixels donde se detecta movimiento
ffmpeg_bps 400000 El bitrate de la captura de vídeo. Como más alto más calidad.
ffmpeg_video_codec mpeg4 El códec a utilizar
Snapshots
snapshot_interval 600 Guardará una imagen, aunque no haya movimiento, cada 600 segundos
Directorios
target_dir /var/motion El directorio donde motion guardará los videos y las imagenes
Servidores
- Servidor de straming: Un pequeño servidor http que nos permitirá ver en tiempo real la webcam
webcam_port 8081 El puerto donde escuchará el servidor
webcam_quality 50 La cualidad en que se mostrarán las imágenes
webcam_maxrate 8 El número máximo de frames que se mostrarán para los vídeos en streaming
webcam_localhost off Si queremos restringir el uso del servidor para uso local solo
- Servidor de control: Este es un pequeño servidor http que nos permite configurar motion en vivo.
control_port 8080 El puerto donde escuchará el servidor
control_localhost on Si queremos restringir el uso del servidor de control para el uso local
control_html_output on Para que la salida sea en formato html
control_authentication usuario:tu_pass Para definir el usuario y el password
Otros
on_event_start comando El comando que se ejecutará al detectar movimiento
Probando los resultados
Ahora solo nos queda iniciar motion: /usr/local/bin/motion -c /usr/local/etc/motion.conf
Como veremos se iniciará y mostrará lo siguiente (en el caso que no este configurado como demonio)
| [0] Processing thread 0 - config file /usr/local/etc/motion.conf [0] Thread 1 is from /usr/local/etc/motion.conf [1] Thread started [0] motion-httpd/3.2.7 running, accepting connections [0] motion-httpd: waiting for data on port TCP 8080 [1] Started stream webcam server in port 8081 |
Cuando detecte movimiento mostrará un mensaje como
| [1] File of type 8 saved to: /tmp/motion/01-20070707234646.avi |
Y guardará el vídeo en el directorio que le hayamos indicado en la configuración
Si nos conectamos con nuestro navegador web al puerto 8081 veremos a tiempo real la WebCam
Y si nos conectamos al pueto 8080 tendremos un menú de configuración.

¡Cuidado! Es peligroso y poco recomendable dejar estos servicios abiertos al exterior, ya que se han detectado diversos bugs.
Una posible opción es utilizar apache. Le decimos a motion en la configuración que el tarjet_dir sea un directorio dentro de la raiz del apache (/var/www/motion). Luego dejamos apache corriendo y lo configuramos para que pida user y pass al intentar entrar en dicho directorio. Esto esta explicado en el siguiente link de esta misma web: Zona privada con apache
Conclusiones
Motion nos ofrece un entorno muy poderoso y ámplio. Podemos desde hacer un pequeño sistema de vigilancia como el explicado anteriormente, o un complejo sistema con varias cámaras (incluidas netcams), y una base de datos como Mysql o Postgresql para almacenar todo el contenido. El hecho de que nos permita ejecutar comandos al detectar movimiento, lo hace todavía más poderoso. Podemos crear un script por ejemplo que envie un mail, un sms, llame por telefono o incluso active una alarma.
Supongo que en el futuro alguien creará un GUI para la configuración del programa, ya que editar el archivo manualmente es un poco engorroso.




