FFmpeg(二):Windows下編譯全平臺架構的FFmpeg
前言
FFmpeg的原始碼編譯,我不知道該怎麼說好!難吧?但網上教程好像很簡單。不難吧?就沒有編譯成功幾次,一模一樣的原始碼和指令碼,也編譯不成功!三個月來,只要一閒下來我就查閱各種資料進行各種實驗,都達不到想要的結果。上週五,整整編譯了一天,都沒有編譯成功,後來下班了,沒關電腦讓他編譯了一個週末,才完全成功了的。FFmpeg的坑就在這兒,編譯都能坑死多半的人!
本片文章主要將如何在Windows下使用MinGW+msys將FFmpeg-3.2.5的原始碼編譯成全平臺架構的so庫
正文
-
1 工具準備
-
2 MinGW安裝
雙擊下載的mingw-w64.exe如圖配置安裝:


並執行:

執行後大概就是這個樣子,選擇Basic Setup,

進行第三次安裝即可


都完成以後cmd中執行 gcc -v ,如圖則一切順利可進行後續操作:

-
3 FFmpeg的so庫編譯
編譯Android下可用的全平臺FFmpeg(包含libx264與libfdk-aac)FFmpeg的編譯我完全是按照 編譯Android下可用的全平臺FFmpeg(包含libx264與libfdk-aac) 編譯的,這裡我給出跳轉連結就好,但有兩點請注意:
1: 指令碼中的ndk路徑替換的時候,切記一定是“/”,如:D:/Java/android-ndk-r14b1: 指令碼中的ndk路徑替換的時候,切記一定是“/”,如:D:/Java/android-ndk-r14b,可以簡單的把MinGW+msys理解成模擬的linux系統,linux系統的檔案分隔符是正斜槓“/”,而Windows的檔案分隔符是反斜槓“\”,所以這個必須替換
2: darwin-x86_64(mac系統) Linux則改為linux-x86_64 Windows系統則改為windows-x86_642:指令碼中的 darwin-x86_64(mac系統) ,如果作業系統是 Linux則改為linux-x86_64 , Windows系統則改為windows-x86_64 ,實際以ndk路徑為準,當然我的已經替換過了。
最後會在FFmpeg下的android_more下生成每個架構的標頭檔案和so庫:
結語
有人說我為什麼完全照搬別人的東西,也不知道改一下,比如那麼多指令碼名稱,長不說還是別人的名字!這裡插播一個小故事,大學我們上計算機基礎,有同學發現老師講的PPT,署名是系裡另一位老師的,同學們就嘲笑老師“不備課”就算了,用別人的東西還不知道改一下,老師付之一笑,淡淡的說道,首先我改了的話,性質就不一樣,因為但你們並不知道這PPT並不是我做的,這算剽竊,其次我保留署名是為了表明我對他的辛苦付出的感恩。
作為程式員我們最怕的就是重複造輪子,而且還沒有別人造的好,更何況這個系列的文章我的確是站在大佬們的肩膀上寫下去,你覺得照搬的東西,而我是在尊重原版原作者,感恩開源!
下一節講:
FFmpeg(三):初識CMakeList和native-lib
內容不多,瞭解CMake的可直接跳:
FFmpeg(四):CMake移植FFmpeg的靜態庫到AndroidStudio中github原始碼
簡書半停更說明
碎碎念:如果諸君喜歡,請點個贊
更多問題,歡迎加群:584275290