本文参考自FFmpeg官网以及FFmpeg官方wiki。
网上关于Windows系统编译ffmpeg的教程有很多,但大部分都有些老旧,方法虽然可以用但是步骤繁琐,根据官网给出的几种方案,个人感觉采用msys2是最简单的编译方案了,现把编译步骤整理如下:
- 下载ffmpeg源码,github地址:https://github.com/FFmpeg/FFmpeg,克隆哪个版本应该都可以;
- 下载并安装msys2,下载地址:https://www.msys2.org;
- (可跳过)在安装依赖之前,我们需要修改msys2的镜像地址为国内地址,当然不修改也没啥问题,就是下载的速度比较慢,而且有时候有可能会莫名其妙的中断。关于修改msys2为国内源的方案参考自这篇博客。方法为修改msys64\etc\pacman.d 目录下三个文件:mirrorlist.mingw32 、mirrorlist.mingw64 、mirrorlist.msys中的内容为中国科学技术大学开源软件镜像。
- mirrorlist.mingw32
##
## 32-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
Server = http://repo.msys2.org/mingw/i686
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686
Server = http://www2.futureware.at/~nickoe/msys2-mirror/i686/
- mirrorlist.mingw64
##
## 64-bit Mingw-w64 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
Server = http://repo.msys2.org/mingw/x86_64
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64
Server = http://www2.futureware.at/~nickoe/msys2-mirror/x86_64/
- mirrorlist.msys
##
## MSYS2 repository mirrorlist
##
## Primary
## msys2.org
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/
- 下面我们就需要用pacman安装ffmpeg的依赖了。pacman是msys2 mingw-w64的包管理工具,可以简单的理解为ubuntu下的apt-get或者是centos下的yum之类。我们通过pacman安装编译ffmpeg所需要的依赖;
# normal msys2 packages
pacman -S make pkgconf diffutils
# mingw-w64 packages and toolchains
pacman -S mingw-w64-i686-nasm mingw-w64-i686-gcc mingw-w64-i686-SDL2
如果要编译64位的版本,将mingw-w64工具链中的i686替换位x86_64即可,如果要编译ffplay,则需要安装sdl2以及pkgconf依赖。
- 依赖安装完成之后,我们在msys2安装目录下运行mingw32.exe(要编译64位则用mingw64.exe),然后cd到ffmpeg clone目录,运行配置:
./configure --enable-shared --prefix=./msys_build
其中--enable-shared
就是编译动态库版本,--prefix
是生成目录,可以自己指定,也可以用默认
- configure检测完成后就可以用make进行编译了,执行
make -j4
其中-j4
参数表示可以把项目进行并行编译,让make最多允许4个编译命令同时执行,提高编译速度。
- 编译完成后,最后一步就是安装了
make install
安装完成之后可以到configure指定的目录看下是否生成了动态库以及ffmpeg,ffplay等exe。