Conversion vidéo en lot avec ffmpeg
Avec ffmpeg
, il est possible de convertir par lot n’importe quel format de vidéo. Voici un exemple simple pour convertir des fichiers H.265 vers H.264 :
for i in *.mp4 ; do
ffmpeg -i "$i" -c:v libx264 -vf scale=1280:-2 -c:a copy -map 0:0 -map 0:1 "H $i"
sleep 3
done
Explication
for i in *.mp4 ; do
Prend tous les fichiers .mp4
dans le dossier courant. La commande for
permet de boucler sur chaque fichier.
ffmpeg -i "$i"
Exécute ffmpeg
avec le fichier d’entrée $i
.
-map 0:0 -map 0:1
Spécifie uniquement les deux premiers flux : vidéo (0:0) et audio (0:1). Optionnel, mais utile pour éviter d’inclure des pistes inutiles.
-c:v libx264
Définit le codec vidéo. Peut être personnalisé avec des options comme -preset slow
, -crf 23
, etc.
-vf scale=1280:-2
Redimensionne la vidéo en largeur 1280 pixels et ajuste automatiquement la hauteur pour conserver les proportions.
-c:a copy
Copie directement la piste audio sans ré-encodage.
"H $i"
Crée un nouveau fichier avec le préfixe "H" pour éviter d’écraser le fichier original.
sleep 3
Pause de 3 secondes entre les conversions.
Extraire uniquement l’audio (en AAC)
for i in *.MP4; do
ffmpeg -i "$i" -vn -acodec copy "${i%}.aac"
sleep 3
done
-vn
: ignore les flux vidéo-acodec copy
: copie l’audio sans le ré-encoder
Script bash multithread
Pour tirer parti de plusieurs cœurs du processeur et lancer plusieurs conversions en parallèle :
#!/bin/bash
function encode {
base="${1%.*}"
extension="${1##*.}"
out="${base}_output.${extension}"
ffmpeg -i "$1" -c:v libx264 -vf scale=1280:-2 -c:a copy -map 0:0 -map 0:1 "$out"
}
encode video1.mp4 &
encode video2.mp4 &
echo "ZZzzzzzzZZzzzzz"
wait
Chaque appel à encode
est lancé en arrière-plan grâce au &
, et wait
force le script à attendre que tous les processus soient terminés.
Pour utiliser ce script :
- Copiez le code dans un fichier (par exemple
convert.sh
) - Donnez-lui les permissions d’exécution :
chmod +x convert.sh
- Lancez-le :
./convert.sh
- ← Précédent
Premiers pas avec ffmpeg - Suivant →
Comprendre le bitrate et les options d'encodage avec ffmpeg