pjsip编译以及添加opus与webrtc aec模块

2019-06-08  本文已影响0人  技术人生666

pjsip版本2.5.5

1.linux编译

  ./configure
  make dep && make clean && make  

2.android编译

!!!记住,NDK千万不要用android studio下的ndk-bundle,坑的很,它那个好像不完整
!!!自己去下个独立的NDK包

//添加环境变量,指定ndk路径和编译的平台level
export ANDROID_NDK_ROOT=~/android_tools/ndk
export APP_PLATFORM=android-16
export TARGET_ABI=armeabi-v7a   //定义编译cpu架构  

其他选项可通过./configure-android -h查看

//修改pjsip的编译配置pjlib\include\pj\config_site.h,写入以下内容

#define PJ_CONFIG_ANDROID 1
#define PJMEDIA_HAS_OPUS_CODEC    1   //需要添加opus音频编解码器支持时定义该项
#include <pj/config_site_sample.h>

//编译

./configure-android --use-ndk-cflags --with-opus=pjsip路径/thirdparty/opus
make dep && make clean && make

上面的方式是生成了各个模块的静态库,要编译pjsip的动态库,编译完静态库之后还需要安装swig编译动态库和接口。需要swig 2.0.5以上的版本。ubuntu 12.04自带的swig是2.0.4,不符合要求,需要自行编译安装swig的新版本

然后到pjsip-apps/src/pjsua/android目录下面我们要编译android项目所需要的库,
修改jni下的Application.mk,添加下面两项

APP_ABI :=armeabi-v7a
APP_PLATFORM :=android-16

如果有添加webrtc-aec模块,还需在Android.mk文件添加webrtc模块链接路径

LOCAL_LDLIBS+=-L(call host-path,$(LOCAL_PATH)/../../../../../third_party/webrtc-android/armeabi-v7a) -lwebrtc

运行ndk-build,
则会生成pjsip的动态库。

3.添加视频支持

linux下:
pjlib/include/pj/config_site.h添加如下宏定义:

#define PJMEDIA_HAS_VIDEO           1
#define PJMEDIA_HAS_FFMPEG          1
#define PJMEDIA_VIDEO_DEV_HAS_SDL       1
#define PJMEDIA_VIDEO_DEV_HAS_V4L2      1

安装v4l2库:

sudo apt-get install libv4l-dev

安装ffmpeg sdl2

然后重新configure&&make dep&&make

4.添加opus音频编解码器支持

pjlib/include/pj/config_site.h添加如下宏定义:

#define PJMEDIA_HAS_OPUS_CODEC    1

linux下:

从opus官网下载opus库,并编译:

./configure&&make&&make install

重新编译pjsip库

make dep&&make

其他平台:
进入pjsip的thirdparty文件夹下:

cd thirdparty
mkdir opus
cd opus
mkdir include
mkdir lib
cd include
mkdir opus

然后将opus的头文件拷贝到include/opus文件夹下
将交叉编译的opus静态库拷贝到lib文件夹下

重新编译pjsip库,指定opus路径

./configure --with-opus=pjsip路径/thirdparty/opus
make dep 
make 

5.添加webrtc AEC模块

Android下:
进入pjsip的thirdparty文件夹下:

mkdir webrtc-android  

将webrtc-aec.rar解压,并将里面的jni文件夹拷贝到webrtc-android目录下。
进入jni文件夹下,修改Android.mk的最后一行为:include $(BUILD_STATIC_LIBRARY) (修改这里是我想让它生成静态库,后面可以直接链接进pjsua.so里面,不然生成so的话,APP得额外加载一次libwebrtc.so)
执行ndk-build,将生成libwebrtc.so
进入pjsip工程根目录,将里面的user.mak.sample文件修改为user.mak,并添加下面两行:

export CFLAGS += -I"(你的pjsip工程目录)/third_party/webrtc-android/jni/src" -DPJMEDIA_HAS_WEBRTC_AEC=1 -DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1
export LDFLAGS += -L"(你的pjsip工程目录)/third_party/webrtc-android/obj/local/armeabi-v7a" -lwebrtc  

重新编译pjsip库即可。

webrtc-aec.rar下载地址:
链接:https://pan.baidu.com/s/1k2Ly6DDUVTp2Mj9HR489cA 密码:v9ad

1.jpg 2.jpg 3.jpg
上一篇 下一篇

猜你喜欢

热点阅读