原文鏈接:https://www.imooc.com/article/247113
##前言
最近我的視頻課《FFmpeg音視頻核心技術精講與實戰》終於與大家見面了。在學生學習的過程中不斷有學生反饋一些問題,其中較多的是如何在Windows 上編譯 ffmpeg。
在Linux/Mac下編譯 ffmpeg是非常方便的。但要在 Windows下編譯 ffmpeg還真要花點時間。不過爲了滿足學員的要求,也方便自己不再被這類問題打擾,今天我就寫一下在 Windowns下編譯ffmpeg的步驟,以供大家參考。
安裝Cygwin
在windows下安裝 ffmpeg 的最好方式就是使用Cygwin。 Cygwin是什麼呢?簡單的說,就是在 Windows上裝了一個Linux模擬器。然後你可以在這個模擬器上按照Linux的方式操作 Windows系統。因此,Windows安裝了Cygwin之後,你就把它當Linux用就可以了。
既然在Windows上裝Cygwin之後,可以像Linux一樣操作,那當然編譯ffmpeg也就相當的方便了。下面我們就開始安裝它吧。
-
首先,到 Cygwin官網下載 Cygwin 的可執行程序 setup-x86_64.exe。當然,它是 64位的,如果你現在還在用 32位的,那請在 Cygwin官網上找 32位對應的版本。
-
第二步安裝Cygwin。安裝 Cygwin的操作非常簡單,就是下一步,下一步。但
需要注意一點,在安裝的時候我們需要將必須的包安裝上。主要有下面幾個包:
1. gcc
2. g++
3. make
4. cmake
5. automake
6. gdb
7. nasm
8. yasm
9. wget
這幾個包如何安裝呢?要在選擇安裝包的界面裏選"Full"選項,它表式在所有的可安裝包裏選擇,然後在搜索框裏填入上面的關鍵字就可以搜索到了。經過上面的步驟你應該已經成功將 Cygwin 安裝到你的 Windows 系統上了。
安裝 apt-cyg
雖然我們上面安裝好了 Cygwin,但還是很不方便,爲什麼呢?主要是因爲 Cygwin目前設計的還不是很人性化。如果我們安裝好Cygwin後,如果缺少了某個包想安裝的話就特別麻煩。還需要重新安裝 Cygwin才能解決,有沒有更好的方式呢?
你遇到的困難,別人也會遇到,不同的是你要麼忍了,要麼不用了。可別人遇到困難後會去解決困難,這纔是人與人之間最大的不同。
話扯的有點遠哈。沒錯,已經有人幫我們解決了這個問題。這是一個很好用的開源工具,它叫 apt-cyg
。它與 Ubuntu系統中的 apt一樣特別好用,而且使用的方式與 apt也是一個樣子的。
如何安裝它呢?網上有很多方法,但很多不可行。大家按我這個方法操作一定可以安裝成功。
其實,apt-cyg就是一個腳本。我們只需要將這個腳本下載下來就OK了。這裏是apt-cyg的下載地址。大家可以在Cygwin下執行下面的命令就好了。
- 第一步:
wget -c https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
- 第二步
install apt-cyg /bin
有了這個神器,我們就可以安裝一些Linux下的常用命令了,是不是很爽?
比如我們要裝某個包就可以用 apt-cyg instal xxx
這樣來安裝了。
安裝pkg-config工具
在Windows系統下,一般不會默認安裝該工具,所以在Windows下做實驗的同學大都會遇到明明已經裝了某個庫,但仍然找不到該庫的情況。其原因就是沒有安裝 pkg-config
這個工具。
首先確認是否已經將 pkg-config
工具安裝好了。可以執行下面的命令:
pkg-config
如果提示沒有安裝,則先將該工具安裝好,安裝命令如下:
apt-cyg install pkg-config
編譯安裝 ffmpeg
先別高興的太早,雖然有了apt-cyg這個神器,但它目前只能安裝Linux下的一些常用命令,像我們編譯時需要的 x264, x265這些庫它是無法找到的。
不能找到的原因也很簡單,是由於沒有人把編譯好的庫放到apt-cyg 可以夠到的源上。
沒有辦法,所以我們還必須要用最原始的方法,下代碼自己進行編譯。下面我們就一步一步的來吧
- 編譯 yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && sudo make install
- 編譯 fdk-aac
wget https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz
tar xvf fdk-aac-0.1.6.tar.gz
cd fdk-aac-0.1.6
./configure
make && sudo make install
- 安裝lame
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make && sudo make install
注:編譯lame遇到的問題:
- 問題一:
在Cygwin下安裝 lame的時候遇到執行 ./configure 失敗的情況。如"error: cannot guess build type; you must sepcify one"
,對這個問題可以通過下面的步驟來解決:
- 安裝automake。可以通過
which automake
來確認automake 是否已經安裝。如果沒有安裝,可以通使用apt-cyg install automake
進行安裝。- 確認automake當前版本。可執行
automake --version
獲取當前automake的版本號。- 將 lame目錄下的 config.guess文件替換爲 /usr/share/automake-version下的config.guess 文件。
- 此時,再執行./configure進就可以下成功了。
- 問題二:
make時出現"error: '_O_BINARY' undeclared (first use in this function)"
的錯誤,解決辦法如下:
- 打開出錯文件 vi ./frontend/lametime.c
- 將下面這段代碼註釋掉
/* #elif defined __CYGWIN setmod(fileno(fp), _O_BINARY); */
- 再執行make就可以成功了。
- 安裝nasm
wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
tar xvf nasm-2.13.03.tar.gz
cd nasm-2.13.03
./configure
make && sudo make install
- 安裝x264
wget http://mirror.yandex.ru/mirrors/ftp.videolan.org/x264/snapshots/last_x264.tar.bz2
bunzip2 last_x264.tar.bz2
tar -vxf last_x264.tar
cd last_x264
./configure --enable-static --enable-shared --disable-asm --disable-avs
make && sudo make install
- 安裝ffmpeg
從ffmpeg官網下載代碼編譯, 編譯方法如下:
wget -c https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
bunzip2 ffmpeg-4.0.2.tar.bz2
cd ffmpeg-4.0.2
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared
make && sudo make install
FFmpeg編譯的問題
-
問題一:找不到 fdk-aac庫
在編譯ffmpeg時,有可能會報找不到fdk_aac庫的錯誤。此時我們應該設置一下 PKG_CONFIG_PATH,指定ffmpeg到哪裏找我們安裝好的庫。
上面通過源碼安裝的庫,默認地址爲/usr/local/lib下面,當然你可以通過./configure 中的–prefix參數改變這個目錄。
如果使用默認路徑的話,可以通過下面的命令來指定編譯時去哪裏找庫
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
如果你改變了默認路徑,則將後面的
/usr/local/lib/pkgconfig
修改爲你變更後的路徑/xxx/.../lib/pkgconfig
即可。
小結
通過上面的步驟我們就可以成功的從 Window上編譯出我們可以執行的 ffmpeg了。
需要注意的是,ffmpeg是高度可訂製的,你可以根據自己的需要編譯出支持不同編解碼的ffmpeg庫,但方法都是一樣的。(不知這句話同學們是否真正理解?)
總的思路就是ffmpeg缺什麼庫,我們就下載相應庫的源碼給它編譯好。然後增加ffmpeg相應的配置選項,再重新編譯 ffmpeg。
有了上面的知識,我們也可以編譯出支持 x265的ffmpeg了,對不對?千萬不要告訴我你還不會喲!
我的視頻課
《FFmpeg音視頻核心技術精講與實戰》
《移動端音視頻入門》
作者:音視頻_李超
鏈接:https://www.imooc.com/article/247113
來源:慕課網
本文原創發佈於慕課網 ,轉載請註明出處,謝謝合作