Estoy experimentando la mejor forma de sacar tandadas de fotos con una cámara para luego hacer un vídeo. El modelo es una larva en desarrollo y la intención es seguir algunas de las fases de transformación. La primera prueba fue "casi" exitosa. Y digo casi por que mi cámara cutre Logitech C200 sacaba una resolución 640x480 decente con cheese, hasta que descubrimos varios defectos. Primero, no se puede pedir más de 10.000 fotos (lo intenté con 30.000 y 15.000, y siempre marca 10.000). Segundo, y mucho más importante, al llegar horas después para comprobar como ha salido todo, descubro que cheese para de fotografiar cuando el monitor se apaga. Además, en gnome 3 no hay una opción gráfica para negar el apagado de la pantalla. El máximo tiempo es de una hora (ha desaparecido el never).
El resultado ha sido que a lo largo de la noche se ha parado repetidas veces de fotografiar. Lo más sorprendente es que unas después, siempre aleatoriamente, volvía a empezar. Sospecho que se debe a vibraciones que activa el monitor por movimientos del ratón. Por supuesto, he intentado encontrar soluciones:
1. Uso de motion. Tiene varias ventajas. Es un programa de vigilancia, así que se puede activar para sacar solo fotos cuando hay movimiento. Es en consola, con lo que supongo que no se verá alterado por un monitor apagado.
2. Editar xorg.conf. Aquí podemos ver como editando la sección ServerFlags
Section "ServerFlags"
Option "blank time" "0"
Option "standby time" "0"
Option "suspend time" "0"
Option "off time" "0"
EndSection
se anula el apagado. El problema es que en las distribuciones modernas la mayor parte de los conf de toda la vida han dejado de existir o se localizan en otro sitio en directorios conf.d. En resumen, en Fedora 16 no existe xorg.conf. Mejor aun, al querer generarlo como administrador, simplemente al escribir estas líneas,
su -
palabrita
gedit /etc/X11/xorg.conf
sin escribir en el fichero y sin guardarlo cheese dejó de funcionar (y tardó un rato antes de poder llamarlo de nuevo). Por lo de ahora he dejado esta posibilidad aparte
3. Ordenes más sencillas a través de setterm. Por ejemplo aquí indica alguna posibilidad
$ setterm -powersave off -blank 0
Empezaré probando esta última. Si no funciona, seguiremos generando un xorg.conf y finalmente con motion (es un programa de terminal cuyas opciones dan para un kilómetro y medio de papel impreso). La versión gráfica kmotion creo que precisa apache, lo que para hacer unas fotos de 50 kb me parece mucho.
Finalmente, si todo sale bien, compraré una cámara con más resolución.
Aquí tienes el script para añadir ceros (por la izquierda) a los nombres de ficheros; de vez en cuando no viene mal desempolvar el bash scripting...
ResponderEliminar#!/bin/bash
# Para cada archivo con extensión jpg...
# (si tus extensiones son en mayúsculas,
# sólo tienes que sustituir jpg por JPG
# en el for siguiente):
for archivo in *.jpg; do
# Obtenemos la longitud completa del
# nombre del archivo, incluidos el
# punto y la extensión (.jpg):
longitud_nombre=`expr length $archivo`
# Si la longitud es 5 (archivos con
# numeración de 1.jpg a 9.jpg) añadimos # cuatro ceros, quedando 00001.jpg hasta
# 00009.jpg.
# Si la longitud es 6, añadimos tres
# ceros.
# Si la longitud es 7, dos ceros.
# Si la longitud es 8, un cero:
if [ $longitud_nombre -eq 5 ] ; then
mv $archivo 0000$archivo
elif [ $longitud_nombre -eq 6 ] ; then
mv $archivo 000$archivo
elif [ $longitud_nombre -eq 7 ] ; then
mv $archivo 00$archivo
elif [ $longitud_nombre -eq 8 ] ; then
mv $archivo 0$archivo
fi
done
Espero que te sirva, y haz siempre copias de seguridad antes de ejecutar scripts ajenos (y propios)...
Un saludo.
El script está bien, pero el nombre es algo más complejo de lo que parece. Los nombres son
ResponderEliminar2012-02-17-172236_1.jpg, con lo que el script lo convierte en
02012-02-17-172236_1.jpg (he hecho la primera prueba en una tandada de solo 80 ficheros, con un cambio solo en los 1-9).
Es decir, necesitaríamos que fuera capaz de añadir los valores en la posición 19, antes del número. si eso fuera posible, lo mejor sería generar un bucle de repeticiónhasta una longitud total de 10+8+4+4=26, si tomamos el último como 9999. Solo en dos casos ha llegado al límite de 10000 (en ese caso sería 27). Yo reconozco mi ignorancia total sobre el bash, algo que intentaré corregir cuando disponga de algo de tiempo.
No sabía que llevaba la fecha de creación antes del número, imaginaba 1.jpg, 2.jpg, etc.
ResponderEliminarDe acuerdo, seguiré desempolvando.
#!/bin/bash
ResponderEliminarfor 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
Voy a intentar esta tuya nueva. Yo había modificado hasta
ResponderEliminar#!/bin/bash
# Poner todos los ficheros solo con número
# además elimina los saltos donde carecemos de algun número
j=1; for i in *.jpg; do mv $i $j.jpg; j=$(($j+1)); done
# Aquí seguimos con el script de hckorootx
# Para cada archivo con extensión jpg...
for i in *.jpg; do
# sobre los numeros conseguidos añadir ceros
longitud_nombre=`expr length $i`
if [ $longitud_nombre -eq 5 ] ; then
mv $i 000$i
elif [ $longitud_nombre -eq 6 ] ; then
mv $i 00$archivo
elif [ $longitud_nombre -eq 7 ] ; then
mv $i 0$archivo
# Reservado para favorecer el cambio en los 10000
# elif [ $longitud_nombre -eq 4 ] ; then
# mv $i 0$archivo
fi
done
El problema es que al reducir todos los ficheros a números lo ordena mal, tal como ya los ordena mencoder, con lo que no adelantamos nada. Intentaré esto tuyo.
Niquelada. Ahora va al punto
ResponderEliminar