Ffmpeg : améliorer la version debian/ubuntu
Par kate, samedi 15 mars 2008 à 09:54 - Debian - conversion, debian, ffmpeg, ubuntu, utilisateur, video - Lien permanent #30
La version debian de ffmpeg ne lit pas la plupart des formats propriétaires pour des raisons de licence (entre autres la GPL). Du fait la conversion de vidéos devient vite un casse-tête. Pour les plus pressés il est possible d'utiliser des dépôts avec des paquets modifiés tout prêts. De mon coté j'ai opté pour la recompilation de ffmpeg à partir du svn en incluant différentes librairies : lame, faac, xvid, vorbis, a52, gsm, theora et dc1394 pour coller au mieux à mes besoins.
Debian l'intégriste... pour notre bien
Voila, je viens de recevoir une video avi d'un collègue que je voulais "flv-ïser" pour que tout le monde en profite sur un blog. Je prends donc mon ffmpeg préféré et lance la commande :
[bash] ffmpeg -i inputfile.avi -s 320x240 -r 30 -ar 44100 -f flv outputfile.flv
et bien il me répond méchamment :
[text] Unsupported codec (id=73728) Audio: mp4a / 0x6134706D
Après quelques recherches je tombe sur cette page qui m'apprend que ce type de codage est gérée par libfaad. faad est la librairie pour décoder et faac celle pour encoder.
Il me faut donc recompiler ffmpeg afin de lui ajouter le support de plusieurs codecs utiles pour pouvoir convertir les fichiers qui viendraient d'un autre système d'exploitation que notre tux adoré.
Et zou une autre page pour cela mais toujours en anglais.
Allez c'est parti.
Pour les réticents de la compilation
Si vous ne désirez pas recompiler les applications ou encore "polluer" votre installation avec des logiciels non "packagés",
il existe des paquets ffmpeg pour Debian et Ubuntu qui intègrent le supports de codecs pas forcément libres. Il conviendra d'ajouter les dépôts dans le fichier /etc/apt/sources.list. Merci à Pouet pour les adresses :
- Debian http://debian-multimedia.org/
- Ubuntu http://www.medibuntu.org/ http://doc.ubuntu-fr.org/ffmpeg https://wiki.ubuntu.com/ffmpeg
Pour Debian
Source http://www.commentcamarche.net/faq/sujet-3326-multimedia-et-linux
Il faut d'abord configurer APT afin qu'il aille chercher les paquetq multimédia modifiés. Un dépôt APT est maintenu par Christian Marillat qui propose mplayer et autres logiciels
Ajouter la ligne suivante au fichier /etc/apt/sources.list (en fonction de votre version)
[text] # Stable deb www.debian-multimedia.org sarge main # MPlayer et DVD::Rip # Testing deb www.debian-multimedia.org etch main #multimedia # Unstable deb www.debian-multimedia.org sid main #multimedia
Il ne reste plus qu'à relancer votre aptitude/synmaptic ou autre apt-get update pour installer les paquets modifiés.
Pour Ubuntu
http://www.commentcamarche.net/faq/sujet-5397-lire-tous-les-formats-video-les-mp3-et-les-dvd
Pour Ubuntu 7.10
- Tapez:
[bash] sudo aptitude install linux-restricted-modules ubuntu-restricted-extras ffmpeg libdvdnav4
- Tapez :
[bash] sudo /usr/share/doc/libdvdread3/install-css.sh
Pour Ubuntu 7.04
- Tout d'abord, activez les dépôts Universe et Multiverse. (Opération inutile pour Ubuntu 7.04 et suivants)
- Tapez :
[bash] sudo aptitude install ffmpeg gstreamer0.10-ffmpeg gstreamer0.8-ffmpeg gstreamer0.8-misc\ mplayer vlc mozilla-mplayer xine xine-ui libdvdread3 libdvdplay0 libdvdnav4 flashplugin-nonfree
- Tapez :
[bash] sudo /usr/share/doc/libdvdread3/install-css.sh
Pour les plus courageux...
Version svn de ffmpeg
Source de ffmpeg http://ffmpeg.sourceforge.net/
Dans un premier temps on va récupérer la version svn de ffmpeg et voir quelles sont les options disponibles. Si vous ne disposez par de subversion il suffit de l'installer par :
[bash] apt-get install subversion
ensuite on crée la copie de travail locale de ffmpeg
[bash] svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg .... Actualisé à la révision 12442.
On va visualiser les options disponibles par :
[bash] ./configure --help | more ..... External library support: --enable-sunmlib use Sun medialib [default=no] --enable-liba52 enable GPLed liba52 support [default=no] --enable-liba52bin open liba52.so.0 at runtime [default=no] --enable-avisynth allow reading AVISynth script files [default=no] --enable-libamr-nb enable libamr-nb floating point audio codec --enable-libamr-wb enable libamr-wb floating point audio codec --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 and libraw1394 [default=no] --enable-libfaac enable FAAC support via libfaac [default=no] --enable-libfaad enable FAAD support via libfaad [default=no] --enable-libfaadbin open libfaad.so.0 at runtime [default=no] --enable-libgsm enable GSM support via libgsm [default=no] --enable-libmp3lame enable MP3 encoding via libmp3lame [default=no] --enable-libnut enable NUT (de)muxing via libnut, native demuxer exists [default=no] --enable-libtheora enable Theora encoding via libtheora [default=no] --enable-libvorbis enable Vorbis encoding via libvorbis, native implementation exists [default=no] --enable-libx264 enable H.264 encoding via x264 [default=no] --enable-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvid encoder exists [default=no] .....
La partie la plus intéressante concerne le support des librairies. Les librairies faad vorbis a52 gsm theora dc1394 faadbin peuvent être installées à partir des dépôts debian (ne pas oublier d'installer les paquets de développement). Par contre pour faac xvid et lame nous allons les installer à partir des sources.
Installation de Lame
Lame est un encoder MPEG 3 ( LAME Ain't an Mp3 Encoder). L'utilisation de Lame dans un logiciel peut requérir le paiement d'une patente dans certain pays. C'est pourquoi, cette librairie n'est pas intégrée dans ffmpeg.
On récupère les sources à l'adresse suivante [http://sourceforge.net/projects/lame], puis on exécute
[bash] tar xzf lame-3.97.tar.gz cd lame-3.97 $ ./configure $ make # make install
Le make install se fait bien sur en root
Installation de xvid
Xvid est une implémentation de la norme MPEG-4 (partie 2) de codage vidéo et distribué sous licence publique générale GNU (GPL). À l'origine basé sur OpenDivX, Xvid fut développé par un groupe de volontaires après que les sources de OpenDivX n'aient plus été disponibles. (source Wikipédia)
On récupère les sources à l'adresse http://www.xvid.org/, et on exécute :
[bash] $ tar xzf xvidcore-1.1.3.tar.gz $ cd xvidcore-1.1.3/ $ cd build/generic/ $ ./configure $ make # make install
Le make install se fait bien sur en root
Installation de faac
FAAC est un encodeur AAC MPEG-4 et MPEG-2 AAC opensource. Désigné pour être le successeur du MP3, le format AAC permet d'obtenir une meilleure qualité de son.
On récupère les sources à l'adresse http://www.audiocoding.com/downloads.html et on exécute :
[bash] $ tar xzf faac-1.26.tar.gz $ cd faac/ $ ./bootstrap $ ./configure $ make # make install
Le make install se fait bien sur en root
Installation de ffmpeg
Nous avons déjà créé notre copie de travail pour ffmpeg. Nous allons donc le configurer et la compiler.
C'est la ligne de configure qui est la plus importante. Voici la mienne pour ma debian lenny:
[bash] ./configure --enable-libmp3lame --enable-gpl --enable-shared --enable-libfaad \ --enable-libfaac --enable-libvorbis --enable-libxvid --enable-pthreads --enable-liba52 \ --enable-libgsm --enable-libtheora --disable-debug --enable-libdc1394 --enable-swscale \ --enable-avfilter --enable-avfilter-lavf --enable-libfaadbin
en voici une autre pour une gutsy (ajout du support x264) :
[bash] ./configure --enable-libmp3lame --enable-gpl --enable-shared --enable-libfaad \ --enable-libfaac --enable-libvorbis --enable-libxvid --enable-pthreads --enable-liba52 \ --enable-libgsm --enable-libtheora --disable-debug --enable-libdc1394 --enable-swscale \ --enable-avfilter --enable-avfilter-lavf --enable-libfaadbin --enable-libx264
Il ne reste plus qu'à compiler et installer :
[bash] $ make # make install
Erreur au lancement de ffmpeg
Tout fier je lance ffmpeg et j'obtiens l'erreur suivante :
[text] ffmpeg: error while loading shared libraries: libavformat.so.0: \ cannot open shared object file: No such file or directory
En fait par défaut si vous n'avez rien précisé, ffmpeg s'installe dans /usr/local/bin et les librairies dans /usr/local/lib. Ce dernier répertoire n'est pas, par défaut, dans la liste des répertoires qui contiennent des librairies. Il faut donc l'ajouter pour que le système aille récupérer de dont il a besoin.
Ceci se fait en éditant le fichier /etc/ld.so.conf (en root) et on y ajoute la ligne :
[text] /usr/local/lib
Puis on relance le configuration de l'éditeur de liens dynamique par
[bash] # ldconfig
On peut aussi relancer le configure et lui ajouter l'option --prefix=/usr afin de l'obliger à s'installer dans /usr. Dans ce cas commencer par désinstaller ffmpeg, puis refaites la procédure d'installation
[bash] # make uninstall $make distclean $ ./configure --enable-libmp3lame --enable-gpl --enable-shared --enable-libfaad \ --enable-libfaac --enable-libvorbis --enable-libxvid --enable-pthreads --enable-liba52 \ --enable-libgsm --enable-libtheora --disable-debug --enable-libdc1394 --enable-swscale \ --enable-avfilter --enable-avfilter-lavf --enable-libfaadbin --prefix=/usr $ make #make install
Il ne devrait plus y avoir de problème avec le chargement des librairies dynamiques.
Conversion de fichiers en flv
Je vous renvoie vers la page Des flashs pour votre site web.
Commentaires
Ok, mais en faisant comme ça on fait un peu n'importe quoi et ce n'est plus désinstallable proprement.
SInon il existe des paquets ffmpeg pour Debian et Ubuntu déjà fait (google est ton ami) et en dernier recours il existe de nombreuses docs (wiki ubuntu etc.) sur comment faire son propre paquet ffmpeg avec les options qui vont bien.
J'attends donc les adresses
cela m'interesse tout plein. cela permettra de mettre à jour le post.
make uninstall est aussi ton ami pour le coup. Et quid des libs non packagées? ajout de dépot, compilation
http://doc.ubuntu-fr.org/ffmpeg même combat on ajoute des dépots et on compile !!!
"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."
Suis pas sur que ce soit mieux
http://www.balluche.fr/?1090/ffmpeg-Convertir-une-majorite-de-formats-video-et-audio-sous-Linux mieux mais c'est pas encore ça...
et oui voila http://doc.ubuntu-fr.org/depots#medibuntu encore un autre dépot
Bon le mieux faire son propre paquet. Car pour le reste il te manque toujours le codec qui n'a pas été inclus dans le paquet du dépot.
et puis c'est pas si sale que ça tout se trouve dans /usr/local/bin et /usr/local/lib
bah et puis mince, moi j'ai aussi une gentoo.. alors je compile
Et puis c'est pas un serveur... c'est une deb lenny... alors ça fait partie du coté testing...
Debian -> http://debian-multimedia.org/ Ubuntu -> http://www.medibuntu.org/ http://doc.ubuntu-fr.org/ffmpeg https://wiki.ubuntu.com/ffmpeg
ok merci, après une brève recherche j'avais la plupart d'entre eux... je rajoute dans l'article.