Windows下編譯安裝 FFmpeg

##前言
最近我的視頻課《FFmpeg音視頻核心技術(shù)精講與實戰(zhàn)》終于與大家見面了。在學生學習的過程中不斷有學生反饋一些問題,其中較多的是如何在Windows 上編譯 ffmpeg。
在Linux/Mac下編譯 ffmpeg是非常方便的。但要在 Windows下編譯 ffmpeg還真要花點時間。不過為了滿足學員的要求,也方便自己不再被這類問題打擾,今天我就寫一下在 Windowns下編譯ffmpeg的步驟,以供大家參考。
安裝Cygwin
在windows下安裝 ffmpeg 的最好方式就是使用Cygwin。 Cygwin是什么呢?簡單的說,就是在 Windows上裝了一個Linux模擬器。然后你可以在這個模擬器上按照Linux的方式操作 Windows系統(tǒng)。因此,Windows安裝了Cygwin之后,你就把它當Linux用就可以了。
既然在Windows上裝Cygwin之后,可以像Linux一樣操作,那當然編譯ffmpeg也就相當?shù)姆奖懔?。下面我們就開始安裝它吧。
首先,到 Cygwin官網(wǎng)下載 Cygwin 的可執(zhí)行程序 setup-x86_64.exe。當然,它是 64位的,如果你現(xiàn)在還在用 32位的,那請在 Cygwin官網(wǎng)上找 32位對應的版本。
第二步安裝Cygwin。安裝 Cygwin的操作非常簡單,就是下一步,下一步。但
需要注意一點,在安裝的時候我們需要將必須的包安裝上。主要有下面幾個包:
1. gcc
2. g++
3. make
4. cmake
5. automake
6. gdb
7. nasm
8. yasm
9. wget
這幾個包如何安裝呢?要在選擇安裝包的界面里選"Full"選項,它表式在所有的可安裝包里選擇,然后在搜索框里填入上面的關(guān)鍵字就可以搜索到了。經(jīng)過上面的步驟你應該已經(jīng)成功將 Cygwin 安裝到你的 Windows 系統(tǒng)上了。
安裝 apt-cyg
雖然我們上面安裝好了 Cygwin,但還是很不方便,為什么呢?主要是因為 Cygwin目前設計的還不是很人性化。如果我們安裝好Cygwin后,如果缺少了某個包想安裝的話就特別麻煩。還需要重新安裝 Cygwin才能解決,有沒有更好的方式呢?
你遇到的困難,別人也會遇到,不同的是你要么忍了,要么不用了。可別人遇到困難后會去解決困難,這才是人與人之間最大的不同。
話扯的有點遠哈。沒錯,已經(jīng)有人幫我們解決了這個問題。這是一個很好用的開源工具,它叫 apt-cyg
。它與 Ubuntu系統(tǒng)中的 apt一樣特別好用,而且使用的方式與 apt也是一個樣子的。
如何安裝它呢?網(wǎng)上有很多方法,但很多不可行。大家按我這個方法操作一定可以安裝成功。
其實,apt-cyg就是一個腳本。我們只需要將這個腳本下載下來就OK了。這里是apt-cyg的下載地址。大家可以在Cygwin下執(zhí)行下面的命令就好了。
第一步:
第二步:
有了這個神器,我們就可以安裝一些Linux下的常用命令了,是不是很爽?
比如我們要裝某個包就可以用 apt-cyg instal xxx
這樣來安裝了。
安裝pkg-config工具
在Windows系統(tǒng)下,一般不會默認安裝該工具,所以在Windows下做實驗的同學大都會遇到明明已經(jīng)裝了某個庫,但仍然找不到該庫的情況。其原因就是沒有安裝 pkg-config
這個工具。
首先確認是否已經(jīng)將 pkg-config
工具安裝好了??梢詧?zhí)行下面的命令:
如果提示沒有安裝,則先將該工具安裝好,安裝命令如下:
編譯安裝 ffmpeg
先別高興的太早,雖然有了apt-cyg這個神器,但它目前只能安裝Linux下的一些常用命令,像我們編譯時需要的 x264, x265這些庫它是無法找到的。
不能找到的原因也很簡單,是由于沒有人把編譯好的庫放到apt-cyg 可以夠到的源上。
沒有辦法,所以我們還必須要用最原始的方法,下代碼自己進行編譯。下面我們就一步一步的來吧
編譯 yasm
編譯 fdk-aac
安裝lame
注:編譯lame遇到的問題:
問題一:
在Cygwin下安裝 lame的時候遇到執(zhí)行 ./configure 失敗的情況。如"error: cannot guess build type; you must sepcify one"
,對這個問題可以通過下面的步驟來解決:
安裝automake。可以通過
which automake
來確認automake 是否已經(jīng)安裝。如果沒有安裝,可以通使用apt-cyg install automake
進行安裝。確認automake當前版本??蓤?zhí)行
automake --version
獲取當前automake的版本號。將 lame目錄下的 config.guess文件替換為 /usr/share/automake-version下的config.guess 文件。
此時,再執(zhí)行./configure進就可以下成功了。
問題二:
make時出現(xiàn)?
的錯誤,解決辦法如下:
打開出錯文件 vi ./frontend/lametime.c
將下面這段代碼注釋掉
再執(zhí)行make就可以成功了。
安裝nasm
安裝x264
安裝ffmpeg
從ffmpeg官網(wǎng)下載代碼編譯, 編譯方法如下:
FFmpeg編譯的問題
問題一:找不到 fdk-aac庫
在編譯ffmpeg時,有可能會報找不到fdk_aac庫的錯誤。此時我們應該設置一下 PKG_CONFIG_PATH,指定ffmpeg到哪里找我們安裝好的庫。
上面通過源碼安裝的庫,默認地址為/usr/local/lib下面,當然你可以通過./configure 中的–prefix參數(shù)改變這個目錄。
如果使用默認路徑的話,可以通過下面的命令來指定編譯時去哪里找?guī)?/p>
如果你改變了默認路徑,則將后面的?/usr/local/lib/pkgconfig
修改為你變更后的路徑/xxx/.../lib/pkgconfig
即可。
小結(jié)
通過上面的步驟我們就可以成功的從 Window上編譯出我們可以執(zhí)行的 ffmpeg了。
需要注意的是,ffmpeg是高度可訂制的,你可以根據(jù)自己的需要編譯出支持不同編解碼的ffmpeg庫,但方法都是一樣的。(不知這句話同學們是否真正理解?)
總的思路就是ffmpeg缺什么庫,我們就下載相應庫的源碼給它編譯好。然后增加ffmpeg相應的配置選項,再重新編譯 ffmpeg。
有了上面的知識,我們也可以編譯出支持 x265的ffmpeg了,對不對?千萬不要告訴我你還不會喲!