kubuntu-fr

Communauté francophone des utilisateurs de Kubuntu

 

[[ffmpeg]]

Piste: » ffmpeg


FFmpeg

 Logo de 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 :-D
  • 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.

Attention, depuis Ubuntu Intrepid Ibex, les noms de nombreux codecs d'encodage on été changés ex h264 = libx264 ou mp3 = libmp3lame Pour avoir la liste faire:

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)

Cette méthode permet d'installer la toute dernière version de FFmpeg, mais celle-ci provenant du serveur SVN, elle est toujours en développement, ce qui signifie qu'elle peut se révéler instable. L'utilisation de cette version est donc à vos risques et périls.

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

Il est ensuite vivement conseillé de désactiver immédiatement les dépôts Trévino et de n'effectuer aucune mise à jour avant cela, certains autres paquets de ce dépôt pourraient poser des problèmes.

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 

Pour supprimer FFmpeg :

 sudo make uninstall 

FFmpeg et le support AAC

Note : À compter de Ubuntu 7.04 (Feisty Fawn), une version de FFmpeg avec le support AAC activé est disponible dans le dépôt medibuntu.

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.

FIXME 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

ffmpeg s'utilise principalement en ligne de commande dans un terminal.

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


ffmpeg.txt · Dernière modification: Le 11/08/2010, 16:16 par mydjey
Le contenu de ce wiki est sous licence : CC BY-SA v3.0