Nous utilisons aujourd’hui de plus en plus la vidéo comme support au service de la pédagogie. Les « capsules vidéo » se sont au fil des années imposées pour devenir des éléments incontournables pour les enseignants et les formateurs : classe inversée, activités en autonomie, guides et tutoriels, méthodologie, synthèse de leçons, autant d’utilisations possibles pour des contenus bien plus dynamiques qu’un banal document PDF…
Il est donc essentiel, d’une part de connaître les outils numériques qui nous permettront de créer nos vidéos (captation vidéo, enregistrement d’écran, animation) et d’autre part, de connaître les outils permettant d’éditer nos vidéos pour savoir faire les manipulations de base : réduire la taille, changer le format, découper un extrait, faire pivoter, extraire l’audio, etc.
Sur ce second point précisément, FFmpeg est l’outil le plus efficace qui soit.
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). C’est un utilitaire extrêmement puissant qui permet de traiter à peu près tous les formats audio et vidéo existants. FFmpeg a été créé en 2000 par un développeur français. (https://fr.wikipedia.org/wiki/FFmpeg)
FFmpeg est utilisée par d’innombrables logiciels ou services en ligne. Voici une liste non exhaustive de ceux-ci :
➜ Services en ligne utilisant FFmpeg
➜ Logiciels utilisant FFmpeg
Ces exemples montrent à quel point FFmpeg est absolument essentiel pour de nombreux services et logiciels dans l’écosystème multimédia.
FFmpeg est un outil indispensable pour le traitement de l’audio et de la vidéo. Il s’utilise habituellement sous Linux, le plus souvent en ligne de commande. Il existe de nombreuses interfaces graphiques mais – sans avoir la prétention de les connaître toutes – aucune n’est aussi performante que la version en ligne de commande. Cependant, même si c’est beaucoup plus simple de l’utiliser sous Linux, FFmpeg n’est pas réservé aux utilisateurs de Linux, on peut aussi l’utiliser sous Windows. Les commandes à utiliser seront les mêmes que sous Linux, on les saisira dans l’invite de commande ou dans le PowerShell.
Il est donc possible de tout faire (ou presque) avec vos fichiers vidéo et audio grâce à FFMPEG avec quelques simples commandes permettant de réencoder, convertir, redimensionner, extraire l’audio, découper des extraits, réduire le poids, etc., sans avoir besoin de logiciel de type « usine à gaz » !
Il y a vraiment énormément de possibilités :
– conversion de formats de fichier (AVI ou MOV ou MKV vers MP4, par exemple)
– extraction audio (d’une piste vidéo)
– modifier la résolution ou les proportions
– extraction d’images d’une vidéo
– compression de fichiers audio ou vidéo
– découper ou fusionner,
– enregistrement d’écran (screencast)
– faire pivoter une vidéo
– etc., etc.
Sur le site officiel https://ffmpeg.org/ on trouvera la page de téléchargement pour tous les systèmes d’exploitation : https://ffmpeg.org/download.html (parce que oui, #FFMPEG est multi-plateformes, Windows, MacOS et Linux) et toute la documentation (archi-complète) : https://ffmpeg.org/ffmpeg.html
C’est la situation la plus simple puisque FFmpeg est déjà présent sur la plupart des distributions Linux et on peut directement l’utiliser, sans aucune manipulation supplémentaire.
Toutefois, au cas où le paquet ffmpeg ne serait pas présent pour vous, il suffit de l’installer en lançant la commande suivante dans un terminal (pour toute la famille des distributions basées sur Debian) :
sudo apt install ffmpeg
C’est là que ça se complique un peu (tout est toujours plus compliqué sous Windows…). Il faut d’abord trouver le fichier d’installation de la bonne version (pour Windows). Pour faciliter les choses, voici la page à partir de laquelle on pourra télécharger la dernière version de ce fichier : https://github.com/GyanD/codexffmpeg/releases/latest
On choisira ici de télécharger le fichier ffmpeg-7.0.1-full_build.zip (qui est la dernière version en cours à l’heure où j’écris ces lignes).
Cette version visible ici sur mon exemple va bien évidemment évoluer avec le temps, et il se peut que le numéro de version ne soit très rapidement plus le même que sur ma capture d’écran, c’est tout à fait normal.
Le fichier téléchargé est une archive compressée .ZIP, il faudra donc en extraire le contenu (copier l’ensemble du contenu pour le coller ailleurs) afin de le stocker dans un répertoire créé pour la circonstance, nommé par exemple ffmpeg et que vous allez placer où vous voulez sur votre ordinateur, par exemple à la racine du disque C:\
FFmpeg est un logiciel portable, donc qui ne nécessite aucun processus d’installation.
L’exécutable pour lancer le logiciel se trouve dans le dossier bin mais si vous le lancez maintenant de la manière habituelle (par un double clic), il ne se passera rien.
FFmpeg est un logiciel qui paraîtra un peu inhabituel pour le commun des mortels puisqu’il s’exécute uniquement en ligne de commande, y compris sous Windows, donc dans une fenêtre d’invite de commande ou dans le Windows PowerShell.
Il vaut mieux, pour plus de commodité dans son utilisation future, ajouter le chemin vers le logiciel à la variable d’environnement système « PATH » de Windows (si vous êtes admin de l’ordinateur) ou sinon à la variable d’environnement utilisateur. Cela permettra de lancer la commande sans autre manip, directement dès l’ouverture du PowerShell.
Pour modifier la variable PATH il faut accéder aux propriétés du système. Pour cela on peut utiliser le raccourci clavier Touche Windows + R et saisir systempropertiesadvanced
puis valider (ou bien utiliser le champ de recherche Windows et y saisir les termes « variables environnement »).
Après avoir validé, la fenêtre des propriétés système s’ouvre. Sur cette fenêtre, on ira dans les « Variables d’environnement… » :
Il va falloir ajouter une nouvelle valeur dans la variable d’environnement PATH de Windows, de préférence dans la partie « Variables système » si vous êtes administrateur de votre ordinateur (sinon dans la partie Variables utilisateur). On va cliquer sur le bouton « Modifier » :
On devra alors ajouter une ligne supplémentaire pour saisir une nouvelle valeur qui précisera le chemin vers le répertoire qui contient le fichier exécutable de FFmpeg, soit : C:\ffmpeg\bin
Pour cela, on va cliquer sur le bouton « Nouveau », ajouter le chemin souhaité puis valider par OK :
Toutes ces opérations, qui pourront paraître compliquées, ne servent qu’à rendre le logiciel plus opérationnel sous Windows. Elles ne sont à faire qu’une seule fois, au tout début, de manière à configurer tout le nécessaire pour utiliser ensuite simplement le logiciel.
Quand c’est fait, il suffit d’ouvrir l’invite de commande ou le Windows PowerShell (l’équivalent du terminal sous Linux) et d’y saisir exactement les mêmes commandes que celles qu’on utilise sous Linux, ça fonctionne de la même manière.
On pourra par exemple – pour commencer – utiliser la simple commande ffmpeg
qui vous permettra d’avoir confirmation que le logiciel est bien installé. Si ce n’est pas le cas, cela renverra un message d’erreur. Si tout est correct, cela affichera la version du logiciel :
À partir de maintenant, FFmpeg est opérationnel sur votre machine et vous pouvez absolument tout faire avec vos fichiers vidéo (ou audio), aussi bien sous Linux que sous Windows, avec les mêmes commandes !
Avec FFmpeg, étant donné qu’on veut agir sur un fichier initial (en entrée) pour le transformer et obtenir un autre fichier (en sortie), nous pourrons préciser dans la commande une ou des options souhaitées pour le fichier d’entrée et une ou des options pour le fichier de sortie.
Une commande pour FFmpeg sera donc le plus souvent composée selon ce schéma :
ffmpeg -option1 fichier1-en-entrée option2 fichier2-en-sortie
ffmpeg
pour lancer le logicieloption1
une (ou des) options(s) qui s’appliquent sur le fichier à traiter (en entrée)fichier1-en-entrée
chemin vers le fichier à traiteroption2
une (ou des) options(s) qui précisent les actions à faire sur le fichier à générerfichier2-en-sortie
chemin vers le fichier à générer (en sortie)Dans toutes les commandes qui suivent, nous allons devoir désigner au logiciel FFmpeg :
Pour cela, il va falloir donner au logiciel le chemin vers le fichier, c’est à dire lui désigner son emplacement exact dans le répertoire dans lequel il se trouve.
Par exemple, mon fichier vidéo peut se trouver stocké dans le dossier « Vidéos » de l’utilisateur, et sous Windows, le chemin correspondant à cet emplacement est :
C:\users\nom-utilisateur\Videos\*nom-du-fichier-video.mp4
Sous Linux, le chemin de cet emplacement serait :
/home/nom-utilisateur/Vidéos/nom-du-fichier-video.mp4
Au moment de saisir la commande dans un terminal, c’est donc ce type de chemin (chemin absolu) que nous utiliserons de préférence. Cependant, pour des raisons de clarté et de lisibilité, je n’ai conservé dans mes exemples de commandes que le nom du fichier vidéo, en faisant disparaître le reste du chemin, d’une part pour ne pas surcharger l’affichage, d’autre part parce que ce chemin peut varier selon les situations.
Une des actions les plus communes est la conversion de formats, pour convertir une vidéo de .avi ou wmv vers .mp4 par exemple, avec la commande :
ffmpeg -i video-depart.avi video-modifiee.mp4
Prenons le temps de décortiquer un peu cette toute première commande. Il est important de s’attarder un peu sur ce point pour comprendre comment sont constituées les commandes que nous verrons plus loin et qui peuvent devenir assez longues selon ce qu’on souhaite faire.
La commande que nous venons de voir ffmpeg -i video-depart.avi video-modifiee.mp4
est constituée de 4 blocs :
ffmpeg
pour lancer le logiciel-i
(avec le i pour input) pour annoncer le chemin vers le fichier à traitermavideo-depart.avi
: le chemin vers le fichier vidéo de départmavideo-modifiee.mp4
: le chemin vers l’emplacement où je veux enregistrer la vidéo modifiée avec le nom que je choisis pour ce nouveau fichier.Par exemple, concrètement, avec une vidéo stockée sur mon ordinateur dans le dossier des vidéos de l’utilisateur, cela donnerait dans le terminal :
Pour le moment, nous n’avons pas utilisé de paramètres spécifiques à appliquer au fichier de sortie. Ce sera le cas un peu plus loin.
On peut aussi de la même manière que précédemment convertir un fichier audio (de .wav en .mp3 par exemple) :
ffmpeg -i audio-depart.wav audio-modifie.mp3
On peut modifier la résolution d’une vidéo, afin de réduire sa taille (et donc, son poids en mémoire) pour la faire passer par exemple d’une vidéos en taille Full-HD (1920 x 1080 pixels) vers une taille HD (1280 x 720 pixels), ou vers une taille encore inférieure, avec l’option -s
pour choisir la taille (avec s pour « size » suivi des dimensions souhaitées en pixels).
Par exemple :
ffmpeg -i mavideo-de-depart.mp4 -s 1280x720 mavideo-modifiee.mp4
On pourrait en même temps, pour réduire encore un peu plus le poids du fichier final, modifier le débit de données vidéo (le bitrate) avec le paramètre -b:v
(avec b pour « bitrate » et v pour « video* ») suivi de la valeur choisie pour le bitrate vidéo, par exemple 2500k pour une valeur de 2,5 Mbits/s. La commande qui cumule ces deux options pour le fichier de sortie serait donc, par exemple :
ffmpeg -i mavideo-depart.mp4 -s 1280x720 -b:v 2500k mavideo-modifiee.mp4
Nous avons ici défini et cumulé 2 options pour le fichier de sortie, avec le choix de la taille (-s 1280x720) et le choix du bitrate vidéo (-b:v 2500k).
Sur un ordinateur, dans le terminal, une commande de ce type pourrait ressembler à :
Il est possible et très rapide de découper un extrait à un endroit précis dans une vidéo :
– définir le début de l’extrait avec l’option -ss
– définir la fin de l’extrait avec -to
puis utiliser la commande suivante, par exemple pour découper un extrait allant de 2’15’’ à 3’52’’ :
ffmpeg -i mavideo.mp4 -ss 00:02:15 -to 00:03:52 mon-extrait-video.mp4
Autre action souvent demandée : extraire l’audio d’une vidéo.
Pour cela, on utilisera les options :
-vn
pour désactiver la vidéo et récupérer l’audio seul
-b:a
pour définir le bitrate audio (par exemple 192 Kb/s)
dans la commande suivante :
ffmpeg -i video.mp4 -vn -b:a 192k audio.mp3
On peut parfois avoir besoin de « retourner » une vidéo en miroir, soit horizontalement (inverser la gauche avec la droite), soit verticalement (inverser le haut avec le bas), soit les deux. On utilisera pour cela les options :
-vf
pour indiquer qu’on va appliquer un filtre à la vidéo
hflip
pour une mise en miroir horizontal (hflip pour « horizontal flip »)
vflip
pour une mise en miroir vertical (vflip pour « vertical flip »)
dans la commande suivante :
ffmpeg -i ma-video.mp4 -vf hflip ma-video-retournee.mp4
On peut aussi parfois avoir besoin de faire pivoter une vidéo pour rétablir une bonne orientation. Le cas le plus fréquent est quand la vidéo a été enregistrée sur un smartphone tenu en position verticale (en mode portrait). On peut vouloir à ce moment-là faire pivoter la vidéo de 90° (dans un sens ou dans l’autre) pour revenir à une vidéo en mode paysage (on aura tout de même dans ce cas des zones noires à gauche et à droite de l’image).
Pour effectuer cette rotation, utilisera les options :
-vf
pour indiquer qu’on va appliquer un filtre à la vidéo
transpose=1
pour une rotation de 90° dans le sens des aiguilles d’une montre.
transpose=2
pour une rotation de 90° dans le sens inverse des aiguilles d’une montre.
dans la commande suivante :
ffmpeg -i ma-video.mp4 -vf transpose=2 ma-video-pivotee.mp4
Ce que nous venons de voir était appliqué sur des fichiers vidéo stockés localement, sur notre ordinateur. Mais FFmpeg ne s’arrête pas là, et tout ce que nous avons fait jusqu’à présent peut aussi être fait sur des fichiers vidéo stockés en ligne !
Il suffit pour celà de fournir l’URL qui pointe directement vers ce fichier vidéo (à la place du chemin vers le fichier dans notre ordinateur).
➜ Attention : on parle bien de fichier vidéo stocké à distance et pas de vidéos diffusées en streaming, ce qui exclut tous les Youtube, Vimeo, Dailymotion, Instagram, etc. Autrement dit, il faut donc que l’URL se termine obligatoirement par le nom de ce fichier, par exemple : https://www.monsite/videos/ma-video.mp4
Par exemple, pour cette vidéo stockée sur Peertube et dont je peux obtenir l’URL vers le fichier correspondant : https://tube-numerique-educatif.apps.education.fr/download/videos/e2ec6e5e-fc00-4855-8ff9-1782fdeaec28-720.mp4, je peux utiliser FFmpeg pour en découper un extrait qui s’enregistrera sur mon ordinateur, sans avoir besoin de télécharger la vidéo dans sa totalité auparavant. Il me suffit d’utiliser la commande suivante (par exemple pour un extrait de 20 s qui va de 0:36 à 0:56)
ffmpeg -i https://tube-numerique-educatif.apps.education.fr/download/videos/e2ec6e5e-fc00-4855-8ff9-1782fdeaec28-720.mp4 -ss 00:00:36 -to 00:00:56 mon-extrait.mp4
Je ne récupèrerai sur mon ordinateur que le fichier correspondant à l’extrait que je souhaite.
Vous êtes maintenant capables d’effectuer très rapidement et simplement des manipulations dont on a fréquemment besoin sur des fichiers médias. J’insiste sur la rapidité de mise en œuvre et la simplicité des actions à effectuer. Même si à la première lecture tout ceci peut paraître laborieux (c’est infiniment plus long à expliquer par écrit qu’à faire réellement !), même si tout ceci peut paraître nouveau et intimidant, les habitudes viennent très vite et l’efficacité sera vraiment au rendez-vous.
Le logiciel FFmpeg est tellement plus léger, rapide, efficace que les « énormes » logiciels de montage ou d’édition de vidéos grand public, extrêmement lourds sur les ordinateurs et extrêmement gourmands en mémoire mais vers lesquels la majorité des utilisateurs se tourne dans la plupart des cas, par simple ignorance des outils vraiment efficaces…
L’utilisation de FFmpeg est d’autant plus simple que le terminal sous Linux ainsi que le PowerShell sous Windows utilisent les mêmes commandes et surtout, conservent un historique des commandes déjà saisies ce qui permet :
- soit de les « rappeler » pour les réutiliser en appuyant sur la touche ↑ du clavier (autant de fois que nécessaire jusqu’à retrouver la commande souhaitée qu’on n’aura plus qu’à adapter).
- soit de rechercher une commande en appuyant sur Ctrl + R et en commençant à saisir un terme dont on sait qu’il est dans la commande voulue.
– Toute la documentation officielle de FFmpeg : https://www.ffmpeg.org/ffmpeg.html
– Guide complet, avec de nombreux exemples détaillés, pour utiliser #ffmpeg sous #Linux : https://itsfoss.com/ffmpeg/
– Un immense article qui explique les bases, l’essentiel à savoir sur ce logiciel libre excellentissime pour traiter l’audio et la vidéo, avant de donner et d’expliquer très en détails de nombreux exemples d’utilisation. https://img.ly/blog/ultimate-guide-to-ffmpeg/
– Une page (en français) du Wiki Ubuntu-fr dédiée à FFmpeg : https://doc.ubuntu-fr.org/ffmpeg
FFmpeg, l’utilitaire ultime pour le traitement de vos fichiers vidéo, by Alain MICHEL – Bureau de la Formation et de l’Innovation – AEFE, (2024) is licensed under CC BY-SA 4.0