?? ffmpegcompile.txt
字號:
在Windows平臺下FFMPEG編譯的詳細過程錄
FFmpeg在Windows系統下的編譯過程如下:
1)下載MSys程序:
MINGW下載地址:
http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download
http://sourceforge.net/project/showfiles.php?group_id=2435
下載文件:
bash-3.1-MSYS-1.0.11-1.tar.bz2(中間有src字樣的為該程序的源代碼)
msysCORE-1.0.11-20080826.tar.gz (無特殊原因最好用新版本的)
解壓msysCORE-1.0.11-20080826.tar.gz,比如解壓到D:\msys(以下均為該路徑)
只解壓bash-3.1-MSYS-1.0.11-1.tar.bz2中的子目錄bin,其他的目錄不需要關心。
復制bin目錄到D:\msys\,提示是否要覆蓋,選擇是。
執行“D:\msys\postinstall”目錄下pi.bat,在出現提示后輸入 n 回車,提示按任意鍵退出。
2)下載MinGW程序:
MSYS下載地址:
http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download
http://sourceforge.net/project/showfiles.php?group_id=2435
下載文件:
MinGW-5.1.4.exe (這是一個自動下載且可選是否自動安裝的安裝包,建議只下載不安裝)
得到如下壓縮包:
binutils-2.18.50-20080109-2.tar.gz
gcc-core-3.4.5-20060117-3.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
w32api-3.11.tar.gz
w32api-3.13-mingw32-dev.tar.gz
把它們全部解壓到D:\msys\mingw中去。
3)修改 msys.bat:
用文本編輯器打開D:\msys\msys.bat,由于打算要用MSVC++鏈接到FFmpeg的庫,
所以需要有.lib文件才行,這些.lib文件可以使用微軟的工具中的lib命令產生,
所以要預先安裝VC++。
把下面一行加到msys.bat的最前面,把路徑替換成機器上vcvars32.bat實際存在的路徑,
比如我的在“D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin”,
于是就添加:
call "D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7bin\vcvars32.bat"
4)系統整合:
復制 D:\msys\etc\fstab.sample 為 D:\msys\etc\fstab,
需要使用一個支持Unix換行風格的編輯器
打開D:\msys\etc\fstab編輯(比如Notepad++)。
把這行:C:/mingw /mingw 改為:d:/msys/mingw /mingw
完成以上步驟,MSys+MinGW系統就配置完成了。
5)編譯:
首先通過MSys安裝目錄下的msys.bat啟動MSys,這時會出現一個命令行窗口,
它是一個運行著 bash 的rxvt程序。
這是一個在Windows上運行并且就像是在使用一個真正的Linux shell。
不過使用這個shell時需要注意:
1. 目錄名使用左斜杠來分割,而非Windows所使用的右斜杠;
(比如"D:/ffmpeg"而非D:\ffmpeg")。
2. 盤符(例如"C:\")可以從根目錄處訪問(像這樣"/C/");
3. 文件名或目錄名中如果帶有空格,必須用雙引號括起(例如"/C/Program Files")。
下面切換到存放FFmpeg源代碼的目錄,方法是輸入:cd /D/ffmpeg
6) 添加SDL
http://www.libsdl.org/release/SDL-devel-1.2.11-mingw32.tar.gz
解壓該軟件包;
將lib下的所有文件復制到C:\msys\mingw\lib;
將include下的所有文件復制到C:\msys\mingw\include;
將bin下的i386-mingw32msvc-sdl-config復制到C:\msys\mingw\bin,并重命名為sdl-config;
將prefix 由Users/hercules/tmp/SDL-1.2.13 改為/mingw
將bin下的SDL.dll復制到C:\msys\mingw\bin
7)編譯ffmpeg
#cd /D/msys/home/Administrator/ffmpeg
#./configure --enable-ffplay --enable-memalign-hack --prefix=/mingw/ --enable-shared --disable-static --enable-w32threads --enable-debug=3
#make
#make install
配置說明: --enable-memalign-hack選項是FFmpeg在Windows上編譯成功所必須指定的,
待配置完成后,將回到命令提示符。
如果沒有錯誤的話,就可以"make"具有基本功能的FFmpeg了,在提示符后輸入:make
編譯的過程將持續很長時間。如果一切正常,結束后將返回提示符。
這時程序已經編譯好了,在存放FFmpeg源代碼的目錄下可以找到ffmpeg.exe這個文件。
如果希望把FFmpeg安裝到系統中,可以執行安裝步驟:"make install",
這將會復制所有生成的重要文件到MSys的local文件夾下。
如果希望使用FFmpeg包含的libavcodec庫開發多媒體文件處理程序,還需要編譯
libavcodec的dll動態鏈接庫,編譯過程和上述過程稍有差別,如下所述:
首先切換到FFmpeg的源代碼目錄,
在開始編譯前先使用"make distclean"清理上一次留下的中間文件,
然后向configure腳本多傳遞兩個參數:
./configure --enable-shared --disable-static --enable-memalign-hack
如果沒有錯誤的話,在提示符后輸入:make
libavcodec的lib靜態庫,編譯過程和上述過程稍有差別,如下所述:
./configure --enable-static --disable-shared--enable-memalign-hack
如果沒有錯誤的話,在提示符后輸入:make
在FFmpeg目錄下有三個子目錄名字分別為:libavutil、libavcodec和libavformat;
如果在前述步驟中成功生成了動/靜態鏈接庫,例如我生成的是avcodec-51.lib、
avformat-51.lib 和 avutil-49.lib,MSVC++可以從這些文件中知道dll的導出函數。
10. 添加SDL
http://www.libsdl.org/release/SDL-devel-1.2.11-mingw32.tar.gz
解壓該軟件包;
將lib下的所有文件復制到C:\msys\mingw\lib;
將include下的所有文件復制到C:\msys\mingw\include;
將bin下的i386-mingw32msvc-sdl-config復制到C:\msys\mingw\bin,并重命名為sdl-config;
將prefix 由Users/hercules/tmp/SDL-1.2.13 改為/mingw
將bin下的SDL.dll復制到C:\msys\mingw\bin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -