参考文章:
OpenCV 交叉编译:基于 FFMPEG 的 VideoIO 模块
树莓派编译安装 FFmpeg(添加 H.264 硬件编解码器支持)
在另一篇文章中,简单粗暴地使用-D WITH_FFMPEG=OFF
以不启用 ffmpeg 编译 OpenCV,结果导致无法读取视频。花了点时间交叉编译 ffmpeg,使其可以适配4.6.0
版本的 OpenCV。
下载编译 x264
下载
折叠代码块
复制代码
1
| git clone https://git.videolan.org/git/x264.git
|
进入文件夹,配置
折叠代码块
复制代码
1 2 3 4
| ./configure \ --enable-static \ --enable-strip \ --disable-cli
|
编译安装
折叠代码块
复制代码
1 2
| sudo make -j4 sudo make install
|
下载编译 ffmpeg
下载,这里选择 n4.4.5 版本
折叠代码块
复制代码
1 2 3
| wget https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n4.4.5.tar.gz tar -zxvf n4.4.5.tar.gz cd FFmpeg-n4.4.5
|
配置,下面指令参数太长了,vnc 复制不过去,所以新建一个 sh 文件来运行
折叠代码块
复制代码
1 2
| touch config_ffmpeg.sh nano config_ffmpeg.sh
|
把以下内容粘贴进去
折叠代码块
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| #!/bin/sh PREFIX=/usr/local ./configure \ --enable-gpl --enable-version3 --enable-nonfree \ --enable-static --disable-shared \ \ --prefix=$PREFIX \ \ --disable-opencl \ --disable-thumb \ --disable-pic \ --disable-stripping \ \ --enable-small \ \ --enable-ffmpeg \ --enable-ffplay \ --enable-ffprobe \ \ --disable-doc \ --disable-htmlpages \ --disable-podpages \ --disable-txtpages \ --disable-manpages \ \ --disable-everything \ \ --enable-libx264 \ --enable-encoder=libx264 \ --enable-decoder=h264 \ --enable-encoder=aac \ --enable-decoder=aac \ --enable-encoder=ac3 \ --enable-decoder=ac3 \ --enable-encoder=rawvideo \ --enable-decoder=rawvideo \ --enable-encoder=mjpeg \ --enable-decoder=mjpeg \ \ --enable-demuxer=concat \ --enable-muxer=flv \ --enable-demuxer=flv \ --enable-demuxer=live_flv \ --enable-muxer=hls \ --enable-muxer=segment \ --enable-muxer=stream_segment \ --enable-muxer=mov \ --enable-demuxer=mov \ --enable-muxer=mp4 \ --enable-muxer=mpegts \ --enable-demuxer=mpegts \ --enable-demuxer=mpegvideo \ --enable-muxer=matroska \ --enable-demuxer=matroska \ --enable-muxer=wav \ --enable-demuxer=wav \ --enable-muxer=pcm* \ --enable-demuxer=pcm* \ --enable-muxer=rawvideo \ --enable-demuxer=rawvideo \ --enable-muxer=rtsp \ --enable-demuxer=rtsp \ --enable-muxer=rtsp \ --enable-demuxer=sdp \ --enable-muxer=fifo \ --enable-muxer=tee \ \ --enable-parser=h264 \ --enable-parser=aac \ \ --enable-protocol=file \ --enable-protocol=tcp \ --enable-protocol=rtmp \ --enable-protocol=cache \ --enable-protocol=pipe \ \ --enable-filter=aresample \ --enable-filter=allyuv \ --enable-filter=scale \ --enable-libfreetype \ \ --enable-indev=v4l2 \ --enable-indev=alsa \ --enable-indev=alsa \ --enable-outdev=alsa \ \
|
如果 opencv make
有相关报错,需要在这里加上 --extra-cflags=-fPIC
参数
配置编译安装
折叠代码块
复制代码
1 2 3 4
| chmod +x config_ffmpeg.sh ./config_ffmpeg.sh sudo make -j4 sudo make install
|
编译 OpenCV-4.6.0
官网下载解压,在文件夹外新建build
文件夹
配置,启用 ffmpeg 和 videoio
折叠代码块
复制代码
1
| cmake -D CMAKE_BUILD_TYPE=Release -D WITH_FFMPEG=ON -D BUILD_opencv_videoio=ON ../opencv-4.6.0
|
出现下图所示配置说明成功
![image]()
按照另一篇博客写的那样编译 OpenCV,完成。