win下編譯ffmpeg庫,Compile and build ffmpeg library and dll on Windows x64( 正版)

來源:互聯網
上載者:User

標籤:style   http   get   使用   檔案   os   

轉載請註明:來自EricKing,thanks

從沒想到編一個library這麼坑爹,再次提醒各位百度的東西只能參考,想節約時間還是要到官網上去查看docum。不廢話了,開始詳細過程:

——》1.搭建Win下的GCC編譯環境(因為win下vs不支援ffmpeg的compile 和build,官網上也有說這一點)

——》2.下載latest ffmpeg source(後面附官網地址),想辦法將編譯後的檔案做成dll,這是win下編程調試的核心

          (這裡就用到vs下的一個vc的bash檔案叫vcvars32.bat,注意不管你的系統是32的還是x64的,這個bash都可以完成組建dlsl)

——》3.compile and build(這裡要做好路徑的設定,第一步裡完成,同時學會分析config.log這個檔案,發現自己到底是gcc沒配好,還是一些解碼庫沒有,或者是common.h的問題,當然common.h的問題多是在make時報出問題的,而gcc沒配好,在config時就會報:gcc is unable to create an executable file.If gcc is a cross-compiler, use the --enable-cross-compile option.這是第一步沒有弄好)。最後,一個重要的技巧是,輕量化自己的ffmpeg開發庫。就是在make後,再做一部make install操作。這一步主要是完成include file和dll的最佳化,從make結果中已經產生好的dll,lib等。

ok,有了大致的概念,下面就是詳細步驟(這裡有參考網路的資料,但是有重要的不同,請務必注意):

1.搭建在win上的GCC:

 準備編譯環境MinGW:http://sourceforge.net/projects/mingw/files/,點擊Download mingw-get-setup.exe,請採用了預設安裝,路徑C:\MinGW;安裝mingw,在管理器裡選擇必要的gcc、msys等選項。至於ada和frotan選項,最好不要選,安裝費時,至此編譯環境基本具備,下邊就是配置相關的編譯工具。 

2.到官網下載最新的ffmpeg source:http://ffmpeg.zeranoe.com/builds/source/ffmpeg/,為了安全起見,請用7-zip這一解壓軟體去解壓,如果你非要右鍵解壓,我也沒意見,就是存在一些解壓後檔案出問題的情況,損壞一些ffmpeg檔案,不過這個風險有一些機率問題存在,這裡只能給暴力的你一點祝福吧。

下一步,(注意:這一步可以做,也可以不做)下載最新的yasm:http://yasm.tortall.net/Download.html

選擇對應你系統的yasm.exe  (我的系統是win7 32位的選擇的Win32.exe);

將下載的yasm*.exe改名為yasm.exe(x64也改成這個,但是除了放到system32下,也請放到SysWOW64下) 放入C盤下/windows/system32/目錄下,這樣就省去了環境變數的設定 。

ps:如果在後面的configure ffmpeg時報gcc路徑不對的問題(具體得查看log,來精確斷定是這一問題),那請這麼做:

開啟電腦的屬性--》環境變數--》給系統級的環境變數PATH添加2個變數,C:\MinGW\msys\1.0;C:\MinGW\msys\1.0\bin

下一步,進入mingw安裝目錄下:C:\MinGW\msys\1.0找到msys.bat檔案,記事本開啟編輯(這裡推薦安全的notepad++來編輯,因為win txt editor編輯bash,save時可能會出現問題),在最前邊加上一行:

call "C:\Program Files(x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat"

這樣做的目的是連結VS,來產生window下的庫檔案。上面的路徑是對應你裝的VS路徑,我的環境是VS2012。注意:這一行必需處在此檔案的最開始處(把它放到除去rem開頭之外的最前面不能正常工作,是因為win下MinGW在遇到echo後不預設運行後面的配置)。如果是你的os是x64位的,還需要對該檔案的 _WindowsNT 處進行修改,緊跟這一行的下面一行添加:

rem Hopefully a temporary workaround for getting MSYS shell to run on x64

rem (WoW64 cmd prompt sets PROCESSOR_ARCHITECTURE to x86)

if not "x%PROCESSOR_ARCHITECTURE%" == "x64" goto _NotX64

set COMSPEC=%WINDIR%/SysWOW64/cmd.exe

%COMSPEC% /c %0 %1 %2 %3 %4 %5 %6 %7 %8 %9

goto EOF

:_NotX64

 注意:這裡第三句,要看清楚了自己的cpu核心到底是AMD的還是intel的,如果是後者,就向這樣就ok了,如果是AMD的就將“x64”改為“xAMD64”,這裡這麼做無法就是要引導gcc使用正確的cpu。我就是按百度的結果,沒有看官網,導致gcc一直路徑不對,自坑的娃都是淚啊!

Ok,上面都做完了,就進入compile了:

3.Compile and build:

進入C:\MinGW\msys\1.0,雙擊msys.bat啟動MSYS, 這時候就進入了你比較熟悉的類似Linux環境了,這個環境下允許類似Linux的bash操作,接著進入下載的ffmpeg目錄

在ffmpeg目錄下 執行:

1.static lib:

./configure --disable-shared --enable-static --enable-decoder=h264 --enable-memalign-hack

2.dynamic lib:

./configure --enable-shared  --enable-decoder=h264  --enable-memalign-hack

 (ps:每次config前最後clean一下,命令:make distclean ;如果要compile ffmpegpaly,還需要下載DSL,解壓出相應的bin,lib,include內容,copy到指定的msys/1.0/bin,lib,include下,同時要對bin下的sdl-config用notepad++修改一下他的prefix = C:/MinGW,config的時候,gcc會自動開啟sdl)

(waiting for config……)

這裡值得注意的是,--enable-memalign-hack選項是FFmpeg在Windows上編譯成功所必須指定的,參數設定的時候有一定的順序,有可能造成後面make失敗,這裡的幾個命令,你沒必要緊張,只要有最後一項,其他的以後用到再重新config都沒問題。

當然,configure的參數可以根據需要自己設定,執行./configure --help 查看參數詳情。

make

   開始生產lib,dll等……

make install(最好去做這一步,難得的自動打包。。。)

ok,在C:\MinGW\msys\1.0的bin,include和lib目錄下產生了最新的.lib和.dll庫檔案,不是網上很多說的在local下,否則找死你啊。。。。,接下來就可以在window平台下調用庫並開發ffmpeg的應用了。

Thanks from Ericking,enjoy it.最後ps一句,尊重著作權,不只是我寫得這篇,更有ffmpeg的開源GPL協議。因為他們的恥辱柱上曾經或者現在還掛滿了我國的某些著名互連網公司,哈哈。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.