windows下開發ffmpeg編譯過程

windows下編譯ffmpeg是個費盡的事情,本文主要參考以下文章

http://blog.csdn.net/jszj/article/details/4028716,需要下載的軟件原文都給出了鏈接,最後結合自己的開發過程總結。

1.下載ffmpeg源代碼

下載網址:svn://svn.mplayerhq.hu/ffmpeg/trunk
首先需要安裝svn客戶端,我用的是TortoiseSVN,應該是可以很方便地從網上下載,下載之後安裝。
安裝之後,在你要保存ffmpeg源代碼的位置上點右鍵,然後選擇check out,輸入以上的網址,包括前面的“svn:”,然後點OK按鈕,它會把整個源代碼下到本地,根據網速,可能幾秒鐘到幾十分鐘不等。
2. 安裝windows下的編譯系統
2.1 安裝MSys
首先下載以下軟件:
• MSYS-1.0.11-2004.04.30-1.exe
• MSYS-1.0.11-20080821-dll.tar.gz
• bash-3.1-MSYS-1.0.11-snapshot.tar.bz2
• coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2
• make-3.81-MSYS-1.0.11-2.tar.bz2
安裝MSYS-1.0.11-2004.04.30-1.exe 的最後會出現一個dos窗口,大意是讓用戶選擇是否讓msys自己提交install,輸入n後回車,以表示我們不允許msys自己進行這個操作。
爲了方便後面的敘述,我們假設msys安裝到了默認的目錄c:/msys/1.0下。
執行如下操作:
 1.解壓MSYS-1.0.11-20080821-dll.tar.gz 到c:/msys/1.0下,覆蓋原目錄.
2.解壓bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 後,從解壓出的目錄中,bin下拷貝sh.exe到c:/msys/1.0/bin下,如果原來存在,則覆蓋之,這個解壓後的目錄可以刪除.
3.解壓 coreutils,然後拷貝解壓出來的 coreutils-5.97/bin/pr.exe 到c:/msys/1.0/bin中解碼make-3.81-MSYS-1.0.11-2.tar.bz2 到c:/msys/1.0下,如果有文件存在,則覆蓋它們爲了產生正確的庫文件,需要修改c:/msys/1.0/msys.bat:
使用記事本打開該文件,然後在其最開始處添加:
call "C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/vcvars32.bat"
注意:這一行必需處在此文件的最開始處,同時修改你的vc路徑,指定vc的vcvars32.bat文件位置並招待它
2.2 安裝MinGW
下載以下6個安裝包:
• binutils-2.18.50-20080109-2.tar.gz
• mingwrt-3.15.1-mingw32-dll.tar.gz
• mingwrt-3.15.1-mingw32-dev.tar.gz
• w32api-3.13-mingw32-dev.tar.gz
• gcc-core-3.4.5-20060117-1.tar.gz
• gcc-g++-3.4.5-20060117-1.tar.gz
解壓以上6個到c:/msys/1.0/mingw中,如果有重複的,則覆蓋掉。
2.3 整合MinGW 和 msys系統
這一步非常簡單,修改c:/msys/1.0/etc/fstab.sample的名稱爲:fstab,即把括展名直接去掉,然後用記事本打開,修改
c:/mingw /mingw

c:/msys/1.0/mingw /mingw
然後保存即可,修改的內容應該是自己的安裝路徑。
2.4 安裝yasm
直接把下載後重命名的yasm.exe放置到C:\msys\1.0\mingw\bin中
3.編譯選項
首先啓動msys,c:/msys/1.0/msys.bat在shell上的提示符下進入ffmpeg目錄,如cd f:進入f盤。
編譯一般是三個步驟,首先配置,然後編譯,最後安裝。如果是改變編譯方式,則還要在配置之前先clean。我們這裏是編譯的靜態庫,編譯選項配置如下:
./configure --prefix=./ffmpeg-sdk/ --enable-static --enable-gpl --enable-version3 --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --enable-w32threads --disable-network --enable-memalign-hack --disable-everything --enable-decoder=h264 --enable-decoder=mpeg2video --enable-parser=h264 --enable-encoder=mpeg2video --disable-debug
注意:紅色部分是最終生成的文件路徑。
然後make;
最後make install;
4.編譯時的問題
1.需要配置相應的路徑,將編譯後生成目錄配置到vc++包含目錄和lib目錄。
2.將C:\msys\1.0\mingw\include目錄下的_mingw.h,inttypes.h,stdint.h三個文件複製到 編譯生成目錄下的include目錄中,如我的是F:\ffmpeg\trunk\ffmpeg-sdk\include
3.由於編譯問題,需要修改在最後一行的#endif /* __MINGW_H */前面添加#define __restrict__,如下
#define __restrict__
#endif /* __MINGW_H */
4.出現錯誤“UINT64_C”: 即使使用參數相關的查找,也未找到標識符,需要修改common.h文件,添加如下內容:
#ifndef INT64_C 
#define INT64_C(c) (c ## LL) 
#define UINT64_C(c) (c ## ULL) 

#endif

5.如果出現包含的lib庫不存在,則需要在C:\msys\1.0\mingw\lib中找到需要的lib,然後複製到包含目錄中去。

最後祝大家好運,按照上面的過程應該是沒有問題的。

發佈了43 篇原創文章 · 獲贊 13 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章