1)从http://www.msys2.org/下载 msys2-x86_64-xxx.exe
2) 安装msys2到默认路径 C:\msys64\
3) 运行MSYS2 w64
4)执行 pacman -Syu 更新系统当出现提示时,选择y
5) 当窗口关闭时,重新打开msys2 w64 环境,如步骤3
6)再次执行 pacman -Su 当出现提示时,选择y
1)pacman -S make //安装make命令工具
2)pacman -S diffutils //安装比较工具
3)pacman -S yasm //安装yasm汇编语言编译器,ffmpeg使用SIMD汇编指令进行加速
4)pacman -S mingw-w64-x86_64-gcc //64bit的mingw编译器
5)pacman -S mingw-w64-i686-gcc //32bit 的mingw编译器
6)pacman -S mingw-w64-x86_64-gtk3 //64bit的gtk库
7)pacman -S mingw-w64-i686-gtk3/32bit的gtk库
8)pacman -S nasm//安装汇编语言编译器,x264使用SIMD汇编指令进行加速
以上主要安装make工具,yasm,nasm汇编器(ffmpeg和x264使用了SIMD之类加速),gcc编译器,gtk图像框架。
pkg-config 工具在编译时可以根据xxx.pc查找对应的头文件和库。PC文件一般原理如下:
1. 把你的pc文件,直接放到/usr/lib/…默认路径下。
2. 把你的pc文件的路径写到PKG_CONFIG_PATH环境变量里。
比如,你可以在/etc/.bashrc的文件末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/test/ffmpeg_build/lib/pkgconfig
export PKG_CONFIG_PATH
那么,pkg-config就会到/home/test/ffmpeg_build/lib/pkgconfig寻找*.pc文件
一般pkg-config 通过 pkg-config xxx –libs –cflags xxx就是你要找得库,通过xxx.pc可以分析该库头文件和库文件在哪个目录
比如查找 pkg-config libavcodec --libs --cflags
1)下载64bit工具
http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip
解压 pkg-config.exe to C:\msys64\mingw64\bin
2)下载32bit工具
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip
解压 pkg-config.exe to E:\msys64\mingw32\bin
1)cd C:\msys64\mingw32\bin
2)cp libintl-8.dll intl.dll
3)cd C:\msys64\mingw64\bin
4)cp libintl-8.dll intl.dll
intl.dll 库是Windows系统很重要库,缺少它可能软件运行会异常。
1)从ffmpeg官网下载源代码到C:\mycode
2)从 C:\msys64\中运行msys2_shell.cmd -mingw64
3) cd C:\mycode\ffmepg
4)执行编译即可
1)编译64bit
a) 从 C:\msys64\中运行msys2_shell.cmd -mingw64
b) ./ffmpeg-build-win release 64
2)编译32bit
a) 从 C:\msys64\中运行msys2_shell.cmd -mingw32
b) ./ffmpeg-build-win release 32
如上图所示编译成功,非常顺利。使用VC编译器编译过程如下
1)运行VC64bit 环境命令行行提示符((x64-native-tools--for--xxx)
2) cd c:\msys64
3)运行C:\msys64\msys2_shell.cmd -mingw64 -use-full-path
4. cd c:\mycode
5. 执行 ./ffmpeg-build-win release 64 msvc
编译期间会出现以下报错
这是config.h头文件有中文字符所知,去掉中文即可,重新make即可
这是config.h头文件有中文字符所知,去掉中文即可,重新make即可
在编译ffmpeg之前的要完成依赖库编译,也是同样方法的,基本思想可以理解msys2环境是一个Linux环境,minGW工具链就是该Linux默认的编译工具连,按照Linux编译思路编译即可。