Nazly's BLOG

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


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


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/


Install SVN/Ruby
yum install subversion
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


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


Compile libOGG
cd /usr/local/src/libogg-1.1.3
./configure
make
make install


Compile libVorbis
cd /usr/local/src/libvorbis-1.1.2
./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


Compile MPlayer
cd /usr/local/src/mplayer
./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


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


Few tasks before compiling FFMPEG-PHP
yum install automake
yum install autoconf
yum install libtool


Compile FFMPEG-PHP
cd /usr/local/src/ffmpeg-php-0.5.0
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)