Ffmpeg

De Wiki doc

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

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