How To Install FFmpeg and Dependencies For FLV Conversion

The following is NOT a paid post:

This guide was originally put together by Dmitry Dovidenko, a former employee of HostGator. Though it may seem long, it is quite easy, and thanks to Dmitry installing FFmpeg and its dependencies for FLV conversion has been made easier. The guide will teach you how to install all the needed dependencies for ClipShare or other flash video conversion scripts that you may decide to use. It is primarily focused on Red Hat Enterprise Linux (RHEL) or CentOS installs for the dependencies of these packages. The links in this guide are fresh as of October 15, 2009, as I have edited the guide to include the newer versions of the tools and codecs that you need to install.

Here is what this guide will help you to install:

* FFmpeg (http://ffmpeg.org/)
* FFmpeg-PHP (http://ffmpeg-php.sourceforge.net)
* MPlayer + MEncoder (http://www.mplayerhq.hu/design7/dload.html)
* FLV2Tool (http://inlet-media.de/flvtool2)
* Libogg (http://www.xiph.org/downloads)
* Libvorbis (http://www.xiph.org/downloads)
* LAME MP3 Encoder (http://lame.sourceforge.net)

The assumption made here is that you already have Apache and PHP5 installed as those are required dependencies as well. The installation is to be done using any SSH (Secure Shell) application that you choose, from the root of your server.

First install subversion and ruby via yum or up2date:

yum -y install subversion ruby

Now we need to install MPlayer & FFmpeg sources from SVN:

cd ~
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

Now we need some codecs:

wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
tar xvjpf essential-20071007.tar.bz2
cd essential-20071007
mkdir /usr/local/lib/codecs
mv * /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/
cd ~

Next we will install LAME MP3 encoder:

wget http://sourceforge.net/projects/lame/files/lame/3.98.2/lame-398-2.tar.gz/download
tar xvzpf lame-398-2.tar.gz
cd lame-398-2
./configure –prefix=/usr
make
make install
cd ~

Now we install Libogg:

wget http://downloads.xiph.org/releases/ogg/libogg-1.1.4.tar.gz
tar xvzpf libogg-1.1.4.tar.gz
cd libogg-1.1.4
./configure –prefix=/usr
make
make install
cd ~

We need to make sure the correct lib directories are setup in ldconfig. Edit the /etc/ld.so.conf file and add the following lines:

/usr/lib
/usr/local/lib

Now save and run the following command:

ldconfig

To install libvorbis we will run:

wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.3.tar.gz
tar xvzpf libvorbis-1.2.3.tar.gz
cd libvorbis-1.2.3
./configure –prefix=/usr
make
make install
cd ~

Now we will install FLVTool2:

wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz
tar xvzpf flvtool2-1.0.6.tgz
cd flvtool2-1.0.6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
cd ~

Next we should build MPlayer and MEncoder, a process that will take a while unless you have a powerful dual or quad core machine. Note that I have seen the SVN version of these packages break before, so you can always download the source code from their site (a stable copy) if it fails on make:

cd mplayer
./configure –prefix=/usr
make
make install
cd ~

We will now build FFmpeg:

mkdir /usr/local/src/tmp
chmod 777 /usr/local/src/tmp
export TMPDIR=/usr/local/src/tmp
cd ffmpeg
./configure –prefix=/usr –enable-libmp3lame –enable-libvorbis –disable-mmx –enable-shared
make
make install
cd ~

Symlink some libraries if needed (ignore file exists errors):

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

Now build FFmpeg-PHP:

wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2?use_mirror=voxel
tar xvjpf ffmpeg-php-0.6.0.tbz2
cd ffmpeg-php-0.6.0
phpize
./configure –prefix=/usr
make
make install
cd ~

Now you need to copy the ffmpeg.so file that was created from it’s location (from the build) to /usr/local/lib/php/extensions/. It should look something like:

cp /usr/local/lib/php/extensions/no-debug-non-zts-????????????/ffmpeg.so /usr/local/lib/php/extensions/

Modify your php.ini. Try /etc/php.ini or /usr/lib/php.ini or /usr/local/Zend/etc/php.ini as they are common locations. You can do php -i | grep -i ini to find the proper location. Change the extension_dir value as seen below and add the extension as seen below:

extension_dir = “/usr/local/lib/php/extensions/”
extension=ffmpeg.so

Now save and restart apache and test php for ffmpeg on both apache via phpinfo() and from shell:

service httpd stop
killall -9 httpd
service httpd start
php -i | grep -i ffmpeg

And that’s it! You are done. It took me about 30 minutes to do it properly. The time it will take you depends on your knowledge of SSH and the speed of your server.

Similar Posts
Software and eBooks – Download From Your Email
There are times when you visit a website and see an eBook or software that you want and try to...
“How To” Questions Answered
Have you ever been in a bind and thought how you were ever going to get out of it? Many...
How To Safely Jack Up A Car and Change a Tyre
There comes a time for just about every driver when they need to change a flat tyre. So, you stop...
0 Shares
Share
Tweet
Share
+1
Pin
Stumble