Cómo crear un timelapse en Ubuntu
¡Buenas a todos!
Hoy os traigo un breve tutorial para poder crear un timelapse en Ubuntu a partir de las fotos que hayáis tomado, por ejemplo, con el modo Timelapse de vuestra cámara Xiaomi Yi (de la que os hablé aquí hace un tiempo).
Antes de comenzar, quiero dar las gracias a Benito Palacios (@pleonex) por orientarme en el camino correcto. En en el repositorio de su rama IEEE tenéis una serie de scripts para realizar un timelapse con la webcam de un ordenador.
¿Qué es un timelapse?
Es una técnica fotográfica que muestra a cámara rápida un evento que ocurre en realidad a una velocidad muy lenta, por ejemplo: una puesta de sol o un concurso de programación de 24 horas.
Yo voy a tomar como ejemplo para este tutorial el segundo, porque me coincide bastante bien, ya que ayer mismo participé en el IEEExtreme 9.0, que es precisamente un concurso de programación de 24 horas de duración.
Intervalo al tomar las fotografías
Depende de la duración total del evento, no hay ninguna fórmula matemática que determine cuál es el intervalo exacto que debamos elegir. Sin embargo, realizando el siguiente cálculo rápido, intuiremos qué delay es más adecuado.
total fotos = duración evento / intervalo
Tened en cuenta que el número total de fotos deberá mostrarse en el vídeo que vamos a crear, y que la duración de este dependerá de los fotogramas por segundo que elijamos. Un valor típico suele ser 25 fps (es decir, que se van a mostrar 25 fotos por cada segundo de vídeo), pero podemos elegir valores más bajos de fps si vemos que va demasiado rápido (todo es cuestión de probar). En definitiva, este párrafo resumido en una ecuación:
duración vídeo (s) = total fotos / fps
En este ejemplo, como la duración total del evento era de 24 horas (86400 segundos), tomar una foto cada 3 segundos hubiera dado un resultado de un total de 28.800 archivos. Eligiendo 25 fotogramas por segundo, nuestro vídeo final tendría una duración total de 1152 segundos (aproximadamente 19 minutos).
Aunque parezca que resumir un evento de 24 horas en 19 minutos está bastante bien, sabemos que visualizar después esos 19 minutos va a ser un poco pesado (aunque habrá casos excepcionales, claro). Si queremos que nuestros amigos lo vean, teniendo en cuenta lo ocupados que están siempre, quizás sería más adecuado elegir un vídeo con una duración total de 1 minuto.
Para el caso del ejemplo, he elegido un intervalo entre cada toma de fotografía de 60 segundos, obteniendo 1440 archivos, que se mostrarán en el timelapse en algo más de un minuto.
Ya tengo las fotos, ¿ahora qué?
Instalamos MEncoder con el comando:
sudo apt-get install mencoder
Nos desplazamos hasta la carpeta donde tengamos las fotos (os pongo mi ejemplo, pero en vuestro caso será distinto):
cd Escritorio/timelapse-ieeextreme9
Creamos un archivo txt con el nombre de todos los elementos de esa carpeta, con el comando:
1s -1tr > nombres.txt
Ojo: el primer elemento del parámetro que le pasamos a ls es un 1, no es una letra l.
Ejecutamos el siguiente comando con los parámetros que nos interesen (más info sobre ellos en la documentación oficial):
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -mf type=jpeg:fps=14 mf://@archivos.txt -o timelapse.avi
Los parámetros más destacables:
aspect=16/9 sirve para que el vídeo que vamos a generar tenga el aspecto de 16:9, que es el más utilizado.
vbitrate=8000000 determina la calidad de vídeo que queremos obtener (bit rate). A menor bitrate, peor calidad.
scale=1920:1080 permite que el archivo creado tenga calidad HD (si las imágenes originales la tienen, claro).
type=jpeg:fps=14 indica que el input son fotos en formato jpeg, y que queremos que nuestro vídeo muestre 14 fotogramas por segundo.
-o timelapse.avi permite personalizar el nombre del output (vídeo que obtenemos a la salida).