ubuntu(linux)下安装openCV(ffmpeg导致的编译不通过的解决办法)

1.opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1313:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
         c->flags |= CODEC_FLAG_GLOBAL_HEADER;

2.opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1525:35: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope

以上两个错误均属于用一类型,由ffmpeg的版本问题引起。在最新版本的ffmpeg中对很多关键字进行了重命名,例如

CODEC_FLAG_GLOBAL_HEADER就被重新命名为AV_CODEC_FLAG_GLOBAL_HEADER,因此以老版本ffmpeg开发的opencv无法编译。解决方法也很简单,装旧版本的ffmpeg或者修改opencv的源码

以上错误的解决方案为:

在 opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp 里最顶端添加:

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

其他由ffmpeg版本引起的错误处理方法类似,找到报错的宏对应的定义,将其复制到出错的源码文件头

猜你喜欢

转载自blog.csdn.net/goodxin_ie/article/details/82856008