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編譯的過程以及可能存在的問題,值得記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM