很久沒寫文章了脐嫂,這段時間事情比較繁忙,也比較想偷個懶紊遵。這次主要是深入了解FFmpeg的編譯和集成xh264編碼和fdk-aac編碼雹锣。
估計項目每個去公司的人如果現(xiàn)在需要一套ffmpeg的編輯功能肯定少不了xh264編碼和fdk-aac編碼這兩個,但ffmpeg的ndk編譯對于咱們Android開發(fā)其實是很不友好的癞蚕,因為很多人都想用最新的ffmpeg進行編譯比如像4.1和4.0還有最新的4.2版本進行編譯蕊爵,但如果光編譯一個ffmpeg這個問題不是很多(本人經(jīng)過多次入坑最后編譯成功但不是很理想)如果想編一個so并且集成xh264和fdk-aac這兩個編碼庫這就不好弄了(但如果不需要arm64-v8a的cpu可以考慮用ffmpeg4.0進行編譯)因為現(xiàn)在市面上大部分手機都是64位的,而最嚴重的問題是如果你想發(fā)布在Google市場上面必須要支持arm64-v8a桦山,所以經(jīng)過多長嘗試發(fā)現(xiàn)最終使用ffmpeg3.3版本進行編譯完成了一個大家最想要的結(jié)果攒射,話不多說直接上圖
這個估計就是大家最想要的結(jié)果,而細心的小伙伴會發(fā)現(xiàn)兩個架構編譯出來的包大小不一樣那是肯定的恒水,咱們又不玩虛的又不是直接把armeabi-v7a直接拷貝一份(如果直接拷貝有些手機會遇到奔潰会放,所以還是乖乖編譯一個v8a的cpu支持架構),而看過我第一篇的小伙伴會發(fā)現(xiàn)這次的so為什么這么小钉凌,而這次我采用自己需要什么功能就編譯什么功能咧最,把不用的功能進行裁剪,這次對于那些產(chǎn)品什么的,也沒什么話說了(說你apk太大什么的盡扯淡矢沿,包大功能豈不是讓用戶感到更強大玩笑話)滥搭,廢話了這么多現(xiàn)在步入正軌了
還是先把每個下載鏈接給大家展示出來
可以選擇老的版本這樣編譯下來會很小歷史版本鏈接
xh264下載地址
記得選擇3.3版本(下載Download xz tarball選項)
FFmpeg下載鏈接
下來下載FDK-AAC(0.1.4和0.1.5都是可以的看大家心情選擇)
FDK-AAC
下面我要進入虛擬機頁面了(本人采用的是Ubuntu 14),下來就要開始寫腳本了(而腳本這次我參考了很多晚上的文章捣鲸,最后總結(jié)了一下)
這邊命令文件我已經(jīng)上傳好了瑟匆,方便大家直接使用
這是咱們這次需要的命令文件
這個是我把腳本和文件擺放的目錄
既然命令大家都已經(jīng)有了,咱們先一個一個來栽惶,先從config.sh這個腳本來看愁溜,我們這邊先可以設置16版本來進行編譯,我這邊使用的是NDK14如果采用不一樣的會報錯只要看日志基本上就可以解決外厂,但解決很麻煩所以還是建議使用NDK14冕象,咱們先從armeabi-v7a走起,所以這邊需要把config.sh圖上的AOSP_API這邊設置為16切記汁蝶,要不然你的app只能支持21以上
config.sh上面的參數(shù)寫出自己的目錄和文件名交惯,下面我們開始看看x264編碼
現(xiàn)在只需要執(zhí)行一下命令
這個時候你會發(fā)現(xiàn)有錯誤出現(xiàn),會提示你安裝yasm沒有你只需要安裝一下就好了
sudo apt install yasm
后面有可能還會提示你別的未安裝你只需要sudo apt install xxx(提示的庫寫上去執(zhí)行就ok了)
現(xiàn)在執(zhí)行完成你會發(fā)現(xiàn)你的腳本目錄下面多了一個libs文件夾穿仪,里面會有你剛才編譯的文件
下面我們就開始編譯arm64-v8a了席爽,其實很簡單你只需要把命令后面的支持架構改為arm64-v8a這個再執(zhí)行就ok了,而此時我們libs/libx264目錄下面就會有兩個架構文件了啊片,這下x264大功告成
下面FDK-AAC編譯就跟上面x264一樣只需把腳本名換一下繼續(xù)只锻,修改config.sh文件編譯,就會出現(xiàn)兩個架構(arm64-v8a的api設置為21紫谷,armeabi-v7a設置為16)切記齐饮,要不然后面會出錯
既然現(xiàn)在有了兩個編碼庫我們現(xiàn)在開始進行ffmpeg編譯這次進行裁剪編譯,沒有跟上次一樣把很多支持功能都放進去
進行支持像剛才x264腳本一樣笤昨,先修改config.sh腳本api版本祖驱,先進行armeabi-v7a版本16,然后執(zhí)行腳本瞒窒,然后在修改腳本支持arm64-v8a,這樣就會生成咱們需要的文件了捺僻,你會發(fā)現(xiàn)文件明顯變小了,大功告成
里面都有一個獨立的so文件
這下我們就可以把libs文件和ffmpeg文件壓縮放在window桌面了崇裁,為后面項目做準備
下一篇會說如果集成在項目中使用
后續(xù)會出一些自繪View的文章后續(xù)關注