在 Ubuntu 中使用从源代码编译的 FFmpeg 5 编译 Opencv 4.7.0

准备好使用自定义 FFmpeg 视频 I/O 后端来增强你的 OpenCV,本教程将进行详细说明。在OpenCV 4.7版本的发布说明中,提到了对FFmpeg 5.x的支持改进。因此,让我们首先从源代码编译FFmpeg 5.x,然后从源代码编译OpenCV 4.7并链接此自定义FFmpeg库。

让我们开始吧!顺便说一下,我将在运行在WSL 2下的Ubuntu 22中进行操作。

2530a375cf7549d4a7ab4462e89c4844.png

上次我使用Opencv 4.6编译FFmpeg,但是无法启用FFmpeg来构建Opencv。因此,我使用apt-get install安装了FFmpeg,然后成功地使用FFmpeg构建了Opencv。最终的应用程序链接了从源代码编译的FFmpeg构建以及启用了FFmpeg支持的Opencv库。

今天,让我们再次使用从源代码编译的 FFmpeg 库来编译 Opencv 4.7。

如果适用,请在所有命令中使用“sudo”。

构建 FFmpeg 的先决条件

这一步的主要来源是 FFmpeg Compilation Guide(https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu)。如果 FFmpeg 在配置过程中报错,你有两个选择。安装先决条件或禁用配置中的选项。我安装了这些:

sudo apt-get update -qq && sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libmp3lame-dev \
  libsdl2-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev \
  nasm \
  libx264-dev \
  libx265-dev \
  libnuma-dev \
  libvpx-dev \
  libfdk-aac-dev \
  libopus-dev \
  libdav1d-dev

从源代码构建 FFmpeg 5 库

  • 通过wget命令下载,使用的是FFmpeg 5.0.1

  • 解压源代码

  • 输入提取目录

sudo wget -O ffmpeg-5.0.tar.bz2 "https://www.ffmpeg.org/releases/ffmpeg-5.0.1.tar.bz2"
sudo tar -xvf ffmpeg-5.0.tar.bz2
cd ffmpeg-5.0.1

将在下一节中详细介绍如何配置 FFmpeg 构建。

  1. 只启用你已安装的内容。我安装了libx264-dev libx265-dev、libvpx-dev和其他一些软件包。

  2. 通过启用enable-shared选项来使用静态和共享选项进行构建。

遇到了一些问题,在构建 FFmpeg 时构建 Opencv 4.7 就像静态库一样。很可能这也是上次遇到的主要问题。如果没记错的话,是在编译videoio模块时发生分段错误。

sudo ./configure  --enable-shared --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx --enable-zlib

配置过程的输出将如下所示:注意 static 和 shared 正确设置为 yes。

2e450bc492b19e2bba1beb7a5f2d7629.png

Opencv 的 FFmpeg 配置

现在已经完成了配置,现在是编译 FFmpeg 的时候了。使用 make 命令进行编译,可以添加参数 -j4 让编译过程并行。下面是一个命令的示例和预期的输出结果:

sudo make -j4

99547dbf40c3d1411c560c745d39abd6.png

make FFmpeg 库的输出。

当 FFmpeg 编译时没有任何问题。下面的 make install 会将 FFmpeg 库复制到最终目的地,而 ldconfig 将创建链接和缓存到最近创建的共享库。

sudo make install
sudo ldconfig -v

完成了 FFmpeg。因此,让我们构建 OpenCV。

f1012c7617a0a3cbdc30d7c39cf8517d.png

FFmpeg 安装输出。

构建支持 FFmpeg 5 的 Opencv 4.7

这个过程被再次使用。下载,解压,创建build目录,进入build目录,用cmake配置Opencv build。

sudo wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
sudo unzip opencv.zip
Sudo mkdir build
Cd build 
sudo cmake  ../opencv-4.7.0

Opencv 输出的配置是为了检查 FFMPEG 和 AVlibs 是否设置为 yes。此外,请随时解决配置中可能出现的任何其他问题。

7e8ff126ef422349cf6678c541aa2f2e.png

使用 FFmpeg 的 Opencv 4 配置

然后只需按照命令(一个接一个)构建和安装,等待几分钟即可完成此过程。

sudo cmake --build . --config Release -- -j 4
sudo make install

524608e99f1b1e3051059bd41c25c5cd.png

opencv编译步骤

0aaf5079b76232cd03e0f42b38906c04.png

opencv安装步骤

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

ef60eac3e5e9dc536b732d5b8de53c65.jpeg

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值