前言
FFmpeg的源碼編譯,我不知道該怎么說好!難吧?但網(wǎng)上教程好像很簡單。不難吧?就沒有編譯成功幾次,一模一樣的源碼和腳本,也編譯不成功!三個(gè)月來,只要一閑下來我就查閱各種資料進(jìn)行各種實(shí)驗(yàn),都達(dá)不到想要的結(jié)果。上周五,整整編譯了一天,都沒有編譯成功,后來下班了,沒關(guān)電腦讓他編譯了一個(gè)周末,才完全成功了的。FFmpeg的坑就在這兒,編譯都能坑死多半的人!
本片文章主要將如何在Windows下使用MinGW+msys將FFmpeg-3.2.5的源碼編譯成全平臺(tái)架構(gòu)的so庫
正文
-
1 工具準(zhǔn)備
平臺(tái):win10 64位
ndk版本: r14b
FFmpeg版本:3.2.5
minGW-w64.exe
-
2 MinGW安裝
雙擊下載的mingw-w64.exe如圖配置安裝:
運(yùn)行后大概就是這個(gè)樣子,選擇Basic Setup,
都完成以后cmd中運(yùn)行gcc -v,如圖則一切順利可進(jìn)行后續(xù)操作:
-
3 FFmpeg的so庫編譯
FFmpeg的編譯我完全是按照編譯Android下可用的全平臺(tái)FFmpeg(包含libx264與libfdk-aac)編譯的,這里我給出跳轉(zhuǎn)鏈接就好,但有兩點(diǎn)請注意:
1: 腳本中的ndk路徑替換的時(shí)候,切記一定是“/”,如:D:/Java/android-ndk-r14b,可以簡單的把MinGW+msys理解成模擬的linux系統(tǒng),linux系統(tǒng)的文件分隔符是正斜杠“/”,而Windows的文件分隔符是反斜杠“\”,所以這個(gè)必須替換
2: 腳本中的darwin-x86_64(mac系統(tǒng)),如果操作系統(tǒng)是Linux則改為linux-x86_64,Windows系統(tǒng)則改為windows-x86_64,實(shí)際以ndk路徑為準(zhǔn),當(dāng)然我的已經(jīng)替換過了。
最后會(huì)在FFmpeg下的android_more下生成每個(gè)架構(gòu)的頭文件和so庫:
結(jié)語
有人說我為什么完全照搬別人的東西,也不知道改一下,比如那么多腳本名稱,長不說還是別人的名字!這里插播一個(gè)小故事,大學(xué)我們上計(jì)算機(jī)基礎(chǔ),有同學(xué)發(fā)現(xiàn)老師講的PPT,署名是系里另一位老師的,同學(xué)們就嘲笑老師“不備課”就算了,用別人的東西還不知道改一下,老師付之一笑,淡淡的說道,首先我改了的話,性質(zhì)就不一樣,因?yàn)榈銈儾⒉恢肋@PPT并不是我做的,這算剽竊,其次我保留署名是為了表明我對他的辛苦付出的感恩。
作為程序員我們最怕的就是重復(fù)造輪子,而且還沒有別人造的好,更何況這個(gè)系列的文章我的確是站在大佬們的肩膀上寫下去,你覺得照搬的東西,而我是在尊重原版原作者,感恩開源!
下一節(jié)講:
FFmpeg(三):初識(shí)CMakeList和native-lib
內(nèi)容不多,了解CMake的可直接跳:
FFmpeg(四):CMake移植FFmpeg的靜態(tài)庫到AndroidStudio中