exosip与sipServlet 是什么关系?

exosip与sipServlet 是什么关系?,第1张

1、开源的sip服务器端,比较好用的是Asterisk,标准C程序实现,代码清晰。

2、sip的client相对比较多,主要有exosip,pjsip和opal。exosip简单易用,在PC上用比较方便。但是涉及的相关资源太多,用了osip,srtp,ms2等众多的开源库,ms2下面还用到了ffmpeg,别的不说,光编译就是噩梦。opal功能最强,虽然也用到了ffmpeg ,但是自己封装的非常好,采用插件方式,调用灵活。opal采用class方式提供封装,接口非常友好。感觉唯一不爽的地方,就是低层使用了ptlib,虽然多平台下都很好用,但放在嵌入式下感觉稍庞大了一些。pjsip精巧,方便移植,嵌入式下应该是首选。不过视频频支持方面扩展起来比opal麻烦。个人感觉,对于windows开发者来说,pjsip最大的好处就是代码调试方便。整个工程一次编译通过,另外两个库还要找很多相关的资源

3、其他的一些协议栈也调试过,比如reSipphone,好象是这个名字,还有Yate,不过从快速开发角度看,都不太合适。现在搞sip开发的,一开始就是先找好协议栈。linphone,ekiga什么的,但庞大。对于刚开始做的,最好是一个精简的demo。后来找到pjsip下面的几个例子,慢慢地了解了sip的工作流程,当然少不了抓包工具和tcpdump。

不过,其实,sip没有想象中的那么麻烦。现在回头看,刚开始做项目,使用协议栈绝对不是好想法。如果换个方向,先熟悉SIP基本协议,然后自己改造一个,或完全写一个,可能效果更好。

几种开源SIP协议栈对比

随着VoIP和NGN技术的发展,H323时代即将过渡到SIP时代,在H323的开源协议栈中,Openh323占统治地位,它把一个复杂而又先进的H323协议栈展现在普通程序员的眼前,为H323普及立下了汗马功劳。而然当在SIP时代,则出现了群雄割据的状况,SIP相对于H323简单,灵活,于是各种协议栈层出不穷,下面将详细对比最具有代表性的5个开源项目:OPAL,VOCAL,sipX,ReSIProcate,oSIP

1、OPAL

OPAL是Open Phone Abstraction Library,是Openh323的下一个版本,它仍然使用了Openh323的体系结构,并在其基础上进行扩展,同时实现了SIP,H323,但在音频和视频的编码和传输部分有较大改动。OPAL初衷设计是包含任何电话通信协议,所以其底层进行了高度的抽象化,所以也能够很容易的支持MGCP,PSTN和将来会出现的协议。不过由于Openh323的最后一个版本还在开发中,所以原本6月发布的OPAL也被推迟,现有的OPAL还非常不完善,BUG也非常多,不过相信以Openh323的开发班底,一定能让OPAL十分优秀。

CVS : :pserver:anonymous@cvssourceforgenet:/cvsroot/openh323/opal

Language : C++

VxWorks port : Yes

Win32 port : Yes

Linux port : Yes

Supports RFC 3261 : Yes

Supports RFC 2327 : Yes

Supports RFC 3264 : Yes

Supports RFC 3263 : No

Supports RFC 3515 : Yes

Supports RFC 3262 : No

Supports RFC 3311 : No

TCP : Yes

UDP : Yes

SIZE : 8MB

License : MPL

Document : None

Samples : UA,GK

2、VOCAL

VOCAL是vovidaorg开发的SIP系统,VOCAL应该是目前功能最完善,使用者最多的开源SIP协议栈了它不只包括了协议栈,还包括了h323与sip转换网关,对SIP的各种Server的功能支持也非常完善不过很可惜,不支持windows平台,而且自从vovida被CISCO收购以后就停止了开发,最后的版本是2003年4月的150。

CVS : :pserver:anonymous@cvsvovidaorg:/cvsroot/vocal

Language : C++

VxWorks port : No

Win32 port : Partial

Linux port : Yes

Supports RFC 3261 : Partial

Supports RFC 2327 : Yes

Supports RFC 3264 :

Supports RFC 3263 :

