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 4⁄3). Il a fallu recadrer et réduire chaque image à sa dimension finale : 1920×1080 pixels (ratio 16⁄9).
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.
$ 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é.