首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Android平台下基于Wi—Fi的可视化VoIP通话系统设计

Android平台下基于Wi—Fi的可视化VoIP通话系统设计

随着移动终端设备朝着越来越智能化的方向发展,原本只具备简单通话功能的手机,也开始增加越来越多的服务功能。在移动终端上实现更多的功能,已经成为研发人员的一个新目标之一,这些功能为人们的生活提供着极大的便利,而VoIP技术就是其中的一个重要应用。现如今,VoIP技术已经在计算机上得到了广泛的应用,出现了一大批基于VoIP的应用软件,而随着移动终端逐渐可以方便地接入WLAN,在其上面进行多媒体技术的开发已经成为一个新的热点,尤其是在现如今最热门的Android操作系统上面。随着移动终端的处理能力日益强大,可以实现过去无法进行的复杂视频编解码处理,因此如果进一步结合VoIP技术,实现一个VoIP可视通话系统,这将是一个很好的研究课题,同时也将会有很好的市场前景。

1 系统设计方案和系统结构
1.1 系统设计方案
本方案所设计的局域网内基于Wi—Fi的可视化VoIP通话系统主要包含了以下功能:
①移动终端(如手机、PDA)用户对系统个性化的配置,用户可以根据自己的需求和爱好选择需要的功能;
②实现移动终端用户向服务器发出请求并完成注册的功能;
③移动终端用户对语音视频数据的采集和编码,并通过RTP(实时传输协议)/RTCP(RTP传输控制协议)进行传输和控制;
④OpenSIPS开源服务器完成对会话的控制,包括会话的注册、发起、维护与结束、注销等功能;
⑤界面的开发,作为一个应用程序。一个友好的界面是不可或缺的,我们通过它来与用户进行交互。
1.2 系统结构
系统的总体架构采用了客户端和服务器(C/S)模型,客户端利用自身的Wi—Fi模块接入网络。通过SIP协议与Open SIPS服务器建立会话,在传输层以IP数据包的形式传输语音视频数据。基于Wi—Fi的可视化VoIP通话系统结构如图1所示。


系统主要由SIP客户终端和OpenSIPS开源服务器两部分组成。客户终端采用Android操作系统的智能手机和平板电脑。客户终端包括了SIP User Agent逻辑实体,并且支持AMR、G.729音频编解码,以及H.263和H.264视频编解码。

2 系统开发中关键技术的研究
2.1 SIP协议
SIP协议(Session Initiation Protocol,会话发起协议)是由IETF(Internet工程任务组)2001年提出的IP电话信令协议,用于在IP数据网络上建立、改变和结束多媒体会话。SIP能够使用互联网的端点(用户代理)来发现参与者,并且协商它们共享会话的特性,SIP独立运行于底层的通信协议之上,并且不依赖于所建立的会话类型。SIP协议的主要目的是解决IP网中的信令控制,以及同Soft Switch的通信,从而构成下一代的增值业务平台,对电信、银行、金融等行业提供更好的增值业务。
SIP是一个应用层的控制协议,可以用来建立、修改和终止多媒体会话(或者会议),例如互联网电话。SIP也可以邀请参与者参加已经存在的会话,例如电话会议。它可以很方便地在一个已经存在的会话中增加(或者删除)媒体。SIP透明地支持名字映射和重定向服务,这些特性用于支持个人移动业务,也就是说用户可以使用一个唯一的外部标识,而无须考虑它们所在的实际网络位置。SIP在建立和终止多媒体通信方面支持了很多的功能。2.2 Android手机操作系统
Android是一种以Linux内核为基础、源码开放的手机操作系统。Android系统采用Java语言开发,它内部含有一个Dalvik虚拟机(Dalvik VM),应用程序运行在Dalvik虚拟机上,而Dalvik虚拟机则运行在Linux内核上。Androld利用JNI实现了Java与C的通信。Android系统的体系结构分为了4层:
①Linux内核层,是硬件和应用软件之间的抽象层,提供硬件抽象功能,提供安全机制、内存管理、进程管理、网络协议堆栈和驱动程序等;
②中间件层,包括函数库和Androld运行时,其中函数库主要提供一组基于C/C++的函数库,Android运行时包括核心库和Dalvik虚拟机;
③应用程序框架层,采用Java语言实现,它提供了Androld平台基本的管理功能和组件重用机制;
④应用程序层,提供贴近用户的Android应用功能程序,包括闹钟、记事本、通讯录、电子邮件客户端、浏览器和日历等。
2.3 OpenSIPS服务器的介绍和配置
OpenSIPS是一个成熟的开源SIP服务器,它除了提供基本的SIP代理及SIP路由功能外,还提供了一些应用级的功能。OpenSIPS的结构非常灵活,其核心路由功能完全通过脚本来实现,可灵活定制各种路由策略,方便地应用于语音视频通信、IM以及Presencce等。同时OpenSIPS是目前性能最高的SIP服务器之一,可用于电信级产品构建。OpenSIPS凭借其可扩展、模块化的系统架构提供了一个高度灵活的、用户可配置的路由引擎,可以为voice、video、IM和presence等服务提供强大高效的路由、鉴权、NAT、网关协议转化等功能。由于其稳定高效等特点,OpenSIPS已经被诸多电信运营商应用在自己的网络体系中。
本系统中,我们对OpenSIPS进行了基本的配置,主要是通过配置文件opensips.cfg来实现的。该配置文件主要分为三个部分:
①第一部分主要是全局变量的设置,通过“Listen=udp:192.168.1.100:5060”语句来指定用于侦听接收sip消息的端口和传输层协议;
②第二部分主要是加载模块,并设置模块的相应参数;
③第三部分主要是路由的策略和功能应用。
通过一些简单的配置,我们就能够确保服务器端正常工作,为客户端与服务器之间的通信提供了保障。完成配置后,我们在超级终端上应用openserctl start和openserctl stop命令开启和关闭OpenSIPS服务器。

