视频通话分析

1:IP网络通讯协议

在传统电话系统中,一次通话从建立系统连接到拆除连接都需要一定的信令来配合完成。同样,在IP电话中,如何寻找被叫方、如何建立应答、如何按照彼此的数据处理能力发送数据,也需要相应的信令系统,一般称为协议。目前在国际上,比较有影响的IP电话方面的协议包括ITU-T提出的H.323协议和IETF提出的SIP协议。而MGCP主要应用于运营商市场,在行业市场鲜有应用。

1.1:协议概要分析

1.1.1:H323协议

H.323是ITU-T第16工作组的建议,由一组协议构成,其中有负责音频与视频信号的编码、解码和包装,有负责呼叫信令收发和控制的信令,还有负责能力交换的信令。H.323的第4版本具备做电信级大网的特征,以它为标准构建的IP电话网能很容易地与传统PSTN(公共交换电话网络)电话网兼容,从这点上看,H.323更适合于构建电话到电话的电信级大网。

H.323协议族规定了在主要包括IP网络在内的基于分组交换的网络上提供多媒体通信的部件、协议和规程。H.323一共定义了四种部件:终端,网关,网守和多点控制单元。利用它们,H.323可以支持音频、视频和数据的点到点或点到多点的通信。H.323协议族包括用于建立呼叫的H.225.0、用于控制的H.245、用于大型会议的H.332 以及用于补充业务的H.450.X等。H.323 协议中包含3条信令控制信道:RAS (R=注册:Registration、A=许可:Admission和S=状态:Status)信令信道、呼叫信令信道和H.245 控制信道。3 条信道的协调工作使得H.323的呼叫得以进行。

H.323建议是一个较为完备的建议书,它提供了一种集中处理和管理的工作模式,这种工作模式与电信网的管理方式是匹配的,这就是为什么电信网中使用的IP电话几乎无例外地都采用了基于H.323的IP电话工作模式。

1.1.2SIP协议

SIP协议,即Session Initiation Protocol,是另一套IP电话的体系结构,是一个与H.323并列的协议。它是一个工作在TCP/IP应用层的信令控制协议,用于创建、修改和终止一个会话。这里所指的会话是一个比较宽泛的概念,它既可以是传统的语音通信,也可以是视频、即使消息、在线游戏等,同时参与对话的实体可以是两个,也可以是多个。

SIP协议是一种基于文本的会话控制协议,它的消息都是由ASCII码组成的,因此易于阅读和理解。SIP协议由IETF组织研究并提交RFC,当前关于SIP协议的最新标准是RFC3261。由于IETF阵营汇聚的都是互联网方面的专家,因此SIP在开发上自然借鉴了其他TCP/IP相关协议的模式,在消息格式、认证模式、媒体描述等方面都完全采用了已有的标准,这样无疑加快了SIP协议的推广,让大量具有TCP/IP协议及应用开发经验的人可以迅速地接受SIP。

目前SIP协议的发展及推广非常迅速,IT领域的各大厂商都相继推出SIP的产品。例如微软的Live Communicator系统就选择了SIP协议;CISCO的融合通信系统采用了SIP;3GPP组织也选择SIP作为下一代一动网络的会话控制机制。可以预见,在即将到来的融合通信时代,SIP必然将充当重要的角色。

1.2:协议优缺点说明

1.2.1:H.323的优缺点

H.323的核心优点在于其成熟性,这有助于诸多软件供应商开发性能稳定的设备,并且还有利于不同的供应商消除互操作性中出现的问题,并在市场上推出各种支持H.323标准的设备。因为H.323标准包容了Q.931呼叫控制协议,许多在现有ISDN电话技术上具有丰富经验的开发商对该呼叫控制模型也非常熟悉。

在定义H.323时,设计人员是从终端设备的角度入手的,而非从现有PSTN(公共交换电话网络)的内部设备入手。另外,H.323的扩展性在超大型应用中已证明确实存在问题。设计人员在使用含有成千上万个端口的网关时发现,集中状态管理是瓶颈。

市场对H.323的反应表明,H.323的最佳应用点应是位于或临近端点并带有1至200个端口的系统。

1.2.2:SIP的优缺点

SIP的部分优点包括:该协议已经使用了多年,现在十分稳定。该协议基于文本的协议十分容易扩展,可以轻松定义并迅速实现新功能。可以简单易行地嵌入廉价终端用户设备。该协议可确保互操作能力,并使不同的设备进行通信。便于那些非电话领域的开发人员理解该协议。SIP协议与其他协议协同使用时,具有较强的灵活性,与其他软件系统融合可以构建完整的统一通信解决方案。

