[[ffmpeg]]
Piste: » ffmpeg
FFmpeg
FFmpeg est un logiciel de lecture et encodage de vidéo. Très puissant comme son petit frère Mencoder, il assure en ligne de commande la possibilité de convertir les fichiers vidéos d'un format à un autre.
Utilisation graphique
Il existe des interfaces graphiques permettant de simplifier grandement le transcodage de fichiers:
- Hyper video converter - Il permet tout ce que permet FFMpeg mais avec une interface graphique !
- WinFF - Ce logiciel vous permet de choisir parmi une liste de profiles un encodage vidéo qui conviendra à vos attentes. Par exemple si vous voulez faire une vidéo compatible Blackberry, il vous sera même pas nécessaire de savoir quel est l'encodage interne utilisé.
D'autres interfaces graphiques ont été créées pour répondre à des attentes spécifiques:
- Mobile Media Converter se propose quand à lui de transcoder vos vidéos pour les appareils de lecture vidéo mobiles tel que les téléphones portables les ipod et les lecteurs MP3/MP4.
D'autres logiciels permettent de faire des modifications plus profondes à la vidéo et utilisent FFMpeg pour rendre la vidéo finale:
- Avidemux - Sa principale particularité est de permettre l'application de filtres à la vidéo comme par exemple enlever les bandes noire d'une vidéo. Concernant le transcodage il se débrouille très bien et permet l'utilisation des principaux codecs en lecture et en écriture. (équivalent de Virtualdub)
- Cinelerra - Logiciel de montage extrêmement puissant, ne convient pas aux débutants et ne propose pas une interface simple d'utilisation en matière de transcodage. Réservez le à vos effets spéciaux

