背景
某项目的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对应的版本型号。
笔者查询到的为:
安装
配置安装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步骤同上。
安装其他软件如果需要自定义安装路径可以按照上面的思路进行修改。