« Ffmpeg » : différence entre les versions
(Ajout de la section "Convertir un fichier".) |
(Ajout de la section "Rotation d'une vidéo" + remplacement d'une balise "syntaxhighlight inline" par une balise "code") |
||
(9 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:linux]] | [[Category:linux]] | ||
[https://fr.wikipedia.org/wiki/FFmpeg FFmpeg] est une collection de logiciels libres destinés au traitement de flux audio ou vidéo (enregistrement, lecture ou conversion d'un format à un autre). Cette bibliothèque est utilisée par de nombreux autres logiciels ou services comme VLC, iTunes ou YouTube. | [https://fr.wikipedia.org/wiki/FFmpeg FFmpeg] est une collection de logiciels libres destinés au traitement de flux audio ou vidéo (enregistrement, lecture ou conversion d'un format à un autre). Cette bibliothèque est utilisée par de nombreux autres logiciels ou services comme ''VLC'', ''iTunes'' ou ''YouTube''. | ||
Développé sur GNU/Linux, FFmpeg peut être compilé sur la plupart des systèmes d'exploitation, y compris Windows. Le projet est distribué sous licence libre, GPL 2+ ou LGPL 2.1+ en fonction des options de compilation du projet. | Développé sur ''GNU/Linux'', ''FFmpeg'' peut être compilé sur la plupart des systèmes d'exploitation, y compris [[:Category:Windows|Windows]]. Le projet est distribué sous licence libre, [https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU GPL] 2+ ou [https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_limit%C3%A9e_GNU LGPL] 2.1+ en fonction des options de compilation du projet. | ||
=Extraire le son= | =Extraire le son= | ||
Voici comment [http://www.loopsbeats.com/convert/extract-audio-with-ffmpeg.html extraire le son] d'une vidéo '' | Voici comment [http://www.loopsbeats.com/convert/extract-audio-with-ffmpeg.html extraire le son] d'une vidéo ''mp4'' en ''mp3'' : | ||
ffmpeg -i toto.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 toto.mp3 | ffmpeg -i toto.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 toto.mp3 | ||
=Extraire la jaquette= | |||
Les fichiers audios embarquent souvent une image (communément la jaquette de l'album). Voici comment la [https://unix.stackexchange.com/questions/41287/how-to-extract-album-cover-image-from-mp3-file récupérer] : | |||
ffmpeg -i fichier.mp3 -an -c:v copy fichier.jpg | |||
=Couper un extrait= | =Couper un extrait= | ||
Il est possible de [https://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video#704118 découper un morceau] de fichier avec ceci: | Il est possible de [https://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video#704118 découper un morceau] de fichier avec ceci : | ||
ffmpeg -ss 00:00:53 -i Pas\ de\ manières-5hjNP5dNNs4.m4a -t 00:00:11 -c copy Ta_cherie.m4a | ffmpeg -ss 00:00:53 -i Pas\ de\ manières-5hjNP5dNNs4.m4a -t 00:00:11 -c copy Ta_cherie.m4a | ||
Explications : | |||
* '''-ss''': début de la découpe | * '''-ss''' : début de la découpe | ||
* '''-i''': fichier source | * '''-i''' : fichier source | ||
* '''-t''': temps à garder à partir de '''-ss''' | * '''-t''' : temps à garder à partir de '''-ss''' | ||
* '''-c''': action à effectuer | * '''-c''' : action à effectuer | ||
Il est aussi possible de préciser le nombre de trames à conserver à partir d'un temps donnée (plus précis) : | |||
ffmpeg -y -ss 00:01:28 -i Toto.mp4 -c:v libx264 -c:a aac -frames:v 100 /tmp/titi.mp4 | |||
Paramètres différents : | |||
* '''-c:v libx264''' : codec vidéo de transcodage (facultatif) | |||
* '''-c:a aac''' : codec audio de transcodage (facultatif) | |||
* '''-frames:v 100''' : garder 100 trames (le "v" peut être remplacé par un "a" en cas de fichier uniquement audio) | |||
Dans le cas d'une vidéo comportant [https://stackoverflow.com/questions/60445661/ffmpeg-how-do-i-choose-the-correct-audio-track plusieurs] pistes audios, il est possible de sélectionner la désirée de la manière suivante : | |||
ffmpeg -y -ss 00:27:26 -i Toto.mp4 -c:v libx264 -c:a aac -frames:v 530 -map 0:v:0 -map 0:a:2 /tmp/titi.mp4.mp4 | |||
Paramètres différents : | |||
* '''-map 0:v:0''' : première piste vidéo | |||
* '''-map 0:a:2''' : troisième piste audio | |||
=Convertir un fichier= | =Convertir un fichier= | ||
Pour [https://fr.wikihow.com/utiliser-FFmpeg convertir un fichier] dans un autre format: | Pour [https://fr.wikihow.com/utiliser-FFmpeg convertir un fichier] dans un autre format : | ||
ffmpeg -i Ni_flic_ni_pd.ogg Ni_flic_ni_pd.mp3 | ffmpeg -i Ni_flic_ni_pd.ogg Ni_flic_ni_pd.mp3 | ||
''Note: L'outil détecte automatiquement le format du fichier voulu en lisant l'extension de destination.'' | ''Note: L'outil détecte automatiquement le format du fichier voulu en lisant l'extension de destination.'' | ||
Il est possible d'ajouter des paramètres afin de préciser des [https://trac.ffmpeg.org/wiki/Encode/H.264 caractéristiques d'encodage]. [https://emirchouchane.com/h264-ffmpeg/ Par exemple], pour une conversion vidéo en ''h264'' : | |||
ffmpeg -i vidéo.m4v -c:v libx264 -crf 23 vidéo.mp4 | |||
Explications : | |||
* '''-c:v libx264''' : sélection du codec (''-c'') vidéo ('':v'') h264 (''libx264'') | |||
* '''-crf 23''' : facteur de taux constant (''Constant Rate Factor'') à 23. Permet de définir le débit binaire de la vidéo | |||
<img src="https://{{SERVERNAME}}/fichiers/multim%c3%a9dia/conversion/ffmpeg/%c3%89chelle_Constant_Rate_Factor.svg"></img> | |||
Autre exemple avec une conversion en [https://trac.ffmpeg.org/wiki/Encode/H.265 h265] : | |||
ffmpeg -i vidéo.mp4 -c:v libx265 -crf 26 -preset fast -c:a eac3 -b:a 640k /tmp/vidéo.mp4 | |||
* '''-c:v libx265''' : codec vidéo en ''h265'' | |||
* '''-preset fast''' : vitesse d'encodage et profile de compression (énumérés [https://trac.ffmpeg.org/wiki/Encode/H.265#ConstantRateFactorCRF ici]) | |||
* '''-c:a eac3''' : codec audio en ''eac3'' | |||
* '''-b:a 640k''' : débit binaire du flux audio | |||
=Redimensionner une vidéo= | |||
Outre le codec à utiliser et le ''CRF'' à modifier, il est possible d'alléger une vidéo en réduisant ses dimensions. Les différentes techniques combinées peuvent permettre d'arriver à envoyer péniblement une vidéo par [https://fr.wikipedia.org/wiki/Multimedia_Messaging_Service MMS]... | |||
ffmpeg -y -i /tmp/a.mp4 -crf 33 -vf "scale=iw/2:ih/2" /tmp/b.mp4 | |||
Explications : | |||
* '''-y''' : écrase la destination sans demander de confirmation | |||
* '''-i''' : fichier source | |||
* '''-crf 33''' : forte compression (destructrice) de la vidéo | |||
* '''-vf "scale=iw/2:ih/2"''' : réduction par deux des dimensions de la vidéo | |||
=Rotation d'une vidéo= | |||
Il n'est pas rare de tomber sur une vidéo capturée via un téléphone en mode portrait du fait d'un utilisateur ayant commencé la prise de vue dans cette orientation et s’étant rendu compte, après coup, qu'il fallait tourner la caméra pour avoir un bon rendu... Il est possible de corriger cela via une [https://www.baeldung.com/linux/ffmpeg-rotate-video rotation] avec le paramètre <code>transpose=0</code> où <code>0</code> correspond à l'orientation à appliquer d'après la liste suivante : | |||
* <code>0</code> : sens inverse des aiguilles d'une montre et inversion verticale (par défaut) | |||
* <code>1</code> : sens des aiguilles d'une montre | |||
* <code>2</code> : sens inverse des aiguilles d'une montre | |||
* <code>3</code> : sens des aiguilles d'une montre et inversion verticale | |||
Exemple : | |||
ffmpeg -i VID_20240415_150506.mp4 -vf "transpose=2" VID_20240415_150506_r2.mp4 | |||
=Fusionner une bande vidéo et une bande son= | |||
Il est possible de [https://qastack.fr/superuser/277642/how-to-merge-audio-and-video-file-in-ffmpeg regrouper] dans un même fichier multimédia ([https://fr.wikipedia.org/wiki/Format_conteneur conteneur]) une bande vidéo et une bande son. Un cas typique est le téléchargement d'une vidéo sur le site [https://crowdbunker.com crowdbunker.com] via les fichiers <code>.m3u</code> capturés dans le trafic réseau. La vidéo est découplé du son (deux téléchargements séparés) et c'est le lecteur vidéo ''WEB'' qui se charge de lire les deux en même temps. Pour fusionner les deux après téléchargement en local, la commande suivante peut être utilisée : | |||
ffmpeg -i Vidéo_source.mp4 -i Audio_source.mp4 -c:v copy -c:a aac -strict experimental Vidéo_et_audio_destination.mp4 |
Dernière version du 15 mai 2024 à 22:36
FFmpeg est une collection de logiciels libres destinés au traitement de flux audio ou vidéo (enregistrement, lecture ou conversion d'un format à un autre). Cette bibliothèque est utilisée par de nombreux autres logiciels ou services comme VLC, iTunes ou YouTube.
Développé sur GNU/Linux, FFmpeg peut être compilé sur la plupart des systèmes d'exploitation, y compris Windows. Le projet est distribué sous licence libre, GPL 2+ ou LGPL 2.1+ en fonction des options de compilation du projet.
Extraire le son
Voici comment extraire le son d'une vidéo mp4 en mp3 :
ffmpeg -i toto.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 toto.mp3
Extraire la jaquette
Les fichiers audios embarquent souvent une image (communément la jaquette de l'album). Voici comment la récupérer :
ffmpeg -i fichier.mp3 -an -c:v copy fichier.jpg
Couper un extrait
Il est possible de découper un morceau de fichier avec ceci :
ffmpeg -ss 00:00:53 -i Pas\ de\ manières-5hjNP5dNNs4.m4a -t 00:00:11 -c copy Ta_cherie.m4a
Explications :
- -ss : début de la découpe
- -i : fichier source
- -t : temps à garder à partir de -ss
- -c : action à effectuer
Il est aussi possible de préciser le nombre de trames à conserver à partir d'un temps donnée (plus précis) :
ffmpeg -y -ss 00:01:28 -i Toto.mp4 -c:v libx264 -c:a aac -frames:v 100 /tmp/titi.mp4
Paramètres différents :
- -c:v libx264 : codec vidéo de transcodage (facultatif)
- -c:a aac : codec audio de transcodage (facultatif)
- -frames:v 100 : garder 100 trames (le "v" peut être remplacé par un "a" en cas de fichier uniquement audio)
Dans le cas d'une vidéo comportant plusieurs pistes audios, il est possible de sélectionner la désirée de la manière suivante :
ffmpeg -y -ss 00:27:26 -i Toto.mp4 -c:v libx264 -c:a aac -frames:v 530 -map 0:v:0 -map 0:a:2 /tmp/titi.mp4.mp4
Paramètres différents :
- -map 0:v:0 : première piste vidéo
- -map 0:a:2 : troisième piste audio
Convertir un fichier
Pour convertir un fichier dans un autre format :
ffmpeg -i Ni_flic_ni_pd.ogg Ni_flic_ni_pd.mp3
Note: L'outil détecte automatiquement le format du fichier voulu en lisant l'extension de destination.
Il est possible d'ajouter des paramètres afin de préciser des caractéristiques d'encodage. Par exemple, pour une conversion vidéo en h264 :
ffmpeg -i vidéo.m4v -c:v libx264 -crf 23 vidéo.mp4
Explications :
- -c:v libx264 : sélection du codec (-c) vidéo (:v) h264 (libx264)
- -crf 23 : facteur de taux constant (Constant Rate Factor) à 23. Permet de définir le débit binaire de la vidéo
Autre exemple avec une conversion en h265 :
ffmpeg -i vidéo.mp4 -c:v libx265 -crf 26 -preset fast -c:a eac3 -b:a 640k /tmp/vidéo.mp4
- -c:v libx265 : codec vidéo en h265
- -preset fast : vitesse d'encodage et profile de compression (énumérés ici)
- -c:a eac3 : codec audio en eac3
- -b:a 640k : débit binaire du flux audio
Redimensionner une vidéo
Outre le codec à utiliser et le CRF à modifier, il est possible d'alléger une vidéo en réduisant ses dimensions. Les différentes techniques combinées peuvent permettre d'arriver à envoyer péniblement une vidéo par MMS...
ffmpeg -y -i /tmp/a.mp4 -crf 33 -vf "scale=iw/2:ih/2" /tmp/b.mp4
Explications :
- -y : écrase la destination sans demander de confirmation
- -i : fichier source
- -crf 33 : forte compression (destructrice) de la vidéo
- -vf "scale=iw/2:ih/2" : réduction par deux des dimensions de la vidéo
Rotation d'une vidéo
Il n'est pas rare de tomber sur une vidéo capturée via un téléphone en mode portrait du fait d'un utilisateur ayant commencé la prise de vue dans cette orientation et s’étant rendu compte, après coup, qu'il fallait tourner la caméra pour avoir un bon rendu... Il est possible de corriger cela via une rotation avec le paramètre transpose=0
où 0
correspond à l'orientation à appliquer d'après la liste suivante :
0
: sens inverse des aiguilles d'une montre et inversion verticale (par défaut)1
: sens des aiguilles d'une montre2
: sens inverse des aiguilles d'une montre3
: sens des aiguilles d'une montre et inversion verticale
Exemple :
ffmpeg -i VID_20240415_150506.mp4 -vf "transpose=2" VID_20240415_150506_r2.mp4
Fusionner une bande vidéo et une bande son
Il est possible de regrouper dans un même fichier multimédia (conteneur) une bande vidéo et une bande son. Un cas typique est le téléchargement d'une vidéo sur le site crowdbunker.com via les fichiers .m3u
capturés dans le trafic réseau. La vidéo est découplé du son (deux téléchargements séparés) et c'est le lecteur vidéo WEB qui se charge de lire les deux en même temps. Pour fusionner les deux après téléchargement en local, la commande suivante peut être utilisée :
ffmpeg -i Vidéo_source.mp4 -i Audio_source.mp4 -c:v copy -c:a aac -strict experimental Vidéo_et_audio_destination.mp4