- Kino - Logiciel de montage et de transcodage peu pratique, il requiert une transformation (automatique) du fichier en .dv préalablement ce qui prend une place considérable.
ffmpeg -formats
Installation
Dépôt officiel (recommandé)
Il suffit d'installer le paquet ffmpeg une fois les dépôts Universe activés.
Note : les packages par défaut ne contiennent pas les codecs les plus classiques comme "mpeg4", pour cela il faut installer spécifiquement
sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52 libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51 libswscale-unstripped-0 ffmpeg
Par compilation
Il peut être intéressant de compiler FFmpeg afin de bénéficier des dernières optimisations et de manipuler des formats qui n'étaient pas encore supportés. Par exemple pour les vidéos hautes définitions encodées avec x264 qui demandent beaucoup moins de ressources dans les dernières versions.
(Voir le changelog de FFmpeg)
Il faut pour commencer, ajouter les dépôts Treviño au fichier /etc/apt/sources.list :
deb http://download.tuxfamily.org/3v1deb feisty 3v1n0 deb-src http://download.tuxfamily.org/3v1deb feisty 3v1n0
Puis ajoutez la clef du dépôt en exécutant la ligne suivante :
wget http://download.tuxfamily.org/3v1deb/DD800CD9.gpg -O- | sudo apt-key add -
Enfin, rechargez la liste des paquets :
sudo apt-get update
Récupérez certaines dépendances et autres :
sudo apt-get install build-essential subversion liba52-0.7.4-dev libgsm1-dev libtheora-dev libvorbis-dev libdc1394-22-dev libxvidcore4-dev libfaac-dev libfaad-dev libx264-dev libimlib2-dev libsdl1.2-dev libamrnb-dev libamrwb-dev gettext html2text texi2html libmp3lame-dev libfaad-dev
On télécharge ensuite les sources par subversion :
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
On rentre maintenant dans le dossier FFmpeg :
cd ffmpeg
Puis on lance le ./configure pour créer les fichiers make :
./configure --enable-shared --enable-libdc1394 --enable-liba52 --enable-gpl --enable-liba52bin --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libmp3lame --enable-libogg --enable-libtheora --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libgsm --enable-libamr-nb --enable-libamr-wb --enable-nonfree
Attention : avec la version de Juillet 2009, certains encoder sont intégrés en natif donc plus besoin de les spécifier. Le ./configure devient donc :
./configure --enable-shared --enable-libdc1394 --enable-gpl --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libgsm --enable-nonfree
De plus, il peut être intéressant de permettre à ffmpeg de faire du multithread. Pour cela, ajouter l'option
--enable-pthreads
pour linux.
L'aide pour les options peut-être obtenue avec
./configure --help
Puis la compilation :
make
Et l’installation :
sudo make install
sudo make uninstall
FFmpeg et le support AAC
Afin de convertir et de profiter de vos vidéos préférées au format M4V pour PSP, vous devez les reconvertir en utilisant comme codec audio le format AAC. Or ce codec n'est pas activé dans le paquet FFmpeg fourni sur les dépôts.
Nous allons voir comment recompiler FFmpeg avec le support de l'AAC pour nos consoles.
Avant toutes choses, sachez que vous retrouverez ces informations sur le site personel de Paul Battley.
Partie à revoir : il faut utiliser les mini-tutoriels.
Premièrement, il faut activer les dépôts universe et multiverse ;
Avec Ubuntu :
gksudo gedit /etc/apt/sources.list
Avec Kubuntu :
kdesudo kate /etc/apt/sources.list
Et ajouter les mots clefs "multiverse universe" à la suite des dépôts Ubuntu officiels.
Avec Ubuntu 8.04 LTS (Hardy Heron), cela donne :
deb http://fr.archive.ubuntu.com/ubuntu/ hardy main restricted multiverse universe deb-src http://fr.archive.ubuntu.com/ubuntu/ hardy main restricted multiverse universe
On satisfait les dépendances de construction de FFmpeg :
sudo apt-get build-dep ffmpeg
Puis on récupère les librairies nécessaires, pour Hardy Heron cela donne :
sudo apt-get install liblame-dev libfaad-dev libfaac-dev libxvidcore4-dev liba52-0.7.4 liba52-0.7.4-dev libx264-dev
On récupère les sources de FFmpeg :
apt-get source ffmpeg
On le compile en utilisant les bons flags de compilation, dont le flag –enable-faac qui va nous apporter la prise en charge de AAC :
cd ffmpeg-* ./configure --enable-gpl --enable-pp --enable-libvorbis --enable-libogg --enable-liba52 --enable-dc1394 --enable-libgsm --disable-debug --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-xvid --enable-pthreads --enable-x264 --enable-swscaler --enable-libtheora make sudo make install
Et voilà, la version compilée devrait permettre de compresser vos vidéos pour la PSP.
Utilisation
Faire des essais de conversion avec FFmpeg sur une portion de fichier
Exemple :
ffmpeg -ss 80 -t 60 -i videoInput.mpg -s 240x180 -b 380k -ab 64k videoOutput.flv
Cette commande convertit la portion commençant à t0 = 80 s (-ss) et s'étendant sur une durée de 60 s (-t) du fichier d'entrée videoInput.mpg codé en MPEG. Le fichier produit sera encodé en Flash, la taille d'image sera de 240×180, le débit engendré par son affichage de 380 kbps et le débit audio de 64 kbps.
Exemple pour sortir un fichier AVI en qualité moyenne, à partir d'un fichier OGG Theora :
ffmpeg -ss 4518 -t 1100 -b 768k -ab 128k -i videoInput.ogv -f avi videoOutput.avi
Utilisation Multithreads
Si FFmpeg est compilé avec la possibilité de faire du multithreading (la version par défaut d'ubuntu le permet par exemple), il permet sans aucune difficulté d'utiliser le nombre de threads que vous voulez pour encoder un fichier, il suffit de passer l'instruction threads à ffmpeg:
ffmpeg –threads N
N étant le nombre de threads à utiliser. Vous pouvez donc en utiliser seulement 3 sur un processeur Quad Core pour garder une grande réactivité sur une autre tâche.
Vous pouvez ensuite compléter par n'importe quelles instructions, et si le codec supporte le multithreading il utilisera automatiquement au mieux votre installation.
Exemples de conversions
Convertir le format FLV en AVI
Cette conversion est utile si vous téléchargez des vidéos en streaming (YouTube, Google Video, etc.).
ffmpeg -i nom_du_fichier.flv -f avi nom_du_fichier.avi
Convertir le format AVI en MPEG
Un exemple de commande, et d'options, pour faire un DVD (donc un format MPEG) depuis un fichier avi :
ffmpeg -i ma_video.avi -target pal-dvd -aspect 16:9 -sameq mon_dvd_video.mpg
Où :
- -i ma_video.avi est le fichier départ ;
- -target pal-dvd le format de sortie ;
- -fs 2000000000 la taille maximale du fichier sortie, en bits (ici 2 Gbit) ;
- -aspect 16:9 le ratio widescreen (avec les franges en haut et en bas).
Convertir le format AVI en DV
Cette conversion est utile pour faire du montage vidéo, dans Kino par exemple. En ligne de commande, tapez :
ffmpeg -i video.avi -target pal-dv video.dv
Attention, ici le chemin n'est pas précisé. Le fichier doit se trouver dans votre dossier personnel pour que cela fonctionne.
Convertir le format AVI en MP4 (PSP)
Cette conversion est utile pour lire vos vidéos sur une console portable PSP. En ligne de commande, tapez :
ffmpeg -i video.avi -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 480x160 m4v00001.mp4
Attention, si vous générez plusieurs fichiers vidéos, ceux-ci doivent avoir un nommage particulier pour pouvoir être lus sur votre console (m4v00001.mp4, m4v00002.mp4, m4v00003.mp4, et ainsi de suite).
Si vous encodez une vidéo qui est au format 4/3, choisissez une taille de 320×240 pour conserver les proportions.
Pour avoir une bonne qualité avec une résolution 480×272, avec un débit de 768 kbps, firmware conseillé 3.71 ou supérieur, tapez :
ffmpeg -i video_en_entrée.avi -r 29.97 -vcodec h264 -s 640x480 -aspect 16:9 -flags +loop -cmp +chroma -deblockalpha 0 -deblockbeta 0 -b 768k -maxrate 1500k -bufsize 4M -bt 256k -refs 1 -bf 3 -coder 1 -me umh -me_range 16 -subq 7 -partitions +parti4x4+parti8x8+partp8x8+partb8x8 -g 250 -keyint_min 25 -level 30 -qmin 10 -qmax 51 -qcomp 0.6 -trellis 2 -sc_threshold 40 -i_qfactor 0.71 -acodec aac -ab 112k -ar 48000 -ac 2 -s 480x272 -aspect 4:3 video_en_sortie.mp4
Créer une vignette de la vidéo qui vient d'être encodé au format 160x120 en jpg.
- -ss 5 : Va à la 5eme seconde de la vidéo
- -vframes 1 : Pour n'avoir qu'une image
ffmpeg -i video.mp4 -f image2 -ss 5 -vframes 1 -s 160x120 video.jpg
Convertir un fichier 3GP ou AMR en MPEG ou MP3
Les fichiers .AMR (Pour Adaptive Multi-Rate Codec, ou Codec multi-débit adaptatif) sont des fichiers sons spécifiques aux téléphones mobiles, et deviennent de plus en plus répandus au fur et à mesure du développement des dictaphones intégrés aux portables et des téléphones-baladeurs, tout comme les fichiers .3GP (Pour 3rd Generation Partnership Project, projet de partenariat de 3ème génération) qui sont leurs homologues vidéos.
Il existe différentes méthodes pour les manipuler, dont celles utilisant FFmpeg en ligne de commande.
Dans les premières versions de cet article, nous présenterons une méthode par interface graphique, utilisant l'utilitaire Mobile Media Converter.
Ce programme se présente sous forme d'archive à décompacter, et il suffit de double-cliquer sur l'exécutable Mobile Media Converter pour le lancer une fois extrait de l'archive.
Convertir des fichiers musicaux
Pour les fichiers sonores, la commande typique est :
ffmpeg -i monMorceau.mp3 monMorceau.wav
Cependant pour convertir un fichier quelconque en fichier mp3, il faut régler le bitrate. Par défaut le bitrate est de 64 kbps, ce qui donne des fichiers extrêmement légers mais des morceaux ignobles à écouter. Il faut donc modifier ce bitrate, on conseille un minimum de 128 kbps, mais pour avoir le meilleur rapport qualité/taille, préférez 192 kbps, et sachez que les bitrates courants peuvent aller jusqu'à 320 kbps. Pour une conversion vers un MP3 avec un bitrate de 192 kbps, la commande est :
ffmpeg -ab 192k -i monMorceau.ogg monMorceau.mp3
Extraire la bande son d'une vidéo
Pour extraire la bande sonore d'une vidéo (dans cet exemple, avec un format « .avi », cela fonctionne également pour les autres formats), et le récuperer en mp3 (Autres choix possibles) :
ffmpeg -i fichier_video.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 fichier_son.mp3
Convertir tous les fichiers Windows Media Audio ( WMA ) en mp3
La boucle dans un dossier contenant des fichiers au format wma la boucle for lance la conversion des fichiers. Il suffira de supprimer les fichier wma une fois la conversion terminée.
for i in *.wma; do ffmpeg -i "$i" -ab 256k "${i%wma}mp3"; done
Effectuer une capture vidéo de l'écran
Après avoir exécuté cette commande, appuyez sur q pour arrêter la capture.
ffmpeg -b 1000k -f x11grab -s 800x600 -r 30 -i :0.0 screencast.mpg
Pour une capture d'écran Hi-Fi, son et vidéo sans perte, avec Pulse Audio comme serveur de son :
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv
Pour consulter le manuel de FFmpeg
man ffmpeg
Pour en savoir plus sur Internet
(en)Site officiel(fr)Exemples d'usages
Contributeurs principaux : loup_74, ElGeneralMidi, Wido, Laurent Bellegarde.
Le contenu de ce wiki est sous licence : CC BY-SA v3.0
Partie à revoir : il faut utiliser les mini-tutoriels.
