1 建立线性模型

使用RTP 包发送 RTCP包回馈拿到延时时间,计算抖动,什么是抖动呢,多个数据包之间的延时不相同就叫抖动,非常简单,第一次发送延时20ms, 第二次发送延时10ms, 第三次发送延时 15ms,抖动约为5毫秒,如果抖动的数据增多,是可以给抖动增加一个模型验算的。Google Congestion Control(WebRTC中所用),SCReAM以及SPROUT算法都是控制算法。
a1 * x + a2 = y
基本都是线性模型,这里是算法的IETF文档描述
现在的webrtc使用发送端带宽估计,这样做的话,所有的决定逻辑都会在一个地方(发送端),让测试新算法变得更简单,因为你不需要同时取决于两个端点,不过,在测试过程中,的确没有发现什么多大的改变,该卡还是卡,也就是说代码和实际其实是两回事。真正可用的,只有在实际会议中所用,使用探测带宽的1/2 , 这样不用在网络发生改变的时候改变策略,从而减少抖动。

2 回馈计算发送时间延时

2 发送一定是从大的数据流到小的数据流,生成数据后RTP报头的序列号和时间戳使用正确的序列,可以同时发送多个流的RTP包,可以同时验算是否可以同时发送多路流
如视频的按照增量算法时间戳 ,基数时钟 90000 ,如时间戳间隔 3600,根据rtp协议 m位 的判断,很容易就知道是25帧的视频,间隔如果为3000,立刻知道是30帧的视频,根据时间戳可以生成对端发送的物理时钟点,毫秒级别,如果有np 时间服务器对时,是可以推算整个的时间延时的。反馈包使用RTCP的扩展包进行传送,也可以自已定义,协议就是如此,协商就行。

3 不对称性和丢包

注意发送带宽和接收带宽的不对称性,一般探测的是发送带宽,视频会议这种发送随着人数的增加有不确定性,需要带宽预留。 丢包
无论是h264 h265 opus等算法发送都需要探测序列号的丢失,丢包等等影响解码,不然花屏等等影响体验,m 位和FU 分包的丢失判断是一个技巧,webrtc使用算法来决定发送,怎么做?难道你还能把帧率发送变慢?势必带来延时,发送端的丢包和接收端的丢包如果做?如果接收端丢包,只不过是体验提高罢了,发送端如果做才是关键。
3.1 丢弃非参考帧,保留参考帧
3.2 准备多路编码器,在带宽下降的情况下,使用小分辨率,同时丢弃大分辨率,并且准备下一个更小的分辨率,这就是我们的做法。

4 极致

极致效果下,可以使用边缘检测来发送图像,不行全部丢弃,直留音频

5 webrtc 中的多路码流示意

const SimulcastFormat kSimulcastFormats[] = {
{1920, 1080, 3, 5000, 4000, 800},
{1280, 720, 3, 2500, 2500, 600},
{960, 540, 3, 900, 900, 450},
{640, 360, 2, 700, 500, 150},
{480, 270, 2, 450, 350, 150},
{320, 180, 1, 200, 150, 30},
{0, 0, 1, 200, 150, 30}
};
webrtc无疑给大众开发者带来很多便利,但是代码太多,编译不便,修改也不是很简便,从底层开发,使用plain RTP 和FEC算法,对端探测,无疑更为简便,更好的是,可以非常容易地接上webrtc,webrtc使用srtp,只需要在rtp上加入secure ,就可以非常容易地接上webrtc的SFU,这是一条思路,在实验中,我们已经成功地将plainRTP 和 webrtc成功对接,webrtc 也可以转成RTMP,flv等常规直播流。

说句实话,是算法决定网络,还是网络决定算法。就像人的思想和身体一样。

