Windows下使用MINGW编译ffplay

之前考虑到需要快速配置编译ffplay,使用了比较暴力的方法,具体可以参考编译ffplay.exe简化版

这里介绍下相对规范的做法。
前提:已经安装了Windows下GCC开发环境——MINGW+msys。

Step1:下载FFmpeg

链接如下:FFmpeg Download

Step2:下载yasm并配置

可以从下面URL下载:yasm 1.3 release
选择你需要的版本,我的系统是win32的,所以下载“Win32.exe”。
下载完成之后将yasm-1.3.0-win32.exe重命名为yasm.exe,并复制到%MINGW_PATH%/bin目录下。MINGW_PATH是MINGW安装目录。

Step3:下载pkg-config并配置

pkg-config官网上通常找不到windows下可用的版本,建议参考下面介绍配置:pkg-config for mingw 安装及配置
注意配置好环境变量,PKG_CONFIG_PATH(这是pkg-config默认的库依赖项查找目录)。
也可以把pkg-config.exe放到%MINGW_PATH%/bin下。

pkg-config是一个辅助的配置、链接工具,可以方便的支持gcc自动配置。

Step4:下载SDL并配置

可以从SDL v1.2.15下载,选择SDL-devel-1.2.15-mingw32.tar.gz。
后续的配置是把上面压缩包中的include/sdl、lib、bin目录下的文件拷贝到%MINGW_PAH%/include/sdl、%MINGW_PAH%/lib、%MINGW_PAH%/bin。
剩下的可能需要手工添加。在%MINGW_PAH%/lib添加pkgconfig目录。由于SDL v1.2.15不包含sdl.pc文件,需要参考SDL v2.0的版本生成一个或者自己编译一个。内容如下:

# sdl pkg-config source file

prefix=/c/mingw/
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: sdl
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 1.2.15
Requires:
Conflicts:
Libs: -L${libdir}  -lmingw32 -lSDLmain -lSDL  -mwindows
Libs.private: -lmingw32 -lSDLmain -lSDL2  -mwindows  -Wl,--no-undefined -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -XCClinker -static-libgcc
Cflags: -I${includedir}/SDL  -Dmain=SDL_main

Step5:FFmpeg的configure

既然工具都配置好了,剩下的就是开始按照Linux上的软件编译流程,使用下面命令配置FFmpeg

./configure  --disable-static --enable-shared --enable-gpl --enable-version3 --enable-pthreads

完成之后检查下SDL是否正常检测到,可以查看FFmpeg编译目录下的config.h文件,找到HAVE_SDL、CONFIG_SDL宏,如果都是1,表示SDL配置成功,可以放心编译出ffplay了。

Step6: FFmpeg编译

这基本上算最后一步编译,耗时相对长一些,通常半个小时以上。
一条编译指令,make

小结

Windows下GCC开发环境配置起来相对复杂,有问题通常都是可以解决的。写这篇文章主要考虑自己用了几年的FFmpeg,编译了很多次,也没成功编译出ffplay.exe,这次终于整理清楚FFmpeg编译的过程以及可能存在的问题,值得记录。

posted @ 2015-11-22 10:14  Tocy  阅读(4601)  评论(0编辑  收藏  举报