1. 程式人生 > >用mingw32編譯ffmpeg2.7

用mingw32編譯ffmpeg2.7

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命令。

用mingw32編譯ffmpeg2.7