本文最后更新于:2015-05-25 13:12:00
原文:http://www.yaosansi.com/post/ffmpeg-on-centos
在CentOS编译安装ffmpeg比较麻烦,以前也搞过多次,由于博客调整,特重新记录一下,以备不时之需。
使用yum安装ffmpeg和相关软件
快速安装 ffmpeg
直接安装:
1 | yum install ffmpeg ffmpeg-devel |
若没有找到相应包,需要先加入要应的包。
将下列代码命名为 dag.repo
放在 /etc/yum.repos.d
目录 下。
1 | [dag] |
然后再执行上方的安装命令。
安装 ffmpeg-php 扩展
1 | wget /path/to/this/file/ffmpeg-php-0.5.2.1.tbz2 |
修改 php.ini 文件
安装完成后,将会在/usr/local/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so
看到php扩展文件。
打开php.ini
文件,加入下面两行
1 | [ffmpeg] |
重启WEB服务器。使用phpinfo即可看到ffmpeg相关信息。
1 | // #test.php |
php 使用方法
1 | <?php |
安装 Mplayer 和 Mencoder
1 | yum install mplayer mencoder |
常见问题
常见问题及解决方案请参考这里:http://www.mysql-apache-php.com/ffmpeg-install.htm
自行编译安装 ffmpeg
安装依赖项
1 | yum install autoconf automake gcc gcc-c++ git libtool make nasm pkgconfig zlib-devel |
安装相应软件包
可以建立目录存放软件包
1 | mkdir ~/ffmpeg_sources |
注意:以下软件包请有选择的安装,如果不需要请在./configure
时移除或关闭相关选项
安装 yasm
Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集。 x264 和 FFmpeg都使用Yasm.
1 | cd ~/ffmpeg_sources |
或1
2
3
4
5
6
7
8wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean
. ~/.bash_profile
安装 x264
H.264 编码器。http://trac.ffmpeg.org/wiki/Encode/H.2641
2
3
4
5
6
7cd ~/ffmpeg_sources
git clone --depth 1 git://git.videolan.org/x264
cd x264
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean
或1
2
3
4
5
6
7wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar jxf last_x264.tar.bz2
cd x264-snapshot-20130311-2245/
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-shared
make
make install
make distclean
需要ffmpeg
配置./configure --enable-gpl --enable-libx264
注:由于libx264的code有GPL信息,所以,支持libx264时,需要–enable-gpl,ffmpeg在license方面还是比我们国内的人更重视
安装 x265
H.265/HEVC编码器.http://trac.ffmpeg.org/wiki/Encode/H.2651
2
3
4
5
6cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
需要ffmpeg
配置./configure --enable-gpl --enable-libx265
安装 libfdk_aac
AAC音频编码器,Fraunhofer AAC library1
2
3
4
5
6
7
8cd ~/ffmpeg_sources
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --enable-shared
make
make install
make distclean
需要ffmpeg
配置--enable-libfdk_aac
,如果指定了--enable-gpl
还要配置--enable-nonfree
安装 libmp3lame
Mp3音频编码器1
2
3
4
5
6
7wget http://iweb.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar zxf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-shared --enable-nasm
make
make install
make distclean
需要ffmpeg
配置--enable-libmp3lame
安装 libopus
Opus 音频编解码器1
2
3
4
5
6
7
8cd ~/ffmpeg_sources
git clone git://git.opus-codec.org/opus.git
cd opus
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
或1
2
3
4
5
6
7wget http://downloads.xiph.org/releases/opus/opus-1.0.3.tar.gz
tar zxf opus-1.0.3.tar.gz
cd opus-1.0.3
./configure --prefix="$HOME/ffmpeg_build" --enable-shared
make
make install
make distclean
需要ffmpeg
配置--enable-libopus
安装 libogg库
libogg是Ogg流库,libtheora、libvorbis需要libogg库,speex需要它。1
2
3
4
5
6
7
8cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
tar xzvf libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
安装 libvorbis库
Vorbis音频编码器,需要libogg库。http://trac.ffmpeg.org/wiki/CompilationGuide/Centos#libogg1
2
3
4
5
6
7
8cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz
tar xzvf libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
LDFLAGS="-L$HOME/ffmeg_build/lib" CPPFLAGS="-I$HOME/ffmpeg_build/include" ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
需要ffmpeg
配置--enable-libvorbis
安装 libvpx
VP8/VP9视频编码器
1 | cd ~/ffmpeg_sources |
需要ffmpeg
配置--enable-libvpx
编译安装 ffmpeg
1 | cd ~/ffmpeg_sources |
注:
- 编译完成后
ffmpeg
,ffprobe
,ffserver
,lame
,x264
都可以使用。 - 编译安装时可以参考Windows Build:http://ffmpeg.zeranoe.com/builds/
- 如果还需要持续更新请保留
ffmpeg_sources
目录。
##其它可选软件包
安装 OpenCORE AMR
1 | wget http://iweb.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz |
需要ffmpeg
配置--enable-libopencore-amrnb
和/或 --enable-libopencore-amrwb
安装 VisualOn AAC
注:github的tag和master版均无法autoconf,用zeranoe版代替
1 | wget wget http://ffmpeg.zeranoe.com/builds/source/external_libraries/vo-aacenc-0.1.3.tar.xz |
也可1
wget http://iweb.dl.sourceforge.net/project/opencore-amr/vo-aacenc/vo-aacenc-0.1.3.tar.gz
需要ffmpeg
配置--enable-libvo-aacenc
安装 VisualOn AMR-WB
注:github的tag和master版均无法autoconf,用zeranoe版代替
1 | wget http://ffmpeg.zeranoe.com/builds/source/external_libraries/vo-amrwbenc-0.1.2.tar.xz |
需要ffmpeg
配置--enable-libvo-amrwbenc
安装 frei0r
先安装新版autoconf,这会覆盖掉系统中的旧版本哦1
2
3
4
5
6wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar zxf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure --prefix="$HOME/ffmpeg_build"
make
make install
1 | wget http://files.dyne.org/frei0r/releases/frei0r-plugins-1.4.tar.gz |
安装 gnutls
注意:/etc/ld.so.conf要加上lib64。并且不要使用yum remove gnutls gnutls-devel
首先安装nettle:1
2
3
4
5
6wget http://www.lysator.liu.se/~nisse/archive/nettle-2.5.tar.gz
tar zxf nettle-2.5.tar.gz
cd nettle-2.5
./configure --prefix="$HOME/ffmpeg_build" –enable-shared
make
make install
然后安装gnutls新版:
1 | wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.9.1.tar.xz |
安装 rtmpdump
1 | wget http://rtmpdump.mplayerhq.hu/download/rtmpdump-2.3.tgz |
安装 schroedinger
注:先安装好orc库
1 | wget http://code.entropywave.com/download/orc/orc-0.4.17.tar.gz |
1 | wget http://diracvideo.org/download/schroedinger/schroedinger-1.0.11.tar.gz |
安装 soxr
注:新版libsoxr貌似与当前ffmpeg不兼容,用旧版1
2
3
4
5
6
7
8
9
10yum install -y xz
wget http://hivelocity.dl.sourceforge.net/project/soxr/soxr-0.1.0-Source.tar.xz
xz -d soxr-0.1.0-Source.tar.xz
tar xf soxr-0.1.0-Source.tar
cd soxr-0.1.0-Source
./go
cd Release/
make
make install
/sbin/ldconfig
安装 speex
音频编码解码器。需要安装libogg库1
yum install speex-devel
或1
2
3
4
5
6wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
tar zxf speex-1.2rc1.tar.gz
cd speex-1.2rc1
./configure --prefix="$HOME/ffmpeg_build"
make
make install
ffmpeg ./configure
添加 --enable-libspeex
安装 libfreetype
字体呈现库,使用drawtext
http://ffmpeg.org/ffmpeg-filters.html#drawtext-11
yum install freetype-devel
ffmpeg ./configure
添加 --enable-libfreetype
安装 libsdl库
1 | wget http://www.libsdl.org/release/SDL-1.2.15.tar.gz |
安装 theora
Theora视频编码器,需要需要libogg,libvorbis和libsdl库1
2
3
4
5
6wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
tar zjf libtheora-1.1.1.tar.bz2
./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-examples --enable-shared --disable-sdltest --disable-vorbistest
make
make install
make distclean
ffmpeg ./configure
添加 --enable-libtheora
安装 twolame
1 | wget http://downloads.sourceforge.net/twolame/twolame-0.3.13.tar.gz |
安装 xvid
1 | wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz |
更新FFmpeg及相关组件
更新依赖项
删除旧文件,更新依赖项1
2rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,yasm,ytasm}
# yum install autoconf automake cmake gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel
更新 x264
1 | cd ~/ffmpeg_sources/x264 |
然后运行1
2
3
4./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean
更新 x265
1 | cd ~/ffmpeg_sources/x265 |
然后运行1
2
3cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
更新 libfdk_aac
1 | cd ~/ffmpeg_sources/libfdk_aac |
然后运行1
2
3
4
5
6cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
更新 libvpx
1 | cd ~/ffmpeg_sources/libvpx |
然后运行1
2
3
4
5cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples
make
make install
make clean
更新FFmpeg
1 | cd ~/ffmpeg_sources/ffmpeg |
然后运行1
2
3
4
5
6cd ffmpeg
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
make
make install
make distclean
hash -r
还原所有本文安装内容
1 | rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffserver,lame,vsyasm,x264,yasm,ytasm} |
注:如安装其它软件包需要自行删除
自动安装shell
https://gist.github.com/gboudreau/f24aed76b4cc91bfb2c1
1 | #!/bin/sh |
参考
- http://ju.outofmemory.cn/entry/25624
- http://ju.outofmemory.cn/entry/25625
- http://ffmpeg.zeranoe.com/builds/
- http://blog.csdn.net/yasi_xi/article/details/18810707
- http://www.mysql-apache-php.com/ffmpeg-install.htm
- http://ffmpeg-php.sourceforge.net/
- http://inlet-media.de/flvtool2
- http://lame.sourceforge.net/
- http://www.mplayerhq.hu/design7/dload.html
- http://flowplayer.org/
- http://www.mplayerhq.hu/DOCS/HTML/en/audio-codecs.html
- http://www.webmasterpals.com/forumdisplay.php?f=6
- http://trac.ffmpeg.org/wiki/CentosCompilationGuide#x264
- http://trac.ffmpeg.org/wiki/CentosCompilationGuide#libfdk_aac
- http://trac.ffmpeg.org/wiki/CentosCompilationGuide#libvpx
- http://trac.ffmpeg.org/wiki/CentosCompilationGuide#FFmpeg
- http://trac.ffmpeg.org/wiki/x264EncodingGuide
- http://trac.ffmpeg.org/wiki/AACEncodingGuide
- http://trac.ffmpeg.org/wiki/CompilationGuide/Centos
- https://gist.github.com/gboudreau/f24aed76b4cc91bfb2c1
- http://www.videolan.org/developers/x264.html