30 abr. 2009

Streaming de vídeo con Motion

Navegando por los blogs he encontrado un artículo con un programa de estos que no está nada mal de tener a mano.

Esta vez el blog al que he caído ha sido el de lopz (hola lopz!). El artículo que me ha llamado la atención es "Sistema de vigilancia", cierto, este sistema se puede usar para vigilar un sitio, permitiendo un modo de transmitir datos en el momento que la camera detecta movimiento, pero otras utilidades podrían ser el streaming de una charla (usando gstreamer para el audio y el motion para el video ideal para conexiones limitadas). El programa además permite capturar vídeo de varias cameras a la vez, así que dejo a vuestra imaginación a dónde usar este programa :D

El programa, tal como su nombre indica, motion (de la técnica motionflow), permite capturar imagenes cada x tiempo del dispositivo de video indicado, estas las guarda a un directorio (también permite crear .avi y .mov) y finalmente con un navegador acceder a la página o al ftp dónde se esté creando el motion.

Motion se encuentra ya en los repositorios de debian unstable (sid), pero no aún en los de testing y menos en los de stable, así que podremos descargar de la página web del proyecto los sources, los paquetes .deb o los .rpm.

Aunque tenemos los paquetes .deb, vamos a instalar los sources, en un sistema en producción prefiero no hacer guarradas con las versiones de los paquetes, esto acaba convirtiendo el sistema inestable y tenemos que acabar reinstalando el sistema operativo de nuevo.

Actualización: A día de hoy he intentado instalar también los sources pero me está dando problemas para compilar algunas extensiones.

Como otras cosas que ya he instalado, por comodidad y mantener el escritorio limpio, voy a descargar y descomprimir el programa instalar en mi ~/bin.

# cd ~/bin
# mkdir motion
# cd motion
# svn co http://www.lavrsen.dk/svn/motion/trunk/ .
Vamos a compilar el programa con soporte mysql, esto va a permitir guardar nuestras capturas. Para esto será necesario instalar esta librería:
# apt-get install libmysqlclient15-dev
Así que procedimos a compilar el programa con soporte mysql (si queremos mas información de las opciones disponibles es recomendable mirar en ./configure --help:
# ./configure
**************************
Configure status
motion trunk-r442
**************************

OS : Linux
pthread Support: Yes
jpeg Support: Yes
V4L included: Yes
V4L2 supported: Yes
FFmpeg Support: No
SQLite3 Support: No
MYSQL Support: Yes
PostgreSQL Support: No
a continuación seguimos con el make y el make install:
# make
# make install
y ya tendremos el programa instalado!

Ahora debemos configurar el programa para que use nuestra webcam, al final de la instalación nos da unas pequeñas instrucciones interesantes a seguir:

Install complete! The default configuration file, motion-dist.conf, has been
installed to /usr/local/etc. You need to rename/copy it to /usr/local/etc/motion.conf
for Motion to find it. More configuration examples as well as init scripts
can be found in /usr/local/share/motion-trunk-r442/examples.

Así que somos obedientes y lo hacemos.
# cd /usr/local/etc
# cp motion-dist.conf motion.conf
si entramos dentro tenemos mogollón de opciones, para entender un poco qué significan cada una de ellas recomiendo visitar la siguiente página web:

http://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigFileOptions

Vamos a seguir usando la configuración por defecto, simplemente tener en cuenta que el valor videodevice apunte a tu dispositivo de captura, si ya lo tienes identificado (por el xawtv, el skype o cualquier programa que use dispositivos de captura de video). Si queremos usar una camera ip, simplemente basta con poner la ip o la url (por ejemplo http://192.168.1.9/cgi-bin/mjpg/video.cgi) en videodevice.

El programa se puede ejecutar en modo daemon o ejecutarlo como modo usuario, la unica diferencia es que uno corre en background y no suelta información en la consola y el otro si.

Para obligar a ejecutarse como usuario (no muy recomendable) vamos a arrancar el motion para ver los errores con:
# motion -n
Para comprobar que funciona primero de todo en la consola tendremos que tener algo del estilo:

[1] motion_init: Started motion-stream server in port 8081

Si aparece esto, además de ver que la luz que indica que la webcam está en funcionamiento estará encendida, abrimos un navegador y abrimos http://localhost:8081

Y ya podremos ver nuestra cara con el reflejo del monitor.

Ahora os recomiendo echar una ojeadita a la configuración para ver todas las posibilidades de configuración de las imágenes, el vídeo, la captura, la configuración de red, etc.

En el siguiente link, como configurar el motion con mas de una capturadora de vídeo

2 comentaris:

lopz ha dit...

Hola

Qué bien que lo tienes, ahora solo toca flipar con el xD

Saludos!

PD (por cierto, qué rápido que escribiste el post xD )

Blackhold ha dit...

hombre claro, porque lo he hecho con un teclado, si lo hubiese echo a mano aún lo estaría escribiendo xD

Publica un comentari a l'entrada