|
Script para hacer un video con imágenes jpg
Publicado el: 10-26-2007 @ 06:01 pm
Si se nos ocurre la idea de hacer un video con las imágenes que hemos tomado en nuestras vacaciones, esto puede ser hecho a través de un script que incluya el comando mencoder. Como siempre, para instalarlo en Debian:
aptitude install mencoder
Aquí deberiamos saber algunas cosas relativas a la imagen y al número de ellas que se proyectarán por segundo en el video. Si no tenemos idea de ello lo más sencillo es abrir uno con Avidemux e ir a Archivo -> Properties. Tal como se presenta en la imagen, un ejemplo válido sería 720x480 para el tamaño de imagen y de 29,97 fps para el Frame Rate.
Si nuestra imagen no tiene esa geometría (formato) la escalamos con el gimp o empleamos un script destinado para ello. Por otra parte, el Frame Rate señala el número de imágenes que se proyectarán por segundo. En este caso, si queremos proyectar nuestra imagen por 3 segundos necesitamos entonces 90 copias de ella. El script que presentamos a continuación permite copiar una imagen de geometría 720x480 las veces que se quiera en un folder contenedor transitorio denominado carpeta y, desde allí, construir automáticamente el video *.avi a 29,97 fps. En la etapa final todas las imágenes en carpeta se borran para no ocupar espacio innecesariamente. El video, nombre_base_archivo.avi, se graba en el directorio donde se encuentra alojado el script. #!/bin/bash echo -n "nombre archivo a copiar? = " read archivo echo -n "numero de copias? =" read j for archivo in *.jpg do base=`basename "$archivo" .jpg` done while [ "$i" != $j ] do let "i = i + 1" cp $archivo carpeta/$base"$i"".jpg" done mencoder 'mf://carpeta//*.jpg' -mf w=720:h=480:fps=29.97:type=jpg -of avi -ovc lavc -oac mp3lame -o $base".avi" rm carpeta/* Para hacer funcionar el script es necesario darle permisos de ejecución: chmod +x videoavi
y ejecutarlo con: ./videoavi
No obstante, es importante manifestar que en el lugar donde alojemos el script hay que crear tambien el directorio carpeta que almacenará transitoriamente las múltiples imágenes que constituirán el video. Este script acelera considerablemente el proceso cuando se compara con el procedimiento delineado en este otro artículo: Como hacer un video con imágenes jpg Aquí tenemos una imagen que ejemplifica el uso del script:
El video estático producido dura poco más de 3 segundos con la incorporación de 100 frames a 29,97 fps. Finalmente, reformulé el script anterior para ganar en rapidez. Este fue el resultado: #!/bin/bash for archivo in *.jpg do j=100 base=`basename "$archivo" .jpg` while [ "$i" != $j ] do let "i = i + 1" cp $archivo carpeta/$base"$i"".jpg" done let "i=0" mencoder 'mf://carpeta//*.jpg' -mf w=720:h=480:fps=29.97:type=jpg -of avi -ovc lavc -oac mp3lame -o videos_imagenes/$base".avi" rm carpeta/*.jpg mv $base".jpg" imagenes/ done
En las imágenes que presento a continuación hago una breve reseña de como opera. La imagen siguiente presenta 5 ventanas abiertas. La primera corresponde a video_estatico_avi que es la que contiene el guión, la segunda es salida que contiene la imágenes que fueron formateadas masivamente por el script resize. Las tres últimas corresponden, respectivamente, a imagenes (almacena aquellas imágenes que se van procesando desde salida), videos_imagenes (almacena los pequeños videos de poco más de 3 segundos generados) y la cónsola donde se ejecuta el script. Desde salida se arrastra la imagen hacia video_estatico_avi, nos dirigimos a la cónsola donde modificamos levemente el nombre de la imagen y al pulsar [Enter] (como por ejemplo en time ./videoavi nombre.jpg) obtenemos automáticamente lo siguiente: - Generación del minivideo en videos_imagenes.
- Movimiento de la imagen procesada a imagenes.
En la imagen siguiente podemos verificar como la foto procesada fue efectivamente movida a la carpeta imagenes (evitando la incertidumbre de cuales no han sido procesadas), que aparece el minivideo correspondiente y el tiempo de ejecución del script.
Lo mejor de todo es que el script anterior funciona como un productor masivo de minivideos de 3,3 segundos. Se pueden colocar en el folder contenedor del script todas la imágenes *.jpg de formato 729x480 que se deseen y tendremos con: ./videoavi *.jpg [Enter] en un tiempo relativamente breve (alrededor de 1 segundo/imagen), todos los minivideos generados en el folder videos_imagenes. Nota: Va sin garantía.

Ultima actualización el 04-21-2008 @ 08:19 pm
|