OpenCV 3.0.0在使用FFMPEG时出错

OpenCV 3.0.0 make error with FFMPEG

本文关键字:FFMPEG 出错 OpenCV      更新时间:2023-10-16

我已经使用OpenCV一段时间了。然而,我最近将我的系统更改为集群,我没有任何管理权限。问题是这样的:

在我的主文件夹中,我安装了FFMPEG(在FFMPEG网站上可用的最新稳定版本)。我将它安装在$HOME中,因此在$HOME/lib中安装了库文件。为了获得更多信息,我用以下选项编译了FFMPEG:

./configure --prefix=$HOME --enable-shared --enable-pic

然后我下载了最新的稳定版本的OpenCV 3.0.0,并使用ccmake配置它。当我尝试make -j8时,它给了我以下错误:

 Scanning dependencies of target opencv_videoio
[ 63%] [ 63%] [ 63%] [ 63%] [ 63%] [ 63%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_decoder.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_images.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_v4l.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_encoder.cpp.o
Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o
In file included from /home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg.cpp:45:0:
/home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1546:71: error: use of enum 'AVCodecID' without previous declaration
/home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1556:83: error: use of enum 'AVCodecID' without previous declaration
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

然而,没有ffmpeg支持,它工作得很好。但是,由于我的工作性质,我需要ffmpeg支持。

在试图解决这个问题,我尝试安装OpenCV 2.4.11,但它也给出了这个错误。最新的GIT版本没有给我这个错误,而是一个错误,其中一部分像这样

Linking CXX shared library ../../lib/libopencv_highgui.so /usr/bin/ld: /home/matheus/ffmpeg_build/lib/../lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used

我已将上述错误从另一个未解决的问题粘贴到网上,因此文件夹名称不同,但重新定位错误完全相同。

在尝试解决这个问题时,我搜索并发现了以下链接http://answers.opencv.org/question/12597/build-problems-for-opencv-241-with-ubuntu-1204-lts/

然而,那里的一个答案提到更改cap_ffmpeg_impl.hpp文件中的一些行。我试着这样做,但要么我不能正确地做到这一点,要么别的东西出了问题,它不工作。确切的行号和确切的变化没有提到,所以我很难改变事情和确定。

我使用Fedora 19(薛定谔猫)作为操作系统,我希望我的问题的细节是清楚的,我希望社区能给我一个好的答复。

的问候放进

我也遇到了这个问题,试图在Ubuntu 12.04上构建OpenCV 3.0.0。这个问题似乎是OpenCV的一个bug。我编辑了opencv-3.0.0/modules/video/src/cap_ffmpeg_impl.hpp,在所有地方用CV_CODEC_ID替换AVCodecID,但#define -在第1174行(可选),1546和1556 -并且构建工作。

有关更多详细信息,请参阅我关于OpenCV问题跟踪器的帖子。在我的帖子作为此提交的一部分之前,这个错误已经在OpenCV主分支上修复了。

假设你不使用FFMPEG与OpenCV,你可以禁用它被编译:

当你运行Cmake例如,当你这样做时:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local 
    -D PYTHON2_PACKAGES_PATH=~/.virtualenvs/cv/lib/python2.7/site-packages 
    -D PYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/bin 
    -D PYTHON2_INCLUDE_DIR=/usr/local/Frameworks/Python.framework/Headers 
    -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON 
    -D BUILD_EXAMPLES=ON 
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..

将此标志添加到mix -DWITH_FFMPEG=0中以不编译FFMPEG部分

此版本支持ffmpeg

conda install --channel conda-forge