在视频会议软件的开发当中,由于需要传输一些音、视频等实时性非常强的数据,这些数据相对于一般的文本数据,显得非常巨大,因此我们在视频会议软件开发当中最重要的是解决如何传输实时、大容量数据的问题。由此可见选择一个合适的数据传输库对我们开发来说非常关键。而在视频会议软件的开发过程中,供我们选择的数据传输库非常多,我们在这里主要对用于视频会议软件开发的开源数据传输库,进行一个评测(jrtplibUDTRaknet),主要从实时性、传输效率、调用复杂度、可靠性、大数据、跨平台性这几个方面进行一个全面的对比。

1、jrtplib  (总体 :★★★★☆)  

jrtplib库是应用最广的RTP传输库,其主要是通过UDP协议封装RTP数据包来实现数据的实时传输,由于RTP协议是通过时间戳来实现数据的实时传输,因此jrtplib在视频会议软件开发当中,通常可以传输音、视频等实时的数据。除此之外,jrtplib库可以在 WindowsLinux FreeBSDSolarisUnixVxWorks 等多种操作系统上运行。

项目地址:http://research.edm.uhasselt.be/jori/jrtplib/documentation/index.html

实时性 (★★★★★):由于采用UDP的数据传输而且没有进行相应重发等操作,因此其实时性非常高。

传输效率(★★★★★)jrtplib算法简单,因此占用cpu非常小

调用复杂度(★★★☆☆)jrtplib依赖其他的库,因此编译起来比较困难,但使用较为方便。

可靠性(★☆☆☆☆)jrtplib库只在UDP上面进行了RTP数据包封装,没有进行可靠性控制,因此可靠性不能保证。

大数据(★★★★☆)jrtplib在传输大数据的时候,需要把大的数据进行分包,其每个包的大小都不能超过RTP设定的最大包的大小。

跨平台性(★★★★★)jrtplib跨平台性较高,可以在多种操作系统上运行。

 

2、UDT(总体 :★★★☆☆)

UDT库是一个非常著名的RUDP库(可靠的UDP库),其主要通过重发来实现UDP数据的可靠性,既可以保持数据的实时传输,也可以达到可靠的数据传输。在视频会议软件开发当中,可以传输一些信令或者实时性比较高的控制信息等。

项目地址:http://sourceforge.net/p/udt/discussion/852996

实时性(★★★★☆):由于采用UDP的数据传输,而且采用了重发等可靠的传输操作,因此其实时性比用jrtplib传输要低,但比直接采用TCP要高。

传输效率(★★★☆☆)UDT的滑动窗口算法比较复杂,占用cpu有点高。

调用复杂度(★★★☆☆)UDT调用较为简单,但没有分包算法,要自己进行分包处理,因此使用起来比较困难。

可靠性(★★★★★):由于UDT是进行可靠的验证,因此数据能保证可靠。

大数据(★★★☆☆)UDT在传输大数据的时候,同样需要把大数据进行分包进行传输,其每个包的大小不能超过UDT设定的最大包大小。

跨平台性(★★★★☆)UDT也能进行跨平台性编译,但最新版本在ios编译会出现错误。

 

3、Raknet(总体 :★★★★☆)

Raknet本来是一个游戏引擎,同时它也是一个非常优秀的RUDP传输库,在游戏领域拥有众多的开发者用户,而在视频会议软件开发当中,我们也可以利用这个优秀的游戏引擎来传输实时可靠的数据。Raknet传输库可以在非商业用途上开源,但在商业应用中收费,但我们一般项目还是可以直接使用它,它可以编译成静态库,因此Raknet也是一个不错的选择。

项目地址:http://www.jenkinssoftware.com

实时性(★★★☆☆)Raknet采用单线程的RUDP进行数据传输,因此其实时性要比jrtplibUDT都要低一些。

传输效率(★★★★☆)Raknet由于采用单线程的接收方式,因此效率比jrtplib要高,CPU占用也较小。

调用复杂度(★★★★★)Raknet调用较为简单,而其带有分包功能,不用自己进行分包操作,因此使用起来比较方便。

可靠性(★★★★★):由于Raknet通过重发和校验来保持数据的实时性,因此数据能保持可靠性。

大数据(★★★★☆)Raknet不需要进行分包操作,但由于其采用单线程设计,因此当网络堵塞的情况下,数据会重发,导致数据更加堵塞。

跨平台性(★★★★★)Raknet支持多系统的编译,跨平台性非常好。

 

相关文档:视频会议十大开源项目排行   主流的开源视频编解码项目及技术特点

 

 

 


Powered by PageAdmin CMS