SIP的缺点是:SIP协议还是一个发展中的协议,尽快大量应用于各行业的VoIP解决方案中,但许多功能协议还在完善中。

低成本终端产品无疑是SIP最自然的应用了,像无线电话、置顶分线盒、以太网电话及其它带有有限计算和内存资源的设备都能使用该协议。由于SIP是一种优越的呼叫控制协议,因此是当前取代H.323呼叫控制协议的首选。

1.3:市场发展动态

目前主流的语音产品厂商都支持SIP协议,支持SIP协议的厂商包括了迈普、思科、北电、华为、中兴、华三等。

在实际的IP语音网络建设中,H323协议因为其固有的复杂性已经逐渐被SIP协议所取代,SIP协议是目前VOIP、统一通信建设的主要协议,广泛应用于公安系统的VoIP系统建设、法院VOIP系统建设、移动IMS业务系统建设、酒店VOIP电话系统建设等。而MGCP主要应用于运营商市场,在行业市场鲜有应用。

2:SIP协议

2.1:SIP协议简介

SIP(Session Initiation Protocol,会话发起协议)由IETF(Internet Engineering Task Force)提出的IP电话应用层信令协议,目前的版本是RFC3261。SIP是一种通信协议,定义了如何在通信设备(计算机,手机,PAD)之间相互连接和信息交换。SIP也是信令控制协议,可以配置和管理任何类型的peer-to-peer通信会话,但并不关心媒体类型(语音、短信、游戏、视频等)。它可以建立、修改或者终止多媒体会话或者呼叫,支持代理、重定向、注册定位用户等功能。

 

视频通话分析_第1张图片

SIP协议在协议栈位置图

2.2:SIP体系结构

SIP的系统结构主要包含以下五个部件:  

1. 用户代理(User Agent):像IP电话或者PC等支持SIP协议的设备,成为用户代理。用户代理 的目标就是发送SIP请求,和对SIP请求做出响应。一个用户代理包含用户代理客户端(User Agent Client)和用户代理服务器(User Agent Server)。在一个会话中,用户一般既充当用户代理客户端,又充当用户代理服务器。

2. 代理服务器(Proxy Server):具有解析能力,能够查询注册服务器得到一个用户代理的相关信息。代理服务器完成以下操作:它接受用户代理发来的请求,根据网络策略将请求发送给相应的服务器,或者发给另外的用户代理。它也接受其他的服务器或用户代理的响应,并传给其他的用户代理。一个无状态的代理服务器仅仅只是对每一个SIP请求或相应的消息内容做一些处理,处理完这些信息后,服务器上不保存与消息相关的任何信息。有状态代理服务器则与之相反,它会保存已处理SIP请求或响应的信息,用保存的信息来处理将来接受的请求或响应。例如:一个有状态代理服务器,当处理一个请求时,它会设置一个定时器。如果在一段时间内没有接到相应的响应消息,那么这个代理服务器就会将刚才那个请求重传。

3. 重定向服务器:重定向服务器对用户代理的请求并不响应,它用数据库或定位服务来查找一个 用户。它将获得的呼叫的目的地址信息告诉呼叫方,呼叫方由此地址直接向被呼叫方发出申请,之后重定向服务器则推出这个呼叫控制过程。

4. 注册服务器:它的作用是接受用户端的请求,完成用户地址的注册。注册请求的信息保存在一个分布式数据库中,该数据库供代理服务器和重定向服务器查询,用来完成UAS的登录。在SIP系统中,所有的UAS都要在网络上注册、登录,以便UAC通过服务器能找到。

5. SIP网关:SIP网关是一个特殊的设备,将Internet和PSTN相连。SIP设备可以通过网关,与普通的电信电话终端进行通信。

这几种服务器可共存于一个设备,也可以分别存在。

2.3:SIP开源协议栈对比

基于SIP的开发视频通话,基本使用开源的协议栈。

1.OPAL协议栈

OPAL(Open Phone Abstraction Library)的前身是Openh323开源项目,它包括几乎全部的Openh323全部代码,并加入了SIP协议栈,使到H.323和SIP协议能并存,开发者既可以使用功能全面的H.323协议,可以使用简单易用的SIP协议。Openh323是视频会议厂商最青睐的开源的H.323的开源项目,很多免费视频会议系统的H.323协议栈都是采用Openh323,OPAL的出现使系统能支持SIP协议,因此强烈推荐OPAL作为SIP协议栈的首选。

2. VOCAL协议栈

VOCAL项目vovida.org开发的开源SIP系统,VOCAL的SIP协议栈应该是目前功能最完善的SIP协议栈之一,其具有众多的使用者,但由于不支持window平台,所以限制了它的普及和推广。但在其他的linux操作系统上是最具有影响力的SIP协议栈。

