美文网首页
pjsip编译以及添加opus与webrtc aec模块

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

作者: 技术人生666 | 来源:发表于2019-06-08 22:58 被阅读0次

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

相关文章

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

    pjsip版本2.5.5 1.linux编译 2.android编译 !!!记住,NDK千万不要用android ...

  • iOS - PJSIP编译支持 G729/OPUS 编码

    前言 因为公司业务需求,需要增加 G729/OPUS 两种音频编码。PJSIP本身是支持两种编码,但需要单独编译编...

  • PJSIP开发VoIP记录3-通话的实现

    PJSIP开发VoIP记录1 - 编译与集成 PJSIP开发VoIP记录2 - 配置 开发工具:Xcode9.2开...

  • pjsip编译

    iOS之PJSIP的编译与简单使用 原创2017年02月22日 16:26:12 标签: ios/ pjsip/ ...

  • centos7 使用nginx上传文件

    安装nginx以及nginx-upload-module模块 下载nginx源码,添加模块只支持源码编译:wget...

  • WebRTC之服务器搭建

    前言 在前面的WebRTC介绍中我们已经介绍了WebRTC的编译以及成功地把WebRTC在Android Stud...

  • libpjsua2.so.2: cannot open shar

    遇到问题: pjsip安装好之后,编译运行 pjproject-2.12.1/pjsip-apps/src/swi...

  • Nginx模块

    一、编译添加新模块 1.简介与思路 当前适用于nginx已经在安装过了,如果没安装过,直接在编译时候添加模块即可。...

  • WebRTC中的Opus编码揭秘

    WebRTC中默认是采用Opus编码,Opus编码是由silk编码和celt编码合并在一起,silk编码是由sky...

  • pjsip编译

    注:相关命令直接拷贝会有问题,如需拷贝转载地址:https://www.tuicool.com/articles/...

网友评论

      本文标题:pjsip编译以及添加opus与webrtc aec模块

      本文链接:https://www.haomeiwen.com/subject/riywxctx.html