Search


Tuesday, October 25, 2011

ffmpeg Installation

This article describes installation of ffmpeg, flvtool2, mplayer, mencoder, MP4Box, ffmpeg-php and many other video conversion tools on a CentOS cpanel server.


1. Enable RPM Fusion yum repository
 
The CentOS rpm packages of ffmpeg, mplayer, mencoder and MP4Box are available on RPM Fusion YUM repository. RPM Fusion repo depends on packages from EPEL repo. So enable these repositories by installing following

RPM packages:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm


rpm -Uvh http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm


Note: for following ‘yum‘ commands, use the switch  --exclude “*.i386″ on 64-bit systems so as to avoid installing both 64-bit and 32-bit packages. Of course, DO NOT use this switch on 32-bit systems :-)




2. Install ffmpeg, mplayer and mencoder
Install these packages using following yum command:

yum install ffmpeg mplayer mencoder

This will also install various dependency packages like libtheora, libvorbis, libogg, lame, opencore-amr, x264, xvidcore etc


3. Install flvtool2


This rpm package is available on RPM Fusion repo. But it also requires ruby rpms. However, it is not recommend to install ruby rpms on a cpanel server. Cpanel has its own ruby installer script. So install ruby using following cpanel script


/scripts/installruby

Flvtool2 is available as a Ruby Gems package. Use following gem command to install flvtool2:

gem install flvtool2

4. Install MP4Box


MP4Box is provided by gpac package. Install gpac and its library packages:


yum install gpac gpac-libs
5. Install ffmpeg-php


Ffmpeg-php requires ffmpeg development package. Install this package using yum:


yum install ffmpeg-devel

Now download the latest ffmpeg-php package:

wget http://downloads.sourceforge.net/ffmpeg-php/ffmpeg-php-0.6.0.tbz2
Untar this package, build and install it with following commands:

tar xjf ffmpeg-php-0.6.0.tbz2

cd ffmpeg-php-0.6.0


phpize


./configure


make


make install
Common errors:

Error 1: During ./configure step if you get an error like “ffmpeg headers not found. Make sure ffmpeg is compiled as shared libraries using the --enable-shared option”, then run following three commands and after that re-run
 
./configure:

mkdir /usr/local/include/ffmpeg/

cp -par /usr/include/ffmpeg/* /usr/local/include/ffmpeg/

find /usr/include/ffmpeg/ -name “*.h” -exec cp {} /usr/local/include/ffmpeg/ \;
Error 2: during ‘make’ step, if you get the error “error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)”,
then run following command in ffmpeg-php source directory and run ‘make’ command again:

sed -i 's/PIX_FMT_RGBA32/PIX_FMT_RGB32/g' ffmpeg_frame.c

The make install command will show PHP extensions path where ffmpeg PHP extension is installed:

root@server [~/ffmpeg-php-0.6.0]# make install

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20060613/

 
Now edit php.ini file (/usr/local/lib/php.ini) and make sure that value of extension_dir is set to PHP extension directory as given by above ‘make install’ command:

extension_dir = “/usr/local/lib/php/extensions/no-debug-non-zts-20060613″

Add following line just below extension_dir and this will enable ffmpeg PHP extension:

extension=”ffmpeg.so”

 
Restart Apache to make this change effective:

/scripts/restartsrv_httpd

You can verify the status of ffmpeg extension on a PHP info web page or from command line as given below:


root@server [~]# php -i | grep ffmpeg

ffmpeg
ffmpeg-php version => 0.6.0-svn
ffmpeg-php built on => Oct  5 2010 22:14:58
ffmpeg-php gd support  => enabled
ffmpeg libavcodec version => Lavc52.20.1
ffmpeg libavformat version => Lavf52.31.0
ffmpeg swscaler version => SwS0.7.1
ffmpeg.allow_persistent => 0 => 0
ffmpeg.show_warnings => 0 => 0
OLDPWD => /root/ffmpeg-php-0.6.0
_SERVER["OLDPWD"] => /root/ffmpeg-php-0.6.0
_ENV["OLDPWD"] => /root/ffmpeg-php-0.6.0


6. Installation paths


Following are the installation paths of tools that we installed:
ffmpeg -> /usr/bin/ffmpeg
mplayer -> /usr/bin/mplayer
mencoder -> /usr/bin/mencoder
flvtool2 -> /usr/bin/flvtool2
MP4Box -> /usr/bin/MP4Box
Thats all!

No comments:

Post a Comment