AI摘要:本文介绍了在Windows环境下编译FFmpeg的步骤。首先设置msys2环境,安装必要依赖。然后分别编译x264、fdk-aac、mp3和libvpx等库。最后配置FFmpeg编译选项,包含这些第三方库,完成FFmpeg的编译和安装。文章还提供了一些常见问题的解决方法,如缺少dll文件和pkg-config路径设置等。

Powered by AISummary.

## msys2设置

编辑`msys2_shell.cmd`脚本,找到 `rem set MSYS2_PATH_TYPE=inherit` 所在的行,并将rem移除

这一步的目的是为了让`msys2`继承`windows`的环境变量

## 安装依赖

```bash
# 更新
pacman -Syu
pacman -S mingw-w64-x86_64-toolchain
pacman -S git make automake autoconf perl libtool mingw-w64-x86_64-cmake pkg-config mingw-w64-x86_64-SDL2

#避免与msvc的link冲突
mv /usr/bin/link.exe /usr/bin/link.exe.bak
```

## 编译x264

下载:`https://code.videolan.org/videolan/x264.git`

```bash
编译静态库
./configure --prefix=~/ffmpeg/build/libx264 --host=x86_64-w64-mingw32 --enable-static --extra-ldflags=-Wl,--output-def=libx264.def
编译动态库
./configure --prefix=~/ffmpeg/build/libx264_dll --host=x86_64-w64-mingw32 --enable-shared --enable-static --extra-ldflags=-Wl,--output-def=libx264.def
make
make install
如果需要lib文件:
cp ./libx264.def ~/ffmpeg/build/libx264/lib/
cd ~/ffmpeg/build/libx264/lib/
lib /machine:X64 /def:libx264.def
```

## 编译fdk-acc

下载:`https://github.com/mstorsjo/fdk-aac.git`

```bash
./autogen.sh
./configure --prefix=~/ffmpeg/build/libfdk-aac --enable-shared --enable-static
make
make install
```

## 编译mp3

下载:` https://sourceforge.net/projects/lame/files/lame/`

```bash
./configure --prefix=~/ffmpeg/build/libmp3lame --disable-shared --disable-frontend --enable-static
make
make install
```

## 编译libvpx

下载:`https://github.com/webmproject/libvpx.git`

```bash
./configure --prefix=~/ffmpeg/build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make
make install
```

## 编译FFmpeg

下载:`https://github.com/FFmpeg/FFmpeg.git`

```bash
./configure \
--prefix=~/ffmpeg/build/ffmpeg-6.1 \
--arch=x86_64 \
--enable-shared \
--enable-gpl \
--enable-libfdk-aac \
--enable-nonfree \
--enable-libvpx \
--enable-libx264 \
--enable-libmp3lame \
--extra-cflags="-I~/ffmpeg/build/libfdk-aac/include" \
--extra-ldflags="-L~/ffmpeg/build/libfdk-aac/lib" \
--extra-cflags="-I~/ffmpeg/build/libvpx/include" \
--extra-ldflags="-L~/ffmpeg/build/libvpx/lib" \
--extra-cflags="-I~/ffmpeg/build/libx264_dll/include" \
--extra-ldflags="-L~/ffmpeg/build/libx264_dll/lib" \
--extra-cflags="-I~/ffmpeg/build/libmp3lame/include" \
--extra-ldflags="-L~/ffmpeg/build/libmp3lame/lib"
make j8
make install
```

`make install`后进入`~/ffmpeg/build/ffmpeg-6.1/bin`并拷贝以下`dll`

```bash
liblzma-5.dll
libfdk-aac-2.dll
zlib1.dll
libbz2-1.dll
SDL2.dll
libwinpthread-1.dll
libiconv-2.dll
```

使用`./ffmpeg.exe -version`验证是否编译成功

> 注意:`--extra-cflags`与`--extra-ldflags`中到的路径需要与编译的第三方库路径保持一致
>
>
> 编译后可能不止需要拷贝以上`dll`,通过windows终端执行`./ffmpeg.exe -version`即可知道缺少哪些`dll`

如果遇到报错:`x264 not found using pkg-config`

解决:

```bash
export PKG_CONFIG_PATH=~/ffmpeg/build/libx264_dll/lib/pkgconfig:$PKG_CONFIG_PATH
```

确保 `pkg-config --cflags --libs x264` 命令返回正确的路径

最后修改:2025 年 03 月 26 日
如果觉得我的文章对你有用,请随意赞赏