在windows 10 使用msys2 + MSVC(VS2017)编译ffmpeg6.0源码 & ffplay播放器移植到 win32工程

4 篇文章 0 订阅
4 篇文章 0 订阅
本文详细介绍了如何下载和安装MSYS2,以及配置环境来编译FFmpeg源码。通过修改环境变量和引入SDL2库,使得FFmpeg能使用VS2017的编译工具,并生成ffplay.exe。编译过程中包括了配置选项、删除中文注释以解决编译错误,最后在VS2017中创建Win32工程并链接编译好的库文件。
摘要由CSDN通过智能技术生成

1. msys2  下载安装 MSYS2 ,  https://www.msys2.org/ 

2. msys2 环境配置

     2.1 打开 msys2 msys :

       

      2 然后输入以下命令安装:

pacman-Syu
pacman -S base-devel
pacman -S yasm nasm gcc 
pacman -S mingw-w64-x86_64-toolchain
pacman -S git
pacman -S make
pacman -S automake 
pacman -S autoconf
pacman -S perl
pacman -S pkg-config 

      2.3 修改C:\msys64\msys2_shell.cmd文件,将 rem set MSYS2_PATH_TYPE=inherit 修改成 set MSYS2_PATH_TYPE=inherit

 2.4  将C:\msys64\usr\bin\link.exe文件,重命名为link.exe.back

2.5 在C:\msys64目录下增加 msvc_build.bat文件内容为:call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars64.bat"
msys2_shell.cmd -mingw64

 作用是 让msys2工具 使用vs2017 x64编译工具命令(msvc)来运行编译 ffmpeg源码。

2.6  引入sdl2 vc库 ,为了让ffmpeg 编译出ffplay.exe项目

   1.下载sdl2  SDL2-devel-2.26.5-VC.zip    Release 2.26.5 · libsdl-org/SDL · GitHub

    2. C:\msys64\mingw64\include目录下,增加 SDL2文件夹 内容为sdl2头文件

3. C:\msys64\mingw64\lib目录下,增加SDL2文件夹内容为 SDL2-devel-2.26.5-VC.zip x64的lib文件

 4.  C:\msys64\mingw64\lib\pkgconfig目录下 增加sdl2.pc文件内容为(小心内容后面有空格) :

prefix=/mingw64
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/SDL2
includedir=${prefix}/include/SDL2

Name: SDL2
Description: SDL2 Description
Version: 2.26.5
Libs: -L${libdir} -lSDL2 -lSDL2main 
Libs.private: 
Cflags: -I${includedir}

 3.  运行C:\msys64\msvc_build.bat,通过git 下载ffmpeg源码 

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

 下载完成后 进入到ffmpeg目录 cd ffmpeg, 在编译之前确保cl和link工具是使用vs2017,使用命令如下:which cl   , which link

 4.编译ffmpeg源码 :

./configure --enable-shared --disable-debug   --target-os=win64 --arch=x86_64 --toolchain=msvc
意思是使用msvc(vs2017)编译工具  64位版本库,ffplay一定要有,否则win32-ffplay运行报错

 修改config.h文件 将 #define CC_IDENT "用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.16.27047 版" 的中文删除,否则make编译报错。

编译:

make -j24 & make install

5 提取 ffmpeg 编译好的库文件,头文件夹: C:\msys64\usr\local\include

 dll和lib  文件夹:C:\msys64\usr\local\bin

将bin和include文件夹复制出来,将bin文件夹重命名为lib文件夹,删除里面ffmpeg.exe,ffplay.exe,ffprobe.exe文件

vs2017 创建win32空白工程,增加 cmdutils.c,ffpaly.c, opt_common.c文件

 引用ffmpeg编译好的库文件和sdl2库文件,从ffmpeg源码中将w32dlfcn.h、 wchar_filename.h、 getenv_utf8.h 、fopen_utf8.h 、config_components.h、 config.h 、cmdutils.h 文件放在工程目录下

 在ffplay.c文件增加lib库 

#pragma  comment(lib,"avcodec.lib")
#pragma  comment(lib,"avdevice.lib")
#pragma  comment(lib,"avfilter.lib")
#pragma  comment(lib,"avformat.lib")
#pragma  comment(lib,"avutil.lib")
#pragma  comment(lib,"swscale.lib")
#pragma  comment(lib,"swresample.lib")
#pragma  comment(lib,"SDL2.lib")

vs2017使用x64编译 ,报错包含头文件错,修改成如下:

 最后将 ffmpeg和sdl2的dll放在exe运行目录下 

win32工程  下载  ffplay播放器移移植 win32工程

使用MSYS2和VS2015编译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. 编译完成后,你可以使用编译好的库来进行你的项目开发。 总结一下,使用MSYS2和VS2015编译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 ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq00769539

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值