学习opencv为什么安装ffmpeg
如果需要视频处理和摄像头方面的支持,则需要安装ffmpeg,如果只是用opencv对静态图像进行处理,则可以不安装ffmpeg。
注意:opencv 3.1 调用了 ffmpeg 低版本的接口,所以如果是 opencv 中需要识别 ffmpeg,则应安装低版本的 ffmpeg,如 ffmpeg-2.2.16.tar.bz2 版本。
1. 安装 yasm
ffmpeg编译中为了提高编译速度,使用了汇编指令,于是需要使用 yasm 这个工具。
当然,如果实在不想要这个功能,可以在下一步的配置中使用./configure –disable-yasm选项。
(1)下载
http://yasm.tortall.net/Download.html
(2)安装
[root@localhost opencv]# tar zxvf yasm-1.3.0.tar.gz
[root@localhost yasm-1.3.0]# ./configure
[root@localhost yasm-1.3.0]# make && make install
2. 下载 ffmpeg 安装包
http://ffmpeg.org/download.html#build-linux
因为通过添加yum源方式下载的rpm包版本较低,故使用 到官网自行下载最新版rpm包的方式安装。
3. 解压 ffmpeg 安装包
[root@localhost opencv]# tar -jxvf ffmpeg-3.2.4.tar.bz2
4. ffmpeg 配置必要选项
这一步根据自己需要开启或关闭某些选项,具体可以使用./configure –help查看,或者直接查看configure文件。本文使用如下简单配置。
[root@localhost opencv]# cd ffmpeg-3.2.4
[root@localhost ffmpeg-3.2.4]# ./configure --enable-shared --enable-swscale --enable-gpl --enable-nonfree --enable-pic --prefix=/usr/local/ffmpeg --enable-version3 --enable-postproc --enable-pthreads --enable-x11grab --enable-avisynth
–enable-shared 表示生成动态链接库,可以供以后编程使用,同时生成的可执行程序也依赖这些动态库。如果不加上 –enable-shared 选项则使用静态链接的方式编译,此时不会生成动态库,同时生成的ffmpeg等的可执行文件也比较大,但他们不需要动态库就可以直接运行。
–prefix 表示程序安装的目录,这里设为/usr/local/ffmpeg。
opencv会使用到libswscale,所以要在编译的时候把swscale这个库也编译出来;而libswscale是遵守gpl的,不enable gpl的话就无法编译。
5. 编译安装
编译,需要较长时间,10分钟左右:
[root@localhost ffmpeg-3.2.4]# make
安装,很快完成:
[root@localhost ffmpeg-3.2.4]# make install
6. 路径处理
[root@localhost ffmpeg-3.2.4]# cd /usr/local/ffmpeg/
[root@localhost ffmpeg]# ls
bin include lib share
安装完成后在/usr/local/ffmpeg出现三个目录:
● bin:可执行文件目录
● lib:动态链接库目录
● include:编程用到的头文件目录
(1)添加动态库路径
不管是编程还是可执行程序的执行都需要依赖lib下面的动态库,可以把里面的so文件拷贝到/usr/lib下,但