ffmpeg – haciendo timelapses

Aunque estoy muy lejos aún de lograr los resultados que quiero, empiezo a tener algunas nociones de las cosas que se requieren para hacer un timelapse, pero de momento con algo hay que empezar.

Aprovecharé para mostrar un timelapse del amanecer en Punta Cana, República Dominicana, las fotos las saqué el último día que estuve por allí (fue el único día que pude levantarme temprano). Está compuesto de al menos 400 fotos desde las 6:38 hasta las 7:53 de la mañana. Al principio las fotos son cada 10 segundos, y luego lo subi a 15 segundos, o algo parecido.

Asegúrense de tener suficiente espacio en memoria para sacar sus fotos.

El intervalo en el que saqué es relativamente corto, una hora y poquito, y son 400 fotos, si van a hacer un timelapse de más tiempo, o con una frecuencia más alta, deben de estimar cuantas fotos van a sacar, y de allí tener el mínimo de espacio en la memoria de la cámara. Nada sería peor que tener un buen comienzo, y luego perderlo todo porque el final no se pudo guardar en memoria por no tener espacio.

Batería bien cargada, y de ser posible tener otra lista para reemplazar a la actual cuando se agote.

Por último es recomendable tener un buen trípode, estable y que permita sacar esa toma que buscamos. No siempre va a ser necesario, pero tenerlo no está demás.

Carpeta de timelapses con las distintas fotos

Carpeta de timelapses con las distintas fotos

Una vez que tengamos todas las fotos en una carpeta, podemos con el ffmpeg unirlas todas en un vídeo con el siguiente comando de consola:

ffmpeg -i '%*.JPG' -r 30 -q:v 1 -s 1920x1440 -filter:v "setpts=2.0*PTS" timelapse.mp4

A continuación una breve descripción de los parámetros que usé:

-i ‘%*.JPG’ Esto es la fuente de entrada de datos, como tenemos archivos .JPG y como están todos ordenados por nombre, no habrá problema. (hay que atender que JPG no es lo mismo que «jpg», por lo menos en sistemas operativos que respetan mayúsculas/minúsculas )
-r 30 Esto es para indicar cuantos fotogramas por segundo querríamos en nuestro vídeo
-q:v 1 Esto es para fijar la calidad del vídeo, el rango va de 1 a 31, y un numero bajo implica mayor calidad
-s 1920×1440 es para fijar el tamaño de salida en pixeles del vídeo, en este caso 1920 pixeles de ancho y 1440 de alto
-filter:v «setpts=2.0*PTS» es para usar el filtro sobre el vídeo, y el numero decimal que le pasamos es para indicar la velocidad del vídeo, por ej, 1.0 seria velocidad normal, números por encima de uno sería una reproducción más lenta, en este caso 2.0 seria la mitad de la velocidad y así sucesivamente, y números menores a 1 indicaría una aceleración, si hiciéramos 0.5 iría al doble de la velocidad normal.
timelapse.mp4 en este caso es el nombre del archivo de salida con el que queremos guardar.

El vídeo que creé, lo subí a youtube, y lo edité ligeramente, (le agregué un texto al inicio y al final, y una pequeña transición, además de una música que youtube pone a disposición para los vídeos.


Referencias:
http://superuser.com/questions/318845/improve-quality-of-ffmpeg-created-jpgs
https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video

Espero les haya gustado el post, si llego a encontrar como mejorar los timelapses, estaré publicando por aca. Como último, consejo, prueben jugar con los valores del filtro hasta encontrar la velocidad que más les guste, yo al principio, probé con valores 0.5, luego 2.5, luego 1.5 y finalmente me quedé con 2.0

En el siguiente post, estaré mostrando como hacer un resize  (ajuste de tamaño) con ffmepg de un vídeo, en caso por ej, que este timelapse de 1920×1440 quisiéramos darle un tamaño menor, como por ej: 640×480

Saludos!