Timelapse et ffmpeg : mon pense-bête !

Créé le :
samedi 4 juin 2022
Révisé le :
samedi 18 juin 2022

Mes notes à propos de Timelapses et de ffmpeg

Je joue de temps en temps avec ffmpeg, voici quelques notes de trucs trouvés pour certaines fonctionnalités de cet outil extraordinaire.

 

Ajouter un fondu en début ou en fin de vidéo :

ffmpeg -i input.mp4 -vf "fade=in:0:24,fade=out:900:24" -acodec copy output.mp4

Avec in:0:24 pour un début à l'image numéro 0 et une durée de 24 images
et out:900:24 pour une fin à l'image 900 et une durée de 24 images

Trouver le nombre d'images d'une vidéo :

ffmpeg -i input.mp4 -vcodec copy -f rawvideo -y /dev/null 2>&1 | tr ^M '\n' | awk '/^frame=/ {print $2}'|tail -n 

Et dans un script, en passant par une variable :

duree=$(ffmpeg -i output.mp4 -vcodec copy -f rawvideo -y /dev/null 2>&1 | tr ^M '\n' | awk '/^frame=/ {print $2}'|tail -n 1)
echo $duree

 

Ajouter un filigrane :

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=440:main_h-overlay_h-10" output.mp4

Avec overlay=440 pour la position horizontale (à partir de la gauche)
et h-10 pour laposition verticale (à partir d'en bas)

 

Un filigrane textuel :

ffmpeg -i input.mp4 -vf drawtext=text='Ton texte ici':x=610:y=H-th-20:fontfile=/path/to/font.ttf:fontsize=42:fontcolor=white:shadowcolor=black:shadowx=1:shadowy=1 output.mp4

Et tu peux remplacer 'Ton texte ici' par une variable.

 

Faire un timelapse à partir d'une série d'images :

ffmpeg -hide_banner -nostats -loglevel 0 -r 24 -pattern_type glob -i "/path/to/images/*.jpg" -threads 4 -vcodec libx264 -pix_fmt yuv420p output.mp4

Avec quelques options spécialement pour les scripts :
le -hide_banner, le -nostats et le -loglevel 0 servent à réduire les infos en retour qui sont inutiles pour moi à ce stade dans un script,
le -threads 4 permet de limiter le nombre de coeurs du processeur attribué pour cette opération.

Fondre deux images :

Il faut avoir installé 'imagemagick'

 composite -blend pourcentImage1xpourcentImage2 path/to/image1.jpg path/to/image2.jpg output.jpg