Supports RFC 3515 : Yes

Supports RFC 3262 :

Supports RFC 3311 :

TCP : Yes

UDP : Yes

SIZE : 6MB

License: Vovida software licencse

Document : Few

Samples : UA,GK,GW

3、sipX

sipX是一个SIP系统,由SIPFoundry开发。sipX是从reSIProcate分离出来的,sipX除了包括SIP stack外,还包括了sipXphone,sipXproxy,sipXregistry等等,由它们构成了完整的SIP系统,而且sipx还支持嵌入式系统,各个模块可以按需取舍。不过可惜是几乎没有任何开发文档。

SVN : http://scmsipfoundryorg/viewsvn/

Language : C++

VxWorks port : Yes

Win32 port : Yes

Linux port : Yes

Supports RFC 3261 : Yes

Supports RFC 2327 : Yes

Supports RFC 3264 : Yes

Supports RFC 3263 : Yes

Supports RFC 3515 : Yes

Supports RFC 3262 : No

Supports RFC 3311 : No

TCP : Yes

UDP : Yes

SIZE : <4 Mb

License : LGPL

Document : None

Samples : UA,GK,GW

4、ReSIProcate

ReSIProcate同样也是由SIPFoundry开发,ReSIProcate最开始起源于Vocal,由于Vocal开始只支持rfc3254,为了支持最新的rfc3261,ReSIProcate诞生了,但现在,ReSIProcate已经成为一个独立SIP协议栈了,它十分稳定,并且很多商业程序都在使用。

SVN : http://scmsipfoundryorg/viewsvn/resiprocate/main/sip/

Language : C++

VxWorks port : No

Win32 port : Yes

Linux port : Yes

Supports RFC 3261 : Yes

Supports RFC 2327 : Yes

Supports RFC 3264 : Yes

Supports RFC 3263 : Partial

Supports RFC 3515 : Yes

Supports RFC 3262 : No

Supports RFC 3311 : No

TCP : Yes

UDP : Yes

SIZE : < 25 Mb

License : Vovida

Document : Few

Samples : None

标准库 Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。 Python标准库的主要功能有: 1文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能 2文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能 3操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志(logging)等功能 4网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能 5网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架 6W3C格式支持,包含HTML,SGML,XML的处理。 7其它功能,包括国际化支持、数学运算、HASH、Tkinter等 Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、Web开发、数据库接口、图形系统多个领域。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组函式库,BoostPython,使得以Python或C++编写的程式能互相调用。Python常被用做其他语言与工具之间的“胶水”语言。 著名第三方库 1Web框架 Django: 开源Web开发框架,它鼓励快速开发,并遵循MVC设计,开发周期短。 ActiveGrid: 企业级的Web20解决方案。 Karrigell: 简单的Web框架,自身包含了Web服务,py脚本引擎和纯python的数据库PyDBLite。 Tornado: 一个轻量级的Web框架,内置非阻塞式服务器,而且速度相当快 webpy: 一个小巧灵活的Web框架,虽然简单但是功能强大。 CherryPy: 基于Python的Web应用程序开发框架。 Pylons: 基于Python的一个极其高效和可靠的Web开发框架。 Zope: 开源的Web应用服务器。 TurboGears: 基于Python的MVC风格的Web应用程序框架。 Twisted: 流行的网络编程库,大型Web框架。 Quixote: Web开发框架。 2科学计算 Matplotlib: 用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。 SciPy: 基于Python的matlab实现,旨在实现matlab的所有功能。 NumPy: 基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案。 3GUI PyGtk: 基于Python的GUI程序开发GTK+库。 PyQt: 用于Python的QT开发库。 WxPython: Python下的GUI编程框架,与MFC的架构相似。 4其它 BeautifulSoup: 基于Python的HTML/XML解析器,简单易用。 PIL: 基于Python的图像处理库,功能强大,对图形文件的格式支持广泛。 PyGame: 基于Python的多媒体开发和游戏软件开发模块。 Py2exe: 将python脚本转换为windows上可以独立运行的可执行程序。

最新要做一个移动端视频通话软件,大致看了下现有的开源软件

一) sipdroid

1)架构

sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器)实现。NAT传输支持stun server

