win7_32下編譯FFmpeg
運行環境: VC2010軟件; [附:本文所用軟件安裝包:http://download.csdn.NET/detail/sinat_36666600/9705438]
1、下載mingw-get-setup.exe [網站:https://sourceforge.net/projects/mingw/]
安裝步驟很簡單,一直next就行。然後把basic setup中的 “1”點右鍵選擇“make for installation”全部選擇就行。最後點擊“2”中的apply changes安裝。(註:若提示錯誤框,或關閉下圖安裝框時跳出提示,且提示的大意為有的插件沒有安裝,則選擇“Review changes”,然後選擇“apply changes”可繼續下載安裝。直到全部安裝好,沒有任何錯誤退出最好。)
或參考網上的教程,不再贅述。
2、“我的電腦”右鍵“屬性”,選擇“高級系統設置”,點擊“環境變量”。在“系統變量”框中找到“Path”,點擊“編輯”,在末尾加入代碼:“C:\mingw\bin;”。(註意末尾的分號,為英文輸入法。根據安裝的mingw的路徑而改變位置)
3、用記事本的方式打開C:\mingw\msys\1.0(其中C:\mingw為安裝mingw的位置。從這裏也能看出,安裝了mingw後自動安裝了“msys”,從而不用自己再配置msys)目錄中的msys.bat。在最頂部位置添加如下代碼:
call "D:\Program Files\Microsoft Visual Studio 2010\VC\bin\vcvars32.bat"
其中,“D:\Program Files\Microsoft Visual Studio 2010”為軟件Microsoft Visual Studio 2010的安裝路徑,根據安裝路徑的不同而對應更改即可。
效果如下圖:
4、下載最新版yasm.exe [網址:http://yasm.tortall.net/Download.html] 選擇“win32.exe(for general use on 32-bit windows)”根據系統的不同而改變。
為了減少配置環境變量的麻煩,本處直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,並放到系統目錄下:C:\WINDOWS\system32。
5、下載最新版本的ffmpeg[網站:http://www.ffmpeg.org/download.html#get-sources] 解壓出來即可。
6、編譯ffmpeg:
把步驟5中的壓縮包解壓到C:\ffmpeg後。打開“C:\mingw\msys\1.0\msys.bat”文件。
輸入命令:
cd /c
cd ffmpeg
./configure --enable-memalign-hack --disable-debug
以上代碼意思為:進入ffmpeg文件夾所在路徑“C:\ffmpeg”。然後“./configure --enable-memalign-hack”編譯ffmpeg,且“--enable-memalign-hack”必不可少!
一段時間後,顯示如下錯誤:
7、根據網站:
http://stackoverflow.com/questions/1710922/how-to-install-pkg-config-in-windows
下載相應的安裝包,然後按步驟操作:
(1)下載pkg-config_0.26-1_win32.zip
(2)解壓後把“bin”文件夾下的“pkg-config.exe”文件復制到“C:\mingw\bin”下,其余文件可刪除。(註:在別的地方下載的pkg-config壓縮文件,解壓後可能沒有pkg-config.exe文件。所以建議到此網站上下載。)
(3)下載gettext-runtime_0.18.1.1-2_win32.zip
(4)解壓後把“bin”文件夾下的“intl.dll”文件復制到“C:\mingw\bin”下,其余文件可刪除。
(5)下載glib_2.28.8-1_win32.zip
解壓後把“bin”文件夾下的“libglib-2.0-0.dll”文件復制到“C:\mingw\bin”下,其余文件可刪除。
最後,再次進行步驟6。發現沒有錯誤了,可以運行。如下圖所示:
然後再進行以下兩步:
make
make install
“make”時會進行長時間的編譯,所以請耐心等待。最後“make install”安裝。全部完成後,可在ffmpeg文件目錄下發現“ffmpeg.exe”“ffprobe.exe”等文件,唯獨沒有“ffplay.exe”。在網上百度了下,原因是沒有編譯SDL。
第二部分 —— 完整編譯:
首先,進行上面的1~5步驟,然後再進行下面的步驟:
1、在官網下載x264[網站:http://www.videolan.org/developers/x264.html]
然後解壓到之前的ffmpeg目錄下C:\ffmpeg。 然後啟動C:\mingw\msys\1.0\msys.bat。輸入命令,進入到x264目錄下:
cd /c
cd ffmpeg
cd x264
./configure --enable-shared --disable-asm
make
make install
編譯完成後,在C:\mingw\msys\1.0\local目錄下可看到bin、include和lib文件夾,都為x264的文件。
2、下載SDL,[網站:http://www.libsdl.org/download-2.0.php] 選擇其中的“SDL2-devel-2.0.5-mingw.tar.gz (MinGW 32/64-bit)”。這是已經編譯好好的SDL文件,解壓後直接拿來用就ok了。
將i686-w64-mingw32下的lib的所有文件復制到C:\mingw\lib;
將i686-w64-mingw32下的include的所有文件復制到C:\mingw\include;
將i686-w64-mingw32下的bin的所有文件復制到C:\mingw\bin;
3、最後,編譯ffmpeg。
cd /c
cd ffmpeg
./configure --enable-shared --enable-ffplay --enable-memalign-hack --enable-gpl --enable-libx264 --extra-cflags=-Ic:/mingw/msys/1.0/local/include --extra-ldflags=-Lc:/mingw/msys/1.0/local/lib
註意:“--extra-cflags=-I”以及“--extra-ldflags=-L”後的是包含了libx264.h頭文件的目錄和相關庫,根據相應的位置而改動,若不加那兩個代碼就會有如下圖的錯誤:
耐心等待一段時間後,再:
make
make install
沒有報錯,檢查c:\ffmpeg文件,發現其中生成了“ffmpeg.exe”、“ffplay.exe”、“ffprobe.exe”等文件。
4、雙擊打開c:\ffmpeg目錄下的“ffplay.exe”,彈出如下錯誤提示:
其實這個文件就在C:\mingw\msys\1.0\local\bin目錄下。
但是打開C:\mingw\msys\1.0\local\bin目錄下的“ffplay.exe”沒有錯誤提示。將測試“h264”、“mpg”等格式的視頻直接拖入這裏面的ffplay.exe中可以順利播放,但是沒有聲音。因為沒有加入音頻的編解碼庫。
註意事項:
-1- 通過以下代碼編譯lame-3.97時不會有問題:
./configure --disable-shared (首選)
或 ./configure --disable-static --enable-shared
make
make install
但在編譯ffmpeg時加入“--enable-libmp3lame”會報錯,如下圖:
暫時還沒找到解決辦法。
若編譯最新版的lame-3.99.5,則會出現下圖錯誤:
-2- 編譯SDL時,會出現如下錯誤:
顯示紅色框中內容時彈出2次如下圖對話框:
把編譯指令改為如下,則可編譯成功:
./configure --disable-nasm
make
make install
若編譯SDL2版本,也會報錯。所以,建議使用已經編譯好的SDL2-devel-2.0.5-mingw.tar.gz這種文件,直接復制粘貼到對應文件夾即可。
win7_32下編譯FFmpeg