用ffmpeg打造linux转码服务器

linux在系统资源利用上确实要比windows强很多,所以对于转码工作我们也放到linux平台上,下面就来讲下在linux配置ffmpeg来打造一个转码的环境。

首先我们需要以下的解码包,地址如下

xvidcode    http://www.xvid.org/Downloads.43.0.html#c23
yasm        http://www.tortall.net/projects/yasm/wiki/Download
amr code    http://www.penguin.cz/~utx/amr
faac        http://sourceforge.net/project/showfiles.php?group_id=704
lame        http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309
其他解码    http://www.mplayerhq.hu/MPlayer/releases/codecs/
ffmpeg      http://www.ffmpeg.org/download.html
x264        http://downloads.videolan.org/pub/videolan/x264/snapshots/

使用包如下

amrnb-7.0.0.2.tar.bz2
amrwb-7.0.0.3.tar.bz2
faac-1.28.tar.bz2
faad2-2.7.tar.bz2
lame-398-2.tar.gz
yasm-0.8.0.tar.gz
x264-snapshot-20090426-2245.tar.bz2    这个可以去上面的网站下载最新的snapshot文件
xvidcore-1.2.1.tar.gz
ffmpeg-checkout-snapshot.tar.bz2       这个可以去上面的网站下载最新的checkout文件,当然也可以使用svn获取最新的文件
其他编码的解码插件请下载all-20071007.tar.bz2包就行了

下面就来说下安装步骤,总体来说安装步骤还是很容易的,讲所有下载好的包放到当前用户根目录下的ffmpeg文件夹中

cd ~/ffmpeg/
tar jxvf amrnb-7.0.0.2.tar.bz2
cd amrnb-7.0.0.2
./configure –prefix=/usr
mv ../26104-700.zip .
make
make install

cd ~/ffmpeg/
tar jxvf amrwb-7.0.0.3.tar.bz2
cd amrwb-7.0.0.3
./configure –prefix=/usr
mv ../26204-700.zip .
make
make install

cd ~/ffmpeg/
tar jxvf faac-1.28.tar.bz2
cd faac-1.28
./bootstrap
./configure –prefix=/usr –with-mp4v2
make
make install

cd ~/ffmpeg/
tar jxvf faad2-2.7.tar.bz2
cd faad2-2.7
./bootstrap
./configure –prefix=/usr –with-drm –with-mpeg4ip
make
make install

cd ~/ffmpeg/
tar zxvf lame-398-2.tar.gz
cd lame-398-2
./configure –prefix=/usr –enable-decode-layer1 –enable-mp3x –enable-mp3rtp –enable-all-float
make
make install

cd ~/ffmpeg/
tar zxvf yasm-0.8.0.tar.gz
cd yasm-0.8.0
./configure
make
make install

cd ~/ffmpeg/
tar jxvf x264-snapshot-20090426-2245.tar.bz2
cd x264-snapshot-20090426-2245
./configure –prefix=/usr –enable-shared
make
make install

cd ~/ffmpeg/
tar zxvf xvidcore-1.2.1.tar.gz
cd xvidcore
cd build/generic/
./configure –prefix=/usr
make
make install

cd ~/ffmpeg/
tar jxvf ffmpeg-checkout-snapshot.tar.bz2
cd ffmpeg-checkout-2009-04-20
./configure –enable-gpl –enable-shared –enable-libmp3lame –enable-libvorbis –enable-libamr-nb –enable-libamr-wb –enable-libxvid –enable-libx264 –enable-libfaac –enable-libfaad –enable-libfaadbin –enable-pthreads –disable-ffserver –disable-ffplay –enable-nonfree –enable-postproc –extra-ldflags=-ldl
make
make install

mkdir -p /usr/local/lib/codes
tar jxvf all-20071007.tar.bz2
mv all-20071007 /usr/local/lib/codes/
chown root.root /usr/local/lib/codes/all-20071007/*

以上安装完毕之后,编辑/etc/ld.so.conf文件加入如下内容
/usr/local/lib
保存退出后执行ldconfig命令,然后执行ffmpeg命令就能看到如下显示了

FFmpeg version SVN-r18631, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: –enable-gpl –enable-shared –enable-libmp3lame –enable-libvorbis –enable-libamr-nb –enable-libamr-wb –enable-libxvid –enable-libx264 –enable-libfaac –enable-libfaad –enable-libfaadbin –enable-pthreads –disable-ffserver –disable-ffplay –enable-nonfree –enable-postproc –extra-ldflags=-ldl
  libavutil     50. 3. 0 / 50. 3. 0
  libavcodec    52.27. 0 / 52.27. 0
  libavformat   52.32. 0 / 52.32. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Apr 27 2009 15:23:16, gcc: 4.1.2 20071124 (Red Hat 4.1.2-42)

可能各位的显示结果会和我的不同。

以上配置完毕后,生产mp4文件的转码系统就算是搭建好了,不过这样生产出来的mp4文件是不支持渐进式下载的,所以还需要对生产出来的mp4文件进行处理,那个就是MP4Box这个软件的工作了,接下来就讲下MP4Box安装步骤

yum -y install freeglut
yum -y install freeglut-devel
wget http://downloads.sourceforge.net/gpac/gpac-0.4.5.tar.gz
wget http://downloads.sourceforge.net/gpac/gpac_extra_libs-0.4.5.tar.gz
tar zxvf gpac-0.4.5.tar.gz
tar zxvf gpac_extra_libs-0.4.5.tar.gz
cd gpac
cp -r ../gpac_extra_libs/* extra_lib/
chmod +x configure
./configure
make lib
make apps
make install
cp bin/gcc/libgpac.so /usr/lib

再安装完MP4Box之后同样要执行一次ldconfig命令,然后执行MP4Box -version命令后可以看到如下内容

# MP4Box -version
MP4Box – GPAC version 0.4.5 (build 33)
GPAC Copyright: (c) Jean Le Feuvre 2000-2005
                (c) ENST 2005-200X

这样一来所有的工作就都做完了,剩下的就是按照自己的需要写ffmpeg的转码脚本了

问题解决:

在安装MP4Box的时候可能会出现下面的问题

/usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL/usr/bin/ld: cannot find -lGLcollect2: ld returned 1 exit statusmake[1]: *** [libgpac.so] Error 1make[1]: Leaving directory `/root/gpac/src’make: *** [lib] Error 2

原因是mesa-libGL-devel这个包可能不完整,直接使用yum -y install mesa-libGL-devel命令把这个包安装一下,然后在make的时候就正常了。