一、yum安装FFmpeg

1.    最偷懒的方式就是yum安装了,自动解决依赖。不过CentOS系统默认无FFmpeg源,企业版 Linux 附加软件包EPEL源也不包含,需要手动添加yum源配置/etc/yum.repos.d/dag.repo:

1
2
3
4
5
[dag]
name=Dag RPM Repository  for  Red Hat Enterprise Linux
baseurl=http: //apt .sw.be /redhat/el $releasever /en/ $basearch /dag
gpgcheck=0
enabled=1

2.    在线安装FFmpeg

1
yum -y  install  ffmpeg




二、编译安装FFmpeg

        yum安装FFmpeg比源码编译安装省时省力,但缺点也很明显,版本过老,为0.6.5版,最新版已为2.6.3,新旧版很多参数有所差异,旧版支持的格式也没有新版丰富。

        源码编译安装FFmpeg非常需要耐心,每添加一种需要支持的格式就需要有相应的多媒体格式开发库。文中所使用的软件版本皆为最新版。

1.    安装autoconf

1
2
3
4
5
6
7
cd  /App/src
wget http: //ftp .gnu.org /gnu/autoconf/autoconf-2 .69. tar .xz    
tar  xvf autoconf-2.69. tar .xz
cd  autoconf-2.69
. /configure
make
make  install

2.    安装automake

1
2
3
4
5
6
7
cd  /App/src
wget http: //ftp .gnu.org /gnu/automake/automake-1 .15. tar .xz  
tar  xvf automake-1.15. tar .xz
cd  automake-1.15
. /configure
make
make  install

