一、安装环境
文档日期: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/amrwb-11.0.0.0.tar.bz2
tar xjvf amrwb-11.0.0.0.tar.bz2
(2)压缩包下载
下载amrwb-11.0.0.0.tar.gz
tar zxvf amrwb-11.0.0.0.tar.gz
(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
mot_comp.cpp:1119:53:错误:narrowing conversion of‘((4 - ((int)rmdr.dirac::MotionVector
const ValueType linear_wts[4] = { (4 - rmdr.x) * (4 - rmdr.y), //tl
^
mot_comp.cpp:1120:44:错误:narrowing conversion of‘(((int)rmdr.dirac::MotionVector
rmdr.x *(4 - rmdr.y), &nbs