androidndk配置環境變數
『壹』 Android Studio cmake編譯FFmpeg以及Jni調用
NDK是一系列工具集,幫助開發者快速開發C(或C++)動態庫,並能自動打包為APK,減輕開發人員的打包工作。它集成交叉編譯器,提供mk文件隔離差異,只需修改mk文件,就能創建出.so文件,自動打包與Java應用。JNI是Java與C/C++溝通機制,用於調用本地代碼,實現高效性。Android Studio 2.2後引入cMake新開發方式,簡化NDK開發與調試。以下步驟完成Android下FFmpeg編譯與JNI調用。
首先,在Ubuntu中創建並配置FFmpegOnAndroid目錄,進行NDK安裝與配置。
1. 下載並解壓Android NDK,配置環境變數。
2. 編譯FFmpeg源代碼,修改configure文件以適應Android平台。
3. 編寫build.sh腳本編譯FFmpeg,執行腳本完成編譯。
編譯完成後,將FFmpeg庫文件移植至Android平台。
1. 使用最新Android Studio2.3.3,安裝cmake和ndk,新建包含C++支持的工程。
2. 在工程中創建native-lib.cpp文件,實現Java與C++間調用。
3. 配置CMakeLists.txt文件,指定庫文件路徑。
4. 修改jni部分代碼,集成FFmpeg功能。
5. 實現Java調用代碼,展示FFmpeg使用效果。
通過此過程,可以在Android設備上使用FFmpeg進行音視頻處理。詳細源碼可參考開源倉庫:[GitHub源碼下載地址](DaveBobo/JniFFmpeg)
相關參考文章包括:
1. [CSDN博客文章](blog.csdn.net/eastmoon5...)
2. [CSDN博客文章](blog.csdn.net/dagaozi/a...)
3. [CSDN博客文章](blog.csdn.net/hejjunlin...)
4. [CSDN博客文章](cnblogs.com/wanggang123...)
『貳』 基於高通SA8295平台下的QNN環境配置及模型轉換
在進行基於高通SA8295平台下的QNN環境配置及模型轉換時,首先需從高通QPM creat point 網站下載qnn dsk包、hexagon sdk包、以及android ndk包等。
接下來,配置環境變數以確保QNN、TensorFlow和ONNX能夠正確運行。例如,設置環境變數ANDROID_NDK_ROOT和QNN_SDK_ROOT,分別指向android ndk和QNN SDK的根目錄,如下所示:
$ export ANDROID_NDK_ROOT=/home/xxx/automotive_qnn_SDK/android-ndk-r19c-linux-x86_64/android-ndk-r19c/
export QNN_SDK_ROOT=/home/xxx/automotive_qnn_SDK/qnn-v1.13.0.220510062245_36458/
此外,配置Tensorflow運行所需的環境變數,通過運行相應的腳本實現,例如:
source ${QNN_SDK_ROOT}/target/x86_64-linux-clang/bin/envsetup.sh -t
此步驟中,通過python查看當前環境變數路徑確保正確載入。
配置ONNX環境變數以支持其運行,類似地使用相應的腳本完成設置。
環境變數設置完成後,配置QNX工具鏈以在QNX環境中運行QNN模型。
為了執行一個自定義操作包的淺層模型,首先編譯模型以支持CPU後端,然後構建示例模型,通過QNN SDK生成模型庫。
在CPU上運行libqnn_model_float.so模型,使用QNN SDK提供的工具運行模型。
進行CNN模型的轉換和執行時,首先將模型轉換為.cpp、.bin和.json文件,然後生成對應的動態庫(.so文件)。
指定編譯器以針對特定架構(如QNX)完成編譯,生成模型的量化版本,即生成.cpp、.bin和.json文件。
最終,通過QNN SDK提供的工具運行轉換後的模型,並查看模型的檢測結果,例如使用python腳本來展示InceptionV3模型的分類結果。