jueves, 29 de marzo de 2012

Limitaciones de cheese

Como he señalado en algunas entradas (1, 2), estoy utilizando cheese y unas simples cámaras web baratas (Logitech C200 y C525) para hacer fotos en ráfagas para hacer vídeos de la evolución de unas fases larvarias de un insecto. Como decíamos, el primer problema ha sido controlar el apagado del monitor, que provocaba eue cheese dejase de hacer fotos. Gnome 3 no ofrece la posiblidad "nunca" en el apagado de monitor, así que hay que recurrir al terminal; lo hemos logrado mediante la ejecución como administrador de estas 3 órdenes:

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

setterm -blank 0

Sin embargo, ha surgido una nueva dificultad. Al disparar en ráfaga, cheese tiene un límite de 10.000 fotos, lo que reduce las horas en las que puede estar disparando automáticamente, según los segundos de espera que configuramos. Esto nos obliga a controlar el programa varias veces al día, incluido el fin de semana. Mi amigo hckorootx ha estudiado el código de cheese y me ha señalado donde tiene escrito ese límite y como cambiarlo. Con un simple

$ su -
   palabra de administrador
# /usr/share/cheese/cheese-prefs.ui

editamos el fichero y podemos cambiar ese límite.


Sin embargo, el programa no parece admitirlo, por que a pesar de que luego en la configuración indiqué 30.000 fotos en ráfaga, el programa se apaga al llegar alrededor de la 18.800, por algún bug interno o control de ficheros por Linux, falta de memoria (esto lo dudo, por que ese ordenador tiene 16GB de RAM DDR3) u otras razones que aun no se nos hayan ocurrido. Este "killed" que podemos ver


pasó 3 veces seguidas; la primera a las 18.894, la segunda a las 18.816 y la última a las 18.000, como se puede ver en esta captura


Para intentar solucionar este problema hckorootx me recomendó instalar cheese desde código fuente. Una vez desinstalado, la instalación desde código siguió la rutina habitual (./configure, make y make install), pero para terminar ./configure me encontré en un infierno de dependencias que duró hora y media, con una acción cruzada del terminal y yumex para ir añadiendo librerías de desarrollo y algunos paquetes que cubren ciertas opciones de cheese que no se cubren al instalar desde binarios.
El resultado fue aun peor, ya que este nuevo cheese de origen código fuente no me permitió editar el fichero cheese-prefs.ui. Mejor dicho, me lo deja editar, pero el sistema genera un nuevo cheese-prefs.ui~ con los valores básicos originales (hasta cuatro veces y un fichero final cheese-prefs.ui~~~~).

En resumen, hasta ahora hemos solucionado el problema provocado por el monitor y el renombrado en masa de los ficheros mediante script para luego hacer correctamente el vídeo con mencoder. Sin embargo, seguimos como antes en el límite de 10.000 imágenes y tenemos que lanzar la ráfaga por la mañana temprano, al mediodía y por la noche.
Posiblemente la mejor solución sería usar un programa de vigilancia, como motion, pero no disponemos del tiempo necesario para estudiar los manuales (es un programa de terminal bastante complejo) para saber usarlo.

2 comentarios:

  1. Instalado Motion y leído su pequeño manual...

    1. Crea un directorio "motion" (o como le quieras llamar) en tu directorio HOME.

    2. Dentro del directorio "motion", crea 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 640
    # altura de la imagen
    height 480
    # 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/lince/motion/motion.conf

    A mi me funciona. Lo que no encuentro es un parámetro para establecer el número máximo de capturas a realizar, por lo que tengo que detener el Motion con Ctrl-C.

    Un saludo.

    ResponderEliminar
  2. Lo intentaré después de Semana Santa. Que no se corte me es indiferente; de hecho, eso es lo que persigo desde hace un tiempo. Gracias por tu aportación

    ResponderEliminar