📝 Pense-bête : commandes utiles pour ffmpeg

Temps de lecture estimé : 3 minutes.

Extraire les sous-titres d’un mkv

ffmpeg -i Mon-Documentaire.mkv -map 0:2 -c:s copy Mon-Documentaire.srt

Une fois extraits, on peut nettoyer ces sous-titres en supprimant les numéros de séquence, les timestamps et les balises de formatage afin de les exporter :

sed -r -e '/^[0-9]+$/d' -e '/^$/d' -e '/^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3} --> [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}$/d' -e 's/<[^>]*>//g' Mon-Documentaire.srt > Mon-Documentaire_nettoye.txt

Voici le résultat, avant :

4
00:00:53,160 --> 00:00:54,240
<font color="#00FFFF">Ces mots sont écrits</font>

5
00:00:54,480 --> 00:00:56,600
<font color="#00FFFF">par l'historien</font>
<font color="#00FFFF">de la technique Lewis Mumford,</font>

et après :

Ces mots sont écrits
par l'historien
de la technique Lewis Mumford,

Extraire l’audio d’une vidéo

ffmpeg -i Mon-Documentaire.mp4 -q:a 0 -map a Mon-Documentaire_audio.mp3

Assembler plusieurs vidéos en une

ffmpeg -f concat -safe 0 -i Mon-Documentaire_liste.txt -c copy Mon-Documentaire.mp4

Fusionne plusieurs fichiers vidéo listés dans Mon-Documentaire_liste.txt en une seule vidéo. Mon-Documentaire_liste.txt doit contenir une liste des fichiers à assembler, formatée de la manière suivante :

file 'chemin/vers/Mon-Documentaire_partie-1.mp4'
file 'chemin/vers/Mon-Documentaire_partie-2.mp4'
...

Extraire une partie d’une vidéo

ffmpeg -i Mon-Documentaire.mp4 -ss 00:01:00 -to 00:02:00 -c copy Mon-Documentaire_extrait.mp4

Extraire une partie d’une vidéo… en GIF

ffmpeg -ss 00:01:00 -to 00:01:10 -i Mon-Documentaire.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif Mon-Documentaire_extrait.gif

-vf "fps=10,scale=320:-1:flags=lanczos" : Applique des filtres vidéo pour définir les images par seconde (fps=10) et la taille de l’image (scale=320:-1, où 320 est la largeur et -1 permet de conserver le ratio d’aspect). flags=lanczos est utilisé pour une meilleure qualité de redimensionnement.
-c:v gif : Indique à FFmpeg de convertir la vidéo en GIF.

On peut jouer sur les paramètres fps et scale pour optimiser la taille et la qualité du GIF. Résultat :

Transformer un extrait en boomerang

ffmpeg -i Mon-Documentaire_extrait.mp4  -filter_complex "[0:v]reverse[r];[0:v][0:a][r][0:a]concat=n=2:v=1:a=1" Mon-Documentaire_extrait_loop.mp4
ffmpeg -i Mon-Documentaire_extrait.mp4 -filter_complex "[0]reverse[r];[0][r]concat=n=2:v=1:a=0,scale=320:-1" Mon-Documentaire_extrait_bmrng.gif

Transformer une vidéo 16:9 en 9:16

On applique le recadrage en retirant les parties gauche et droite de la vidéo afin de conserver la partie centrale, dont le point de départ du recadrage est calculé par ih*9/16 (qui calcule la largeur nécessaire pour obtenir un format 9:16 basé sur la hauteur de la vidéo. ih est la hauteur originale de la vidéo) et (iw-ih*9/16)/2 (qui calcule le décalage horizontal pour centrer le recadrage. 0 est le décalage vertical, qui est nul car on conserve la hauteur totale).

ffmpeg -i Mon-Documentaire_extrait.mp4 -vf "crop=ih*9/16:ih:(iw-ih*9/16)/2:0" Mon-Documentaire_extrait_9-16.mp4

Extraire une image d’une vidéo

Par exemple, pour extraire la première image de la deuxième seconde d’une vidéo, on peut utiliser l’option de filtrage basée sur le temps (-ss) pour positionner le début de la lecture à 1 seconde (la deuxième seconde commence à 1 seconde dans le temps). Ensuite, on utilise l’option -frames:v 1 pour capturer une seule image :

ffmpeg -ss 1 -i Mon-Documentaire_extrait.mp4 -frames:v 1 -q:v 3 Mon-Documentaire_extrait_cap.jpg
  • -ss 1 : Cette option positionne le début de la lecture à 1 seconde dans la vidéo. En plaçant -ss avant -i, ffmpeg cherche rapidement à cette position avant de commencer le traitement, ce qui est plus efficace.
  • -frames:v 1 : Indique à ffmpeg de traiter seulement une seule image de la vidéo.
  • -q:v 3 : Définit la qualité de l’image de sortie. Plus le nombre est petit, meilleure est la qualité. 3 est un bon compromis entre qualité et taille de fichier.
Nicolas
Nicolas
Articles: 4