Linux下安裝opencv with-ffmpeg解決無法讀取視頻的問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM