2012-09-14 21 views
5

Tôi dường như không thể định cấu hình OpenCV để liên kết với bộ thư viện FFMPEG không/usr/lib.Định cấu hình và xây dựng OpenCV để cài đặt FFMPEG tùy chỉnh

LD_LIBRARY_PATH My chứa một liên kết trực tiếp đến thư mục cho các tùy chỉnh cài đặt của FFMPEG:

LD_LIBRARY_PATH=/pathto/ffmpeg-0.10.2/lib

Ngoài ra, tôi đã cấu hình pkgconfig như:

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

Trong CMake tuy nhiên Tôi không thể tìm thấy bất kỳ thiết lập cho đường dẫn đến FFMPEG - hoặc là cơ bản hoặc tùy chỉnh. Cài đặt duy nhất liên quan đến FFMPEG có vẻ là WITH_FFMPEG cài đặt loại (được đặt thành BẬT).

Tôi có thể xây dựng OpenCV nhưng dường như liên kết đến thư viện hệ thống cho libavcodec - điều này gây ra xung đột khi thư viện hệ thống là phiên bản .52 và phiên bản trong cài đặt FFMPEG của tôi là .53. Liên kết ứng dụng trên máy không có cùng thư viện hệ thống dường như KHÔNG liên kết với cài đặt tùy chỉnh OpenCV của tôi (cụ thể là libavcodec) vì điều này (tôi đang cài đặt các thư viện này trên thư mục mạng chia sẻ).

Tôi không chắc chắn nếu vấn đề của tôi là xây dựng và liên kết với phiên bản sai của FFMPEG hoặc nếu nó là một cái gì đó với môi trường của tôi sau khi xây dựng (và sau đó liên kết đến sai ffmpeg).

Tôi đang xây dựng trên Linux, Redhat 6, OpenCV 2.3.1.

Trả lời

6

Something như

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/ 

nên làm việc. Ít nhất nó hoạt động cho OpenCV 2.4.x trên Ubuntu của tôi.

+0

Điều này liên quan đến vấn đề cuối cùng của tôi (đã làm điều này trong tệp nguồn .. sau đó không tìm nguồn cung cấp tệp>.>) – enderland

+0

Tôi cần xóa tệp 'CMakeCache.txt' và sau đó nó hoạt động ... – paugier

0

Đối với OpenCV 3.x và ffmpeg 3.x, tôi phải áp dụng các bản vá sau

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}" 

Và với kịch bản sau đây để xây dựng

#!/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 

Ngoài ra, khi xây dựng ffmpeg, tôi phải bật cờ --enable-avresample.