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