从源码编译支持FFmpeg的OpenCV

文章目录


前言

OpenCV有些API需要依赖FFMpeg的功能,例如cv::VideoWriter


一、版本选择

1.Ubuntu22.04

2.OpenCV4.9.0

4.FFmpeg4.4.5

二、FFmpeg编译

需要支持H264

1.安装依赖库

c 复制代码
sudo apt update
sudo apt install -y \
  build-essential \
  pkg-config \
  automake \
  libtool \
  git \
  yasm \
  nasm \
  libx264-dev \
  libv4l-dev \
  libfdk-aac-dev \
  libmp3lame-dev \
  libopus-dev \
  libx265-dev \
  zlib1g-dev

libx264-dev: 这个包提供了 H.264 编码器所需的开发库。

yasm: 是汇编编译器,FFmpeg 构建时需要它。

nasm: 另一个汇编编译器,有时也需要安装。

2.下载并编译 FFmpeg

从github下载FFmpeg-release-4.4.5源码

c 复制代码
unzip FFmpeg-master.zip
mv FFmpeg-master ffmpeg
cd ffmpeg

3.配置编译选项

bash 复制代码
./configure \
  --enable-gpl \
  --enable-libx264 \
  --enable-shared \
  --enable-pic \
  --enable-nonfree \
  --enable-libv4l2 \
  --prefix=/usr/local

--enable-gpl: 启用 GPL 许可下的功能。

--enable-libx264: 启用 H.264 编码器支持。

--enable-shared: 构建共享库(如果你需要共享库的话)。

--enable-pic: 启用位置无关代码,适用于某些平台的优化。

--enable-nonfree: 如果你需要启用一些非免费功能,如 libx264(某些功能可能受到许可限制),需要启用 --enable-nonfree。

4.编译 FFmpeg

bash 复制代码
make -j$(nproc)

-j$(nproc) 会利用所有可用的 CPU 核心来加速编译过程。

5.安装 FFmpeg

bash 复制代码
sudo make install
sudo ldconfig

这将 FFmpeg 安装到默认的系统路径中。你可以检查 FFmpeg 是否成功安装,并且支持 H.264 编码:

bash 复制代码
ffmpeg -codecs | grep libx264

如果一切顺利,你应该能看到类似以下内容:

bash 复制代码
DEV.LS h264  H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m) (encoders: libx264)

安装完成后,运行以下命令来检查 FFmpeg 是否支持 H.264 编码:

bash 复制代码
ffmpeg -codecs | grep h264

三、OpenCV编译

参考YOLOX推理系列3-支持NVIDIA-GPU的OpenCV编译

其中构建cmake添加FFmpeg支持:

bash 复制代码
cmake \
      -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=OFF \
      -D INSTALL_C_EXAMPLES=OFF \
      -D OPENCV_ENABLE_NONFREE=ON \
      -D OPENCV_GENERATE_PKGCONFIG=ON \
      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON \
      -D WITH_CUDA=ON \
      -D WITH_CUDNN=ON \
      -D OPENCV_DNN_CUDA=ON \
      -D WITH_CUBLAS=ON \
      -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
      -D OpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so \
      -D OpenCL_INCLUDE_DIR=/usr/local/cuda/include/ \
      -D WITH_FFMPEG=ON \
      -D FFMPEG_DIR=/usr/local \
      ..

总结

主要是版本对应

相关推荐
Dfreedom.18 小时前
图像直方图完全解析:从原理到实战应用
图像处理·python·opencv·直方图·直方图均衡化
Dfreedom.19 小时前
图像处理中的对比度增强与锐化
图像处理·人工智能·opencv·锐化·对比度增强
炼金术21 小时前
SkyPlayer v1.2.0 : AI 字幕-端侧 Whisper 实时语音识别实践
ffmpeg·openai
Pyeako21 小时前
opencv计算机视觉--LBPH&EigenFace&FisherFace人脸识别
人工智能·python·opencv·计算机视觉·lbph·eigenface·fisherface
格林威1 天前
Baumer相机水果表皮瘀伤识别:实现无损品质分级的 7 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·opencv·计算机视觉·视觉检测·工业相机·sdk开发·堡盟相机
爱打代码的小林1 天前
基于 OpenCV 与 Dlib 的人脸替换
人工智能·opencv·计算机视觉
硫酸锌011 天前
使用ffmpeg合并文件夹内的所有*.mp4格式视频
ffmpeg·音视频
源文雨1 天前
shell调用ffmpeg递归转换所有wav至flac的脚本
ffmpeg·bash·音视频·音频·unix·shell·音频编码
西部秋虫1 天前
迷你视频会议系统(FlashMeeting)
opencv·ffmpeg·视频会议·回声抑制
智驱力人工智能1 天前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算