1、安裝cmake
執(zhí)行以下命令安裝cmake
yum install cmake git
2、下載Linux版本的android-ndk-r21e(如已下載則忽略)
登錄Linux服務(wù)器(比如華為云的歐拉系統(tǒng)),依次執(zhí)行下面的命令。
cd /usr/local/src
curl -O https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
unzip android-ndk-r21e-linux-x86_64.zip
3、上傳x265的源碼
從下面鏈接下載x265的源碼包
https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.5.tar.gz
解壓x265源碼包,修改x265_3.5/build/aarch64-linux目錄下的crosscompile.cmake,把下面兩行
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
改為下面兩行
set(CMAKE_C_COMPILER aarch64-linux-android24-clang)
set(CMAKE_CXX_COMPILER aarch64-linux-android24-clang++)
4、配置x265的源碼
進(jìn)入x265_3.5下的build/aarch64-linux目錄,執(zhí)行以下命令配置x265:
export PATH=$PATH:/usr/local/src/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/bin
./make-Makefiles.bash
命令行彈出的選項(xiàng)界面中,注意下列三項(xiàng)修改:
(1)把CMAKE_INSTALL_PREFIX這項(xiàng)改為/usr/local/app_x265(按向下鍵定位到該項(xiàng),再按回車鍵,即可按照vi方式編輯路徑)
(2)把ENABLE_ASSEMBLY這項(xiàng)改為OFF(按向下鍵定位到該項(xiàng),再按回車鍵,即可把ON改為OFF)
(3)把ENABLE_CLI這項(xiàng)改為OFF(按向下鍵定位到該項(xiàng),再按回車鍵,即可把ON改為OFF)
接著按c鍵開始配置,再按e鍵退出配置,然后按g鍵開始生成。
5、修改x265的編譯規(guī)則
進(jìn)入x265_3.5源碼下的build/aarch64-linux/CMakeFiles/x265-shared.dir目錄,注意修改下面三個(gè)文件:
(1)修改該目錄的link.txt,把文件中的所有“l(fā)ibx265.so.199”替換為“l(fā)ibx265.so”。同時(shí)刪除文件末尾的“ -lpthread -lrt”。
(2)同目錄的relink.txt修改說明同link.txt。
(3)修改同目錄下面的build.make,把該文件中的所有“l(fā)ibx265.so.199”替換為“l(fā)ibx265.so”,把所有的“l(fā)ibx265.so”替換為“l(fā)ibx265.so.199”。注意A和B互換名稱的時(shí)候,可以設(shè)定第三個(gè)名稱C,比如先把A替換為C,接著B替換為A,然后C替換為B。
6、編譯和安裝x265
進(jìn)入x265_3.5源碼下的build/aarch64-linux目錄,執(zhí)行以下命令編譯和安裝x265:
make
make install
7、調(diào)整x265的pc描述文件
修改/usr/local/app_x265/lib/pkgconfig下面的x265.pc,該文件的“Libs.private”選項(xiàng)里面去掉“-lrt”,也就是改成下面這行:
Libs.private: -lc++ -lm -lgcc -ldl -lgcc -ldl -ldl
8、添加PKG_CONFIG_PATH路徑
Linux的profile文件位于用戶初始目錄的.bash_profile。執(zhí)行以下命令編輯當(dāng)前用戶的profile文件:
cd
vi .bash_profile
往.bash_profile的文件末尾添加下面一行:
export PKG_CONFIG_PATH=/usr/local/app_x265/lib/pkgconfig:$PKG_CONFIG_PATH
保存并退出.bash_profile之后,執(zhí)行以下命令加載環(huán)境變量:
source .bash_profile
然后執(zhí)行下面的環(huán)境變量查看命令,確保x265的環(huán)境變量已經(jīng)成功加載。
env | grep PKG
9、重新編譯FFmpeg啟用x265
打開《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》隨書源碼的chapter12/config_ffmpeg_full.sh,將該文件另存為config_ffmpeg_x265.sh,并在文件內(nèi)部這行
? --enable-libx264 \
的下面增加如下一行配置
? --enable-libx265 \
接著把config_ffmpeg_x265.sh上傳到服務(wù)器的FFmpeg源碼目錄,執(zhí)行下面命令賦予可執(zhí)行權(quán)限。
chmod +x config_ffmpeg_x265.sh
然后運(yùn)行下列命令配置、編譯和安裝FFmpeg
./config_ffmpeg_x265.sh
make clean
make -j4
make install
10、把so文件導(dǎo)入App工程
(1)把FFmpeg交叉編譯好的include目錄(位于/usr/local/app_ffmpeg/include)整個(gè)復(fù)制到App工程的src/main/cpp目錄下。
(2)在src\main目錄下創(chuàng)建jniLibs目錄,并在jniLibs下面創(chuàng)建子目錄arm64-v8a,把FFmpeg交叉編譯好的8個(gè)so文件(位于/usr/local/app_ffmpeg/lib)全部復(fù)制到arm64-v8a目錄下。
(3)config_ffmpeg_x265.sh里面啟用的幾個(gè)第三方庫的so文件也一塊復(fù)制到arm64-v8a目錄下,包括x264、x265、mp3lame、freetype等。
(4)給App工程的build.gradle的android→defaultConfig→externalNativeBuild→cmake節(jié)點(diǎn)內(nèi)部增加下面配置。文章來源:http://www.zghlxwxcb.cn/news/detail-844202.html
? ? abiFilters "arm64-v8a"
? ? arguments '-DANDROID_STL=c++_shared' // FFmpeg集成x265時(shí)需要
如果不加,App運(yùn)行時(shí)會(huì)報(bào)錯(cuò)“java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found”。
(5)在Android Studio上編譯運(yùn)行App工程,觀察App是否正常運(yùn)行。?文章來源地址http://www.zghlxwxcb.cn/news/detail-844202.html
到了這里,關(guān)于FFmpeg開發(fā)筆記(九)Linux交叉編譯Android的x265庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!