上一篇大体说明了服务器的搭建,这一篇就开始单对单的语音聊天说明。
就像上一篇中介绍的一样,客户端利用的是开源的pjsip客户端进行语音通信,pjsip中本身也提供了大量的demo让我们进行功能调试和使用,所以我们可以直接利用它本身的demo来修改进而达到我们客户端语音通信的目的。
另:在尝试过程中发现,pjsip客户端不注册服务器直接进行端对端拨打,在同一局域网下依旧是可以的,这边由于需要后期穿越,而nat穿越需要服务器,而且第一篇也已经说了server的布置,所以这篇还是以需要注册为基础。
一、环境:
ubutun 14 AS3.0 android-ndk-r14
二、软件:
pjsip,opensips,restund
首先,我用的修改的demo是pjsip中自带一个安卓的demo,具体路径在/home/pjsip/pjproject-2.7.2/pjsip-apps/src/pjsua/android
这个demo用的是swing进行jni的编译,我这边使用的是NDK,所以后面也做了比较大的改动,背景就到这里,接下来开始说开发流程。
三、pc端的端对端聊天
1、在pjsip官网上面下载对应的pjsip版本
install libasound2-dev
# tar -jxvf pjproject-2.7.2.tar.bz2
# cd pjproject-2.7.2
# ./configure
# make dep
# make
2、在你的安装目录下的pjsip-apps/bin下会生成对应的可执行文件
pjsua-x86_64-unknown-linux-gnu是对应的pc端运行demo,接受参数输入,来驱动对应的功能,具体的参数在你运行此可执行文件之后会出现提醒信息。
四、移动端端对端通话
1、参考/home/pjsip/pjproject-2.7.2/pjsip-apps/src/pjsua/android目录下得安卓工程,新建自己的安卓项目,并暴露native方法,自己根据jni的规则(此处对于jni的构建目录和规则不做详述)对对应的native方法生成.h文件
2、编译安卓使用的.a库,并安装,说明:
<1>NDK:
理论上越新越好,但需要看对应版本的交叉编译器,因为本次使用pjsip2.7.2,官方对应交叉编译器为arm-android-linux-4.9
使用android-ndk-r14b-linux