OpenCV 3.0.0 使用 FFMPEG 时出错

2024-04-22

我使用 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/ http://answers.opencv.org/question/12597/build-problems-for-opencv-241-with-ubuntu-1204-lts/

然而,那里的答案之一提到更改 cap_ffmpeg_impl.hpp 文件中的一些行。我尝试这样做,但要么我无法正确地做到这一点,要么是其他地方出了问题并且它不起作用。没有提到确切的行号和确切的更改,因此我很难更改内容并确定。

我使用 Fedora 19 (Schrodinger Cat) 作为操作系统,我希望我的问题的细节很清楚,我希望社区能够给我一个好的答复。

问候 乌杰瓦尔


我在尝试在 Ubuntu 12.04 上构建 OpenCV 3.0.0 时也遇到了这个问题。该问题似乎是 OpenCV 中的一个错误。我编辑了 opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp,替换AVCodecID with CV_CODEC_ID在所有地方,除了#define-- 在第 1174 行(可选)、第 1546 行和第 1556 行中 -- 并且构建成功了。

更详细的可以看我的post https://github.com/Itseez/opencv/issues/5131在 OpenCV 问题跟踪器上。在我发表文章之前,该错误已在 OpenCV 主分支上得到修复,作为this https://github.com/Itseez/opencv/commit/959d5752926d1183f933c2583308b6d63bbbee41 commit.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV 3.0.0 使用 FFMPEG 时出错 的相关文章

随机推荐