Script para hacer un video con imágenes jpg

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. Un ejemplo válido sería 720×480 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 720×480 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
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 la imagen que presento a continuación hago una breve reseña de como opera:

Esta 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:

  1. Generación del minivideo en videos_imagenes.
  2. Movimiento de la imagen procesada a imagenes.

También 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 720×480 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.

Para probarlo, pueden bajarse directamente la carpeta video_estatico_avi (comprimida), con la foto prueba.jpg, desde aquí:

descarga

Luego de descomprimida, en cónsola se mueven hacia el directorio, le dan permisos de ejecución al script (chmod +x videoavi) y ejecutan con:

./videoavi prueba.avi

Después que tengan todos sus minivideos procesados, los unen con avidemux y si quieren le ponen música a través del mismo avidemux.

Esta entrada fue publicada en Linux. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s