OpenCV 3.0.0使用FFMPEG进行错误 [英] OpenCV 3.0.0 make error with FFMPEG

查看:340
本文介绍了OpenCV 3.0.0使用FFMPEG进行错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在使用OpenCV一段时间。不过最近我将系统更改为一个我没有任何管理员权限的集群。问题是这样的:



在我的主文件夹中,我安装了FFMPEG(ffmpeg站点上最新的稳定版本)。我把它安装在$ HOME中,所以在$ HOME / lib中安装了库文件。更多信息,我编译了FFMPEG以下选项:

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

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

 扫描目标的依赖关系opencv_videoio 
[63%] [63%] [63%] [63%] [63%] [63%]构建CXX对象模块/ videoio / CMakeFiles / opencv_videoio.dir / src / cap.cpp.o
构建CXX对象模块/ videoio / CMakeFiles / opencv_videoio.dir / src / cap_mjpeg_decoder.cpp.o
构建CXX对象模块/ videoio / CMakeFiles / opencv_videoio.dir / src / cap_images。 cpp.o
构建CXX对象模块/ videoio / CMakeFiles / opencv_videoio.dir / src / cap_v4l.cpp.o
构建CXX对象模块/ videoio / CMakeFiles / opencv_videoio.dir / src / cap_mjpeg_encoder.cpp。 o
构建CXX对象模块/ videoio / CMakeFiles / opencv_videoio.dir / src / cap_ffmpeg.cpp.o
在/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:错误:使用枚举'AVCodecID'没有以前的声明
/home/uujjwal/libraries/opencv-nogpu/opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1556:83:错误:使用枚举'AVCodecID'没有以前的声明
make [2]:*** [modules / videoio / CMakeFiles / opencv_videoio.dir / src / cap_ffmpeg.cpp.o]错误1
make [2]:***等待未完成的作业.. ..

但是没有ffmpeg支持,它可以正常工作。然而,由于我的工作性质,我需要ffmpeg的支持。



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

 链接CXX共享库。 ./../lib/libopencv_highgui.so / usr / bin / ld:/home/matheus/ffmpeg_build/lib/../lib/libavcodec.a(avpacket.o):针对`.rodata.str1.1重定位R_X86_64_32 '不能使用

我已经从另一个未解决的问题在线粘贴上述错误,所以文件夹名称是不同的,但重定位错误是完全一样的。



在尝试解决问题时,我搜索并找到以下链接



然而,其中一个答案提到在cap_ffmpeg_impl.hpp中更改了一些行文件。我试着这样做,但是我无法正确地做到这一点,或者其他的事情出错了,这是不行的。我没有提到准确的行号和确切的更改,所以我在改变事情和确定时遇到困难。



我使用Fedora 19(Schrodinger Cat)作为操作系统希望我的问题的细节是明确的,我希望社会对我有一个很好的回应。



Regards
Ujjwal

解决方案

我遇到这个也试图在Ubuntu 12.04上构建OpenCV 3.0.0。该问题似乎是OpenCV中的一个错误。我编辑了opencv-3.0.0 / modules / videoio / src / cap_ffmpeg_impl.hpp,将 AVCodecID 替换为 CV_CODEC_ID #code> #define - 在第1174行(可选),1546和1556 - 并且构建工作。



有关详细信息,请参阅OpenCV问题跟踪器上的帖子。在我的帖子之前,该错误已经在OpenCV主分支上修复,这是的一部分提交。


I have been using OpenCV for a while. However I have recently changed my system to a cluster where I do not have any admin permission. The problem is like this :

In my home folder, I installed FFMPEG (latest stable version available on ffmpeg site). I installed it in $HOME, and so in $HOME/lib there are the library files installed. For more information I compiled FFMPEG with following options :

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

I then downloaded the latest stable version of OpenCV 3.0.0 and configured it using ccmake. When I try to make -j8, it gives me the following error.

 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....

However without ffmpeg support it works fine. However I need ffmpeg support due to the nature of my work.

In trying to resolve the problem, I tried installing OpenCV 2.4.11 but it also gave this error. The latest GIT version does not give me this error but rather an error a part of which goes like this

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

I have pasted the above error from another unresolved question online and so the folder names are different but the relocation error is exactly the same.

In trying to resolve the problem I searched and found the following link http://answers.opencv.org/question/12597/build-problems-for-opencv-241-with-ubuntu-1204-lts/

However, one of the answers over there mentioned changing some lines in cap_ffmpeg_impl.hpp file. I tried doing that but either i am not able to do it correctly or something else is going wrong and it is not working. Exact line numbers and exact changes are not mentioned and so I am having difficulty changing things and being sure.

I am using Fedora 19 (Schrodinger Cat) as the operating system I hope the details of my question are clear and I hope that the community would oblige me with a good response.

Regards Ujjwal

解决方案

I ran into this as well trying to build OpenCV 3.0.0 on Ubuntu 12.04. The problem appears to be a bug in OpenCV. I edited opencv-3.0.0/modules/videoio/src/cap_ffmpeg_impl.hpp, replacing AVCodecID with CV_CODEC_ID in all places but the #define -- in lines 1174 (optional), 1546, and 1556 -- and the build worked.

For more details, see my post on the OpenCV issue tracker. And the bug had been fixed on the OpenCV master branch prior to my post as part of this commit.

这篇关于OpenCV 3.0.0使用FFMPEG进行错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