前言
本章节记录在Windows上编译ffmpeg的过程及编译过程的问题,并使用编译库编写测试程序验证是否可用。
在windows上编译主要使用MSYS2和vs 2019编译器编译ffmpeg,并且验证32位和64位的编译。
环境准备
-
ffmpeg源代码
官网:https://ffmpeg.org/
版本信息:
5.1.2 was released on 2022-09-25. It is the latest stable FFmpeg release from the 5.1 release branch, which was cut from master on 2022-07-13.
It includes the following library versions:
libavutil 57. 28.100 libavcodec 59. 37.100 libavformat 59. 27.100 libavdevice 59. 7.100 libavfilter 8. 44.100 libswscale 6. 7.100 libswresample 4. 7.100 libpostproc 56. 6.100
-
系统版本:Windows 10
-
编译器:Visual Studio 2019
-
MSYS2
MSYS2是Windows下的Linux模拟器,支持绝大多数的Linux命令,软件包管理器是pacman
官网:https://www.msys2.org/
-
x264源代码
x264是一个用于将视频流编码为H.264/MPEG-4 AVC压缩格式的免费软件库和应用程序。为了支持ffmpeg的H264编解码必须编译这个。
官网:https://www.videolan.org/developers/x264.html
版本:master分支(20221112)
编译
-
启动msys2
通过vs2019的命令行启动msys2,这样msys2可以获取到vs的环境变量。
编译32位和64位的动态库,只是启动的vs2019命令行不一样,其他执行操作都一样。下面以编译32位的动态库为例,启动msys2:
-
修改msys2的配置文件
修改msys2_shell.cmd文件,打开set MSYS2_PATH_TYPE=inherit的注释(使其能继承vs2019的命令行环境)
-
启动vs2019 x86(32位)命令行
如下可以看到32和64的命令行,这里我们启动x86 Native ToolsCommand Prompt for Vs2019
-
测试cl.exe的版本确实是x86(32)
-
启动msys2
启动mysy2(c:\msys64是msy2的安装目录),不管启动的vs2019命令行是32位还是64位的,执行下面操作都一致。
启动后的msys2:
-
-
安装依赖项
# 安装mingw工具链 pacman -S mingw-w64-x86_64-toolchain # 安装linux base-devel pacman -S base-devel # 安装汇编工具,gcc等 pacman -S yasm nasm gcc
-
源代码解压
将ffmpeg和x264源码解压放在如下对应目录:
-
编译
- 编译脚本整理如下,该编译文件放置在x264-master和ffmpeg-5.1.2的同级目录。切换到该脚本目录执行脚本。
# 当前脚本的目录 base_path=$(