configuration和构buildOpenCV以自定义FFMPEG安装

我似乎无法configurationOpenCV链接到FFMPEG库的非/ usr / lib集。

我的LD_LIBRARY_PATH包含一个到FFMPEG自定义安装文件夹的直接链接:

LD_LIBRARY_PATH=/pathto/ffmpeg-0.10.2/lib

另外,我已经configurationpkgconfig为:

PKG_CONFIG_PATH=/samepathto/ffmpeg-0.10.2/lib/pkgconfig/

在CMake内,但我找不到任何设置pathFFMPEG – 无论是在基本或自定义。 与FFMPEG相关的唯一设置是WITH_FFMPEGtypes设置(设置为ON)。

我可以构buildOpenCV,但它似乎链接到libavcodec的系统库 – 这会导致冲突,因为系统库的版本是.52,而我安装的FFMPEG的版本是.53。 在没有相同系统库的机器上链接应用程序似乎没有链接到我自定义安装的OpenCV(特别是libavcodec),因为这个(我正在将这些库安装到共享networking文件夹中)。

我不知道是否我的问题是build立和链接到FFMPEG的错误版本,或者如果它是build立后(然后链接到错误的ffmpeg)我的环境的东西。

我正在build立在Linux,Redhat 6,OpenCV 2.3.1上。

就像是

 export LD_LIBRARY_PATH=/ffmpeg_install_path/lib/ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/ffmpeg_install_path/lib/pkgconfig export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/ffmpeg_install_path/lib/ 

应该管用。 至少它适用于我的Ubuntu上的OpenCV 2.4.x。

对于OpenCV 3.x和ffmpeg 3.x,我必须应用以下补丁

 diff --git a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake index 13b62ac..bab9df3 100644 --- a/cmake/OpenCVFindLibsVideo.cmake +++ b/cmake/OpenCVFindLibsVideo.cmake @@ -228,6 +228,12 @@ if(WITH_FFMPEG) if(FFMPEG_libavresample_FOUND) ocv_append_build_options(FFMPEG FFMPEG_libavresample) endif() + CHECK_MODULE(libavcodec HAVE_FFMPEG) + CHECK_MODULE(libavformat HAVE_FFMPEG) + CHECK_MODULE(libavutil HAVE_FFMPEG) + CHECK_MODULE(libswscale HAVE_FFMPEG) + CHECK_MODULE(libswresample HAVE_FFMPEG) + CHECK_MODULE(libavresample HAVE_FFMPEG) if(HAVE_FFMPEG) try_compile(__VALID_FFMPEG "${OpenCV_BINARY_DIR}" 

并用下面的脚本来构建

 #!/bin/bash export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Applications/ffmpeg/lib export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$HOME/Applications/ffmpeg/lib/pkgconfig export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:$HOME/Applications/ffmpeg/lib cmake \ -D BUILD_EXAMPLES=ON \ -D BUILD_TESTS=OFF \ -D OPENCV_EXTRA_EXE_LINKER_FLAGS="-Wl,-rpath,$HOME/Applications/ffmpeg/lib" \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=$HOME/Applications/opencv \ /path/to/opencv 

另外,当生成ffmpeg时,我必须启用标志--enable-avresample