高效实时的网络会议数据传输库—UDT

在视频会议系统的研发当中,我们的音、视频数据必须要有相应的可靠性作为保障,因为视频会议系统是一个实时性非常强的系统,如果其数据在网络不太好的情况下,有可能会出现丢包、数据延迟、数据堵塞等现象,出现这些现象都会影响数据的可靠性,从而导致视频会议系统音、视频质量的下降。那我们怎样现实数据的实时性,但又能保证数据的可靠性呢?我们在前面文章“视频会议传输模块的开发选择”里面已经提到如果选择视频会议的传输库,而在这里我们详细地讲一下UDT库(UDP-based Data Transfer LibraryUDT 高性能的数据传输协议)。

UDT库是一位留美博士在校期间写的开源数据传输库,其协议是建立在UDP协议的基础上,通过数据重发、数据校验、数据还原处理等技术,实现数据高效的传输,并能保证数据的可靠传输。UDT库和其他的可靠传输库一样,都是在UDP协议上进行数据的封装,实现可靠的传输传输,为什么我们会推荐使用UDT作为视频会议开发的数据传输库呢?

1、跨平台性

UDT的开发是基于C语言,其跨平台性较好,除了支持windows系统外,还能支持一些移动终端的操作系统,如Android、IOS等,因此如果我们的视频会议系统要在主流的移动终端上进行运行,我们可以选择UDT库来进行数据的传输。而在移动终端平台上使用UDT库也非常容易,我们可以把UDT库加入到我们的代码里面,或者把UDT编译成动态链接库,然后通过接口来调用相应的UDT函数。

2、可靠性

UDT的可靠性并不像TCP进行三次握手和重发来实现,如果在网络堵塞较为严重的时候,TCP还是会一直重发数据,这样会导致网络更为堵塞,而UDT除了采用不可靠的UDP数据传输外,还利用控制信道对数据进行监测,如果在网络条件比较好的情况下,UDT数据会进行重新传输数据来保证数据的可靠性,而当网络条件较差的情况下,UDT会采用减少数据的发送量来实现数据传输的稳定性,从而保证数据的可靠实时。

3、支持海量数据实时传输

UDT不仅能实现数据的可靠传输,还能进行海量的数据实时传输,一般的TCP协议或者UDP协议,很难在网络上进行大数据的传输,而UDT在传输过程中建立了用于数据实时传输的缓冲区和特有的滑动窗口协议,因此UDT能在网络上,传输海量的实时传输数据。

4、支持点对点的连接

所谓的点对点传输,就是数据不通过服务器的转发,直接由发送方发送到接收方的一种传输方式。这种方式解决的内网传输的问题,如在不同的内网中,如果需要相互传输数据必须要通过服务器的中转或者通过NAT转换来实现不同内网的数据传输,而利用UDT可以实现不同内网的数据连接与传输。因此使用UDT传输库,可以用很小代价来实现内网的点对点数据连接与传输,因此UDT的点对点方式也非常适合于在视频会议系统使用。

由此可见,UDT库能为视频会议系统提供跨平台、数据的实时性、海量数据传输、点对点传输的支持,是一个值得我们关注并使用的高效实时传输库。

时间: 2024-10-27 06:58:49

高效实时的网络会议数据传输库—UDT的相关文章

安全高效的中小型网络

从第一次接触DOS到winnt――win98――winme――win2000――winxp.linux等各种不同的操作系统,从给别人组装兼容机――安装操作系统――维修笔记本到维护整个网络.服务器及周边设备,经历由易到难.由简到繁的过程,也从中学习到很多技术知识,丰富了自身经验. 我现在的工作主要是负责系统集成弱电项目的售前.售中和售后的工作.我所参于实施的很多网络工程中绝大多数是属于中小型网络,客户端多的就200个左右,少一些的就几十个.而就我所认知越小型的网络对安全和效率就越不重视(如中病毒.

使用事件驱动模型实现高效稳定的网络服务器程序

使用事件驱动模型实现高效稳定的网络服务器程序 几种网络服务器模型的介绍与比较 围绕如何构建一个高效稳定的网络服务器程序,本文从一个最简单的服务器模型开始,依次介绍了使用多线程的服务器模型.使用非阻塞接口的服务器模型.利用select()接口实现的基于事件驱动的服务器模型,和使用libev事件驱动库的服务器模型.通过比较各个模型,得出事件驱动模型更适合构建高效稳定的网络服务器程序的结论. 前言 事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用:事实上,在网络编程中事件驱动

网络中数据传输过程的分析

网络中数据传输过程的分析 我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?把自己的理解写一下,可能有很多细节还没有能的很清楚!希望在以后可以使之更加的完善!有不对的地方还请指正.     我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为 应用层 表示层 会话层 传输层 网络层 数据链路层和物理层.其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Cont

26款 网络会议/视频会议开源软件

转自:http://www.oschina.net/project/tag/227/video-conferencing?lang=0&os=0&sort=view&p=1 视频会议系统 OpenMeetings OpenMeetings是一个多语言可定制的视频会议和协作系统.它支持音频.视频,能让你查看每个与会者的桌面.OpenMeetings还包含一个白板,通过白板可以导入各种格式的图片和涂鸦. 在线演示:http://www.openmeetings.de/...更多Open

iOS使用Reachability实时检测网络连接状况

//在程序的启动处,开启通知 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //..... //开启网络状况的监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kR

实时获取网络时间 并转换为北京时间的函数

unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,Winapi.msxml, System.DateUtils, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton

国际网络环境对库的影响

国际网络环境可以理解为延迟很大.经常掉线.丢包的环境,和跨机房环境是一样的,不过,前者掉线严重,延迟更大,比如德国来回一般有300ms,美国有200ms,新加坡一般是90ms. golang标准库RPC 虽然是表面看是block调用,但是内部的实现不是一应一答,发送一次请求之后并不会等待结果再发送下一次请求,所以效率也是很高的.而且,如果发生网络出错,一定会通知到调用端,调用端只要做多次请求即可. 问题在于缺少timeout机制,容易在异常断开情况下,产生阻塞很久的错觉. 这个问题可以加个tim

Reachability实时监控网络变化

Reachability是一种实时观察网络发生变化控件,如当你的手机处于WiFi情况下,他就会检测环境,当处于GPS的情况下改变环境,当处于无网络的情况下又是一种环境.下面我们看下关于Reachability的用法. 1.用到Reachability的情况下,首先引入SystemConfiguration: Reachability.h: #import <Foundation/Foundation.h>#import <SystemConfiguration/SystemConfigu

iOS实时监控网络状态的改变

在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI网络:自动下载高清图片 4G/3G网络:只下载缩略图 没有网络:只显示离线的缓存数据 常用的有以下两种方法: (1).使用苹果观法提供的检测iOS设备网络环境用的库 Reachablity (2).使用AFN框架中的AFNetworkReachabilityManager来监听网络状态的