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

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_CODEC1//需要添加opus音频编解码器支持时定义该项 #include

//编译
./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_VIDEO1 #define PJMEDIA_HAS_FFMPEG1 #define PJMEDIA_VIDEO_DEV_HAS_SDL1 #define PJMEDIA_VIDEO_DEV_HAS_V4L21

安装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_CODEC1

linux下:
从opus官网下载opus库,并编译:
./configure&&make&&make install

【pjsip编译以及添加opus与webrtc|pjsip编译以及添加opus与webrtc aec模块】重新编译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

pjsip编译以及添加opus与webrtc|pjsip编译以及添加opus与webrtc aec模块
文章图片
1.jpg
pjsip编译以及添加opus与webrtc|pjsip编译以及添加opus与webrtc aec模块
文章图片
2.jpg pjsip编译以及添加opus与webrtc|pjsip编译以及添加opus与webrtc aec模块
文章图片
3.jpg

    推荐阅读