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

本文详细介绍了由于FFmpeg版本更新导致的OpenCV编译问题,特别是关于CODEC_FLAG_GLOBAL_HEADER和AVFMT_RAWPICTURE宏未声明的错误。通过在源码文件头部添加相应的定义,可以解决此类问题。

 

 

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版本引起的错误处理方法类似,找到报错的宏对应的定义,将其复制到出错的源码文件头

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值