3 系统客户端的设计
3.1 客户端软件设计的体系架构
可视化VoIP通话系统客户端的设计是基于Android平台来实现的,Android是完全免费开放的移动设备平台,这给系统的开发提供了有利的条件。为了提高系统的可扩展性和可移植性,根据Android的系统架构,本设计的可视化VoIP通话系统软件架构如图2所示。

我们将客户端软件架构分成了UI层、Engine层、SIP层和网络传输层4个部分,各层主要实现的功能如下:
①UI层。主要负责界面显示模块和界面事件的传递。
②Engine层。这一层是软件的核心处理层,它启动各种服务、初始化软件参数、处理各种UI事件、维持配置文件信息和保存全局属性变量。其中包括UserAgenProfile(用户配置文件属性),UserAgent(用户事件处理),VoIPEngine(核心处理中所有的UI事件、参数设计、服务
的启动都由此文件调度),以及RegisterAgent(注册服务处理)。
③SIP层。提供所有的SIP消息模型,所有SIP消息的处理流程,包括发送、接收、封装、解码等等。
④网络传输层。提供音频、视频信息的处理,此模块对音频、视频进行即时编解码,同时发送数据。
3.2 客户端软件主要功能模块的实现
3.2.1 通话功能模块的实现
通话功能是系统的核心模块,该模块负责实现通话的整个流程,包括了注册服务器、会话的发起和接收以及会话的结束。通话模块的流程如图3所示。



首先,客户端软件进行系统资源以及配置文件的初始化。初始化工作完成后,从主线程里创建一个SIP消息监听线程。该线程用来监听和处理SIP消息,创建子线程成功后,主线程向服务器发起注册请求,待客户端注册成功后即可发起和接收会话进行语音、视频通信,会话结束后,伴随着Activity的结束。在此过程中,主线程发出了一个结束信号给SIP消息监听线程,SIP消息监听线程收到这个结束信号后调用finish()方法退出,等待用户的下一次呼叫操作。
3.2.2 媒体流管理模块的实现
在本系统中,媒体流管理模块用来实现通话过程中音视频的实时采集、编码和播放功能,为了便于系统的调用,设计中实现了几个主要的功能函数StartMediaStream()、StopMediaStream()、InitMediaChannel(),分别完成开启音视频操作、关闭音视频操作、媒体流通道的初始化。为了具体实现媒体流的管理功能,系统需要向下调用RTP/RTCP库、音视频编解码、采集播放等接口。使用RTP/RTCP协议是目前解决流媒体实时传输问题的最好办法,RTP负责流媒体数据的发送和接收,而RTCP负责提供数据分发质量反馈信息。
对于编解码库的加载,系统中采用了JNI技术实现了底层C/C++与上层Java的通信,具体的函数语句如下:
static{
System.loadLibrary(“Mediacodec”);
}
其中,Mediacodec是视频编解码动态链接库的名称,源文件为Mediacodec.so,通过以上方法,我们实现了底层和上层应用之间的通信。

4 封装与测试
为了能够在Android操作系统的智能手机和平板电脑上面方便地移植和使用该系统,在实现了各模块的功能后,还需将上面所有的模块进行封装。Android SDK本身就提供了一些很有用的工具。由于本文的重点环节不在于Android SDK上,所以我们采用集成开发工具——集成在Eclipse中的ADT插件来对整个系统进行封装。在工程libs(如果不存在则新建)目录下新建一个名为armeabi的目录,将Eclipse中编译生成的.so库文件放到该目录下。ADT在封装资源时会自动将该库文件封装到apk文件中,apk是Android手机操作系统中应用程序的封装形式,在所有Android平台中均能使用。将封装后的apk包安装到Android手机、PDA或虚拟机中。
系统测试环境由OpenSIPS服务器和安装有可视化VoIP通话软件的移动终端组成。测试结果表明,系统运行稳定,性能良好,通话过程中无明显回音,图像清晰流畅,语音和视频能够保持同步。由于本系统运行在局域网内,通话延迟基本为零,充分满足了可视化VoIP通话系统的要求。

结语
本文中所设计的可视化VoIP通话系统属于无线局域网领域的应用。系统在无线局域网内具有信令处理稳定、通话无时延、视频清晰流畅、语音视频同步性高等优点,在实际应用中具有潜在的市场价值。但本系统仍然有许多的不足之处,比如说信令不够完善、服务过于单一等缺点。
返回列表