Installing FFmpeg & Dependencies For FLV Conversion

June 29, 2008 – 11:57 pm

This is my original guide for installing ffmpeg and all of these dependencies. I originally wrote this guide while working for HostGator in order to save myself time installing. I posted a copy of this guide in our company notes which was later copied by one of our employees into his own blog which he failed to credit me for :-( and now it’s all over the internet. You should use this guide as it’s probably the most up to date as I still use this script on a semi-regular basis and update the links whenever new versions come out.

This guide should teach you how to install all the needed dependencies for ClipShare or other flash video conversion scripts. It’s primarily focused on RHEL or CentOS installs for the dependencies of these packages. The links in this guide are fresh as of 08/04/2008. Here is what this guide will help you install:

It assumes you already have Apache and PHP5 installed as those are required dependencies as well. There will also be a guide up for installing PHP5.2.6 from source on CentOS/RHEL soon.

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://internap.dl.sourceforge.net/sourceforge/lame/lame-398.tar.gz
tar xvzpf lame-398.tar.gz
cd lame-398
./configure --prefix=/usr
make
make install
cd ~

Now we install Libogg:

wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
tar xvzpf libogg-1.1.3.tar.gz
cd libogg-1.1.3
./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.0.tar.gz
tar xvzpf libvorbis-1.2.0.tar.gz
cd libvorbis-1.2.0
./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 & MEncoder and it will take a while unless you have a nice dual or quad core machine. Note that I’ve 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://voxel.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.3.1.tbz2
tar xvjpf ffmpeg-php-0.5.3.1.tbz2
cd ffmpeg-php-0.5.3.1
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

Let me know via comments if you find some bugs or better ways to do things!

  1. 9 Responses to “Installing FFmpeg & Dependencies For FLV Conversion”

  2. Great instructions! Had to run through it twice. Cannot locate issue I’m getting on command line with just $ffmpeg:
    sws_getContext is undefined

    Any thoughts would be appreciated as I’m under critical time constraints.

    Thanks

    By kwijybo on Nov 7, 2008

  3. Could you post the whole output you’re getting? It may be some incompatibilities with latest svn versions. I’m going to aduit the guide and make sure the svn versions currently work. I will probably just make a “package” that has a known working version of the packages soon.

    By admin on Nov 8, 2008

  4. As an update – my goal is to use this with ffmpeg-php and that ALMOST works as I’m now getting conflicting information as to whether or not the gd module is installed. I mention that in case it’s a related issue,..

    Anyway, when I run ffmpeg from the command prompt – one and only one line is printed:

    ffmpeg: symbol lookup error: ffmpeg: undefined symbol: sws_getContext

    Thanks.

    By kwijybo on Nov 9, 2008

  5. Thanks for this tutorial,

    I found that a lot of people are looking for the pre compiled binaries, so,

    Here are some of my pre compiled FFMPEG binaries to be used on shared
    hosting accounts. I use this FFMPEG versions to create JPG thumbnails
    from FLV files.

    http://www.barrydegraaff.tk/files/Li…mpeg-binaries/

    By barrydegraaff on May 20, 2009

  6. Previously, Thank for this article. I was striving for two days. If you had writen this I didn’t install ffmpeg. All for thank you.

    By sagsoz on Sep 18, 2009

  1. 4 Trackback(s)

  2. Sep 26, 2008: Installation of FFmpeg + FFmpeg-PHP +Lame + Ruby + Mplayer + Mencoder + flv2tool « Sky is the limit
  3. Dec 12, 2008: Kona’s Web » Installing ffmpeg on linux server
  4. Feb 20, 2009: Setup Red5 and FFMPEG on Ubuntu 8.04 @ Beier Cai
  5. Aug 14, 2009: Updated – Setup Red5 and FFMPEG on Ubuntu 8.0.4 @ Beier Cai

You must be logged in to post a comment.