nazly.me

Weblog of Nazly Ahmed

Nazly Ahmed

Nazly Ahmed

Web Developer. PHP Addict. Wordpress Hacker. FOSS Enthusiast. (Micro)Blogger. Photo Hobbyist. Cricket Fanatic. Husband. Dad.

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 <a href="http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2" target="_blank">http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2</a>
wget <a href="http://rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz" target="_blank">http://rubyforge.org/frs/download.php/9225/flvtool2_1.0.5_rc6.tgz</a>
wget <a href="http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz" target="_blank">http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz</a>
wget <a href="http://superb-west.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.0.tbz2" target="_blank">http://superb-west.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.0.tbz2</a>
wget <a href="http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz" target="_blank">http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz</a>
wget <a href="http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz" target="_blank">http://downloads.xiph.org/releases/vorbis/libvorbis-1.1.2.tar.gz</a>

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

1
2
3
<?php
phpinfo();
?>

Run this page using your browser and if you see a section on ffmpeg then everything is installed and working.

Posted on 30th August 2007 09:31:15