基于SIP协议的音视频通信终端的实现
2013-10-29邹田周到
邹田 周到
【摘要】本文利用SIP协议在Windows系统平台上实现了一个音视频通信方案,该方案使用PJSIP协议栈,配合多媒体处理开源框架FFMPEG,DirectShow,视频渲染开源框架SDL。
【关键词】SIP协议PJSIP协议栈音视频通信FFMPEGSDL
一、SIP简述
SIP称为会话初始化协议,是由Internet工程任务组IETF于1999年提出的一个实现实时通信应用的信令协议。这里,会话是指用户之间的实时数据交换。SIP协议作用于建立、修改、释放多媒体会话。其中,会话可以是不同的数据,例如:数字化后的音、视频数据等。因此,SIP的应用具有很大的灵活性。
二、设计方案
SIP的主要部件包括用户代理、代理服务器、重定向服务器以及注册服务器。SIP呼叫建立正是依赖这些功能实体来实现。用户代理由用户代理客户端和用户代理服务器组成。前者只用于初始SIP请求,并负责发起呼叫;后者主要实现呼叫的接收并做出相应的响应。代理服务器具有解析能力,主要用于接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据服务器的应答对用户做出响应,也可以将收到的消息做适当的修改后再发出。重定向服务器将获得的呼叫的下一跳地址信息告诉呼叫方,呼叫方由此地址直接向下一跳发出申请,而重定向服务器则退出这个呼叫控制过程。注册服务器用来完成用户代理服务器的登录。在SIP系统中所有的用户代理服务器都要在网络上注册、登录,以便用户代理客户通过服务器能找到。
基于SIP协议的音视频终端的实现主要由信令控制协议-SIP协议协同音视频处理模块、媒体传输控制模块、界面控制模块这四个模块。在整个设计中,界面控制建立起用户与底层实现的桥梁,主要使用C#来进行相应的界面布局。信令控制模块由SIP协议来实现,用于实现呼叫建立、更新会话和拆除会话等功能,并向界面控制模块提供一些必要的接口。音视频处理模块主要实现的音视频数据的采集、多媒体数据流编解码、图片渲染、音频播放。媒体控制协议由RTP/RTCP协议来实现,RTP主要负责流媒体数据的封装,以及媒体流的实时传输,而RTCP主要负责不同通信实体之间交换控制信息,管理传输的质量,提供流量的控制以及拥塞控制等服务。
2.1SIP通信控制模块
在信令控制控制中,本设计采用开源的PJSIP协议栈。首先是因为PJSIP的代码层次非常的清晰,从低级到高级都提供很方便的接口调用以供开发,而且对接口提供了详细丰富的文档说明和相当多的测试案例,大大缩短开发周期;其次,它高度的可移植性也为开发人员带来了极大的便利,只需要编译一次就可以在多种平台上运行;再次,它高效的性能也保证了在低配置的终端也能带来良好的通话体验。最后,PJSIP支持多种SIP功能及扩展功能,例如多人会话、即时消息、IMS等等。
2.2音视频处理模块设计
由于是基于windows系统平台开发,所以音视频数据的采集都采用Windows自带的API函数库。音频的采集和播放采用的就是Windows Multimedia API,waveInXXX类的函数用于采集,waveOutXXX类函数用于播放。而视频的采集采用的是Windows的DirectShow,运用DirectShow我们可以很方便的从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。视频的渲染则是采用SDL来完成,SDL是一个跨平台的音视频渲染库,可以实现Linux,MAC,IOS,Android以及windows平台的音视频渲染。
音视频数据的数据量通常比较大,未经过压缩编码的视频在因特网上的传输效率十分低下,而且占用大量的网络资源,造成网络堵塞。音视频编码方面,本设计采用开源框架FFMPEG,这是一款非常强大的视频处理的开源框架。它支持丰富的视频编解码种类如VP8,H.263,H.264等,编解码效率高效。音频的编解码主要实现了G711,G729,iLBC,Speex等标准。
三、结束语
SIP协议简单、通用性好,而且移植性强等特点得到大家的关注。基于SIP协议的软交换新技术的研究和应用,将使视频通信进入一个新的发展和应用时期。
参考文献
[1] BUR GOODE.Voice Over Internet Protocol.ProCeeding of the IEEE.2003
[2]司瑞峰,韩心慧,龙勤,潘爱民. SIP标准中的核心技术与研究进展.软件学报. 2005
[3]白建军,彭晖,田敏. SIP揭秘.北京:人民邮电大学. 2003
[4] RFC3261.Session Initiation protocol.2002
[5]高深. SIP协议研究及其在视频通信中的应用.哈尔滨工业大学. 2008