如何做带宽估计和丢包策略相关推荐

  1. TCP的带宽估计和丢包恢复

    TCP的带宽估计和丢包恢复 一.带宽估计 TCP的带宽估计主要通过拥塞控制算法实现,用到两个变量: 1.cwnd     TCP对当前链路可用带宽的估计 2.ssthreash   拥塞控制算法&qu ...

  2. 直播系统从带宽扩展到丢包隐藏,实时音频中的 AI

    直播系统从带宽扩展到丢包隐藏,实时音频中的 AI 随着这几年直播系统的迅猛发展,我们在图像和视频处理领域里见证了非常多的应用,比如Agora引擎里的视频超分辨率技术.对于音频中AI的应用,我们可能经常 ...

  3. 华为交换机带宽不足会丢包吗_华为岳伟:品质家宽,释放F5G网络体验红利

    在北京举办的2020中国光网络研讨会(OPTiNET2020)之光接入技术与下一代PON分论坛上,华为技术有限公司传送接入产品组合与生命周期管理部总裁岳伟做了<品质家宽,释放F5G网络体验红利& ...

  4. 计算机网络:速率、带宽、延迟、时延带宽积、丢包率、吞吐量

    速率: 即数据率,也称比特率或者传输速率 单位:b/s, kb/s, Mb/s, Gb/s 速率往往是指额定速率或标称速率 带宽: 数字信道所能传送的"最高数据率",单位:b/s( ...

  5. 速率、带宽、延迟、时延带宽积、丢包率、吞吐量

    1. 速率 速率(数据率,数据传输速率,比特率) 单位时间(秒)传输信息(比特)量 单位:b/s(bps).kb/s.Mb/s.Gb/s k=103.M=106.G=109 速率往往是指额定速率或标称 ...

  6. 数据丢包怎么修复_一种网络传输中实时音频数据丢包恢复的方法与流程

    本发明涉及通信技术领域,具体涉及一种网络传输中实时音频数据丢包恢复的方法. 背景技术: 随着通信技术的发展,音频传输系统对实时性和准确性的要求越来越高.在网络的音频传输过程中,影响音频音质的主要因素是 ...

  7. 对抗弱网下的音视频难题,声网正式开源抗丢包音频编解码器 Agora SOLO!

    近些年,比较火的应用场景有这么几类: 游戏,比如多人在线对战游戏.狼人杀等,多人组队,还需要实时语音: 互动直播,比如主播与观众连麦.主播与其他主播进行跨直播间连麦,需要实时的互动: 在线教育,其中有 ...

  8. android 下测试网络的丢包率和延迟

    昨天做网络延迟和丢包率,以前没弄过,网上寻找也没找到什么有效的,弄了一下午搞定了,代码如下,希望对大家有帮助,写的不好,还请大家批评指正 String lost = new String();Stri ...

  9. android 丢包率测试,android 下测试网络的丢包率和延迟

    昨天做网络延迟和丢包率,以前没弄过,网上寻找也没找到什么有效的,弄了一下午搞定了,代码如下,希望对大家有帮助,写的不好,还请大家批评指正 String lost = new String(); Str ...

最新文章

  1. atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener...
  2. erdas图像增强步骤_基于erdas的图像增强处理
  3. SQL alter 的几种用法
  4. 2017年10月05日普及组 负进制
  5. 第十七次ScrumMeeting会议
  6. can2--tiny6410移植mcp2515驱动
  7. 给窗口添加背景图的案例
  8. Python+tkinter动态创建与销毁组件小案例
  9. poj 1164(DFS)
  10. Python爬虫--urllib
  11. Remoting技术
  12. c 语言全局变量的声明及用法,《c语言全局变量的用法》
  13. HUAWEI OSPF配置
  14. 扩展内存条 兼容性问题 双通道
  15. jar脱壳_[转载]脱壳再打包某梆梆免费加固APP
  16. 计算机技术对艺术的影响,数字化技术对当代艺术发展的影响--理论
  17. 数据可视化—复杂网络关系图的绘制
  18. Mysql存储引擎Innodb的读写锁、行级锁
  19. Java 2 实用教程
  20. axios 获取本地json文件

热门文章

  1. 在windows下安装webpy
  2. MFC开发IM-第二十六篇、vs2008添加库文件
  3. linux关闭cups命令,使用linux的cupsenable命令启动指定的打印机
  4. c oracle 分页工具类,Util工具类 跨Oracle、MySQL通用分页查询
  5. 中国历史上唯一没有贪污的王朝
  6. 顺丰控股:1月速运物流业务营收172.8亿元 同比增长14.23%
  7. 中国好岳父?女婿亏掉公司半个亿 岳父3天还清!涉事公司回应了
  8. 欧盟回应Meta退出欧洲威胁:没有Facebook生活一样很美好
  9. 淘宝宣布改名,网友:改了个寂寞?
  10. 黑鲨4游戏手机开启预热:4>5+6+7 比竞品更胜一筹