高效实时的网络会议数据传输库—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库能为视频会议系统提供跨平台、数据的实时性、海量数据传输、点对点传输的支持,是一个值得我们关注并使用的高效实时传输库。
高效实时的网络会议数据传输库—UDT的更多相关文章
- 网络协议之:基于UDP的高速数据传输协议UDT
目录 简介 UDT协议 UDT的缺点 总结 简介 简单就是美.在网络协议的世界中,TCP和UDP是建立在IP协议基础上的两个非常通用的协议.我们现在经常使用的HTTP协议就是建立在TCP协议的基础上的 ...
- [转]linux下iftop工具的安装与使用详解(图文)——实时的网络流量,监控TCP/IP连接(单机)
原文链接:http://www.jbxue.com/LINUXjishu/10735.html 在linux中监控系统资源.进程.内存占用等信息,可以使用top命令.查看网络状态可以使用netstat ...
- Reachability实时监控网络变化
Reachability是一种实时观察网络发生变化控件,如当你的手机处于WiFi情况下,他就会检测环境,当处于GPS的情况下改变环境,当处于无网络的情况下又是一种环境.下面我们看下关于Reachabi ...
- MySQL 实现将一个库表里面的数据实时更新到另一个库表里面
MySQL 实现将一个库表里面的数据实时更新到另一个库表里面 需求描述:MySQL 里面有很多的数据库,这些数据库里面都有同一种表结构的表 (tb_warn_log),这张表的数据是实时更新的,现在需 ...
- Beta阶段第三次网络会议
Beta阶段第三次网络会议 第二次会议问题解决情况 不同等级城堡不同图片,移动动画解决,阴影效果添加 小地图信息添加城堡和士兵信息 新AI设计失败,在存在科技树的情况下,如果将所有可能操作全部纳入考虑 ...
- Beta阶段第二次网络会议
Beta阶段第二次网络会议 第一次会议问题解决情况 画面问题已经解决,游戏提示信息已加入完成 不同情况下背景已加入完成,但细节部分仍需要进行调整 科技树添加完成,权限修改完成,还存在部分细节调整 AI ...
- Beta阶段第一次网络会议
Beta阶段第一次网络会议 游戏问题 游戏细节特征不够明显,大小虽然随着电脑分辨率的不同变化着,但是存在清楚的问题 游戏中的提示信息不够,玩家无法快速了解游戏 游戏中背景声音过于单一 游戏AI太简单 ...
- iOS实时监控网络状态的改变
在网络应用中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体 ...
- 在 JS 中使用 fetch 更加高效地进行网络请求
在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 我的源博客地址:http://blog.parryqiu.com/2016/03/ ...
随机推荐
- 基于scrapy的一些实例
一.爬取斗鱼主播 1. 爬虫文件 # -*- coding: utf-8 -*- import scrapy import json from Douyu.items import DouyuItem ...
- 2019.3.26 SQL语句(进阶3)
表的联查 员工表与部门表 员工表:id,姓名,年龄,部门id 部门表:部门id,部门名,部门成立时间,部门领导,部门职责.... 表和表之间的关系 一对一 一对多 多对多 创建联查 创建表 先创建被依 ...
- PIE SDK小波变换
1.算法功能简介 小波变换是一种信号的时间——尺度分析方法,具有多分辨率分析的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可变,时间窗和频率窗都可变的时频局部化分析 ...
- CentOS-pam认证机制简介
前言 linux下PAM模块全称是Pluggable Authentication Module for linux(可插入式授权管理模块),该由Sun公司提供,在Linux中,PAM是可动态配置的, ...
- 千万不要犯这种愚蠢的错误:Property 'XXX' not found on type java.lang.String
一定是: <c:forEach var="book" items="${booklist}"> 而不是: <c:forEach var=&qu ...
- windows同时安装python2和python3两个版本
1.安装python2 下载地址: https://www.python.org/downloads/windows/ 进入页面,下拉,64位系统要选择这个. 下载完成后,一直点击下一步,直到安装完毕 ...
- linux 输出 之 nl 命令
1.命令格式:nl [选项]... [文件]... 2.命令参数: -b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类似 cat -n): -b t :如果 ...
- CenctOS6 and CenctOS7 多种姿势解决忘记密码
-----linux---- 忘记密码啦!!! 忘记密码教程!!! 教你们忘记密码(我原来密码就是123456,忘记是不可能的!假装忘记的样子 0.0) 现在我们忘记密码了!对忘记密码了.我忘记密码了 ...
- HTML问题 | 两个Input在同一行连着不留缝隙
方法1:让两个 input 连在一起写 不换行 <div class="inputDiv"> <input type="text" place ...
- Ubuntu Server 14 配置
语言 在虚拟机中安装了Ubuntu Server. Ubuntu Server只有控制台,没有图形界面.要在控制台下安装中文支持很麻烦.所以直接设置为英文,反正我看得懂. 在安装的时候必须将" ...