3. ReSIProcate协议栈

ReSIProcate是SIPFoundry的开源项目,ReSIProcate协议栈是在VOCAL的基础上建立的,由于VOCAL开始只支持rfc3254,为了支持最新的rfc3261,ReSIProcate协议栈就这样诞生了。但现在,ReSIProcate已经成为一个独立SIP协议栈了,它性能较为稳定,并且很多商业的应用都在使用。

4.SIPX协议栈

SIPX是一个开源的SIP协议栈,它和ReSIProcate都是由SIPFoundry开发。sipX是从reSIProcat分离出来的,SIPX除了包括SIP 协议外,还包括了sipXphone,sipXproxy,sipXregistry等,由它们构成了完整的SIP系统,而且sipx还支持嵌入式系统,各个模块可以按需取舍。

5.PJSIP协议栈

PJSIP是一个开源的SIP协议栈,PJSIP协议栈同时支持音频、视频并支持即时通讯。PJSIP协议栈具有非常完善的文档,对开发者非常友好,是开发即时通讯系统的首选。同时PJSIP协议栈具有非常好的移植性,几乎支持现今所有的操作系统系统:从桌面系统、嵌入式系统到智能手机。

6.oSIP协议栈

oSIP协议栈是使用ANSI C编写的开源SIP协议栈,是体积最小的SIP协议栈,由于oSIP体积较小,很容易在小的操作系统上运行,因此在实时操作系统 VxWorks当中,oSIP是使用最多的SIP协议栈。

项目

OPAL

VOCAL

SIPX

RESIPRPCATE

OSIP

PJSIP

支持平台

WIN/LINUX

LINUX

WIN/LINUX

WIN/LINUX

WIN/LINUX/UNIX/

WIN/LINUX/OS X

编程语言

C++

C/C++

C++

C++

C/JAVA

C

TCP

UDP

参数对比图

3:客户端

视频通话分析_第2张图片 客户端结构图

视频通话系统的组件主要由控制模块、SIP协议栈、RTP协议栈及语音流、视频流的相关处理模块构成。组件结构如图所示。

其中,控制模块是组件API层的实现者,它的主要功能是接收并执行应用层的命令,向应用层上报其感兴趣的事件,同时控制会话信令的交互动作,控制媒体流的处理等。

SIP协议栈的功能,是建立、调整和终止一个多媒体会话,进行一个多媒体会话中的信令控制处理操作。如向远端用户发出呼叫请求,在呼叫成功后,按照通话双方协商好的多媒体属性进行多媒体会话。

RTP协议栈的功能,是在无连接网络服务(UDP/IP)的基础上提供实时多媒体流的网络传输服务,以避免多媒体数据包的丢失及传输乱序。  

实时音频流的相关组件功能主要有语音采样、语音输出、回声消除、音频编编码。

实时视频流的相关组件功能主要有视频采样、视频输出、画中画处理、视频编解码。

视频通话分析_第3张图片

视频通话模块软件架构图

其中,系统平台包含了底层和中间层。底层主要是基于硬件的驱动,包括MIC驱动、Camera驱动。这些驱动向下控制这硬件工作,向上提供接口给操作系统和应用层协议调用。中间层是操作系统和协议堆栈程序。其中,操作系统负责管理系统资源和任务的调度。协议堆栈通过TCP/UDP/IP传输协议从网口既然收输入的数据包,然后根据序号重组数据包,复原音视频压缩数据作为音视频解码的输入,另外通过协议堆栈把音视频编码产生的数据打包、分组传输。  

上层软件包括:UI、拨号、网络收发、音频编解码、视频编解码。  

UI模块,为用户提供了人性化的设计的图形化界面,通过配合遥控器的使用,实现拨号、发起呼叫、接受呼叫、终断通话等功能。

拨号模块,主要是电话拨号呼叫、接听的功能控制和管理。呼叫时,此模块把遥控器输入的数值封装到SIP数据包,调用协议栈处理程序输出SIP包,向目标机发出呼叫,实现用户之间建立信道的连接服务。来电时,此模块接受SIP数据包,然后开始通话接听服务。  

网络收发模块,功能是数据包的发送和接收。发送时,此模块将音视频压缩编码的数据包,以实时传输协议RTP格式封装,然后打包、分组,通过双方UDP的Socket进行传输。接收时,此模块在接收端申请了适当的缓冲区,接受到RTP数据包后,利用时间戳和序号信息重组、还原数据包,检包进行音视频解码输出。

