准备环境
msys2 – 用于运行配置文件
vs – 用于编译 ffmpeg
msys2 准备
下载
https://www.msys2.org/
这是一个 git 的链接,比要时候可以使用国内源,或者使用 gitee 转发仓库进行二次下载。
目前实验包
https://github.com/msys2/msys2-installer/releases/download/2023-01-27/msys2-x86_64-20230127.exe
vs
略–官方下载即可
注意
使用 vs 编译的时候,2022 版本明显区别与 2019 版本以及以下,因为 2022 默认使用 utf-8 with bom 格式代码,否则会出现错误,最明显的就是因警告而诞生的 “slib”: 未声明的标识符
,解决办法这是强制转码,即 -> config.h
转为 适配编码
(事实上更多因编译所需的编译文件都应该转为适配编码)
开始
查找 vs 编译环境
64 位使用 1
32 位使用 2
配置到 msys2
找到 msys2 目录,并且编辑 msys2_shell.cmd
- 1
rem set MSYS2_PATH_TYPE=inherit
改为
set MSYS2_PATH_TYPE=inherit
- 2
找到msys2_shell.cmd
中
rem Setup proper title and icon
并且发现最后一个 else
set "CONTITLE=MSYS2 MSYS"
set "CONICON=msys2.ico"
在该命令末尾添加
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
注意
该添加命令出现在 查找 vs 编译环境
一节,该节中使用
发现 bat
文件位置,若把该位置 替换对应的
的命令行,即 call *
中的 *
即可
- 3
创建msys2_shell.cmd
快捷方式
如:
D:\app\msys64\msys2_shell.cmd -msys
使用目录中的 *.exe 并不能友好的加载msys2_shell.cmd
- 4
运行创建好的快捷方式,并且执行以下包安装
pacman -S nasm #汇编工具,安装
pacman -S yasm #汇编工具,安装
pacman -S make #项目编译工具,必须安装
pacman -S cmake #项目编译工具,必须安装
pacman -S diffutils #比较工具,ffmpeg configure 生成makefile时会用到,若不安装会警告,最好是安装
准备编译
使用 msys2 进入对应的 ffmpeg 目录当中,该目录应该存在 configure
文件
- 1
./configure --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-shared --enable-w32threads --disable-static --prefix=output --enable-optimizations shlibdir=output/bin --enable-version3 --enable-debug
执行配置编译选项,值得注意的是,编译选项可以使用 ./configure --help
获取,当需要在文档中参看的时候,可以使用 >
流符号,如 : ./configure --help > option.txt
。之后可以打开 option.txt 查看编译选项
–toolchain=msvc
使用 vs 工具包
–arch=x86_64
64位
–enable-shared
生成动态库
–disable-static
不生成静态库
–prefix=output
安装时候的目录前缀安装使用的命令属于 make install
,可以在 Makefile
文件查看,该文件一般与 configure
目录位置一同
–enable-version3
使用 lgpl3
协议
生成编译选项时候,该功能具备不同协议,在 lgpl3 当中,引用 动态库
并不需要引用者开源代码,但是 gpl 则需要
注
若需要使用 gpl,但有不能开源的开发代码
,可以使用插件形式
,以加载形式
使用被引用者
–enable-debug
加入调试内容
- 2
配置运行期间需要一定时间,但值得注意的是,它看上去像是卡死! - 3
但配置完毕之后,msys2 会获取用户输入,但目前并不能完美运行,起码需要解决编码问题。
如config.h
编码问题,当然。编码内容需要编译器的发现,若在使用 make 出现 “编码” 问题,则需要更改config.h
类似的文件编码
编译
以上步骤实现完成,可以使用
make
运行配置的编译,或者利用更多的资源,指定编译任务数量
make -j 8
其中 -j
表示使用更多资源,8
则表示可以使用 8 线程
但很明显,资源的数量并不代表真的可以利用这么多的资源,一般建议参考 cpu
的线程数量
注意
期间会出现一些编码警告,请参考 vs
章节
安装
使用
make install
命令进行安装,它会根据之前使用 configure
文件配置选项去实现文件拷贝