安装VS2019
前往微软官网下载并安装VS2019社区版

安装MSYS2
(1)下载安装包
前往官网下载MSYS2安装包 https://www.msys2.org/ (假设安装至 D:\msys64)

(2)访问windows PATH环境变量
编辑 D:\msys64\msys2_shell.cmd
将 rem set MSYS2_PATH_TYPE=inherit
修改为 set MSYS2_PATH_TYPE=inherit
(3)使用VS2019命令行加载MSYS2
在开始菜单中打开VS2019文件夹,点击 x86 native tools command…

进入msys2所在目录,以32位方式运行 msys2_shell.cmd

即可顺利启动MSYS2

(4)安装MSYS2编译FFMPEG所需的依赖
依次安装如下工具:
汇编工具
Pacman -S nasm
Pacman -S yasm
项目编译工具
Pacman -S make cmake
比较工具
Pacman -S diffutils
(5)验证
在VS2019命令行输入cmkae,可以正确执行即代表msys2配置成功

安装FFMPEG依赖
在开始编译FFMPEG之前,我们需要编译X264、fdk-acc、X265
(1)创建源码目录
创建/home/source目录,用于存放源码 D:\msys64\home\source
(2)使用msys2编译X264
将x264放入source目录
cd /home/source/x264/
CC=cl ./configure --enable-shared
Make -j4
Make install

(3)使用VS2019命令行编译fdk-acc
将fdk-aac-master放入source目录
cd d:\msys64\home\source\fdk-aac-master
nmake -f Makefile.vc
nmake -f Makefile.vc prefix=.\install install

(4)使用VS2019的cmake在msys2中编译x265
将x265放入source目录,并使用VS2019的cmake进行编译
查看VS2019 cmake路径
Whereis cmake

编辑文件 D:\msys64\home\source\x265\build\msys-cl\make-Makefiles.sh
将
cmake -G "NMake Makefiles" -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4" ../../source
修改为
/c/"Program Files (x86)/Microsoft Visual Studio/2019"/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/bin/cmake.exe -G "NMake Makefiles" -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4" ../../source
使用msys2 进入目录
cd /home/source/x265/build/msys-cl/
./make-Makefiles.sh
Nmake install
执行nmake install 如果出现权限错误,

那么需要使用管理员权限启动VS2019命令行,再通过命令行启动msys2

执行namake install之后可见x265被编译至 C:/Program Files (x86)/x265/目录

我们需要将其复制至msys2的 /usr/local/目录

编辑D:\msys64\usr\local\lib\pkgconfig\x265.pc
将
prefix=C:/Program Files (x86)/x265
修改为
prefix=/usr/local
准备编译FFMPEG
进入目录 D:\msys64\home\source\fdk-aac-master\install
将其中的 bin、lib、include 目录 复制至 /usr/local
将 D:\msys64\home\source\fdk-aac-master\fdk-aac.pc.in
复制至 D:\msys64\usr\local\lib\pkgconfig 并重命名为 fdk-aac.pc
将内容替换为:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: Fraunhofer FDK AAC Codec Library
Description: AAC codec library
Version:
Libs: -L${libdir} -lfdk-aac
Libs.private:
Cflags: -I${includedir}
将D:\msys64\usr\local\lib\pkgconfig 复制至 D:\msys64\mingw32\lib
进入目录 D:\msys64\usr\local\lib
将 libx264.dll.lib 重命名为 libx264.lib
将 libx265.lib 重命名为 x265.lib
编译ffmpeg
(1)复制FFMPEG 4.3源代码
将ffmpeg源码复制至 /home/source
cd /home/source/ffmpeg-4.3/
(2)使用VS2019编译器配置FFMPEG
CC=cl.exe ./configure --prefix=./install --toolchain=msvc --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265

(3)编译FFMPEG
Make -j4

(4)安装FFMPEG
Make install

整理编译后的文件
成功编译FFMPEG之后,我们需要整理FFMPEG相关文件,以便开发所用
(1)创建目录 ffmpeg4.3_project
进入该目录继续创建文件夹
Include : 用于放置头文件
Lib : 用于放置库文件
Bin : 用于放置DLL
Src :用于放置项目源码
Tools : 放置FFMPEG源码
(2)整理bin目录
复制 D:\msys64\home\source\ffmpeg-4.3\install\bin 中的DLL文件 至bin目录
复制 D:\msys64\usr\local\bin 中的DLL文件至 bin目录
(3)整理lib目录
复制 D:\msys64\home\source\ffmpeg-4.3\install\bin 中的lib文件至 lib目录
(4)整理include目录
复制 D:\msys64\home\source\ffmpeg-4.3\install\include 至include目录
(5)整理tools目录
复制 D:\msys64\home\source\ 至 tools目录
验证
(1)在src目录创建VS2019项目

(2)配置附加包含目录路径

(3)配置附加库路径

(4)配置输出目录

(5)配置工作目录

(6)创建测试类

(7)编写代码
#include
using namespace std;
extern "C" {
#include
}
#pragma comment(lib,"avcodec")
int main(int argc, char* argv[])
{
cout <return 0;
}
(8)测试

相关下载&#xff1a;