1. 编译安装 FFMPEG
下载源码, 执行 ./configure --disable-yasm --enbale-shared --prefix=/usr/local/FFMPEG 即可.
2. 下载 opencv 并设置 config
下载源码, 并 Git checkout 3.1.0, 也可以是其他版本
cmake -D WITH_CUDA=OFF -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/home/packages/opencv/install -D WITH_IPP=OFF -D WITH_FFMPEG=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=OFF -D PYTHON_EXECUTABLE=$(which python) -D BUILD_EXAMPLES=OFF ..
注意:
(1) 需要指定 FFMPEG 安装目录便于 cmake 找到, 否则会出现 lib 库找不到的问题, 使得始终 FFMPEG:NO
export PKG_CONFIG_PATH=/home/packages/FFMPEG/lib/pkgconfig;$PKG_CONFIG_PATH
(2) 设置 FFMPEG 的 include 路径到 bashrc 文件中, 并在 FFMPEG/include 目录下创建 FFMPEG 文件夹, 将所有头文件拷到 FFMPEG 下, 注意是拷贝文件不是文件夹.
(3) 修改 opencv 中 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
否则会出现以下错误
- error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope
- error: 'AVFMT_RAWPICTURE' was not declared in this scope
- error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope
- for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o' failed
- make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o] Error 1
来源: http://www.bubuko.com/infodetail-3093602.html