Mostrando entradas con la etiqueta renombrar. Mostrar todas las entradas
Mostrando entradas con la etiqueta renombrar. Mostrar todas las entradas

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.

lunes, 27 de febrero de 2012

Cheese, fotos en ráfaga y conversión a vídeo

He logrado, o mejor debemos decir hemos logrado, por que he tenido ayuda "experta", superar algunas de las dificultades del uso de cheese que decíamos aquí. En primer lugar, el apagado del monitor ha sido bastante simple, ejecutando estas ordenes:
xset s off # Disable X windows screen saver
xset -dpms # Disable display power management system
tomadas de aquí.
Sin embargo, han aperecido otras dificultades. Cheese, además de limitarse a 10.000 imágenes, ha presentado otra dificultad; guarda los ficheros con unos nombres que dificultan la conversión a vídeo. Los ficheros, para poner un ejemplo, tienen unos nombres que muestran un cuerpo inicial común formado de la fecha de inicio y la hora, minutos y segundos de comienzo:
- Primero: 2012-02-17-173235_1.jpg
- Último: 2012-02-17-173235_10000.jpg
Luego se numeran desde el 1 en adelante, pero sin mantener un número común de caracteres. Esa falta de ceros a la izquierda de los números hace que el ordenador, y los programas que generan el vídeo desde las imágenes, los ordenen de manera equivocada, siendo por ejemplo el último el 2012-02-17-173235_9.jpg. Así, cada determinado número de frames hay una imágen equivocada que genera bastantes molestias.
Por suerte mi amigo hckorootx generó unos scripts para cambiar en masa el nombre de los ficheros, como podemos ver en los comentarios de esta entrada. En concreto, este script funcionó perfectamente (muchas gracias, hckorootx):

#!/bin/bash
for archivo in *.jpg; do
long_total=`expr length $archivo`
long_util=`expr $long_total - 18`
nombre_inutil=`expr substr $archivo 1 18`
nombre_util=`expr substr $archivo 19 $long_util`
if [ $long_util -eq 5 ]; then
ceros="0000"
nombre_final=$nombre_inutil$ceros$nombre_util
mv $archivo $nombre_final
elif [ $long_util -eq 6 ]; then
ceros="000"
nombre_final=$nombre_inutil$ceros$nombre_util
mv $archivo $nombre_final
elif [ $long_util -eq 7 ]; then
ceros="00"
nombre_final=$nombre_inutil$ceros$nombre_util
mv $archivo $nombre_final
elif [ $long_util -eq 8 ]; then
ceros="0"
nombre_final=$nombre_inutil$ceros$nombre_util
mv $archivo $nombre_final
fi
done

Además, como se ve es muy explicativa por si misma. Menos mal, por que yo de script en bash no tengo ni idea, y eran casi 40.000 ficheros en 6 tandadas los que había que renombrar.
Una vez convertidos adecuadamente desde el primero 2012-02-17-173235_00001.jpg hasta el último 2012-02-17-173235_10000.jpg, ya solo quedaba dar una orden de conversión. Después de haber pensado en usar openshot, decidí usar directamente mencoder, por que el terminal es siempre más rápido.
Con esta orden,

$ mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4

que tendré que pulir leyendo más profundamente las guías modernas de mencoder, me salió un conjunto de vídeos de los que cortando trozos y pegando con VirtualDubMod a través de wine logré un total de 4minutos y 12 segundos bastante buenos (me ha felicitado mucha gente), a partir de algo más de 6300 imágenes del total de 40.000.
No, no enseñaremos aquí el vídeo, por que es un objeto científico, y hasta que sea publicado los científicos no compartimos nada de nada. Después de publicarlos los derechos dejan de ser nuestros y ya no podemos disponer de nuestros hallazgos para difundirlos y hay que pedírselos a editoriales como Elsevier, Springer y otras similares. Si me dejan ponerlo en Youtube, según el uso al que esté destinado, lo pondré también aquí, pero no prometo nada.
El siguiente paso sería aprender lo suficiente de motion para poder evitar esa limitación de 10.000 imágenes de cheese... pero esa será otra historia