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
文章图片
1.jpg
文章图片
2.jpg
文章图片
3.jpg
推荐阅读
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- 带你了解类型系统以及flow和typescript的基本使用
- 《Unix网络编程》第一卷第三版|《Unix网络编程》第一卷第三版 源码编译
- maven使用tomcat7插件编译jsp出错
- 嵌入式(编译内核、根文件系统等)
- 父母的状态
- 内存管理概念与原理以及解决办法
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 2.关于OpenGL|2.关于OpenGL 坐标系以及渲染流程