Time-lapse de fleurs de safran

Mi octobre, j'ai eu le plaisir d'assister à l'ouverture des fleurs de safran (Crocus sativus) dans le potager de mes parents. L'occasion était belle de fixer sur la pellicule carte SD les étapes de la floraison pour en faire un time-lapse.

Cette vidéo accélérée 1500 fois a été réalisée en prenant une image toutes les 5 minutes puis en générant une vidéo qui fait défiler 5 images par seconde.

Pour réaliser la vidéo, j'ai employé deux logiciels en ligne de commande : ImageMagick et ffmpeg. ImageMagick a permis de recadrer, redimensionner et légender chaque image tandis que ffmpeg a été utilisé pour combiner les images en une vidéo au format H.264.

Recadrage et redimensionnement

Au moment de la prise de vue, j'ai oublié de configurer mon appareil photo pour prendre des clichés aux dimensions de la vidéo finale : 1920×1080 pixels. J'ai donc enregistré des images dont les dimensions étaient trop grandes : 4608×3456 pixels (ratio 43). Il a fallu recadrer et réduire chaque image à sa dimension finale : 1920×1080 pixels (ratio 169).

Recadrage et redimensionnement

Les deux étapes de recadrage et de redimensionnement ont été réalisées par une seule commande convert en utilisant les options -crop et -resize :

$ convert -crop 3840x2160+0+1130 -resize 50% source.jpg destination.jpg

Cet appel à la commande convert recadre d'abord l'image aux dimensions 3840×2160 en décalant le cadre de 1130 pixels vers le bas (et 0 pixel vers la droite) puis divise ses dimensions par deux pour aboutir à une image de 1920×1080 pixels.

Extraction de l'heure de prise de vue et ajout de la légende

J'ai extrait la date et l'heure de la prise de vue pour chaque image avec le programme exiftool :

$ exiftool -DateTimeOriginal image.jpg
Date/Time Original              : 2016:10:17 08:37:09

Ensuite, j'ai utilisé la commande convert pour ajouter une undercolor box qui contient la légende.

Ajout d'un légende

$ convert source.jpg -pointsize 50 -font Inconsolata -fill white -undercolor '#00000080' -annotate +8+50 " Légende " destination.jpg

La légende est écrite en caractères blancs (-fill white) de 50 points de hauteur (-pointsize 50), dans une police à chasse fixe (-font Inconsolata). Un fond noir en semi transparence (-undercolor '#00000080') augmente la lisibilité.

Création de la vidéo au format H.264 à partir des images

La dernière étape a consisté à combiner les images en une vidéo avec ffmpeg.

$ ffmpeg -framerate 5/1 -i image-%03d.jpg -c:v libx264 -pix_fmt yuv420p -r 30 video.mp4

Les images défilent au rythme de cinq par seconde (-framerate 5/1) et le codec vidéo choisi est x264 pour coder un flux vidéo H.264 (-c:v libx264). J'ai du contraindre le pixel format avec -pix_fmt yuv420p parce que Firefox 45 considère que la vidéo est corrompue quand le pixel format par défaut (yuv422p) est employé.