Installing FFMPEG and FFMPEG-PHP on CentOS
Posted by Nazly on Thursday, 30th August 2007 15:01:15 (GMT +0530)Last few weeks couple of my colleagues were working on a website that required converting videos to FLV format which is much similar to what youtube does. Inorder to do this they were using ffmpeg which does all the video conversion. He also used ffmpeg-php which is an extension for PHP that allows to retrieve information regarding a video file. So I had to get a local development environment working for this particular project. I had an Ubuntu 7.04 box and found this tutorial for installing ffmpeg and ffmpeg-php. I was successfully able to get it working and my colleagues built the site and it was working very smoothly.
Now when we got to the stage of launching the site, I had to repeat all the installation on a live server as they don't come with ffmpeg or ffmpeg-php pre installed. Hosting Companies seem to charge big bucks to get these installed in their servers. So we went for a Virtual Dedicated Server which had root access. It was a Cent OS 4 box and this is how I was able to get ffmpeg and ffmpeg-php installed on it.
Switch to working directory
cd /usr/local/src
Download the source files needed
wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2
wget http://rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz
wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
wget http://superb-west.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.0.tbz2
wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz
wget http://rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz
wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
wget http://superb-west.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.0.tbz2
wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz
Extract the Source files
bunzip2 essential-20061022.tar.bz2; tar xvf essential-20061022.tar
tar zxvf flvtool2_1.0.5_rc6.tgz
tar zxvf lame-3.97.tar.gz
bunzip2 ffmpeg-php-0.5.0.tbz2; tar xvf ffmpeg-php-0.5.0.tar
tar zxvf libogg-1.1.3.tar.gz
tar zxvf libvorbis-1.1.2.tar.gz
tar zxvf flvtool2_1.0.5_rc6.tgz
tar zxvf lame-3.97.tar.gz
bunzip2 ffmpeg-php-0.5.0.tbz2; tar xvf ffmpeg-php-0.5.0.tar
tar zxvf libogg-1.1.3.tar.gz
tar zxvf libvorbis-1.1.2.tar.gz
Create a directory for codecs & import them
mkdir /usr/local/lib/codecs/
mv essential-20061022/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/
mv essential-20061022/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/
Install SVN/Ruby
yum install subversion
yum install ruby
yum install ncurses-devel
yum install ruby
yum install ncurses-devel
Get the latest FFMPEG/MPlayer from the subversion
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
Fix few Lib issues for next steps
Add this line in /etc/ld.so.conf
/usr/local/lib
then run
ldconfig -v
Compile LAME
cd /usr/local/src/lame-3.97
./configure
make
make install
./configure
make
make install
Compile libOGG
cd /usr/local/src/libogg-1.1.3
./configure
make
make install
./configure
make
make install
Compile libVorbis
cd /usr/local/src/libvorbis-1.1.2
./configure
make
make install
./configure
make
make install
Compile flvtool2
cd /usr/local/src/flvtool2_1.0.5_rc6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
Compile MPlayer
cd /usr/local/src/mplayer
./configure
make
make install
./configure
make
make install
Compile FFMPEG
cd /usr/local/src/ffmpeg
./configure --enable-libmp3lame --enable-libogg --enable-libvorbis --disable-mmx --enable-shared
echo '#define HAVE_LRINTF 1' >> config.h
make
make install
./configure --enable-libmp3lame --enable-libogg --enable-libvorbis --disable-mmx --enable-shared
echo '#define HAVE_LRINTF 1' >> config.h
make
make install
Finalize the codec setups
ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50
ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51
ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49
ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0
ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51
ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51
ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49
ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0
ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51
Few tasks before compiling FFMPEG-PHP
yum install automake
yum install autoconf
yum install libtool
yum install autoconf
yum install libtool
Compile FFMPEG-PHP
cd /usr/local/src/ffmpeg-php-0.5.0
phpize
./configure
make
make install
phpize
./configure
make
make install
Add FFMPEG-PHP as an extension of PHP
Add this line to your php.ini file (Check the correct path of php.ini)
extension=ffmpeg.so
Restart Apache to load FFMPEG-PHP
service httpd restart
Check if FFMPEG-PHP is loaded correctly
Create a file called phpinfo.php in your webroot and add the following code
<?php
phpinfo();
?>
Run this page using your browser and if you see a section on ffmpeg then everything is installed and working.
Comments (44)














