FFmpeg大名鼎鼎,应该无人不知吧。它是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。但FFmpeg没有用CMake,所以没办法生成Visual Studio 2019的解决方案,因此在Windows下编译还是需要费点劲的。
一、编译环境说明
- 操作系统:Win11
- 编译器:MinGW+gcc11.3
- 其他辅助工具:msys2-x86_64-20230718.exe
二、先简要说明一下编译过程
由于不能生成Visual Studio的解决方案,因此考虑在Linux环境下来编译Windows程序。因此我们需要一个Linux环境来进行编译,通常我们可能得build一个Linux虚拟机,这样就太麻烦了。所以这里就需要使用msys2(Minimal SYStem 2),它是一个简洁的Linux开发环境,提供Shell环境。在里面可以安装MinGW,然后通过MinGW来编译Windows环境下的FFmpeg,大体思路是如此。
三、编译过程
1、安装msys2
通过官网下载msys2,然后跟普通软件一样一步步安装好即可。
2、安装配套编译环境
msys2本身集成了一个包管理器,其命令为pacman,依次执行以下命令:
pacman -Syu
pacman -Su
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
pacman -S autotools base-devel
pacman -S gcc diffutils make
pacman -S yasmpacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-i686-gcc简要说明:
-Syu:更新软件源并更新你的软件
-Su:更新所有软件
-S xx:安装指定软件
这个过程很容易,网络顺利的话10分钟应该就能全部搞定,安装完之后如下图所示:
3、开始编译
安装完msys2之后,找到mingw64.exe ,这个文件就在msys2的安装目录下,不在mingw64下。进入mingw64后,依次执行以下命令:
cd /ffmpeg/source/path
./configure --enable-shared --enable-debug --prefix=./build --extra-cflags="-I./build/include" --extra-ldflags="-LIBPATH:./buid/lib"- --enable-shared:编译成动态链接库(dll)。
- --enable-debug:允许对ffmpeg源码进行调试。
- --prefix=./build:安装目录。
- --extra-cflags="-I./build/include":将安装头文件加入头文件搜索目录
- --extra-ldflags="-LIBPATH:./buid/lib" :将安装lib库加入链接目录
然后执行编译命令:
make -j4 && make install这个过程需要一段时间,你可以直接去喝杯咖啡了,回来的话基本就好了。
四、小结
FFmpeg编译跟之前的软件编译最大的不同就是没有使用Visual Studio,而是在Linux下通过gcc编译,生成Windows程序,这种方法以后会经常用到,因为开源软件很大一部分都是在Linux开发的。所以对于Windows下的开发者来说并不方便,毕竟在Linux下Debug那真是太不方便了,如果有想要在Windows下调试需求的,下回我再做一期生成Visual Studio解决方案的文章。今天就到这里吧,想要编译成果的直接关注GZH(人形编译器)回复ffmpeg即可。
