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
https://blog.csdn.net/yangzhenzhen/article/details/62417021
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 代碼,在最頂端添加宏定義
https://blog.csdn.net/guo_lei_lamant/article/details/81568346
#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