FFmpeg是在Linux平臺下開發的,但它同樣也可以在其它操作系統環境中編譯運行,本文介紹的就是在windowsXP下編譯FFmpeg。一 準備環境:1 下載 mingw 和 MSYS去 http://sourceforge.net/projects/mingw/ 下載A 點擊“DownLoad mingw-get-inst-...exe”;B 切換到頁面:download? Check your browser's security bar, or try a direct link, or try another mirror. ;C 點擊“direct link”下載類似:mingw-get-inst-20110802.exe 的文件。提示:msys此處就不用下載了,mingw-get-inst-20110802.exe 中已經包含了msys1.0,后面安裝的時候就可以看到該選項。2 下載 yasmffmpeg編譯里面的匯編代碼需要yasm.exe 去官網: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此版本需要自己編譯,后面會解釋為什么下載該版本,而不下載編譯好的SDL-devel-1.2.14-mingw32.tar.gz (Mingw32)5 下載 pthreadGC2.dllpthreadgc2.dll 是功能強大的處理數字化影視作品編輯軟件premiere6運行所需的一個DLL文件。這是一個無威脅文件。屬于Open Source Software community project的文件。直接去baidu.com三搜索下載就可以了。二 編譯步驟1 安裝 mingw 和 msys 執行下載文件:mingw-get-inst-20110802.exe, 在第3步選擇“Download latest repository catalogues” 選擇安裝路徑:C:\MinGW(我直接采用默認路徑,未做修改) 在“Select Components”步驟中選擇: √ C Compiler (默認且一定選擇) √ C++ Compiler √ MSYS Basic System(選擇此項將會安裝msys,msys則不需要另外安裝) √ MinGW Developer ToolKit 等待安裝完成?。ㄐ枰却欢ǖ臅r間,因為安裝過程需要下載文件,可想而知,網速越快,安裝越快) 安裝完成后,在C:\MinGW目錄下可以看到 msys 文件夾,msys也已經安裝。2 配置 msys.bat 批處理文件 為了方便VS200X以及VS2010調用ffmpeg的動態庫,可以通過配置讓ffmpeg編譯時產生windows下調用dll對應的lib,當然,如果你沒有這個需要,那么就可以省略以下處理,直接進入步驟3。 進入: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”為你機器上安裝VS200X或VS2010的目錄,我的電腦安裝的是VS2010,并且安裝在了D盤。文件修改后保存即可。3 配置 yasm 為了減少配置環境變量的麻煩,本處直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系統目錄下: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 目錄下,解壓后的目錄結構為:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.145 編譯SDL 雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“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 再執行以下命令: $ ./configure --prefix=/usr 回車等待… $ Make 回車等待… $ make install 回車等待… 編譯完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夾下可以看到編譯結果。 直接編譯ffmpeg時,發現未生成ffplay.exe, configure的時候提示信息如下: SDL support no 所以需要開啟SDL,本人頭天接觸這東西,不知道使用什么方法可以開啟,但通過編譯SDL后 SDL support yes 如果你的 SDL 已經是開啟狀態,你可以直接使用下載中提到的編譯好的壓縮包SDL-devel-1.2.14-mingw32.tar.gz,直接解壓,并把解壓包中的 bin、include和lib文件夾中的文件復制到D:\ffmpeg\ffmpeg-0.8.5,與步驟六相同,只是不在從C:\MinGW \msys\1.0中復制。6 拷貝編譯結果: 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的安裝路徑,請根據你的安裝進行修改。8 編譯 ffmpeg 雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”, 切換到SDL目錄:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14, 切換方法如下: $ cd /d $ cd ffmpeg $ cd ffmpeg-0.8.5 如果你的“MinGW32”沒有關閉,可以直接切換路徑到:D:\ffmpeg\ffmpeg-0.8.5。 再執行以下命令: $ ./configure --enable-shared --disable-static --enable-memalign-hack 請耐心等待一段時間
$ make
需要等待很長一段時間,等待編譯結束。
為了匯總編譯結果,請繼續執行以下命令: $ make install 等待完成,在C:\MinGW\msys\1.0\local中將會生成 bin、include、lib等文件夾,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和頭文件等。9 運行測試直接雙擊運行”ffplay.exe”,如果提示沒有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷貝到當前目錄,也可放到系統目錄C:\WINDOWS\system32中。avcodec.lib avformat.lib swscale.lib avutil.lib