在视频会议系统的研发当中,我们的音、视频数据必须要有相应的可靠性作为保障,因为视频会议系统是一个实时性非常强的系统,如果其数据在网络不太好的情况下,有可能会出现丢包、数据延迟、数据堵塞等现象,出现这些现象都会影响数据的可靠性,从而导致视频会议系统音、视频质量的下降。那我们怎样现实数据的实时性,但又能保证数据的可靠性呢?我们在前面文章“视频会议传输模块的开发选择”里面已经提到如果选择视频会议的传输库,而在这里我们详细地讲一下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库能为视频会议系统提供跨平台、数据的实时性、海量数据传输、点对点传输的支持,是一个值得我们关注并使用的高效实时传输库。

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

  1. 网络协议之:基于UDP的高速数据传输协议UDT

    目录 简介 UDT协议 UDT的缺点 总结 简介 简单就是美.在网络协议的世界中,TCP和UDP是建立在IP协议基础上的两个非常通用的协议.我们现在经常使用的HTTP协议就是建立在TCP协议的基础上的 ...

  2. [转]linux下iftop工具的安装与使用详解(图文)——实时的网络流量,监控TCP/IP连接(单机)

    原文链接:http://www.jbxue.com/LINUXjishu/10735.html 在linux中监控系统资源.进程.内存占用等信息,可以使用top命令.查看网络状态可以使用netstat ...

  3. Reachability实时监控网络变化

    Reachability是一种实时观察网络发生变化控件,如当你的手机处于WiFi情况下,他就会检测环境,当处于GPS的情况下改变环境,当处于无网络的情况下又是一种环境.下面我们看下关于Reachabi ...

  4. MySQL 实现将一个库表里面的数据实时更新到另一个库表里面

    MySQL 实现将一个库表里面的数据实时更新到另一个库表里面 需求描述:MySQL 里面有很多的数据库,这些数据库里面都有同一种表结构的表 (tb_warn_log),这张表的数据是实时更新的,现在需 ...

  5. Beta阶段第三次网络会议

    Beta阶段第三次网络会议 第二次会议问题解决情况 不同等级城堡不同图片,移动动画解决,阴影效果添加 小地图信息添加城堡和士兵信息 新AI设计失败,在存在科技树的情况下,如果将所有可能操作全部纳入考虑 ...

  6. Beta阶段第二次网络会议

    Beta阶段第二次网络会议 第一次会议问题解决情况 画面问题已经解决,游戏提示信息已加入完成 不同情况下背景已加入完成,但细节部分仍需要进行调整 科技树添加完成,权限修改完成,还存在部分细节调整 AI ...

  7. Beta阶段第一次网络会议

    Beta阶段第一次网络会议 游戏问题 游戏细节特征不够明显,大小虽然随着电脑分辨率的不同变化着,但是存在清楚的问题 游戏中的提示信息不够,玩家无法快速了解游戏 游戏中背景声音过于单一 游戏AI太简单 ...

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

    在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体 ...

  9. 在 JS 中使用 fetch 更加高效地进行网络请求

    在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 我的源博客地址:http://blog.parryqiu.com/2016/03/ ...

随机推荐

  1. poj1862

    一.题意:两个物体m1.m2相撞后会变成一个物体,这个物体的重量会变成2*sqrt(m1*m2).有n个物体,假设只会发生两两相撞,求最后剩下的最小重量. 二.思路:简单的贪心.越大的数开越多的次方, ...

  2. js正则表达式基本语法

    正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束. 例子如下: "^The":表示所有以"The"开始的字符串(&q ...

  3. 有关tensorflow一些问题

    1.python版本 采用64位的python 2.系统不支持高版本tensorflow(>1.6),运行报错如下: 问题描述如下: ImportError: DLL load failed: ...

  4. HTML问题 | 两个Input在同一行连着不留缝隙

    方法1:让两个 input 连在一起写 不换行 <div class="inputDiv"> <input type="text" place ...

  5. (转)远程SSH连接服务与基本排错

    远程SSH连接服务与基本排错 原文:https://www.cnblogs.com/chensiqiqi/p/6224474.html#top 1.1 为什么要远程连接Linux系统 在实际的工作场景 ...

  6. CountDownLatch 多线程,等待所有线程结束

    CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 主要方法 public CountDownLatch(int count); 构造 ...

  7. [转]批处理for命令使用指南

    摘要:本文由浅入深,为大家专门讲解for的用法,希望大家喜欢. 首先应该明确的是,for不是一个简单的命令,它的用法比较复杂,它还可以带四个参数(/L /D /R /F),其中:/L和/F参数是最经常 ...

  8. JS 用正则表达式,验证密码包含数字和字母的方法

    必须包含至少一位数字和一位字母,脚本方法如下: function CheckPassWord(password) {//密码必须包含数字和字母 var str = password; if (str ...

  9. 精简版LINUX系统---wdOS

    wdOS是一个基于CentOS版本精简优化过的Linux服务器系统,网站服务器系统并集成nginx,apache,php,mysql等web应用环境及wdcp管理系统,安装完系统,所有的都安装完成装好 ...

  10. 很有用的PHP笔试题系列一

    1.抓取远程图片到本地,你会用什么函数? fsockopen, A 3.用PHP打印出前一天的时间,打印格式是2007年5月10日22:21:21 Echo date(‘Y-m-d H:i:s’,st ...