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工程

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