Windows 平台编译 FFmpeg

需求

  • FFmpeg 7.0 开始已经支持 D3D12VA,可以自己编译一份采用 LGPL 协议的定制版了。

  • 以前都使用 ShiftMediaProject,现在想学习一种新的编译方式。

解决

这次采用较为普遍的方式:在 MSYS2 环境下编译。

1. 下载、安装

官网下载,并且官网有 Installation 说明。安装完 MSYS2 本身后,需要在 MSYS2 环境下安装编译 FFmpeg 所需的工具:

1
pacman -S autotools yasm

当然,您还需要下载 FFmpeg 代码,目前合适的版本为 7.1。下载完,解压到合适的目录,比如 D:\devel\ffmpeg,这样代码目录就是 D:\devel\ffmpeg\ffmpeg-7.1

2. 启动编译环境

为了编译 x64 版本,运行 x64 Native Tools Command Prompt for VS 2022。然后进入 MSYS2 安装目录,输入以下命令:

1
msys2_shell.cmd -use-full-path

此时获得一个新打开的 MSYS2 实例窗口,后面的命令在这里输入(即,不需要 x64 Native Tools Command Prompt for VS 2022 窗口了)。

3. 编译

由于稣只需要 D3D12VA 对 HEVC 的支持,所以编译其实很快,命令行如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd /d/devel/ffmpeg/ffmpeg-7.1
export OUT_DIR=../build
./configure \
--target-os=win64 \
--arch=x86_64 \
--toolchain=msvc \
--enable-shared \
--disable-all \
--disable-autodetect \
--enable-swresample \
--enable-avcodec \
--enable-encoder=hevc_d3d12va \
--enable-decoder=hevc \
--enable-d3d12va \
--enable-hwaccel=hevc_d3d12va \
--prefix="$OUT_DIR"

make -j
make install
如果您使用微信,也可以关注公众号 UMU618,在公众号文章里评论。