vs2022 msvc+msys2 win10 编译ffmpeg6.0+h264

环境:win10 msys2+msvc编译ffmpeg6.0+h264

技术背景:mingw编译器和msvc编译器编译出来的库互相不兼容。

安装必要的软件:

  1. msys2安装
    下载包:msys2-x86_64-20230718.exe
    注意事项:安装路径全英文路径且不要带空格
    尽量不要安装在系统盘,当使用pacman安装包时,安装目录体积会越来越臃肿。
  2. msys2内装软件:
    使用pacman命令安装
# 64位:安装mingw64编译链和基本的依赖
pacman -S mingw-w64-x86_64-toolchain  # 64位:mingw64编译工具链,默认选择all

# 32位:安装mingw32编译链和基本的依赖
# pacman -S mingw-w64-i686-toolchain

# 一次可以安装一个或多个软件
pacman -S diffutils make pkg-config yasm

pacman -S base-devel    # 一些基本的编译工具
pacman -S yasm nasm     # 汇编器
pacman -S diffutils # ffmpeg cmp命令
pacman -S make # 安装GNU make
gcc -v # 查看 gcc 版本
pacman -Qs pkgkeyname 关键字检索已安装的包

修改msys64/msys2_shell.cmd文件

rem set MSYS2_PATH_TYPE=inherit 去掉rem,目的是让msys2继承windows控制台的环境变量
在这里插入图片描述

如何启用msys2?

1.msvc编译器:

在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/09f6f1ef1bf94785a9e75182367832f4.png在这里插入图片描述
弹出的msys2命令窗口,直接切换到ffmpeg源码目录,编译ffmpeg。
在这里插入图片描述

2.mingw编译器:

在vs2022 x86 Native Tools Command Prompt for VS 2022窗口,切换到msys64目录,执行:msys2_shell.cmd -mingw32
弹出的msys2命令窗口,直接切换到x264源码目录,编译x264.
命令行这里可以看到始终有mingw32,说明使用的是mingw环境
在这里插入图片描述

32位编译

1. 编译x264

git下载x264源码:git clone https://code.videolan.org/videolan/x264.git
编译x264 需要mingw环境(32位对应mingw32,64位对应mingw64)
![在这里插入图片描述](https://img-blog.csdnimg.cn/13299a78c47b41038b478fc300c61b54.png
在这里插入图片描述

configure.sh文件内容:
 ./configure \
--prefix=/usr/local/x264 \
--disable-cli \
--enable-shared \
--enable-pic \
--extra-ldflags=-Wl,--output-def=libx264.def \
--host=mingw32
./configure.sh
make -j4 && make install
lib /def:libx264.def //生成libx264.lib

在这里插入图片描述

2. 编译ffmpeg

configure.sh文件内容:
./configure \
--prefix=./build-h264-x86 \
--enable-gpl \
--enable-shared \
--enable-nonfree \
--disable-ffprobe \
--enable-libx264 \
--extra-cflags=-I/usr/local/x264/include \
--extra-ldflags=-LIBPATH:/usr/local/x264/lib \
--pkg-config=pkg-config \
--toolchain=msvc \
./configure.sh
make -j4 && make install

## 如果make出错,可以先执行清除命令,再重新make
## make clean
## make uninstall

集成x264时,常见的错误:在这里插入图片描述
首先,要安装pkg-config,其次,把编译好的x264的pkgconfig文件x264.pc路径添加到PKG_CONFIG_PATH中。
方法:添加windows系统环境变量
在这里插入图片描述

source /etc/profile //启用环境变量

怎么知道生效了没有呢?在msys2命令窗口,输入命令:echo $PKG_CONFIG_PATH 如果有配置的路径,就说明生效了。
在这里插入图片描述

确认没问题,往下看。
我们通过ffbuild/config.log来查看详细的错误原因。在这里插入图片描述
所以,这里需要的lib文件是libx264.lib 有两个原因:1. 所需lib名字不对,注意检查链接的lib目录下名字是否完全一致,不一致修改一下。2. 链接lib的命令是否写对了,msvc和mingw在configure中链接的书写格式不同。
在这里插入图片描述

### FFMpeg支持MinGW以及msvc编译,两者的configure选项在指定链接库的路径时有差异:
msvc:
--extra-ldflags=-LIBPATH:../builds/lib
mingw:
--extra-ldflags=-L../builds/lib

如果使用了错误的编译选项,也会导致x264 not found using pkg-config,即便提供了正确的libx264.lib文件。

64位编译

在msys2中安装mingw64。和上述32位编译过程一样,只是vs2022命令行换成x64 Native Tools Command Prompt for VS 2022,后续启用mingw64位时,输入msys2_shell.cmd -mingw64。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用MSYS2VS2015编译FFmpeg,你可以按照以下步骤进行操作: 1. 首先,你需要下载并安装MSYS2。你可以从官方网站https://www.msys2.org/下载MSYS2安装程序。 2. 安装完成后,打开MSYS2的命令行界面,并运行以下命令来安装必要的工具:pacman -S make gcc diffutils 3. 为了避免和MSVC的link.exe程序冲突,你需要将C:\msys64\usr\bin\link.exe重命名为C:\msys64\usr\bin\link_orig.exe。 4. 下载YASM(The Yasm Modular Assembler),你可以从官方网站https://www.tortall.net/projects/yasm/wiki/Download下载YASM。将下载的yasm--win64.exe重命名为yasm.exe,并将其拷贝至MSYS2的安装目录(比如C:\msys64)。 5. 现在你可以下载FFmpeg的源代码。你可以从官方GitHub仓库https://github.com/FFmpeg/FFmpeg下载FFmpeg的源码。 6. 打开MSYS2的命令行界面,并切换到FFmpeg源码所在的目录。 7. 运行以下命令来配置FFmpeg编译选项:./configure --toolchain=msvc --arch=x86_64 --enable-yasm --enable-asm --enable-shared --disable-static 8. 配置完成后,你可以运行make命令来开始编译FFmpeg。请注意,编译过程可能会比较耗时,请耐心等待。 9. 编译完成后,你可以使用编译好的库来进行你的项目开发。 总结一下,使用MSYS2VS2015编译FFmpeg的步骤包括安装MSYS2、安装必要的工具、重命名link.exe、下载YASM、下载FFmpeg源码、配置编译选项、运行make命令进行编译。希望以上信息对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用msys64+vs2019在编译ffmpeg](https://download.csdn.net/download/ihmhm12345/13116875)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用MSYS2 + VS2022编译FFmpeg](https://blog.csdn.net/powang2011/article/details/122724685)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值