Time Lapse en Linux

El time lapse, es una técnica de fotografía que consiste en mostrar una secuencia de imágenes, de tal forma, que pareciera que se está reproduciendo en cámara rápida. En la actualidad hay algunas cámaras de video que ya incorporan este efecto y algunas cámaras de fotos también tienen esta opción. Sin embargo se ven sólo en equipos profesionales. También existen algunos adaptadores que se incorporan en una cámara fotográfica, que la programan para realizar esta función, aunque tampoco se puede usar en todas las cámaras.

Sin embargo, este mismo efecto se puede realizar con cualquier dispositivo que grabe video, desde un teléfono celular, pasando por cámaras de fotos, hasta una cámara de video promedio. Incluso se puede hacer con videos que ya se encuentren grabados, sin importar el tipo.

Para poder realizar esto, Linux, nos ofrece una opción que en muy poco tiempo y con una sola línea de comandos, lo podemos tener listo.

El Concepto.

La vista humana, puede ver a razón de 30fps (cuadros por segundo), es decir, un movimiento lo vemos fluído, si los cuadros que forman el movimiento se reproducen a razón de 30 en un segundo, podemos ver esta secuencia sin cortes o saltos. Con esto claro podemos determinar que si tenemos un video de un minuto de duración, deberá estar formado por un total de 1,800 cuadros, si es de cinco minutos, tendrá 9,000 cuadros o imágenes estáticas.

Para poder lograr el efecto del time lapse, debemos tener videos relativamente largos, aunque puede variar según la configuración que apliquemos al final, podemos lograr un video de time lapse de dos minutos, de un video original de cuarenta minutos. Para apreciar mejor el efecto, la cámara se apunta sin moverla durante este tiempo, cuarenta o mas minutos y se graba el video.

Procedimiento.

Una vez que tengamos el video, grabado por nosotros o desde otra fuente, procedemos a procesarlo con una sola línea de comandos, que es la que hará el trabajo pesado de separar las imágenes, volverlas a unir y renderizar el nuevo video. El tiempo de este proceso dependerá de la capacidad del equipo y sobre todo de la longitud del video.

Como ya indicamos, una imagen fluida se ve a razón de 30 cuadros por segundo, pero si de estos 30 cuadros, quitamos algunos y nos quedamos con unos pocos y los volvemos a unir, vamos a lograr el efecto time lapse, lógicamente como estamos quitando cuadros, el video se ve reducido en tiempo, pero a la vez da la sensación de que todo está ocurriendo en cámara rápida.

Para lograr esto vamos a utilizar ffmpeg, que lo podemos instalar desde la consola con solo escribir:

sudo apt-get install ffmpeg

Ya que lo tenemos instalado procedemos a realizar la operación.

ffmpeg -i video.avi -r 1 -ss 00:00:00 -t 00:40:00 imagen_%05d.png && ffmpeg -f image2 -i imagen_%05d.png video.mpg

Explicación de la línea de comandos

-i video.avi es el video original que vamos a procesar y que se encuentra en tiempo real.

-r 1 estamos indicando que el rate sea de 1 cuadro por segundo, es decir que de los 30 cuadros, vamos a tomar solo uno, para hacer un poco mas fino el video final en time lapse, se puede aumentar este número hasta 5.

-ss 00:00:00 indica a partir de que momento se va a procesar el video, en este caso es desde el inicio, si queremos empezar en el minuto diez con treinta y cinco segundos, entonces usamos -ss 00:10:35

-t 00:40:00 indica cuanto tiempo vamos a procesar a partir del punto de inicio, en el ejemplo son cuarenta minutos, si el video inicia en el minuto diez, entonces después de cuarenta minutos, terminará en el minuto cincuenta.

imagen_%05d.png es el formato final de las imágenes o cuadros que se generarán, el %05d indica que se creará una secuencia de imágenes numerada del tipo imagen_00001.png, imagen_00002.png, imagen_00003.png etc.

&& unimos los dos comandos

-f image2 indicamos que es una secuencia de imágenes que vamos a renderizar en un video

-i imagen_%05d.png el formato de imagenes que se van tomar par renderizar el video, debe ser igual al anterior.

video.mpg el nombre y el formato del video final.

Observaciones: se puede utilizar cualquier tipo de formato de imagen, jpg, gif, png, pero se recomienda png, el formato inicial y final del video puede ser cualquiera de los reconocidos por ffmpeg.

Si deseamos, también podemos insertarle un audio al video con el siguiente comando, hay que tomar en cuenta que el audio debe ser de la misma longitud del video:

ffmpeg -i audio.mp3 -i video_entrada.mpg video_salida.mpg

Con esto ya tenemos nuestro video con el efecto de time lapse y audio incluido. Algo interesante que se puede hacer, antes de renderizar el video, cuando tenemos nuestra secuencia de imágenes, podríamos editarlas manualmente con algún editor de imágenes, Gimp por ejemplo y aplicarle efectos a estas imágenes, que al final serán quedarán en el video final.

A continuación un par de videos con la técnica del Time lapse en linux con dos comandos de consola

Amanecer

Atardecer

Un poco mas de información sobre el uso de ffmpeg en captura de fotogramas y cosas útiles con ffmpeg de MundoGeek

Deja un comentario