martes, 10 de abril de 2012

Fotos en ráfaga - motion

Como se ha visto a lo largo del mes y medio que llevo manejando cheese, las aplicaciones gráficas generan o sufren limitaciones que muchas veces solo podemos superar con el terminal. La primera limitación era la dependencia de evitar la suspensión del monitor, que habíamos superado en gnome 3 con unas ordenes simples en terminal

xset s off # Disable X windows screen saver
xset -dpms # Disable display power management system
setterm -blank 0

Sin embargo, la limitación que no he podido superar ha sido la limitación del número de fotos extraídas por cheese. Sin embargo, gracias a motion, un programa de vigilancia y monitorización mediante cámaras GPL2, y a mi amigo hckorootx ya no hay ningún límite a las fotos en ráfaga, salvo el que nos imponga el hardware del que disponemos.
La instalación de motion en Fedora es tan simple como
$ su -
     palabra
# yum install motion

La ejecución sería algo más compleja, pero hckorootx nos ha preparado un itinerario simplificado que yo he seguido al pie de la letra y funciona perfectamente

1. Crea un directorio "motion" (o cualquier otro nombre) en home

2. Dentro del directorio crear un archivo "motion.conf" con el siguiente contenido:

process_id_file /var/run/motion/motion.pid
# 1 captura por segundo:
snapshot_interval 1
output_normal off
# tipo de paleta a utilizar (3 = JPEG):
v4l2_palette 3
framerate 2

brightness 0
contrast 0
hue 0
saturation 0

# anchura de la imagen
width 1280
# altura de la imagen
height 720
# calidad de la imagen (porcentaje de 0 a 100)
quality 75
# directorio de destino de las capturas
target_dir /home/lince/motion
# formato para los nombre de los archivos
snapshot_filename %d-%m-%Y/%H-%M-%S

3. Desde terminal, ejecuta:

$ motion -c /home/usuario/motion/motion.conf

Como se puede ver solo he cambiado sobre el original de hckorootx la anchura y altura de las fotos, ya que ahora mismo estoy usando una Logitech 525, que me permite mayor resolución.

El resultado es magnífico; una foto por segundo, sin tener que preocuparse por el apagado del monitor.


Además, tal como ha diseñado el fichero hckorootx las fotos se van guardando en un directorio diferente cada día, con lo cual podemos ir eliminando los días no válidos con un simple rm en terminal o de manera gráfica en nautilus. No recomiendo el uso del explorador gráfico, ya que estamos hablando de decenas de miles de ficheros y nautilus tarda mucho en escanear los ficheros y responder.

El siguiete objetivo será conseguir sacar fotos desde dos cámaras distintas con un solo ordenador. Nos ponemos a ello.
Muchas gracias a Kenneth Lavrsen por escribir esta magnífica aplicación y a hckorootx por estudiarla por mi y facilitarnos su uso.

6 comentarios:

  1. Para utilizar dos cámaras hay que modificar ligeramente motion.conf y crear un archivo de configuración para cada una.

    1. Cambios en motion.conf:

    process_id_file /var/run/motion/motion.pid
    snapshot_interval 1
    output_normal off
    v4l2_palette 3
    framerate 2

    brightness 0
    contrast 0
    hue 0
    saturation 0

    width 1280
    height 720
    quality 75

    snapshot_filename %d-%m-%Y/%H-%M-%S

    thread /home/usuario/motion/thread1.conf
    thread /home/usuario/motion/thread2.conf

    Como puedes observar, eliminamos la opción "target_dir", ya que cada cámara va a grabar en un directorio distinto, así que eso lo configuraremos en el archivo correspodiente a cada dispositivo; además, declaramos un thread (hilo) para cada cámara.

    2. Contenido de thread1.conf:

    #nombre de dispositivo para la primera cámara
    videodevice /dev/video0

    #directorio donde se guardarán las capturas de esta cámara
    target_dir /home/usuario/motion/cam1

    3. Contenido de thread2.conf:

    #nombre de dispositivo para la segunda cámara
    videodevice /dev/video1

    #directorio donde se guardarán las capturas de esta cámara
    target_dir /home/usuario/motion/cam2

    Por último, motion se ejecutaría del mismo modo que para una sola cámara:

    $ motion -c /home/usuario/motion/motion.conf

    Saludos.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Sin embargo encuentro un problema en ese motion.conf. Mi intención es usar las dos cámaras de las que dispongo, y una es una c200, que no tiene la resolución 1280x720, si no que solamente puede hacer 640x480. ¿Será posible llevar esa parte de la configuración a los ficheros individuales de cada cámara? Por lo que he visto aquí (http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuideGettingItRunning) me parece factible, con lo que sería, por ejemplo el contenido de thread1.conf:

    #Resolucion
    width 1280
    height 720

    #Calidad
    quality 75

    #nombre de dispositivo para la primera cámara
    videodevice /dev/video0

    #directorio donde se guardarán las capturas de esta cámara
    target_dir /home/usuario/motion/cam1

    y el de la thread2.conf:

    #Resolucion
    width 640
    height 480

    #Calidad
    quality 75

    #nombre de dispositivo para la primera cámara
    videodevice /dev/video1

    #directorio donde se guardarán las capturas de esta cámara
    target_dir /home/usuario/motion/cam2

    ¿Sería factible?

    ResponderEliminar
  4. Así es.
    El contenido de motion.conf es una configuración común a todos los dispositivos. Si queremos una configuración diferente para cada cámara, por ejemplo distintas resoluciones, eliminamos los parámetros "width" y "height" de motion.conf y los añadimos a thread1.conf y thread2.conf, tal y como detallas en tu ejemplo.
    De hecho, podrías tener un motion.conf sólo con las dos líneas "thread..." y el resto de la configuración en cada threadX.conf (pero sería repetir la parte común).

    ResponderEliminar
  5. buenas tengo una tarjeta geovision GV600 para 16 camaras y el sistema motion configurado y corriendo, mi problema se presenta porque tengo 10 camaras y no se como hacer para que linux me permita incluirlas todas, es decir tengo thread1.conf,thread2.conf ... thread10.conf pero el parametro input solo me permite incluir 8 camaras (input 0
    input 1 ... input 7, 8=disabled)
    La pregunta es que debo poner en los archivos de configuracion para que las camaras 9 y 10 funcionen?

    ResponderEliminar
  6. Necesitaríamos saber si se muestra algún error al configurar e intentar activar esa novena cámara o si hay algún mensaje cuando las lanzas. Mientras tanto, la página original de motion (http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome) tiene mucha información y una FAQ interesante.

    ResponderEliminar