用mingw32編譯ffmpeg2.7
阿新 • • 發佈:2017-06-23
call ins encoder mage 編譯 rate fst edi 版本 1. 下載x265最新源碼;
下載ffmpeg源碼(我用的是2.7);
下載cmake最新版本並安裝;
下載SDL(我用的SDL-1.2.15);
下載mingw-get-setup.exe,在“Select Components”步驟中選擇:
√ C Compiler (默認且一定選擇)
√ C++ Compiler
√ MSYS Basic System(選擇此項將會安裝msys,msys則不需要另外安裝)
√ MinGW Developer ToolKit
並apply change安裝。
2. 配置 msys.bat 批處理文件
為了方便VS2005調用ffmpeg的動態庫,可以通過配置讓ffmpeg編譯時產生windows下調用dll對應的lib,當 然,如果你沒有這個需要,那麽就可以省略以下處理,直接進入步驟3。 進入:C:\MinGW\msys\1.0\,使 用UltraEdit打開msys.bat文件,在文件的最最前面加入如下一行:
call "D:\開發軟件安裝文件夾\VS2005\VC\bin\vcvars32.bat"
3. 使用Notepad++修改C:\MinGW\msys\1.0\etc目下的fstab文件,修改其內容為:C:/MinGW,即為MinGW的安裝路徑。(如果是這樣已配好,就不需要改)
4. 添加環境變量
在系統環境變量PATH前面添加 C:\MinGW\msys\1.0\bin和C:\MinGW\bin
5. 配置 yasm
為了減少配置環境變量的麻煩,本處直接把yasm-1.1.0-win64.exe 文件名修改成:yasm.exe,並放到目錄:C:\MinGW\msys\1.0\bin下,把
復制到C:\MinGW\msys\1.0\bin下,防止報錯。
6.安裝cmake,並且配置環境變量的path指向安裝路徑。運行msys。
7.進入到x265/build/msys目錄,執行 make-Makefiles.sh
8.彈出界面,然後依次點 “configure” “generate”按鈕,如果步驟7、8提示ES_AW AYMODE_REQUIRED相關的錯誤,則進入到x265.cpp中加入定義“#define ES_AWAYMODE_REQUIRED 0x00000040”
9.在C:\Program Files (x86)\x265 生成 bin、include、lib,將include、lib復制到C:\MinGW\msys\1.0下,主要是為了方便編譯ffmpeg鏈接的目錄,任何額外庫編譯完成都要復制到該目錄下,方便統一調用。
10. 編譯SDL(可選項)
SDL-1.2.15.tar.tar 解壓, 進入到解壓目錄,
再執行以下命令:
./configure
make
make install
編譯結果在:C:\MinGW\msys\1.0\local 目錄下
使用UltraEdit打開C:\MinGW\msys\1.0\local\bin下的 sdl-config文件
把 prefix=/usr/local 該成: prefix=C:/MinGW
其中:C:/MinGW 為 mingw的安裝路徑,請根據你的安裝進行修改。為了編譯時msys能識別sdl並開啟 SDL support yes 進行編譯,請把C:\MinGW\msys\1.0\local編譯結果bin、include和lib中有關sdl的拷貝一份到C:/MinGW對應目錄中。
11.開始編譯ffmpeg,進入下載的ffmpeg目錄中,配置:(64位電腦需要時加上--cpu=i686)
./configure --enable-shared --disable-static --enable-ffplay --enable-memalign-hack --enable-gpl --enable-libx265 --cpu=i686 --extra-cflags=-IC:/MinGW/msys/1.0/include --extra-ldflags=-LC:/MinGW/msys/1.0/lib --prefix=C:/MinGW/msys/1.0/complied_result
然後make、make install之後在C:/MinGW/msys/1.0/complied_result下則可以看到編譯結果。
運行ffmpeg會提示無x265.exe,則把x265.exe復制到當前bin目錄下。
註:在開始編譯之前,可以把原來編譯的目標文件清除掉:make distclean
ffmpeg命令行執行錄制的時候,提示錯誤“”The encoder ‘aac‘ is experimental but experimental codecs are not enabled, add ‘-strict -2‘ if you want to use it”,網上看直接在命令中add ‘-strict -2‘ 就可以了,但是我這裏加了沒有效果。
解決方法:
在configurate時--enable-libfaac,這時候可能會提示你nonfree,那就再開啟nonfree好了, --enable-nonfree,重新編譯,問題解決。
a、需要註釋掉faad2-2.7\frontend\main.c中第34行的#define off_t __int64語句。
b、faac-1.28需要打補丁,調用下面命令將補丁faac-1.28.diff(本文開頭網址提供資源中包含此文件)打上
patch -p1 < faac-1.28.diff
c、在編譯faad和faac前需要在相應目錄下調用./bootstrap命令。
![技術分享](http://images2015.cnblogs.com/blog/444304/201706/444304-20170623192920788-227271310.png)
用mingw32編譯ffmpeg2.7