我的專案中,需要視訊通話功能,所以PjSip需要配置h264編碼器,在編譯PjSip前,需要先編譯openh264。
一、編譯openh264
1)、設定環境變數,Android NDK 編譯PjSip 2.6 之 環境準備 (一)中說明了,可以把環境變數儲存成env.sh檔案。
$export ANDROID_SDK_ROOT=/home/xxx/PJSIP/android-sdk-linux
$export PATH=$ANDROID_SDK_ROOT/tools:$PATH
上面中xxx為我的工作目錄。ANDROID_SDK_ROOT變數請根據自己的SDK路徑配置。
2)、編譯
$make OS=android NDKROOT=/home/xxx/PJSIP/android-ndk-r13b TARGET=android-22 PREFIX=./androidlib install-shared
NDKROOT請根據自己的NDK路徑,設定成自己的絕對路徑。
TARGET設定成自己需要編譯的android的對應的版本,我要在android 5.1上執行,所以設定的是android-22
PREFIX設定openh264編譯成功後的安裝目錄。這個在編譯PjSip時,需要使用到,裡面包含include標頭檔案夾目錄和lib庫目錄。
二、編譯PjSip
1)、新建config_site.h檔案,並把檔案放入PjSip工程目錄:pjproject-2.6/pjlib/include/pj/config_site.h
config_site.h內容如下:
/* Activate Android specific settings in the 'config_site_sample.h' */
#define PJ_CONFIG_ANDROID 1
//To enable video
#define PJMEDIA_HAS_VIDEO 1
//To enable libyuv
#define PJMEDIA_HAS_LIBYUV 1
//To enable TCP transport
#define PJ_HAS_TCP 1
#include <pj/config_site_sample.h>
2)、設定NDK環境變數
$export ANDROID_NDK_ROOT=/home/xxx/PJSIP/android-ndk-r13b
請根據自己的NDK目錄路徑設定。
3)、配置PjSip
$NDK_TOOLCHAIN_VERSION=4.9 TARGET_ABI=armeabi-v7a APP_PLATFORM=android-22 ./configure-android --use-ndk-cflags --with-openh264=/home/xxx/PJSIP/androidlib/
NDK_TOOLCHAIN_VERSION=4.9 這個必須設定,PjSip 2.6編譯如果沒有設定這個,configure-android無法配置成功
TARGET_ABI根據自己的android機器CPU,設定相應的ABI,目前支援的ABI有: armeabi、armeabi-v7a、arm64-v8a、x86
APP_PLATFORM=android-22設定成自己需要執行的android版本,我的是android5.1所以設定成android-22
--use-ndk-cflags 為系統選項,必須跟上
--with-openh264=/home/xxx/PJSIP/androidlib/ 設定成openh264編譯成功後,生成的androidlib目錄路徑,設定成絕對路徑,androidlib目錄名稱參考openh264編譯中PREFIX的目錄名稱。
4)、編譯PjSip
$make dep && make clean && make
5)、使用SWIG編譯java介面檔案
如果還沒有安裝SWIG,先安裝SWIN
$sudo apt-get install swig
進入pjproject-2.6/pjsip-apps/src/swig目錄,執行
$make
會在pjproject-2.6/pjsip-apps/src/swig/java/android/app/src/main/jniLibs目錄下生成libpjsua2.so,這個so是給apk使用的。同時在pjproject-2.6/pjsip-apps/src/swig/java/android/app/src/main生成很多java檔案。這些檔案是給apk開發使用的。
好了,到此,PjSip編譯完成。生成了libpjsua2.so和相應的java檔案供開發apk使用。
写评论
很抱歉,必須登入網站才能發佈留言。