FFmpeg是在Linux平臺(tái)下開發(fā)的,但它同樣也可以在其它操作系統(tǒng)環(huán)境中編譯運(yùn)行,本文介紹的就是在windowsXP下編譯FFmpeg。一 準(zhǔn)備環(huán)境:1 下載 mingw 和 MSYS去 http://sourceforge.net/projects/mingw/ 下載A 點(diǎn)擊“DownLoad mingw-get-inst-...exe”;B 切換到頁(yè)面:download? Check your browser's security bar, or try a direct link, or try another mirror. ;C 點(diǎn)擊“direct link”下載類似:mingw-get-inst-20110802.exe 的文件。提示:msys此處就不用下載了,mingw-get-inst-20110802.exe 中已經(jīng)包含了msys1.0,后面安裝的時(shí)候就可以看到該選項(xiàng)。2 下載 yasmffmpeg編譯里面的匯編代碼需要yasm.exe 去官網(wǎng):http://yasm.tortall.net/Download.html 下載直接下載:Win32 .exe (for general use on 32-bit Windows)文件名為:yasm-1.1.0-win32.exe3 下載 ffmpegffmpeg可以到 http://www.ffmpeg.org/releases/ 下載本人選擇的是最新版本:ffmpeg-0.8.5.tar.gz文件名為:ffmpeg-0.8.5.tar.gz4 下載 SDLSDL下載可以到:http://www.libsdl.org/download-1.2.php選擇:SDL-1.2.14.tar.gz - GPG signed此版本需要自己編譯,后面會(huì)解釋為什么下載該版本,而不下載編譯好的SDL-devel-1.2.14-mingw32.tar.gz (Mingw32)5 下載 pthreadGC2.dllpthreadgc2.dll 是功能強(qiáng)大的處理數(shù)字化影視作品編輯軟件premiere6運(yùn)行所需的一個(gè)DLL文件。這是一個(gè)無(wú)威脅文件。屬于Open Source Software community project的文件。直接去baidu.com三搜索下載就可以了。二 編譯步驟1 安裝 mingw 和 msys 執(zhí)行下載文件:mingw-get-inst-20110802.exe, 在第3步選擇“Download latest repository catalogues” 選擇安裝路徑:C:\MinGW(我直接采用默認(rèn)路徑,未做修改) 在“Select Components”步驟中選擇: √ C Compiler (默認(rèn)且一定選擇) √ C++ Compiler √ MSYS Basic System(選擇此項(xiàng)將會(huì)安裝msys,msys則不需要另外安裝) √ MinGW Developer ToolKit 等待安裝完成!(需要等待一定的時(shí)間,因?yàn)榘惭b過程需要下載文件,可想而知,網(wǎng)速越快,安裝越快) 安裝完成后,在C:\MinGW目錄下可以看到 msys 文件夾,msys也已經(jīng)安裝。2 配置 msys.bat 批處理文件 為了方便VS200X以及VS2010調(diào)用ffmpeg的動(dòng)態(tài)庫(kù),可以通過配置讓ffmpeg編譯時(shí)產(chǎn)生windows下調(diào)用dll對(duì)應(yīng)的lib,當(dāng)然,如果你沒有這個(gè)需要,那么就可以省略以下處理,直接進(jìn)入步驟3。 進(jìn)入:C:\MinGW\msys\1.0\文件夾,使用UltraEdit打開msys.bat文件,在文件的最最前面加入如下一行: call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat" 其中“D:\Program Files\Microsoft Visual Studio 10.0”為你機(jī)器上安裝VS200X或VS2010的目錄,我的電腦安裝的是VS2010,并且安裝在了D盤。文件修改后保存即可。3 配置 yasm 為了減少配置環(huán)境變量的麻煩,本處直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系統(tǒng)目錄下:C:\WINDOWS\system32。4 解壓ffmpeg 與 SDL ffmpeg-0.8.5.tar.gz 的解壓目錄您可以直接選擇,本人解壓到:D:\ffmpeg中,解壓后目錄為:D:\ffmpeg\ffmpeg-0.8.5 SDL-1.2.14.tar.tar 解壓到 D:\ffmpeg\ffmpeg-0.8.5 目錄下,解壓后的目錄結(jié)構(gòu)為:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.145 編譯SDL 雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動(dòng)“MinGW32”, 切換到SDL目錄:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,切換方法如下: $ cd /d $ cd ffmpeg $ cd ffmpeg-0.8.5 $ cd SDL-1.2.14 再執(zhí)行以下命令: $ ./configure --prefix=/usr 回車等待… $ Make 回車等待… $ make install 回車等待… 編譯完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夾下可以看到編譯結(jié)果。 直接編譯ffmpeg時(shí),發(fā)現(xiàn)未生成ffplay.exe, configure的時(shí)候提示信息如下: SDL support no 所以需要開啟SDL,本人頭天接觸這東西,不知道使用什么方法可以開啟,但通過編譯SDL后 SDL support yes 如果你的 SDL 已經(jīng)是開啟狀態(tài),你可以直接使用下載中提到的編譯好的壓縮包SDL-devel-1.2.14-mingw32.tar.gz,直接解壓,并把解壓包中的 bin、include和lib文件夾中的文件復(fù)制到D:\ffmpeg\ffmpeg-0.8.5,與步驟六相同,只是不在從C:\MinGW \msys\1.0中復(fù)制。6 拷貝編譯結(jié)果: C:\MinGW\msys\1.0 到 c:/mingw下 覆蓋 bin下的SDL.dll、sdl-config拷貝到 bin中 include下的 SDL文件夾拷貝到 include中 lib下的libSDL.a、libSDL.dll.a、libSDL.la和libSDLmain.a拷貝到 lib中7 修改sdl-config配置文件 使用UltraEdit打開D:\ffmpeg\ffmpeg-0.8.5\bin下的 sdl-config文件 把 prefix=/usr 該成: prefix=c:/mingw 其中:c:/mingw 為 mingw的安裝路徑,請(qǐng)根據(jù)你的安裝進(jìn)行修改。8 編譯 ffmpeg 雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動(dòng)“MinGW32”, 切換到SDL目錄:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14, 切換方法如下: $ cd /d $ cd ffmpeg $ cd ffmpeg-0.8.5 如果你的“MinGW32”沒有關(guān)閉,可以直接切換路徑到:D:\ffmpeg\ffmpeg-0.8.5。 再執(zhí)行以下命令: $ ./configure --enable-shared --disable-static --enable-memalign-hack 請(qǐng)耐心等待一段時(shí)間
$ make
需要等待很長(zhǎng)一段時(shí)間,等待編譯結(jié)束。
為了匯總編譯結(jié)果,請(qǐng)繼續(xù)執(zhí)行以下命令: $ make install 等待完成,在C:\MinGW\msys\1.0\local中將會(huì)生成 bin、include、lib等文件夾,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和頭文件等。9 運(yùn)行測(cè)試直接雙擊運(yùn)行”ffplay.exe”,如果提示沒有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷貝到當(dāng)前目錄,也可放到系統(tǒng)目錄C:\WINDOWS\system32中。avcodec.lib avformat.lib swscale.lib avutil.lib