音频编解码模块,根据ITU公布的G.711标准编写的语音编解码程序。一方面从网络输入缓冲中读取音频压缩数据进行解码输出;另一方面读取经MIC输入,经过采集、A/D转换数字音频,然后以G.711标准进行编码,然后按照RTP协议进行封装,转给网络收发模块处理。

视频编解码模块,从网络输入缓冲区读取到视频数据后,解码器(Video Decoder)进行解码。编码时,编码器(Video Encoder)采用MPEG4标准进行压缩编码,然后按照RTP协议进行封装,转给网络收发模块处理

3.1:Linphone

Linphone是一个开源的SIP电话,可以在移动和桌面环境(IOS,Android,GNU/Linux,Mac OSX,Windows桌面,Windows 10)。

Linphone内的用户界面和核心引擎之间的分离,允许创建各种顶上同样功能的用户界面。

用户界面的前端:Windows GTK+界面,Mac和GNU/Linux;控制台界面(Linphonec,Linphonecsh);Iphone应用程序;Android应用程序;Windows 10应用程序。

Liblinphone,核心引擎:这是实现Linphone的核心所有功能。

Liblinphone是一个功能强大的基于SIP的VoIP视频SDK,任何人都可以使用添加音频或视频通话功能的应用。它提供了一个高层次的API来启动,接收,终止音频和视频通话。

Liblinphone依赖于以下软件组件:

Mediastreamer2,强大的多媒体SDK使音频/视频流处理。

Ortp,简单的RTP协议库。

Belle-Sip,SIP协议库。

Liblinphone及其所有依赖库是用纯C写的。

视频通话分析_第4张图片

 

Linphone架构图

总结:整套方案源码开源,适用于Window、Linux、Android系统,深度耦合Mediastreamer2、Ortp、Belle-Sip等第三库。有免费供使用SIP服务器,注册就能正常使用。

3.2:Homer-conferencing

Homer-conferencing是一个免费的支持音频和视频的SIP软件电话。该软件可用于Windows、Linux和OS X。Homer-conferencing是一款开发视频会议的工具。Homer-conferencing的基本功能分为以下4个方面的应用:视频会议、流媒体、录像、录屏

特性:

Windows、Linux操作系统的图形用户界面

基于SIP的对等视频、音频、文本聊天

基于SIP服务器具有无限参与者的的会议

记录从设备、网络端音视频数据

播放格式:M3U

网络:

通过SIP 、SDP管理会议

基于实时多媒体数据传输RT(C)P、UDP/TDP/UDP Lite/SCTP,IPv4/IPv6

单视频、音频传输:发送和接收(包括播放功能)

可配置的端口分配

NAT穿越

视频:

流媒体编解码器:H.261,H.263(+),H.264,MPEG1/2/4

捕捉输入:桌面屏幕,摄像头,视频捕捉设备

文件格式:AVI,ASF,BMP,JPG,JPEG,FLV,M4V,MKV,MOV、MPG、MPEG、MP4、MP4A,M2T,M2TS,PNG,SWF,VOB,WMV,3GP

视频分辨率从128 * 96到1920 * 1080像素

记录格式:AVI,MOV,MP4,M4V,3GP

截图格式:BMP,JPG,PNG,PGM,PPM,XBM,XPM

音频:

流媒体编解码器G.711、G.722 a/u-Law,ADPCM,PCM16,MP3

捕捉输入:麦克风,其他音频捕获设备

从32 kbit/s的256 kbit/s音频比特率

录音格式:MP3,WAV

硬件:

32/64位处理器与2 GHz的内存

系统:

Windows 2003(Windows 7推荐)

Linux内核2.6(Linux推荐内核 > 3.1)

总结

整套方案源码开源,适用于Window、Linux、OS X系统,依赖第三方Openssl、Gt、Alsa、Sdl、Gcc、Ffmpeg等第三库,能跑完整的应用,缺少相关指导文档。没有免费服务器支持,账户需要借助第三方服务器,如Sip2sip等。

4:服务端

SIP服务器负责建立网络中所有的SIP电话通话。SIP服务器也叫SIP代理服务器或注册服务器。

通常情况下,SIP服务器不参与媒体处理过程。在SIP网络中,媒体一般总是采用端到端协商的处理方式。在某些特殊情况或者业务处理中,例如Music On Hold,SIP服务器也会主动参与媒体协商。

简单的SIP服务器只负责会话的建立、维护和清除,不过多干涉呼叫。大部分SIP服务器都是基于Linux平台,典型代表为:Kamailio、OpenSER、SipXecx等。也有部分SIP服务器是基于Windows平台,典型代表为:MiniSipServer、Brekeke等。

你可能感兴趣的:(音视频,网络,网络协议)