2012-09-14 9 views
5

Non riesco a configurare OpenCV per il collegamento a una libreria non/usr/lib delle librerie FFMPEG.Configura e crea OpenCV su Custom FFMPEG Installa

mio LD_LIBRARY_PATH contiene un link diretto alla cartella per l'installazione personalizzata di FFMPEG:

LD_LIBRARY_PATH=/pathto/ffmpeg-0.10.2/lib

pkgconfig Inoltre, ho configurato come:

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

Entro CMake tuttavia Non riesco a trovare alcuna impostazione per il percorso di FFMPEG - sia in base che personalizzato. L'unica impostazione relativa a FFMPEG sembra essere l'impostazione del tipo WITH_FFMPEG (impostata su ON).

Posso creare OpenCV ma sembra collegarsi alle librerie di sistema per libavcodec - questo causa un conflitto poiché le librerie di sistema sono la versione .52 e la versione nella mia installazione di FFMPEG è la .53. Il collegamento di un'app su una macchina senza le stesse librerie di sistema sembra NON collegare alla mia installazione personalizzata di OpenCV (in particolare la libreria libavcodec) a causa di ciò (sto installando queste librerie su una cartella di rete condivisa).

Non sono sicuro se il mio problema è con la creazione e il collegamento alla versione errata di FFMPEG o se è qualcosa con il mio ambiente dopo la costruzione (e quindi il collegamento al ffmpeg sbagliato).

Sto costruendo su Linux, RedHat 6, OpenCV 2.3.1.

risposta

6

Qualcosa di simile

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/ 

dovrebbe funzionare. Almeno funziona per OpenCV 2.4.x sulla mia Ubuntu.

+0

Questo era correlato al mio ultimo problema (che stava facendo questo all'interno di un file originario .. quindi non reperire quel file>.>) – enderland

+0

Ho avuto bisogno di rimuovere il file 'CMakeCache.txt' e poi ha funzionato ... – paugier

0

Per OpenCV 3.xe 3.x ffmpeg, devo applicare la seguente patch

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

E con il seguente script per costruire

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

Inoltre, quando costruire ffmpeg, ho abilitare le flag --enable-avresample.