3.    安装libtool(FAAC需要

1
2
3
4
5
6
7
cd  /App/src
wget http: //ftp .gnu.org /gnu/libtool/libtool-2 .4.6. tar .xz
tar  xvf libtool-2.4.6. tar .xz
cd  libtool-2.4.6
. /configure
make
make  install

4.    安装yasm支持汇编优化(FFmpeg需要)

1
2
3
4
5
6
7
cd  /App/src
wget http: //www .tortall.net /projects/yasm/releases/yasm-1 .3.0. tar .gz
tar  xvf yasm-1.3.0. tar .gz
cd  yasm-1.3.0
. /configure
make
make  install

5.    添加动态链接库配置

1
echo  '/usr/local/lib'  >>  /etc/ld .so.conf.d /local .conf

6.    安装MP3支持库LAME

1
2
3
4
5
6
7
cd  /App/src
wget http: //jaist .dl.sourceforge.net /project/lame/lame/3 .99 /lame-3 .99.5. tar .gz  
tar  xvf lame-3.99.5. tar .gz
cd  lame-3.99.5
. /configure
make
make  install

7.    安装AAC支持库FAAC

make时报错:mpeg4ip.h:126: 错误:对‘char* strcasestr(const char*, const char*)’的新声明

需要修改common/mp4v2/mpeg4ip.h第123行至129行内容:

1
2
3
4
5
6
7
#ifdef __cplusplus
extern  "C"  {
#endif
char  *strcasestr( const  char  *haystack,  const  char  *needle);
#ifdef __cplusplus
}
#endif

修改为:

1
2
3
4
5
6
7
#ifdef __cplusplus
extern  "C++"  {
#endif
const  char  *strcasestr( const  char  *haystack,  const  char  *needle);
#ifdef __cplusplus
}
#endif
1
2
3
4
5
6
7
8
9
cd  /App/src
wget http: //jaist .dl.sourceforge.net /project/faac/faac-src/faac-1 .28 /faac-1 .28. tar .bz2 
tar  xvf faac-1.28. tar .bz2
cd  faac-1.28
. /bootstrap
. /configure  --with-mp4v2 
#按前文修改mpeg4ip.h内容
make
make  install

8.    安装AMR支持库opencore-amr

1
2
3
4
5
6
7
cd  /App/src
wget http: //jaist .dl.sourceforge.net /project/opencore-amr/opencore-amr/opencore-amr-0 .1.3. tar .gz
tar  xvf opencore-amr-0.1.3. tar .gz
cd  opencore-amr-0.1.3
. /configure
make
make  install

9.    安装通用音乐音频编码格式支持库libvorbis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# libvorbis需要libogg,先安装libogg库
cd  /App/src
wget http: //downloads .xiph.org /releases/ogg/libogg-1 .3.2. tar .xz
tar  xvf libogg-1.3.2. tar .xz
cd  libogg-1.3.2
. /configure
make
make  install
 
cd  /App/src
wget http: //downloads .xiph.org /releases/vorbis/libvorbis-1 .3.5. tar .xz
tar  xvf libvorbis-1.3.5. tar .xz
cd  libvorbis-1.3.5
. /configure
make
make  install

10.    安装x264库支持H.264视频转码

1
2
3
4
5
6
cd  /App/src
git clone git: //git .videolan.org /x264 .git
cd  x264
. /configure  -- enable -shared
make
make  install

11.    安装Xvid库支持MPEG-4转码

1
2
3
4
5
6
7
cd  /App/src
wget http: //downloads .xvid.org /downloads/xvidcore-1 .3.3. tar .bz2
tar  xvf xvidcore-1.3.3. tar .bz2
cd  xvidcore /build/generic
. /configure
make
make  install

12.    安装Theora视频压缩支持库

1
2
3
4
5
6
7
cd  /App/src
wget http: //downloads .xiph.org /releases/theora/libtheora-1 .1.1. tar .xz
tar  xvf libtheora-1.1.1. tar .xz
cd  libtheora-1.1.1
. /configure
make
make  install

13.    安装NUT支持库

安装时64位Linux系统需要修改文件config.mak

在最后一个CFLAGS下一行增加:

CFLAGS += -fPIC

否则安装FFmpeg make时报错:

/usr/local/lib/libnut.a: could not read symbols: Bad value

1
2
3
4
5
6
cd  /App/src
svn co svn: //svn .mplayerhq.hu /nut/src/trunk  libnut
cd  libnut
. /configure
make
make  install

14.    安装VP8/VP9编解码支持库

1
2
3
4
5
6
cd  /App/src
git clone http: //git .chromium.org /webm/libvpx .git 
cd  libvpx
. /configure  -- enable -shared
make
make  install

15.    安装FFmpeg最新版

1
2
3
4
5
6
7
8
cd  /App/src
wget http: //ffmpeg .org /releases/ffmpeg-2 .6.3. tar .bz2
tar  xvf ffmpeg-2.6.3. tar .bz2
cd  ffmpeg-2.6.3
. /configure  -- enable -version3 -- enable -libvpx -- enable -libfaac -- enable -libmp3lame -- enable -libvorbis -- enable -libx264 -- enable -libxvid -- enable -gpl -- enable -postproc -- enable -nonfree -- enable -avfilter -- enable -pthreads -- enable -libnut -- enable -libtheora -- enable -libopencore-amrnb -- enable -libopencore-amrwb -- enable -shared
make
make  install
ldconfig

16.    安装segmenter

1
2
3
4
5
6
git clone https: //github .com /johnf/m3u8-segmenter
cd  m3u8-segmenter
PKG_CONFIG_PATH= /usr/local/lib/pkgconfig  . /configure
make
make  install
ln  -s  /usr/local/bin/m3u8-segmenter  /usr/local/bin/segmenter




三、    编译安装注意事项

1.    可能发现编译FFmpeg或者其他支持库时,即使相关的所有依赖也编译安装上了,仍然make报错,主要的原因还是由于依赖的库版本冲突,编译时调用的是yum安装时自动下载安装的旧版本依赖库。此时的方法就是卸掉所有yum安装的旧版本FFmpeg和相关的依赖软件包或者重新找台新的纯净的系统重新开始安装,或者使用Ubuntu Server最新版,一般Ubuntu Server最新版FFmpeg版本还是比较新的,直接执行命令 sudo apt-get install ffmpeg 会自动安装FFmpeg和相关依赖。

2.    有爱专研的或者受制于手头无多余机器的,只能老老实实得卸载旧软件,从头开始编译安装。如何去除旧版本yum安装的相关软件?我们可以借助yum deplist命令先找出所有相关依赖软件包,然后卸载除了公共软件包外的所有软件包。此方法也适用于安装其它软件时遇到类似同样的问题。

1
yum deplist ffmpeg |  grep  - v  ffmpeg |  grep  provider |  awk  '{print $2}'  sort  -u

图示:

wKiom1VfUsKAHheVAAH5IKViZcU955.jpg

从中挑出非公共软件包的软件包名卸载:

1
2
rpm -e --nodeps a52dec dirac dirac-libs faac gsm lame libtheora opencore-amr SDL x264
rpm -e --nodeps $(rpm -qa |  grep  -i ffmpeg)