在Windows下使用MSYS2编译FFPMEG源码

前言

configureMakefile这一套工具是用在类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-1SDL2zlib1.dllliblzma-5libbz2-1libiconv-2libgcc_s_seh-1libstdc+±6libx265libx264-164libfdk-aac-2
在这里插入图片描述

Path

最后建议将**%FFMPEG_HOME%/bin**目录配置到环境变量Path中。

在命令行输入ffmpeg -version,一切大功告成!

在这里插入图片描述

后记

  • 个人觉得WSL应该也能很好的完成这个任务,以后可以尝试。

猜你喜欢

转载自blog.csdn.net/haojie_duan/article/details/125128539