Faire un ‘timelapse’ des feux d’artifices

Ce 14 juillet, j’ai réussi à trouver une pas trop mauvaise place avec une vue correcte sur la tour Eiffel et son traditionnel feu d’artifice. Plutôt que de rester river à mon appareil pour faire des photos ou filmer, je l’ai laissé sur le trépied avec la télécommande en main et j’ai ainsi pu profiter du feu pendant que l’appareil travaillait tout seul :-)

Je suis parti sur un réglage de l’appareil en rafale lente sur f/8, 100iso et 4s, position 36Mpixels. En cours de route, je suis passé à 2s. Cela donne une série de photos de 2s de pose avec quasi rien de pause en chaque photos. Bon, à un bémol près, j’ai régulièrement saturé le buffer de l’appareil, ce qui provoque quelques passages sans photo.

Et en avant, on bloque la télécommande et on regarde !

tl0016

Ici, c’est le concert avant le feu.

En tout, il y a 747 photos exploitables et à exploiter !!!

tl0441

Et voici donc le film du feu d’artifice en ‘timelapse’ :

Un peu de technique maintenant. Comment faire le film en ‘timelapse’ depuis la série de photos. Tout est fait ici en ligne de commande sous Debian Linux avec convert et avconv.

Pour commencer, on va préparer les photos en ne gardant que la zone intéressante et en réduisant la résolution au strict nécessaire pour le film : 1920x1080px. J’ai déterminé la zone en ouvrant une des photos dans Gimp pour essayer le découpage et j’ai noté les valeurs de taille et de décalage de la découpe. En partant de 36Mpixels, on obtient une image bien plus grande que les 1920×1080, il faut aussi la réduire au court du traitement.

Pas de bol, le pied à légèrement bougé juste avant le feu d’artifice, toutes les photos sont légèrement penchées : 1,7° à droite. Il faut corriger aussi.

La première commande :

mkdir tl
for I in *.jpg ; do echo $I ; convert $I -rotate -1.7 -crop 4636x2608+1420+1784 -resize 1920x1080 tl/$I ; done

Donc pour chaque image, je fais une rotation de -1.7 (degrés), une coupe de 4636x2608 avec un décalage de 1420 horizontal et 1784 vertical, et enfin une réduction à 1920x1080.

Maintenant, on va renommer toutes les images :

ls tl/*.jpg | awk 'BEGIN{ a=0 }{ printf "mv tl/%s tl/img%04d.jpgn", $0, a++ }' | bash

Enfin, on crée le film à partir des images :

avconv -y -r 5 -i tl/tl%4d.jpg -r 5 -vcodec libx264 -q:v 3 tl.mp4

Et voila :-)