1. 程式人生 > >win7_32下編譯FFmpeg

win7_32下編譯FFmpeg

報錯 位置 沒有 mda 不同 path ret 知識庫 oca

運行環境: 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