2)优缺点:

NAT方面只支持STUN,无ICE框架,如需要完全实现P2P视频通话需要实现符合ICE标准的客户端,音频方面没看到AEC等技术,视频方面还不是太完善,目前只看到调用的是系统自带的MediaRecorder,并没有自己的第三方音视频编解码库。

3)实际测试:

基于sipdroid架构的话,我们要做的工作会比较多,(ICE支持,添加回音消除,NetEQ等gips音频技术,添加视频硬件编解码codec),所以就不做测试了。

二) imsdroid

1)架构:

基于doubango(Doubango 是一个基于3GPP IMS/RCS 并能用于嵌入式和桌面系统的开源框架。该框架使用ANSCI-C编写,具有很好的可移植性。并且已经被设计成非常轻便且能有效的工作在低内存和低处理能力的嵌入式系统上。苹果系统上的idoubs功能就是基于此框架编写) 音视频编码格式大部分都支持(H264(video),VP8(video),iLBC(audio),PCMA,PCMU,G722,G729)。NAT支持ICE(stun+turn)

2)效果实测

测试环境:公司局域网内两台机器互通,服务器走外网sip2sip

音频质量可以,但是AEC打开了还是有点回音(应该可以修复)。视频马赛克比较严重,延迟1秒左右。

3)优缺点

imsdroid目前来说还是算比较全面的,包括音视频编解码,传输(RTSP,ICE),音频处理技术等都有涉猎。doubango使用了webrtc的AEC技术,但是其调用webrtc部分没有开源,是用的编译出来的webrtc的库。如果要改善音频的话不太方便,Demo的音频效果可以,视频效果还是不太理想。

三)csipsimple

1)sip协议栈用的是pjsip,音视频编解码用到的第三方库有ffmpeg(video),silk(audio),webrtc默认使用了webrtc的回声算法。支持ICE协议。

2)优缺点:

csipsimple架构比较清晰,sip协议由C实现,java通过JNI调用,SIP协议这一块会比较高效。其VOIP各个功能也都具备,包括NAT传输,音视频编解码。并且该项目跟进新技术比较快,官方活跃程度也比较高。如果做二次开发可以推荐这个。

3)实测效果

测试环境:公司局域网内两台机器互通,服务器走外网sip2sip

音频质量可以,无明显回音,视频需要下插件,马赛克比imsdroid更严重。

四)Linphone

这个是老牌的sip,支持平台广泛 windows, mac,ios,android,linux,技术会比较成熟。但是据玩过的同事说linphone在Android上的bug有点多,由于其代码实在庞大,所以我暂时放弃考虑Linphone不过如果谁有跨平台的需要,可以考虑Linphone或者imsdroid和下面的webrtc。。。好像现在开源软件都跨平台了。。。

五) webrtc

imsdroid,csipsimple,linphone都想法设法调用webrtc的音频技术,本人也测试过Android端的webrtc内网视频通话,效果比较满意。但是要把webrtc做成一个移动端的IM软件的话还有一些路要走,不过webrtc基本技术都已经有了,包括p2p传输,音视频codec,音频处理技术。不过其因为目前仅支持VP8的视频编码格式(QQ也是)想做高清视频通话的要注意了。VP8在移动端的硬件编解码支持的平台没几个(RK可以支持VP8硬件编解码)。不过webrtc代码里看到可以使用外部codec,这个还是有希望调到H264的。

总结:sipdroid比较轻量级,着重基于java开发(音频codec除外),由于其音视频编码以及P2P传输这一块略显不足,不太好做定制化开发和优化。imsdroid,遗憾就是直接调用webrtc的库,而最近webrtc更新的比较频繁,开发比较活跃。如果要自己在imsdroid上更新webrtc担心兼容性问题,希望imsdroid可以直接把需要的webrtc相关源码包进去。csipsimple的话,都是围绕pjsip的,webrtc等都是以pjsip插件形式扩充的,类似gstreamer webrtc如果有技术实力的开发公司个人还是觉得可以选择这个来做,一个是google的原因,一个是其视频通话相关关键技术都比较成熟的原因。个人觉得如果能做出来,效果会不错的。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » exosip与sipServlet 是什么关系?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情