Comment faire un slideshow d’images en bash

Besoin de transformer un dossier d’images PNG en une vidéo rapidement ? Une seule commande ffmpeg suffit. Pas besoin d’éditeur vidéo, pas besoin d’interface graphique — juste le terminal.

Le script

#!/bin/bash

# Chemin vers le dossier contenant les images
IMAGE_DIR="images"

# Nom du fichier de sortie
OUTPUT_VIDEO="output_video.mp4"

# Vérifier les fichiers dans le répertoire
echo "Fichiers dans le répertoire :"
ls "$IMAGE_DIR"

# Commande ffmpeg pour créer la vidéo
ffmpeg -framerate 1.5 -pattern_type glob -i "$IMAGE_DIR/*.png" -c:v libx264 -r 30 -pix_fmt yuv420p "$OUTPUT_VIDEO"
echo "Vidéo créée avec succès : $OUTPUT_VIDEO"

Explication des paramètres

  • -framerate 1.5 — chaque image reste affichée environ 0.67 seconde. Augmenter pour aller plus vite, diminuer pour un diaporama plus lent.
  • -pattern_type glob -i "images/*.png" — prend toutes les images PNG du dossier, triées par ordre alphabétique.
  • -c:v libx264 — encode en H.264, le codec vidéo le plus compatible.
  • -r 30 — la vidéo de sortie sera en 30 fps (nécessaire pour la compatibilité avec la plupart des lecteurs).
  • -pix_fmt yuv420p — format de pixel standard, indispensable pour que la vidéo soit lisible partout (QuickTime, VLC, navigateurs).

Prérequis

Installer ffmpeg : brew install ffmpeg sur macOS, sudo apt install ffmpeg sur Debian/Ubuntu.

Variantes utiles

Pour des JPG : remplacer *.png par *.jpg. Pour un diaporama plus lent (3 secondes par image) : -framerate 0.33. Pour ajouter une musique de fond : ajouter -i musique.mp3 -shortest avant le fichier de sortie.