2012-09-14 13 views
5

Parece que no puedo configurar OpenCV para vincular a un conjunto no/usr/lib de las bibliotecas FFMPEG.Configurar y compilar OpenCV para personalizar FFMPEG Instalar

Mi LD_LIBRARY_PATH contiene un enlace directo a la carpeta para la instalación personalizada de FFMPEG:

LD_LIBRARY_PATH=/pathto/ffmpeg-0.10.2/lib

pkgconfig Además, he configurado como:

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

Dentro de CMake embargo No puedo encontrar ninguna configuración para la ruta a FFMPEG, ya sea en básico o personalizado. La única configuración relacionada con FFMPEG parece ser la configuración de tipo WITH_FFMPEG (establecida en ON).

Puedo construir OpenCV pero parece que se vincula a las bibliotecas del sistema para libavcodec - esto causa un conflicto ya que las bibliotecas del sistema son la versión .52 y la versión en mi instalación de FFMPEG es .53. Vincular una aplicación en una máquina sin las mismas bibliotecas del sistema parece NO vincular a mi instalación personalizada de OpenCV (específicamente el libavcodec) debido a esto (estoy instalando estas bibliotecas en una carpeta de red compartida).

No estoy seguro de si mi problema es crear y vincular a la versión incorrecta de FFMPEG o si es algo con mi entorno después de compilar (y luego vincular con el ffmpeg incorrecto).

Estoy construyendo en Linux, Redhat 6, OpenCV 2.3.1.

Respuesta

6

Algo así como

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/ 

debería funcionar. Al menos funciona para OpenCV 2.4.x en mi Ubuntu.

+0

Esto estaba relacionado con mi problema final (que estaba haciendo esto dentro de un archivo de origen ... luego no obtenía ese archivo>.>) – enderland

+0

Necesitaba eliminar el archivo 'CMakeCache.txt' y luego funcionó ... – paugier

0

Para OpenCV 3.xy 3.x ffmpeg, tengo que aplicar el siguiente parche

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

Y con la siguiente secuencia de comandos para construir

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

Además, cuando la acumulación ffmpeg, me tiene que habilitar las banderas --enable-avresample.

Cuestiones relacionadas