1. 安装必要的包
1.1 下载ffmpeg源码
1.2 下载YASM
YASM64位下载地址
下载好后,将文件放在MSYS2目录的bin文件夹中.
比如你的安装目录为C:\msys64
, 则将下载的yasm文件放在C:\msys64\usr\bin\
目录中.并将下载后的yasm文件改名为: yasm.exe
1.3 下载MSYS2
MSYS2内部集成了MINGW,采用Pacman管理软件包.
MSYS2下载地址
成功运行后运行MSYS2窗口
安装编译程序:
pacman -S make gcc diffutils pkg-config
如果下载较慢的话,打开安装目录中,找到文件夹etc/pacman.d
,其中的文件打开里面就是源.就像我下面这样
修改源后执行pacman -S mingw-w64-x86_64-toolchain
打开MSYS2的安装目录,并打开其中的msys2_shell.cmd文件,找到其中的rem set MSYS2_PATH_TYPE=inherit
,改成set MSYS2_PATH_TYPE=inherit
.表示继承VS的配置变量
还要将安装目录中usr/bin/link.exe
改成其他名称,这样让MSYS2去找到VS环境的link.exe
来链接
上面这些都设置好,接下来验证一下:
找到你系统中的VS Developer command,并打开
然后进入到MSYS2安装目录中,执行mysy2_shell.cmd -mingw64
接下来就会弹出MSYS2框,然后执行which is link
,就会找到系统的link.exe位置了.而不是MSYS2自带的link.exe
1.4 下载相关的依赖库,这里举例x264
下载地址:版本为20170208-2245-stable
输入下面指令编译安装,这里编译为动态库(--enable-shared),安装目录为MSYS2目录下的usr/local/x264
./configure --prefix=/usr/local/x264 --host=x86_64-w64-mingw32 --enable-shared --disable-thread --disable-avs
make
make install
我们打开MSYS2目录下的usr/local/x264,然后打开lib文件夹,将里面的libx264.dll.a改成libx264.lib.
1.5 设置msvc的环境变量(如果没有配置必须要配置)
需要两个目录:
G:\Windows Kits\10\Lib\10.0.22621.0
G:\visual studio\VC\Tools\MSVC\14.37.32822
以下是两个目录的详情:
xx\VC\Tools\xxx
xx\Windows Kits\10\Lib\xxx
1.5.1 配置 bin 目录到环境变量
打开系统环境变量,打开path变量,像下图这样添加
1.5.2 配置 include 目录到环境变量
新建INCLUDE变量,然后按照下图方式添加.中间用英文符号分号";"分割
添加完后就像这样:
1.5.3 配置 lib 目录到环境变量
新建LIB变量,然后按照下图方式添加.中间用英文符号分号";"分割
添加完后像下面这样:
测试是否添加成功,创建一个cpp文件
#include <iostream>
using namespace std;
int main()
{
cout << "hello world" << endl;
return 0;
}
然后执行命令cl /EHsc test.cpp
像上图这样则代表设置环境成功
1.2 编译ffmpe(64位)
需要改两个文件的代码
fftools\ffprobe.c
文件的4081行代码, 将这行代码注释掉
fftools\opt_common.c
文件的206行代码,将这行代码注释
打开x64 Native Tools Command,通过这个打开MSYS,为的是继承VS的环境
执行命令:
cd G:\MSYS2
msys2_shell.cmd -mingw64
将解压后的ffmpeg放到 MSYS2目录的home\Administrator 目录中,这是MSYS2默认的路径
MSYS2的控制台输入cd ffmpeg-7.0.1/
目录中
设置如下编译选项
./configure --prefix=/usr/local/ffmpeg_7_0_1 --toolchain=msvc --enable-yasm --enable-asm --enable-shared --disable-static --enable-libx264 --extra-cflags="-I/usr/local/x264/include" --extra-ldflags=-LIBPATH:G:/MSYS2/usr/local/x264/lib --enable-gpl
如果要编译出ffplay, 在上面的编译命令后加上如下选项
--enable-ffplay
其中有几个重要的点:
- --extra-cflags="-I/usr/local/x264/include, 指定x264头文件目录,这个目录就是上面编译x264生成的目录
- --extra-ldflags,后面接 =-LIBPATH:你的x264目录在windows下的路径
上面指令执行之后像我这样表示成功:
然后执行编译
make & make install
如果上述有报错的话,可以打开ffmpeg目录.打开ffbuild文件夹,里面的config.log就是编译时候的命令.翻到文件末尾,就是编译报错的原因.然后在根据具体原因具体解决.