2012-09-14 50 views
5

不能配置OpenCV的鏈接到一個非/ usr/lib目錄一套FFMPEG庫。配置和構造OpenCV的自定義安裝FFMPEG我似乎

我的LD_LIBRARY_PATH包含直接鏈接到文件夾中的自定義安裝的ffmpeg:

LD_LIBRARY_PATH=/pathto/ffmpeg-0.10.2/lib

此外,我已經配置了pkgconfig爲:

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

CMake的內然而我無法找到FFMPEG路徑的任何設置 - 無論是基本還是自定義。與FFMPEG相關的唯一設置是WITH_FFMPEG類型設置(設置爲ON)。

我可以構建OpenCV,但它似乎鏈接到libavcodec的系統庫 - 這會導致衝突,因爲系統庫的版本是.52,而我安裝的FFMPEG的版本是.53。鏈接一臺機器上的應用,但不相同的系統庫似乎不能鏈接到我的自定義安裝,因爲這樣的OpenCV(特別是進入libavcodec)(我安裝上的共享網絡文件夾,這些庫)的。

我或我不知道如果我的問題是與建築和鏈接到錯誤版本的ffmpeg如果是一些與我的環境建設(然後鏈接到錯誤的ffmpeg)之後。

我建立在Linux,紅帽6,OpenCV的2.3.1。

回答

6

喜歡的東西

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。

+0

這與我的最終問題有關(這是在一個源文件中執行此操作,然後沒有找到該文件>>) – enderland

+0

我需要刪除文件'CMakeCache.txt',然後它工作... – paugier

0

對於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

相關問題