2012-09-14 11 views
5

मैं FFMPEG लाइब्रेरीज़ के गैर-/usr/lib सेट से लिंक करने के लिए OpenCV को कॉन्फ़िगर नहीं कर सकता। के रूप मेंकस्टम FFMPEG को ओपनसीवी कॉन्फ़िगर करें और बनाएं

LD_LIBRARY_PATH=/pathto/ffmpeg-0.10.2/lib

साथ ही, मैं कॉन्फ़िगर कर दिया है pkgconfig:

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

CMake भीतर तथापि

मेरे LD_LIBRARY_PATH एक सीधा FFMPEG की स्थापित कस्टम के लिए फ़ोल्डर के लिए लिंक होता है मुझे एफएफएमपीईजी के पथ के लिए कोई सेटिंग नहीं मिल रही है - या तो बुनियादी या कस्टम में। FFMPEG से संबंधित एकमात्र सेटिंग WITH_FFMPEG प्रकार सेटिंग (चालू पर सेट) प्रतीत होती है।

मैं OpenCV निर्माण कर सकते हैं, लेकिन यह libavcodec के लिए प्रणाली पुस्तकालयों के लिए लिंक करने के लिए लगता है - यह एक संघर्ष का कारण बनता है के रूप में सिस्टम पुस्तकालयों संस्करण 0.52 और FFMPEG की मेरी स्थापित में संस्करण हैं .53 कर रहे हैं। ऐसा लगता है कि एक ही सिस्टम पुस्तकालयों के बिना किसी मशीन पर किसी ऐप को लिंक करना ओपनसीवी (विशेष रूप से libavcodec) के मेरे कस्टम इंस्टॉलेशन से लिंक नहीं होता है (इस साझाकरण फ़ोल्डर पर मैं इन पुस्तकालयों को स्थापित कर रहा हूं)।

मुझे यकीन नहीं है कि मेरी समस्या एफएफएमईजीईजी के गलत संस्करण के निर्माण और लिंक के साथ है या यदि यह इमारत के बाद मेरे पर्यावरण के साथ कुछ है (और फिर गलत ffmpeg से जुड़ा हुआ है)।

मैं लिनक्स, रेडहाट 6, ओपनसीवी 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/ 

काम करना चाहिए कुछ। कम से कम यह मेरे उबंटू पर ओपनसीवी 2.4.एक्स के लिए काम करता है।

+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 सक्षम करने के लिए है।

संबंधित मुद्दे