Android NDK 编译PjSip 2.6 之 PjSip编译 (二)

     我的项目中,需要视频通话功能,所以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使用。

    


猜你喜欢

转载自blog.csdn.net/croop520/article/details/75346932
今日推荐