FFMPEG est un utilitaire en ligne de commande et permet de manipuler c’est-à-dire : convertir le format, extraire une bande son, extraire une/plusieurs images… d’un fichier audio ou vidéo. Il est multiplateforme. Son installation est simple et rapide.
(maj du 24/12/2020) Sous linux, il faut juste lancer la commande suivante
apt install ffmpeg
Voici quelques astuces que j’utilise souvent pour :
Conversion
.mov vers .avi
ffmpeg.exe -i .\REC_0010.MOV -vcodec copy -acodec copy .\REC_0010.AVI
.mov vers .mp4
ffmpeg.exe -i .\REC_0010.MOV -vcodec copy -acodec aac -strict experimental -ab 128k \REC_0010.MP4
.webm vers .mp3
ffmpeg -i "Metallica.webm" -ab 160k -ar 44100 "Metallica.mp3"
.wav vers .mp3
ffmpeg -i vocals.wav -acodec libmp3lame vocals.mp3
.mp4 vers .avi
ffmpeg -i "Metallica.mp4" -f avi -vcodec libxvid -acodec mp3 -b:v 1700k -b:a 192k "Metallica.avi"
.avi vers .mp4
ffmpeg -i "Metallica.AVI" -c:v libx264 -pix_fmt yuv420p "Metallica.mp4"
.mpeg vers .mp4 sans perte de qualité
ffmpeg -i input.mpg -c:v libx264 -crf 23 -preset veryslow -c:a aac -b:a 192k -movflags +faststart output.mp4
plusieurs .avi vers .mp4
Il s’agit d’une commande shell pour convertir par exemple plusieurs fichiers .avi dans un dossier en format .mp4
- Se positionner dans un dossier en ligne de commande
- Puis lancer
cd folder
for file in $(ls | grep ".AVI"); do ffmpeg -i ${file} -c:v libx264 -pix_fmt yuv420p ${file}.MP4; done
Changer la taille d’une vidéo (largeur x hauteur)
ffmpeg -i \REC_0016.mp4 -vf scale=426:240 .\REC_0016_s.mp4
Rotation
ffmpeg.exe -i input.mp4 -acodec copy -vf vflip,hflip out.mp4
Comparer 2 vidéos côte à côte
ffmpeg -i .\REC_0028.mp4 -i .\REC_0028_stab.mp4 -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' -map [vid] -c:v libx264 -crf 23 -preset veryfast .\REC_0028_merge.mp4
Stabiliser une vidéo
Deux étapes :
- Créer un fichier .trf
- Stabiliser la vidéo
Créer fichier .trf
ffmpeg -i .\REC_0028.mp4 -vf vidstabdetect=stepsize=6:shakiness=8:accuracy=9:result=transform_vectors.trf -f null -
Stabiliser
ffmpeg -i .\REC_0028.mp4 -vf vidstabtransform=input=transform_vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -preset slow -tune film -crf 18 -acodec copy .\REC_0028_stab.mp4
Création .gif animé à partir d’une vidéo
Exemple : extraire quelques images de la vidéo : 9 secondes à partir du temps 00:02:25
ffmpeg -ss 00:02:25 -i Bachata4.mp4 -t 9 -s 480x270 -f image2 sary/im_%03d.png
Créer le GIF : 1×24 : 24 images par secondes en utilisant Imagemagick
convert -delay 1x24 -loop 0 sary/im_*.png anim.gif
Couper et re-encoder une vidéo
-ss debut
-t = fin
ffmpeg -i cYOIyd1guLQ_old.mp4 -ss 00:00:00 -t 00:05:05 tencoding.mp4
Extraction
toutes les images
ffmpeg -i angelina.mp4 angelina-%03d.jpg
Bande son
ffmpeg -i angelina.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 angelina.mp3
Ajouter un texte
ffmpeg -i 12675574_1656234631304852_1667709363_n.mp4 -strict experimental -vf drawtext="fontfile=RobotoCondensed-Regular.ttf: text='Trouvé sur Vazo\:\:Tsara - Février 2016':fontsize=10:fontcolor=white:x=5:y=700" 12675574_1656234631304852_1667709363_n_txt.mp4
Fusionner plusieurs vidéos en un
Créer un fichier texte contenant les vidéos à fusionner. Le contenu du fichier doit respecter le format suivant
exemple de fichier: videos.txt
file '2022-02-24 22-35-41.mp4'
file '2022-02-24 23-14-08.mp4'
Une fois ce fichier créé, lancer la commande:
ffmpeg -f concat -safe 0 -i videos.txt -c copy output.mp4
ffprobe – récupérer les informations d’une vidéo
ffprobe recueille des informations à partir de flux multimédia et les imprime de manière lisible par l’homme et la machine.
Exemple: Récupérer la durée de la vidéo en secondes.
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video1.mp4
Filtre fade-in / fade-out au début et à la fin
Pour une vidéo video1.mp4, qui dure 76 secondes (1mn 16s),
la commande suivante applique :
- un filtre fade-in (fade=t=in) au début de la vidéo st=0 (start=0), pendant 3 secondes d=3 (duration=3)
- et un filtre fade-out (fade=t=out) avant la fin de la vidéo st=73 (start=73), pendant 3 secondes d=3 (duration=3)
ffmpeg -i video1.mp4 -vf "fade=t=in:st=0:d=3,fade=t=out:st=73:d=3" -c:a copy video1_out.mp4
Ajouter un audio à une vidéo
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -map 0:v -map 1:a -y output.mp4