1. 程式人生 > >ubuntu(linux)下安裝openCV(ffmpeg導致的編譯不通過的解決辦法)

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版本引起的錯誤處理方法類似,找到報錯的巨集對應的定義,將其複製到出錯的原始碼檔案頭