Installation de FFMPEG / x264 /Lame sur CentOS 1and1

FFMPEG_1and1J’avais publié un article sur l’installation de FFMPEG sur les serveurs CentOS de 1and1 via YUM.
J’ai ensuite rencontré quelques soucis d’encodage au format FLV avec du MP3.J’ai donc tout réinstallé presque à la main en me servant de plusieurs tutos que j’ai mixé à ma sauce suivant les erreurs que je rencontrai (tout le monde n’a pas les même librairies installées sur son serveur…).

Bref c’est parti

Préparation du système :

On met le system à jour

yum update

On supprime les anciennes installation s’il y en avait

yum remove ffmpeg x264 faad2 faad2-devel

On ajoute EPEL (qui nous permetera d’installer git et yasm)

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

On installe les outils de dev

yum install gcc gcc-c++ automake autoconf libtool yasm git subversion zlib-devel

On se prépare un petit répertoire pour les sources

mkdir /usr/src/ffmpeg-packages
cd /usr/src/ffmpeg-packages

Nous sommes prêt à installer !

Installation des différents codecs et outils

Installation de GPAC

wget http://downloads.sourceforge.net/gpac/gpac-0.4.4.tar.gz
tar -xzvf gpac-0.4.4.tar.gz
cd gpac
chmod 777 configure (je ne sais pas pourquoi il n'a pas les bons droits)
./configure
make
make install
make install-lib
echo '/usr/local/lib/' > /etc/ld.so.conf.d/gapc-1386.conf
ldconfig

Installation de Faad2

wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz
tar zxf faad2-2.6.1.tar.gz
cd faad2
autoreconf -vif
./configure --disable-drm --disable-mpeg4ip
make && make install
cd ..

Installation de Faac

wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz
tar zxfv faac-1.26.tar.gz
cd faac
./bootstrap
./configure --disable-mp4v2
make && make install
cd ..

Installation de Lame

wget http://superb-east.dl.sourceforge.net/sourceforge/lame/lame-3.98b8.tar.gz
tar zxfv lame-3.98b8.tar.gz
cd lame-3.98b8
./configure
make && make install
cd ..

Installation de x264

git clone git://git.videolan.org/x264.git
cd x264
./configure  --enable-pthread --enable-mp4-output --enable-shared
make
make install

Installation de Xvid

wget http://downloads.xvid.org/downloads/xvidcore-1.1.3.tar.gz
tar zxfv xvidcore-1.1.3.tar.gz
cd xvidcore-1.1.3/build/generic
./configure
make && make install
cd ../../..

Installation de FFMPEG

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-postproc --enable-nonfree --enable-postproc --enable-libfaad --enable-avfilter --enable-pthreads --enable-libxvid --enable-libx264 --enable-libmp3lame --enable-libfaac --disable-ffserver --disable-ffplay --enable-shared 
make
make install

Voilà FFMPEG est installé et vous permettra de faire pas mal de choses

Execution de FFMPEG depuis un script PHP initialisé par Apache

Sur les serveurs virtuels de 1and1 Il manque les répertoires /usr/local/bin:/usr/local/sbin au PATH d’apache et je n’ai trouvé qu’une méthode brutale pour mettre à jour le PATH.

Vous pouvez essayer, en temps normal il suffit dans httpd.conf d'ajouter :
setEnv PATH /sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin

Mais sur mon serveur virtuel cela ne modifiait pas la variable d’environnement PATH du serveur apache.
J’ai donc édité le fichier /etc/init.d/httpd
et j’ai ajouté juste après les lignes :

# Source function library.
. /etc/rc.d/init.d/functions

La ligne de définition du PATH suivante :

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH

Pourquoi après cette ligne ?
Parce qu’elle fait appel à un fichier qui met à jour le PATH et qui écraserai mes modifications.
Pourquoi ne pas mettre à jour directement le fichier /etc/rc.d/init.d/functionsfunctions ?
Parce qu’il n’est pas utilisé que par le démon httpd (je suis brutus mais pas complètement quand même !)

Cet article a été réalisé sur la base de deux bons articles avec mes corrections sur les bugs rencontrés :
http://gregorytomlinson.com/encoded/2008/06/11/a-robust-ffmpeg-install-for-centos-5/
http://www.austenconstable.com/tag/centos/

Installation de FFMPEG-PHP

cd /usr/src/ffmpeg-packages
wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2?use_mirror=freefr
tar zxvf ffmpeg-php-0.6.0.tbz2
cd ffmpeg-php-0.6.0
phpize (si erreur yum install php-devel)
./configure
make && make install

Si vous rencontrez une erreur au MAKE (sur la constante PIX_FMT_RGBA32), il faut éditer le fichier ffmpeg_frame.c
et remplacer “PIX_FMT_RGBA32” par “PIX_FMT_RGB32” (présent 3 fois dans el fichier) et relancer la commande MAKE.

Ajouter ensuite extension=ffmpeg.so dans le php.ini
et redémarrer le serveur apache : /etc/init.d/httpd restart

Pour aller plus loin

Pour des exemples de scripts PHP pour convertir vos vidéos je vous renvoi vers cet article

Sinon il y a aussi...