1、安裝cmake
執行以下命令安裝cmake
2、下載Linux版本的android-ndk-r21e(如已下載則忽略)
登入Linux伺服器(比如華為雲的尤拉系統),依次執行下面的命令。
3、上傳x265的原始碼
從下面連結下載x265的原始碼包
https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
解壓x265原始碼包,修改x265_3.5/build/aarch64-linux目錄下的crosscompile.cmake,把下面兩行
改為下面兩行
4、配置x265的原始碼
進入x265_3.5下的build/aarch64-linux目錄,執行以下命令配置x265:
命令列彈出的選項介面中,注意下列三項修改:
(1)把CMAKE_INSTALL_PREFIX這項改為/usr/local/app_x265(按向下鍵定位到該項,再按Enter鍵,即可按照vi方式編輯路徑)
(2)把ENABLE_ASSEMBLY這項改為OFF(按向下鍵定位到該項,再按Enter鍵,即可把ON改為OFF)
(3)把ENABLE_CLI這項改為OFF(按向下鍵定位到該項,再按Enter鍵,即可把ON改為OFF)
接著按c鍵開始配置,再按e鍵退出配置,然後按g鍵開始生成。
5、修改x265的編譯規則
進入x265_3.5原始碼下的build/aarch64-linux/CMakeFiles/x265-shared.dir目錄,注意修改下面三個檔案:
(1)修改該目錄的link.txt,把檔案中的所有“libx265.so.199”替換為“libx265.so”。同時刪除檔案末尾的“ -lpthread -lrt”。
(2)同目錄的relink.txt修改說明同link.txt。
(3)修改同目錄下面的build.make,把該檔案中的所有“libx265.so.199”替換為“libx265.so”,把所有的“libx265.so”替換為“libx265.so.199”。注意A和B互換名稱的時候,可以設定第三個名稱C,比如先把A替換為C,接著B替換為A,然後C替換為B。
6、編譯和安裝x265
進入x265_3.5原始碼下的build/aarch64-linux目錄,執行以下命令編譯和安裝x265:
7、調整x265的pc描述檔案
修改/usr/local/app_x265/lib/pkgconfig下面的x265.pc,該檔案的“Libs.private”選項裡面去掉“-lrt”,也就是改成下面這行:
8、新增PKG_CONFIG_PATH路徑
Linux的profile檔案位於使用者初始目錄的.bash_profile。執行以下命令編輯當前使用者的profile檔案:
往.bash_profile的檔案末尾新增下面一行:
儲存並退出.bash_profile之後,執行以下命令載入環境變數:
然後執行下面的環境變數檢視命令,確保x265的環境變數已經成功載入。
9、重新編譯FFmpeg啟用x265
開啟《FFmpeg開發實戰:從零基礎到短影片上線》隨書原始碼的chapter12/config_ffmpeg_full.sh,將該檔案另存為config_ffmpeg_x265.sh,並在檔案內部這行
的下面增加如下一行配置
接著把config_ffmpeg_x265.sh上傳到伺服器的FFmpeg原始碼目錄,執行下面命令賦予可執行許可權。
然後執行下列命令配置、編譯和安裝FFmpeg
10、把so檔案匯入App工程
(1)把FFmpeg交叉編譯好的include目錄(位於/usr/local/app_ffmpeg/include)整個複製到App工程的src/main/cpp目錄下。
(2)在src\main目錄下建立jniLibs目錄,並在jniLibs下面建立子目錄arm64-v8a,把FFmpeg交叉編譯好的8個so檔案(位於/usr/local/app_ffmpeg/lib)全部複製到arm64-v8a目錄下。
(3)config_ffmpeg_x265.sh裡面啟用的幾個第三方庫的so檔案也一塊複製到arm64-v8a目錄下,包括x264、x265、mp3lame、freetype等。
(4)給App工程的build.gradle的android→defaultConfig→externalNativeBuild→cmake節點內部增加下面配置。
如果不加,App執行時會報錯“java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found”。
(5)在Android Studio上編譯執行App工程,觀察App是否正常執行。