在windows平台编译FFmpeg,网上的大部分资料都是推荐用msys2+mingw进行编译。在win10平台,我们可以采用另一种方式,即wsl+msvc 实现window平台的ffmpeg编译。
下面将以vs2022+ubuntu22.04 为例,介绍此方法
0、前期准备
- 安装vs2022 (根据自己喜好,也可以安装其他版本的vs)
- 安装wsl 及 linux子系统 (我选用了ubuntu22.04,可以根据喜好安装其他linux版本)
- 下载ffmpeg代码 : 下载自己需要的ffmpeg版本的代码。 我选择了最新版本v7.1.1
- 编译ffmpeg编译脚本: ffmpeg 的configure命令参数较多,可以提前编译脚本sh脚本,避免在命令行手动输入。
#!/bin/bash ARCH=x86_64 PREFIX=$(pwd)/win/x64 function build_android { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-debug \ --disable-x86asm \ --enable-gpl \ --enable-small \ --enable-neon \ --enable-d3d12va \ --enable-dxva2 \ --disable-postproc \ --disable-doc \ --disable-avdevice \ --disable-symver \ --disable-outdevs \ --disable-indevs \ --disable-vulkan \ --arch=$ARCH \ --toolchain=msvc make clean echo "============================ configure android windows x64 success ==========================" } build_android
1、 准备编译环境
1.1 通过命令行方式进入 msvc编译环境。我选择了 x64 版本编译
启动后可以看到, msvc的编译路径已经添加到path中。
1.2 在msvc编译环境中启动wsl,此操作可以避免在linux系统中手动搭建msvc编译链。
wsl启动后,可以看到msvc的编译路径已经包含到ubuntu系统的path中。
2、运行编译脚本,编译ffmpeg
如上图,执行make -j xx 编译ffmpeg。执行make命令时,由于编码差异可能会出现乱码,
可以重复步骤1重新打开一个wsl窗口,然后执行make -j xx,则可以正常显示中文。
出现上述错误的原因是因为msvc的中文输出编码为GB2312, linux中编译环境中编码为UTF8,将fftools/opt_common.c用gb2312打开后,用utf8重新保存即可。
3、执行make install 将ffmpeg安装到指定目录。 (如脚本中PREFIX指定的目录)