前言
configure、Makefile这一套工具是用在类Unix系统上的(Linux、Mac等),默认无法直接用在Windows上。
这里介绍其中一种可行的解决方案:
- 使用MSYS2软件在Windows上模拟出Linux环境
- 结合使用MinGW对FFmpeg进行编译
- 推荐一个相关的博客:MSYS2开发环境搭建
下载安装MSYS2
进入MSYS2官网下载安装包(我这边下载的是:msys2-x86_64-20220603.exe),然后进行安装。
安装完毕后打开命令行工具mingw64.exe。
更改软件界面的默认配置,看起来舒服一点
调整ui界面默认字体
安装依赖
pacman(Package Manager)是一个包管理工具。
- pacman -Sl:搜索有哪些包可以安装
- pacman -S:安装
- pacman -R:卸载
# 查看是否有fdk、SDL2相关包(E表示跟一个正则表达式,i表示不区分大小写)
pacman -Sl | grep -Ei 'fdk|sdl2'
# 结果如下所示
mingw32 mingw-w64-i686-SDL2 2.0.14-2
mingw32 mingw-w64-i686-SDL2_gfx 1.0.4-1
mingw32 mingw-w64-i686-SDL2_image 2.0.5-1
mingw32 mingw-w64-i686-SDL2_mixer 2.0.4-2
mingw32 mingw-w64-i686-SDL2_net 2.0.1-1
mingw32 mingw-w64-i686-SDL2_ttf 2.0.15-1
mingw32 mingw-w64-i686-fdk-aac 2.0.1-1
mingw64 mingw-w64-x86_64-SDL2 2.0.14-2
mingw64 mingw-w64-x86_64-SDL2_gfx 1.0.4-1
mingw64 mingw-w64-x86_64-SDL2_image 2.0.5-1
mingw64 mingw-w64-x86_64-SDL2_mixer 2.0.4-2
mingw64 mingw-w64-x86_64-SDL2_net 2.0.1-1
mingw64 mingw-w64-x86_64-SDL2_ttf 2.0.15-1
mingw64 mingw-w64-x86_64-fdk-aac 2.0.1-1
接下来,安装各种依赖包。
# 编译工具链
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-yasm
pacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-x86_64-fdk-aac
pacman -S mingw-w64-x86_64-x264
pacman -S mingw-w64-x86_64-x265
# 需要单独安装make
pacman -S make
安装的时候可能会报错,注意解决
Windows msys2编译ffmpeg问题之cmp: command not found解决方法
关于软件包相关的默认路径:
- 下载目录:%MSYS2_HOME%/var/cache/pacman/pkg
- 安装目录:%MSYS2_HOME%/mingw64
%MSYS2_HOME%
是指MSYS2的安装目录
configure
我的源码是放在D:\Work\Dev\ffmpeg-5.0.1,输入cd /d/Work/Dev/ffmpeg-5.0.1即可进入源码目录。然后执行configure。
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265
编译、安装
make -j8 && make install
FFmpeg最终会被安装到%MSYS2_HOME%/usr/local/ffmpeg
目录中。
bin
此时bin目录中的ffmpeg、ffprobe、ffplay还是没法使用的,因为缺少相关的dll,需要从%MSYS2_HOME%/mingw64/bin
中拷贝,或者将%MSYS2_HOME%/mingw64/bin
配置到环境变量Path中。
需要拷贝的dll有:libwinpthread-1、SDL2、zlib1.dll、liblzma-5、libbz2-1、libiconv-2、libgcc_s_seh-1、libstdc+±6、libx265、libx264-164、libfdk-aac-2。
Path
最后建议将**%FFMPEG_HOME%/bin**目录配置到环境变量Path中。
在命令行输入ffmpeg -version,一切大功告成!
后记
- 个人觉得WSL应该也能很好的完成这个任务,以后可以尝试。