一、安装环境 文档日期:2015年7月8日,所下载软件的版本是该日期所在的最新版本。 是 1、系统 CENTOS7 2、安装依赖包 yum -y install gccglibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-develgettext-devel libtool mhash* perl-Digest-SHA1* yum -y install makeautomake bzip2 unzip patch subversion libjpeg-devel 3、安装git工具: (1)yum安装 yum -y install git* (2)源码安装如下 官网: http://git-scm.com/download/ 下载地址: http://codemonkey.org.uk/projects/git-snapshots/git/ 最新版本:http://codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz
cd/home/mycentos7/tools/ffmpeg wgethttp://codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz tar xJvfgit-latest.tar.xz cd git-2015-07-08 autoconf ./configure make sudo make install git --version cd .. 4、安装Yasm工具: 下载地址: http://www.tortall.net/projects/yasm/releases/ 最新版本:http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
cd/home/mycentos7/tools/ffmpeg wgethttp://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make sudo make install (或使用root安装: make install) cd ..
二、安装编解码器1、安装x.264: 官网: http://www.videolan.org/developers/x264.html 下载地址: 最新版本:ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 (1) git下载 cd/home/mycentos7/tools/ffmpeg #git clonegit://git.videolan.org/x264 #cd x264
(2)wget下载 cd/home/mycentos7/tools/ffmpeg wgetftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2 tar xvjflast_stable_x264.tar.bz2 cd x264-snapshot-20150707-2245-stable (3)编译
./configure–enable-shared –enable-pic --enable-static make sudo make install (或使用root安装: make install) cd ..
2、安装一些格式转换常用的编码库:
yum installfaac-devel lame-devel amrnb-developencore-amr-devel amrwb-devel libvorbis-devel libtheora-devel xvidcore-devel
3、安装LAME: cd/home/mycentos7/tools/ffmpeg wgethttp://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvflame-3.99.5.tar.gz cd lame-3.99.5 ./configure--enable-nasm make sudo make install (或使用root安装: make install) cd .. 4、安装libogg: 官网: 下载地址:http://downloads.xiph.org/releases/ogg/ 最新版本:http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
cd/home/mycentos7/tools/ffmpeg wgethttp://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 make sudo make install (或使用root安装: make install) cd .. 5、安装libvorbis: 官网: http://www.vorbis.com/ 下载地址:http://downloads.xiph.org/releases/vorbis/ http://www.xiph.org/downloads/
最新版本:http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
cd/home/mycentos7/tools/ffmpeg wgethttp://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz tar xzvf libvorbis-1.3.5.tar.gz cd libvorbis-1.3.5 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
6、安装libvpx:
cd/home/mycentos7/tools/ffmpeg git clonehttps://github.com/webmproject/libvpx cd libvpx ./configure --enable-shared make sudo makeinstall (或使用root安装: make install) cd ..
7、安装FAAD2: 官网: http://www.audiocoding.com/
cd/home/mycentos7/tools/ffmpeg wget http://downloads.sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz tar zxvf faad2-2.7.tar.gz cd faad2-2.7 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
8、安装FAAC: 官网: http://www.audiocoding.com/
cd/home/mycentos7/tools/ffmpeg wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz tar zxvf faac-1.28.tar.gz cd faac-1.28
直接编译会报错,处理方式有以下三种,任意一种都可以: (1)sed-i 's@^char \*strcasestr@//char *strcasestr@' ./common/mp4v2/mpeg4ip.h (2) sed -i '124 s@extern "C"@extern"C++"@' ./common/mp4v2/mpeg4ip.h sed -i '126 s@^char \*strcasestr@const char *strcasestr@'./common/mp4v2/mpeg4ip.h (3)参见附录二的处理
./configure make sudo makeinstall (或使用root安装: make install) cd ..
9、安装Xvid:
官网: https://www.xvid.com/ 下载地址: https://www.xvid.com/download/ 最新版本:http://downloads.xvid.org/downloads/xvidcore-1.3.4.tar.gz
cd/home/mycentos7/tools/ffmpeg wget http://downloads.xvid.org/downloads/xvidcore-1.3.4.tar.gz tar zxvf xvidcore-1.3.4.tar.gz cdxvidcore/build/generic ./configure make sudo makeinstall (或使用root安装: make install) cd ..
10、安装frei0r:
官网: http://frei0r.dyne.org/ 下载地址: https://www.dyne.org/software/frei0r/ 最新版本:https://files.dyne.org/frei0r/snapshots/frei0r-snapshot-27-01-15.tar.gz
(1)源代码下载 cd/home/mycentos7/tools/ffmpeg/ git clonegit://code.dyne.org/frei0r.git cd frei0r (2)压缩包下载 下载frei0r-1.4.0.tar.gz tar zxvf frei0r-1.4.0.tar.gz cd frei0r-1.4.0 (3)编译 autogen.sh ./configure --enable-shared make sudo makeinstall (或使用root安装: make install) cd .. (4)编译ffmpeg时的编译选项 --enable-frei0r (5)ffmpeg frei0r filter 参数及效果 ffmpeg中frei0r滤镜基本使用方法 ffplay -vffrei0r=filter_name=filter_params:filter_params:... 在Windows系统ffmpeg使用frei0r时需要加环境变量 FREI0R_PATH=frei0r安装目录 单击图片复制滤镜命令 ffmpeg使用frei0r参考http://ffmpeg.org/ffmpeg-filters.html#frei0r-1 frei0r的详细参数说明参考http://www.mltframework.org/bin/view/MLT/PluginsFilters 11、安装amr: (1)编译安装 cd/home/mycentos7/tools/ffmpeg/ wgethttp://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz tar zxvfopencore-amr-0.1.3.tar.gz cd opencore-amr-0.1.3 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
编译ffmpeg时的编译选项 --enable-libopencore-amrnb (2)使用 使用方法 ffmpeg -i 1.mp3 -ac1 -ar 8000 1.amr #MP3转换AMR ffmpeg -i 1.amr1.mp3 #AMR转换MP3
A. 转换amr到mp3: ffmpeg -ishenhuxi.amr amr2mp3.mp3
B. 转换amr到wav: ffmpeg -acodeclibamr_nb -i shenhuxi.amr amr2wav.wav
C. 转换mp3到wav: ffmpeg -i DING.mp3-f wav test.wav
D. 转换wav到amr: ffmpeg -i test.wav-acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 wav2amr.amr
E. 转换wav到mp3: ffmpeg -i test.wav-f mp3 -acodec libmp3lame -y wav2mp3.mp3
12、安装amrnb: (1)源代码下载 cd /home/mycentos7/tools/ffmpeg/ wgethttp://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2 tar xjvf amrnb-11.0.0.0.tar.bz2 (2)压缩包下载 下载amrnb-11.0.0.0.tar.gz tar zxvf amrnb-11.0.0.0.tar.gz (3)编译 cd amrnb-11.0.0.0 ./configure make sudo makeinstall (或使用root安装: make install) cd .. 13、安装amrwb: (1)源代码下载 cd/home/mycentos7/tools/ffmpeg/
wgethttp://www.penguin.cz/~utx/ftp/amr/
tar xjvf (2)压缩包下载
下载
tar zxvf (3)编译 cd amrwb-11.0.0.0 ./configure make sudo makeinstall (或使用root安装: make install) cd .. 14、安装OpenCV: (0)系统安装 yum install opencv (1)介绍 OpenCV是Intel公司开发的图像处理和计算机视觉函数库 其中OpenCV最新的源代码: http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/src/ 源代码及文档下载:SOURCEFORGE.NET: http://sourceforge.net/projects/opencvlibrary/ INTEL的OPENCV主页:http://www.intel.com/research/mrl/research/opencv/ (2)预安装依赖组件 yum install bzip2-develcmake* gcc gcc-c++ gimp-devel gimp-devel-tools gimp-help-browser gtk+-devel gtk*gstreamer-devel libtiff-devel libjpeg-devel libpng-devel libavc1394-devellibraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtoolnasm ncurses-devel openssl-devel sqlite-devel zlib-devel (3)源代码下载 cd/home/mycentos7/tools/ffmpeg/ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/3.0.0/opencv-3.0.0.zip unzip -d . opencv-3.0.0.zip (4)压缩包下载 cd/home/mycentos7/tools/ffmpeg/ 下载opencv-3.0.0.tar.gz tar zxvf opencv-3.0.0.tar.gz (5)编译安装 cd opencv-3.0.0 mkdir build; cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -DBUILD_DOCS=ON -D BUILD_EXAMPLES=ON -D BUILD_TESTS=ON -D INSTALL_C_EXAMPLES=ON-D INSTALL_TESTS=ON -D WITH_FFMPEG=OFF -D WITH_GSTREAMER=ON -DWITH_JPEG=ON -D WITH_PNG=ON -D WITH_GTK=OFF -D WITH_V4L=ON ../ make sudo makeinstall (或使用root安装: make install) cd .. (6)开发环境配置(A或B) A、创建连接 ln -s /usr/local/lib/pkgconfig/opencv.pc /usr/lib64/pkgconfig/opencv.pc B、设置环境变量 exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig: PKG_CONFIG_PATH C、不做上面的错误,在编译ffmpeg使用opencv是会报如下错误: Packageopencv was not found in the pkg-config search path. Perhapsyou should add the directory containing `opencv.pc' tothe PKG_CONFIG_PATH environment variable Nopackage 'opencv' found ERROR:libopencv not found
(7)另外一种安装方法 cd/home/mycentos7/tools/ffmpeg/ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/3.0.0/opencv-3.0.0.zip unzip -d . opencv-3.0.0.zip cd opencv-3.0.0 mkdir build; cd build; ccmake ../ A、执行完上述命令后,会出现ccmake的界面,然后在键盘上按下c键,然后ccmake就会去查看你的编译环境的。 B、等cmake检查完后,根据出现的内容,选择合适的选项,比如如果你没有cuda或者opencl的话,可以将与这些信息有关的项都设置成off。 C、建议以下项保持为ON BUILD_DOCS BUILD_EXAMPLES INSTALL_C_EXAMPLES WITH_FFMPEG WITH_GSTREAMER WITH_JPEG WITH_GTK WITH_PNG WITH_V4L D、设置完成后,再次敲击键盘上的c键,待配置完成。(4) 配置检测完成后,敲击键盘上的g键,待cmake退出后。 E、执行下面的命令以完成编译: make 这个编译过程可能需要一段时间,耐心等待一会,你可以用这段时间看看书,喝点水。 F、待编译完成后,最后一个命令: sudo makeinstall (或使用root安装: make install) cd .. (8)编译遇到的问题 A、编译swscale是没有使用fPIC显示如下错误: /bin/ld:/usr/local/include/../lib/libswscale.a(swscale.o): relocation R_X86_64_PC32against symbol `ff_M24A' can notbe used when making a shared object; recompile with-fPIC 解决方法:编译ffmpeg是使用PIC选项 CFLAGS="-O3-fPIC" ./configure --enable-gpl --enable-version3 --enable-shared--enable-nonfree --enable-postproc --enable-x11grab --enable-gray--enable-small --enable-bzlib --enable-frei0r --enable-libopencore-amrnb--enable-libopencore-amrwb make make install B、如果已经安装ffmpeg,将会报如下错误:出现avformat_free_context和AVCodecID未声明: cap_ffmpeg.cpp:45:0: cap_ffmpeg_impl.hpp:在成员函数‘voidCvVideoWriter_FFMPEG::close()’中: cap_ffmpeg_impl.hpp:1532:29:错误:‘avformat_free_context’在此作用域中尚未声明 avformat_free_context(oc); ^ cap_ffmpeg.cpp:45:0: cap_ffmpeg_impl.hpp:在全局域: cap_ffmpeg_impl.hpp:1546:71:错误:使用枚举‘AVCodecID’前没有给出声明 static inline bool cv_ff_codec_tag_match(constAVCodecTag *tags, enum AVCodecID id, unsigned int tag) ^ cap_ffmpeg_impl.hpp:1556:83:错误:使用枚举‘AVCodecID’前没有给出声明 static inline boolcv_ff_codec_tag_list_match(const AVCodecTag *const *tags, enum AVCodecID id,unsigned int tag) 解决方法:将WITH_FFMPEG=OFF ./configure--enable-shared
C、如果已经安装GTK,将会报如下错误:出现未定义的引用: Linking CXXexecutable ../../bin/opencv_test_core /lib64/libgtk-3.so.0:对‘g_type_add_instance_private’未定义的引用 /lib64/libgtk-3.so.0:对‘g_type_class_adjust_private_offset’未定义的引用 /lib64/libgtk-3.so.0:对‘g_variant_parse_error_quark’未定义的引用 collect2: 错误:ld 返回 1 make[2]: ***[bin/opencv_test_core] 错误1 make[1]: ***[modules/core/CMakeFiles/opencv_test_core.dir/all] 错误 2 make: *** [all] 错误 2 解决方法:将WITH_GTK=OFF
15、安装libdc1394: yum installlibdc1394
16、安装ORC(libdirac依赖于该包): 官网:http://code.entropywave.com/projects/orc/ (1)安装方法 cd/home/mycentos7/tools/ffmpeg/ wget http://code.entropywave.com/download/orc/orc-0.4.18.tar.gz tar zxvf orc-0.4.18.tar.gz cd orc-0.4.18 ./configure make sudo makeinstall (或使用root安装: make install) cd .. (2)设置 ln -s /usr/local/lib/pkgconfig/orc-0.4.pc /usr/lib64/pkgconfig/orc-0.4.pc
否则在dirac编译时报错误: checking for ORC...no configure: error:orc-0.4 >= 0.4.16 is required
17、安装dirac编码:
yum install dirac*
官网: http://diracvideo.org/ cd/home/mycentos7/tools/ffmpeg/ wget http://diracvideo.org/download/schroedinger/schroedinger-1.0.11.tar.gz tar zvxfschroedinger-1.0.11.tar.gz cd schroedinger-1.0.11 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
ln -s /usr/local/lib/pkgconfig/schroedinger-1.0.pc /usr/lib64/pkgconfig/schroedinger-1.0.pc
18、安装libdirac: 官网: http://sourceforge.net/projects/dirac
yum install scons ln -s /usr/local/lib/pkgconfig/libavcodec.pc /usr/lib64/pkgconfig/libavcodec.pc
cd/home/mycentos7/tools/ffmpeg/ wget http://downloads.sourceforge.net/project/dirac/dirac-codec/Dirac-1.0.2/dirac-1.0.2.tar.gz
tar zvxf dirac-1.0.2.tar.gz cd dirac-1.0.2 ./configure
sed -i '127 s@unsigned charnext_parse_code;@//unsigned char next_parse_code;@'./libdirac_byteio/parseunit_byteio.cpp sed -i '129 s@next_parse_code =InputUnByte();@InputUnByte();@' ./libdirac_byteio/parseunit_byteio.cpp
sed -i '131 s@intnext_unit_next_parse_offset;@//int next_unit_next_parse_offset;@'./libdirac_byteio/parseunit_byteio.cpp sed -i '132 s@next_unit_next_parse_offset= ReadUintLit(PU_NEXT_PARSE_OFFSET_SIZE);@ReadUintLit(PU_NEXT_PARSE_OFFSET_SIZE);@'./libdirac_byteio/parseunit_byteio.cpp sed -i '162,337,503 s@intstep,max; @int step,max; max=max;@' ./libdirac_common/mv_codec.cpp make sudo make install (或使用root安装: make install) cd ..
如果不使用sed修改代码,将出现如下错误: parseunit_byteio.cpp:在成员函数‘booldirac::ParseUnitByteIO::IsValid()’中: parseunit_byteio.cpp:127:23:错误:variable ‘next_parse_code’ set but not used[-Werror=unused-but-set-variable] unsigned char next_parse_code; ^ parseunit_byteio.cpp:131:13:错误:variable ‘next_unit_next_parse_offset’ set but notused [-Werror=unused-but-set-variable] int next_unit_next_parse_offset; ^ cc1plus: somewarnings being treated as errors make[1]: ***[libdirac_byteio_la-parseunit_byteio.lo] 错误
如果不使用sed修改代码,将出现如下错误:
_comp.o mot_comp.cpp: 在成员函数‘virtual voiddirac::MotionCompensator_EighthPixel::BlockPixelPred(dirac::TwoDArray<shortint>&, const ImageCoords&, const ImageCoords&, constdirac::PicArray&, const MVector&)’中: mot_comp.cpp:1119:53:错误:narrowing conversion of‘((4 - ((int)rmdr.dirac::MotionVector<int>::x)) *(4 - ((int)rmdr.dirac::MotionVector<int>::y)))’from ‘int’ to ‘const ValueType {aka const short int}’inside { } is ill-formed in C++11 [-Werror=narrowing] const ValueType linear_wts[4] = { (4 - rmdr.x) * (4 - rmdr.y), //tl ^ mot_comp.cpp:1120:44:错误:narrowing conversion of‘(((int)rmdr.dirac::MotionVector<int>::x) * (4 -((int)rmdr.dirac::MotionVector<int>::y)))’ from ‘int’ to ‘constValueType {aka const short int}’ inside { } isill-formed in C++11 [-Werror=narrowing] rmdr.x *(4 - rmdr.y), //tr ^ mot_comp.cpp:1121:50:错误:narrowing conversion of‘((4 - ((int)rmdr.dirac::MotionVector<int>::x)) *((int)rmdr.dirac::MotionVector<int>::y))’ from ‘int’ to ‘constValueType {aka const short int}’ inside { } isill-formed in C++11 [-Werror=narrowing] (4 - rmdr.x) *rmdr.y, //bl ^ mot_comp.cpp:1122:44:错误:narrowing conversion of‘(((int)rmdr.dirac::MotionVector<int>::x) *((int)rmdr.dirac::MotionVector<int>::y))’ from ‘int’ to ‘constValueType {aka const short int}’ inside { } isill-formed in C++11 [-Werror=narrowing] rmdr.x *rmdr.y }; //br ^ cc1plus: allwarnings being treated as errors make[1]: ***[libdirac_common_la-mot_comp.lo] 错误 1
19、安装bzip2: 官网: http://bzip.org/downloads.html 下载地址: http://bzip.org/downloads.html
cd/home/mycentos7/tools/ffmpeg/ wget http://bzip.org/1.0.6/bzip2-1.0.6.tar.gz tar zxvf bzip2-1.0.6.tar.gz cd bzip2-1.0.6 sed -i '24 s@-Wall@-Wall-fPIC@' ./Makefile make sudo makeinstall (或使用root安装: make install) cd ..
20、安装zlib: 官网:http://zlib.net/ 下载地址:http://zlib.net/zlib-1.2.8.tar.gz 最新版本:http://zlib.net/zlib-1.2.8.tar.gz
cd/home/mycentos7/tools/ffmpeg/ wget http://zlib.net/zlib-1.2.8.tar.gz tar zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
21、安装xavs: 最新版本: http://sourceforge.net/code-snapshots/svn/x/xa/xavs/code/xavs-code-55-trunk.zip
cd/home/mycentos7/tools/ffmpeg/ wget wgethttp://sourceforge.net/code-snapshots/svn/x/xa/xavs/code/xavs-code-55-trunk.zip unzip xavs-code-55-trunk.zip cd xavs-code-55-trunk ./configure ./configure --extra-cflags=-fPIC make sudo makeinstall (或使用root安装: make install) cd ..
22、安装libspeex: 官网:http://www.speex.org 下载地址: 最新版本:http://downloads.xiph.org/releases/speex/speex-1.2rc2.tar.gz
cd/home/mycentos7/tools/ffmpeg/ wget http://downloads.xiph.org/releases/speex/speex-1.2rc2.tar.gz tar zxvf speex-1.2rc2.tar.gz cd speex-1.2rc2 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
ln -s /usr/local/lib/pkgconfig/speex.pc /usr/lib64/pkgconfig/speex.pc 23、安装librtmp: 官网: http://rtmpdump.mplayerhq.hu
cd/home/mycentos7/tools/ffmpeg/ git clonegit://git.ffmpeg.org/rtmpdump mv rtmpdump rtmpdump-2.4 cd rtmpdump-2.4 make sudo makeinstall (或使用root安装: make install) cd ..
ln -s /usr/local/lib/pkgconfig/librtmp.pc /usr/lib64/pkgconfig/librtmp.pc
24、安装libopenjpeg:
官网: http://www.openjpeg.org/ 下载地址: https://github.com/uclouvain/openjpeg/releases/latest 最新版本:https://github.com/uclouvain/openjpeg/archive/version.2.1.tar.gz 使用1.5.3版本 cd/home/mycentos7/tools/ffmpeg/ wgethttps://github.com/uclouvain/openjpeg/archive/version.1.5.2.zip mv version.1.5.2.zipopenjpeg-version.1.5.2.zip unzip openjpeg-version.1.5.2.zip cd openjpeg-version.1.5.2 cmake . make sudo makeinstall (或使用root安装: make install) cd ..
ln -s /usr/local/lib/pkgconfig/libopenjpeg1.pc/usr/lib64/pkgconfig/libopenjpeg1.pc cp /usr/local/include/openjpeg-1.5/openjpeg.h/usr/local/include/
25、安装libnut:
cd/home/mycentos7/tools/ffmpeg/ svn checkoutsvn://svn.mplayerhq.hu/nut/src/trunk libnut cd libnut sed -i '6s@-Wall@-Wall -fPIC@' ./config.mak make sudo makeinstall (或使用root安装: make install) cd ..
26、安装libgsm:
yum install gsm*
下面的安装有问题,仅供参考
官网: http://libgsm.sourcearchive.com/ 下载地址: http://libgsm.sourcearchive.com/downloads/1.0.13-4/ 最新版本: http://libgsm.sourcearchive.com/downloads/1.0.13-4/libgsm_1.0.13.orig.tar.gz
cd /home/mycentos7/tools/ffmpeg/ wget http://libgsm.sourcearchive.com/downloads/1.0.13-4/libgsm_1.0.13.orig.tar.gz tar zxvf libgsm_1.0.13.orig.tar.gz cd gsm-1.0-pl13 ./configure make sudo makeinstall (或使用root安装: make install) cd ..
cp inc/gsm.h /usr/local/include/ cp lib/libgsm.a /usr/local/lib/
三、ffmpeg下载安装1、让动态链接库被系统共享: 修改/etc/ld.so.conf如下: includeld.so.conf.d/*.conf /lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64 /opt/ffmpeg/lib 保存后执行 ldconfig
2、下载FFmpeg: 官网: http://ffmpeg.org 下载地址: http://ffmpeg.org/download.html 最新版本:http://ffmpeg.org/releases/ffmpeg-2.7.1.tar.bz2
cd/home/mycentos7/tools/ffmpeg
(1) git下载 git clonegit://source.ffmpeg.org/ffmpeg
(2)wget下载 wget http://ffmpeg.org/releases/ffmpeg-2.7.1.tar.bz2
(3)svn下载
svn checkoutsvn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
3、编译:
tar jxvf ffmpeg-2.7.1.tar.bz2 cd ffmpeg-2.7.1 sed -i '29s@#include@//#include@' ./libavfilter/vf_libopencv.c
./configure--enable-gpl --enable-version3 --enable-shared --enable-nonfree--enable-postproc --enable-x11grab --enable-gray --enable-small --enable-bzlib--enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb--enable-libopencv --enable-libdc1394 --enable-zlib --enable-libxvid--enable-libxavs --enable-libx264 --enable-libvpx --enable-libvorbis--enable-libtheora --enable-libspeex --enable-libschroedinger --enable-librtmp--enable-libopenjpeg --enable-libnut --enable-libmp3lame --enable-libgsm--enable-libfaac --enable-libdirac --enable-libdc1394 --enable-libopencv--enable-libopencore-amrwb --enable-libopencore-amrnb --enable-frei0r--enable-bzlib
make sudo makeinstall (或使用root安装: make install) cd ..
4、帮助: ./configure --help Usage: configure[options] Options: [defaultsin brackets after descriptions]
Standard options: --help print this message --logfile=FILE log tests and output to FILE[config.log] --disable-logging do not log configure debug information --prefix=PREFIX install in PREFIX [] --bindir=DIR install binaries in DIR[PREFIX/bin] --datadir=DIR install data files in DIR[PREFIX/share/ffmpeg] --libdir=DIR install libs in DIR [PREFIX/lib] --shlibdir=DIR install shared libs in DIR[PREFIX/lib] --incdir=DIR install includes in DIR[PREFIX/include] --mandir=DIR install man page in DIR[PREFIX/share/man]
Configurationoptions: --disable-static do not build static libraries [no] --enable-shared build shared libraries [no] --enable-gpl allow use of GPL code, theresulting libs and binaries will beunder GPL [no] --enable-version3 upgrade (L)GPL to version 3 [no] --enable-nonfree allow use of nonfree code, theresulting libs and binaries will beunredistributable [no] --disable-doc do not build documentation --disable-ffmpeg disable ffmpeg build --disable-ffplay disable ffplay build --disable-ffprobe disable ffprobe build --disable-ffserver disable ffserver build --disable-avdevice disable libavdevice build --disable-avcodec disable libavcodec build --disable-avcore disable libavcore build --disable-avformat disable libavformat build --disable-swscale disable libswscale build --enable-postproc enable GPLed postprocessing support[no] --disable-avfilter disable video filter support [no] --disable-pthreads disable pthreads [auto] --enable-w32threads use Win32 threads [no] --enable-x11grab enable X11 grabbing [no] --disable-network disable network support [no] --disable-mpegaudio-hp faster (but less accurate) MPEG audiodecoding [no] --enable-gray enable full grayscale support(slower color) --disable-swscale-alpha disable alpha channel support in swscale --disable-fastdiv disable table-based division --enable-small optimize for size instead of speed --disable-aandct disable AAN DCT code --disable-dct disable DCT code --disable-fft disable FFT code --disable-golomb disable Golomb code --disable-huffman disable Huffman code --disable-lpc disable LPC code --disable-mdct disable MDCT code --disable-rdft disable RDFT code --disable-vaapi disable VAAPI code --disable-vdpau disable VDPAU code --disable-dxva2 disable DXVA2 code --enable-runtime-cpudetect detect cpucapabilities at runtime (bigger binary) --enable-hardcoded-tables use hardcodedtables instead of runtime generation --enable-memalign-hack emulate memalign, interferes with memorydebuggers --disable-everything disable all components listed below --disable-encoder=NAME disable encoder NAME --enable-encoder=NAME enable encoder NAME --disable-encoders disable all encoders --disable-decoder=NAME disable decoder NAME --enable-decoder=NAME enable decoder NAME --disable-decoders disable all decoders --disable-hwaccel=NAME disable hwaccel NAME --enable-hwaccel=NAME enable hwaccel NAME --disable-hwaccels disable all hwaccels --disable-muxer=NAME disable muxer NAME --enable-muxer=NAME enable muxer NAME --disable-muxers disable all muxers --disable-demuxer=NAME disable demuxer NAME --enable-demuxer=NAME enable demuxer NAME --disable-demuxers disable all demuxers --enable-parser=NAME enable parser NAME --disable-parser=NAME disable parser NAME --disable-parsers disable all parsers --enable-bsf=NAME enable bitstream filter NAME --disable-bsf=NAME disable bitstream filter NAME --disable-bsfs disable all bitstream filters --enable-protocol=NAME enable protocol NAME --disable-protocol=NAME disable protocol NAME --disable-protocols disable all protocols --disable-indev=NAME disable input device NAME --disable-outdev=NAME disable output device NAME --disable-indevs disable input devices --disable-outdevs disable output devices --disable-devices disable all devices --enable-filter=NAME enable filter NAME --disable-filter=NAME disable filter NAME --disable-filters disable all filters --list-decoders show all available decoders --list-encoders show all available encoders --list-hwaccels show all available hardwareaccelerators --list-muxers show all available muxers --list-demuxers show all available demuxers --list-parsers show all available parsers --list-protocols show all available protocols --list-bsfs show all available bitstreamfilters --list-indevs show all available input devices --list-outdevs show all available output devices --list-filters show all available filters
External librarysupport: --enable-avisynth enable reading of AVISynth script files[no] ERROR: vfw32 not found --enable-bzlib enable bzlib [autodetect] --enable-frei0r enable frei0r video filtering --enable-libopencore-amrnb enable AMR-NBde/encoding via libopencore-amrnb [no] --enable-libopencore-amrwb enable AMR-WBdecoding via libopencore-amrwb [no] --enable-libopencv enable video filtering via libopencv[no] --enable-libdc1394 enable IIDC-1394 grabbing usinglibdc1394 and libraw1394 [no] --enable-libdirac enable Dirac support via libdirac [no] --enable-libfaac enable FAAC support via libfaac [no] --enable-libgsm enable GSM support via libgsm [no] --enable-libmp3lame enable MP3 encoding via libmp3lame [no] --enable-libnut enable NUT (de)muxing via libnut, native (de)muxer exists [no] --enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG[no] --enable-librtmp enable RTMP[E] support via librtmp[no] --enable-libschroedinger enable Dirac supportvia libschroedinger [no] --enable-libspeex enable Speex decoding via libspeex [no] --enable-libtheora enable Theora encoding via libtheora[no] --enable-libvorbis enable Vorbis encoding via libvorbis, nativeimplementation exists [no] --enable-libvpx enable VP8 support via libvpx [no] --enable-libx264 enable H.264 encoding via x264 [no] --enable-libxavs enable AVS encoding via xavs [no] --enable-libxvid enable Xvid encoding via xvidcore, native MPEG-4/Xvidencoder exists [no] --enable-mlib enableSun medialib [no] --enable-zlib enable zlib [autodetect]
Advanced options(experts only): --source-path=PATH path to source code [/home/mycentos7/tools/ffmpeg/ffmpeg] --cross-prefix=PREFIX use PREFIX for compilation tools [] --enable-cross-compile assume a cross-compiler is used --sysroot=PATH root of cross-build tree --sysinclude=PATH location of cross-build system headers --target-os=OS compiler targets OS [] --target-exec=CMD command to run executables on target --target-path=DIR path to view of build directory ontarget --nm=NM use nm tool --ar=AR use archive tool AR [ar] --as=AS use assembler AS [] --cc=CC use C compiler CC [gcc] --ld=LD use linker LD --host-cc=HOSTCC use host C compiler HOSTCC --host-cflags=HCFLAGS use HCFLAGS when compiling for host --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host --host-libs=HLIBS use libs HLIBS when linking for host --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [] --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS[] --extra-libs=ELIBS add ELIBS [] --extra-version=STRING version string suffix [] --build-suffix=SUFFIX library name suffix [] --arch=ARCH select architecture [] --cpu=CPU select the minimum required CPU(affects instructionselection, may crash on older CPUs) --disable-asm disable all assembler optimizations --disable-altivec disable AltiVec optimizations --disable-amd3dnow disable 3DNow! optimizations --disable-amd3dnowext disable 3DNow! extended optimizations --disable-mmx disable MMX optimizations --disable-mmx2 disable MMX2 optimizations --disable-sse disable SSE optimizations --disable-ssse3 disable SSSE3 optimizations --disable-armv5te disable armv5te optimizations --disable-armv6 disable armv6 optimizations --disable-armv6t2 disable armv6t2 optimizations --disable-armvfp disable ARM VFP optimizations --disable-iwmmxt disable iwmmxt optimizations --disable-mmi disable MMI optimizations --disable-neon disable neon optimizations --disable-vis disable VISoptimizations --disable-yasm disable use of yasm assembler --enable-pic build position-independent code --malloc-prefix=PFX prefix malloc and related names with PFX --enable-sram allow use of on-chip SRAM --disable-symver disable symbol versioning
Developer options(useful when working on FFmpeg itself): --disable-debug disable debugging symbols --enable-debug=LEVEL set the debug level [] --disable-optimizations disable compiler optimizations --enable-extra-warnings enable more compiler warnings --disable-stripping disable stripping of executables andshared libraries --samples=PATH location of test samples for FATE
NOTE: Object filesare built at the place where configure is launched.
5、官方ffmpeg第三方编码版本:
git: g379ddc6 built on 20150726 build:ffmpeg-git-32bit-static.tar.xz build:ffmpeg-git-64bit-static.tar.xz
release: 2.7.2 build:ffmpeg-release-32bit-static.tar.xz build:ffmpeg-release-64bit-static.tar.xz
gcc: 4.9.3 yasm: 1.3.0
libass: 0.12.3 libvpx: 1.4.0-865-g55c6a74 libx264: 0.146.109 121396c libx265: 1.7+373-db59e6d9b85b libxvid: 1.3.4-1 libwebp: 0.4.3 libgnutls: 3.3.15 libtheora: 1.1.1 libvidstab: 1.10 libfreetype: 2.5.2-4 libopenjpeg: 1.5.2
libsoxr: 0.1.1 libopus: 1.1-2 libspeex: 1.2 libvorbis: 1.3.4-2 libmp3lame: 3.99.5 libvo-aacenc: 0.1.3-1 libvo-amrwbenc: 0.1.3-1 libopencore-amrnb: 0.1.3-2.1 libopencore-amrwb: 0.1.3-2.1
6、其他第三方编码: (1) freetype 官网: http://www.freetype.org 下载: http://sourceforge.net/projects/freetype/files/
(2) libtheora 官网: www.theora.org 下载: http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2
(3) libiconv 官网: http://www.gnu.org/software/libiconv/ 下载: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
(4) fdk-aac 下载: http://downloads.sourceforge.net/project/opencore-amr
(5) vo-aacenc 下载: http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/
(6) vo-amrwbenc 下载: http://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc/
(7) opencore-amr 下载: http://sourceforge.net/projects/opencore-amr/files/opencore-amr/
附录一、参考1、百度经验:http://jingyan.baidu.com/article/95c9d20daaf946ec4e756191.html 2、http://www.poluoluo.com/server/201405/272967.html
附录二、编译FAAC-1.28时遇到错误:
mpeg4ip.h:126:error: new declaration ‘char* strcasestr(const char*, const char*)’
解决方法:
从123行开始修改此文件mpeg4ip.h,到129行结束。 修改前: #ifdef __cplusplus extern "C"{ #endif char*strcasestr(const char *haystack, const char *needle); #ifdef __cplusplus } #endif
修改后: #ifdef __cplusplus extern"C++" { #endif const char*strcasestr(const char *haystack, const char *needle); #ifdef __cplusplus } #endif
附录三、运行ffmpeg -formats,可能出的错误:ffmpeg: error whileloading shared libraries: libavfilter.so.0: cannot open shared object file: Nosuch file or directory 这事没有设置环境路径造成了,增加一个ffmpeg.conf配置文件:
# cd/etc/ld.so.conf.d # vi ffmpeg.conf 在文件内写上:
/usr/local/lib 然后确认生效:
# ldconfig (责任编辑:IT) |