x264 Android
前言
本篇內容蠻深,需具備Linux基本程度才能理解,不是盲作就可完成。所以如果您若沒有Linux的基礎,請不要浪費時間在此篇幅。
另外,x264是屬於軟体編碼,在本人的小米Mix2僅能達到5~8fps, 小米10T pro也只能只能達到 10~12 fps。所以此篇說明僅供參考,實際商業化的方式,請參考本人撰寫的 CameraX硬体編碼 這篇
Start
RTMP進行推播前,必需先使用x264進行編碼後才能推播送出。但x264是由C寫成的,所以必需先在ubuntu之下cross compile 成Android 版本的函數庫,再放入Android手機使用Jni調用。
在Linux中,有著千千萬萬的程式,都是熱心的程式設計師所公佈出來。但這些程式碼都是原始碼,不能馬上執行,原因是他們不知你的機器是Windows, 還是Mac, 或是Linux,所以需先編譯成二進位可執行檔或lib。
C/C++寫出來的原始碼,除了程式外,還會有 ./configure,MakeFile等編譯設定。沒有這些設定檔的話,非開發人員就無法編譯。
所以編譯的方式,先使用 ./configure 設定編譯條件,然後使用 make 讀取 Makefile 角本設定開始編譯。接下來再來使用 make install 進行安裝。這種編譯的方式,稱為TarBall。
Makefile裏面設定二個重要的設定,一個是將C 語言編譯成二進位碼的CC變數,預設為 gcc,另一個是編譯c++的CXX變數,預設為 g++。編譯出來的二進位檔,只能在x86 ubuntu中執行。
Cross Compile
在x86 ubuntu之下,也可以編譯出可以讓arm系列Android執行的二進位碼。這種方式稱為Cross Compile。中文譯為交叉編譯。但Cross Compile的編譯工具將不再是 gcc/g++,而是Andorid所提供的工具,這種工具稱為ToolChains。
Android目前的ToolChains為 clang/clang++。clang是金屬撞擊的鏗鏗聲,真是奇怪的名稱。
ubuntu環境設定
Google官方開發Android系統都是在ubuntu中完成,雖說使用Mac或CentOS也可以開發,但總沒有ubuntu完整。所以若要編譯Android可以使用的二進位碼,建議還是乖乖的使用ubuntu。
現在的電腦,效能都相當強大,沒有四核也有八核,本人還用到 k9 的 16 核。所以最方便的方式就是使用vmWare安裝一個ubuntu虛擬系統,安裝方式請參照本站的雲端架設。
編譯時常會用到大量的第三方套件,底下的套件是連Android 系統開發時都會用到的。請使用下面的指令將所有的套件全部安裝。
