高效实时的网络会议数据传输库—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/ ...
随机推荐
- 认识HTML中文本、图片、链接标签和路径
前端之HTML.CSS(一) 开发工具 编辑器 Dreamware.Sublime.Visual Studio Code.WebStorm 浏览器 Chrome.IE(Edge).Safari.Fir ...
- 微信小程序图片上传放大预览删除代码
效果: 一,下面是上传图片的效果 image.js代码: Page({ //选择相册或拍照 data: { imgs: [] }, //上传图片 chooseImg: function (e) { v ...
- element-ui多选框reserve-selection指定row-key保留数据更新之前的数据
element-UI 的table表格数据有提供多项框的功能,只要在表格列中多加一列就可以选择表格的数据 但是有时候表格的数据是有分页的,分页一般是要重新请求后台数据,这样上一页也就是上一次请求的数据 ...
- 迪米特法则(Law of Demeter)LoD
using System; using System.Collections.Generic; using System.Text; namespace LawOfDemeter { //也叫Leas ...
- angular 首屏优化
前一段时间把公司的一个angular项目做了一次大的优化,记录一下过程. 起因: 起因是用户反映网站加载时间过长,从loading画面显示到页面可响应要13s,对于一般的页面恐怕没有用户愿意等待这么久 ...
- WPF中嵌入Skyline提供的COM组件填坑
网上有很多关于在WPF中使用的Skyline提供的COM组件的教程,但大都雷同一律,其中很多的细节均为涉及,本文意在在其原基础上进行一些细节的补充. 工具:Visual Studio 2017 1. ...
- BNU27932——Triangle——————【数学计算面积】
Triangle Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class nam ...
- nyoj 999——师傅又被妖怪抓走了——————【双广搜】
师傅又被妖怪抓走了 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 话说唐僧复得了孙行者,师徒们一心同体,共诣西方.自宝象国救了公主,承君臣送出城西,沿路饥餐渴饮,悟 ...
- 整理代码,将一些曾经用过的功能整合进一个spring-boot
一 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 功能 1. ...
- 吴恩达《Machine Learning Yearning》总结(21-30章)
21.偏差和方差举例 前提:对于人类而言,可以达到近乎完美的表现(即人类去做分类是误差可以接近0). (1)假设算法的表现如下:训练误差率:1%,开发误差率:11%:此时即为高方差(high vari ...