Linux中FFmpeg与OpenCV多版本安装

背景

某项目的OpenCV需要用到处理视频功能,而OpenCV中的视频功能是基于ffmpeg开发的。

版本选择

OpenCV版本:3.0
FFmpeg版本:需于OpenCV对应,在OpenCV源码目录opencv-3.0.0/3rdparty/ffmpeg/ffmpeg_version.cmake查看版本,笔者查询到的版本为

set(ALIASOF_libavcodec_VERSION 55.18.102)
set(ALIASOF_libavformat_VERSION 55.12.100)
set(ALIASOF_libavutil_VERSION 52.38.100)
set(ALIASOF_libswscale_VERSION 2.3.100)
set(ALIASOF_libavresample_VERSION 1.0.1)

去网站FFmpeg查询与自己OpenCV对应的版本型号。
笔者查询到的为:

Linux中FFmpeg与OpenCV多版本安装_第1张图片
image.png

安装

配置安装FFmpeg的相关参数

./configure --enable-shared --prefix=/your/install/path/ffmpeg-2.0.7/lib --disable-yasm

yasm是一款汇编器,由于系统未安装yasm,故此禁用。

编译并安装

make -j20 && make install

安装好之后查询ffmpeg版本

ffmpeg -version

报错解决

./ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory

原因是lib目录未加载到链接到系统库中,系统ld目录列表在/etc/ld.so.conf中。
需要创建一个文件并写入lib路径即可,执行命令:
sudo vim /etc/ld.so.conf.d/ffmpeg.conf然后添加一行内容: /your/install/path/ffmpeg-2.0.7/lib之后保存并退出,然后执行 sudo ldconfig 使配置生效,现在再次执行 ./ffmpeg -version 显示就正常了
修改OpenCV中的FFmpeg目录
由于FFmpeg安装时没有将其安装到系统的默认路径下,所以需要在OpenCV中修改其安装路径。
找到$OpenCV_DIR/cmake/OpenCVFindLibsVideo.cmake文件的221行左右并添加进ffmpeg安装目录。

find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h"
                PATHS /your/ffmpeg/install/path /usr/local /usr /opt
                PATH_SUFFIXES include
                DOC "The path to FFMPEG headers")

后记

再多安装其他版本的ffmpeg步骤同上。
安装其他软件如果需要自定义安装路径可以按照上面的思路进行修改。

你可能感兴趣的:(Linux中FFmpeg与OpenCV多版本安装)