背景

在丢包 10%下测试WebRTC,发现丢包导致的卡顿,需要一些开启一些机制来保证丢包重传。

摘要

简述WebRTC中NACK、RTX的功能和联系。

正文

NACK、RTX是WebRTC里丢包重传策略,两个策略之间有一定的联系。
NACK:接收端通过RTCP将丢包的序列号通知给发送端,让发送端重传该包。
RTX:发送端在新的SSRC上发送重传包或者冗余包。

两者均需要通过sdp协商开启,在支持的服务端(例如Janus)修改SDP即可开启。

要点

  • 重传包不一定通过RTX发送;
  • RTX包不一定用来重传丢失的包。

解释

在发送端收到NACK后,要重发接收端丢掉的包,发送的模式有两种:

  • RTX模式
    在接收端通过SDP使能发送端的RTX以后,重发的包封装到RTX包里发送,RTX包与原RTP有不同的SSRC,这样有助于避免SRTP的重放攻击,也能让接收端更好的估算带宽;
  • 普通模式
    在没有使能RTX时,发送端只是简单的重发原来的RTP包,这种模式会影响接收端的RTCP统计,比如会出现负的丢包率。

另外,RTX包有两种

  • 收到NACK重发的包
    如上述;
  • 发送端发送的冗余Padding包
    发送端的初始码率在达不到目标码率的情况下,会通过发送RTX包来补充,以能够逼近目标码率,当然这个机制必须启用RTX才能激活。因此,接收端可能会收到两种RTX包,一种是被NACK触发的,一种是发送端用来补充发送码率的冗余包。

WebRTC的NACK和RTX简述相关推荐

  1. 【webrtc】nack

    -参考大神文章 [RtpRtcp] NACK-RTX 参考大神 VideoReceiveStream 继承 NackSender 序号是uint16_t 的 class VideoReceiveStr ...

  2. WebRTC禁用NACK

    vi webrtc_video_engine.c static const int kNackHistoryMs = 1000; 改为 static const int kNackHistoryMs ...

  3. WebRTC系列-Qos系列之发送NACK

    文章目录 1. NACK简述 2. 判断包位置的算法 2. WebRTC中NACK的处理流程 2.1 主要流程函数分析 2.2 是否丢包判断 2.3 乱序包的处理 在之前的文章 WebRTC系列-Qo ...

  4. 什么是FEC/NACK/RTX

    FEC (Forward Error Correction) 中文叫前向纠错 前向纠错技术(Forward Error Correction)在确保信号的长距可靠传输方面也起着非常重要的作用,逐渐成为 ...

  5. 开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享

    开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享 一.优秀的流媒体博客资源 1.1 EasyNVR:专注于安防视频互联网化的技术 1 ...

  6. webRTC原理及信令简介

    WebRtc基本概念及协议介绍 术语 Signaling channel(信令通道) a) 一种资源,使应用程序可以通过交换信令消息来发现,建立,控制和终止对等连接 b) 信令消息是两个应用程序相互交 ...

  7. WebRTC进阶-SDP协议详解

    文章目录 SDP结构 会话描述 会话创建者o 媒体描述 媒体信息 音频媒体信息 a=rtpmap a=fmtp 视频媒体信息 SSRC与CNAME PlanB与UnifiedPlan 网络描述 a=c ...

  8. webrtc fec

    转自:http://www.cnblogs.com/webrtc/p/7402570.html WebRTC::FEC [TOC] Tags: WebRTC FEC WebRTC中的 FEC 实现分为 ...

  9. 解读 WebRTC 音频 NetEQ 及优化实践

    简介:NetEQ 是 WebRTC 音视频核心技术之一,对于提高 VoIP 质量有明显的效果,本文将从更为宏观的视角,用通俗白话介绍 WebRTC 中音频 NetEQ 的相关概念背景和框架原理,以及相 ...

  10. 从WebRtc学习RTP协议

    文章目录 TCP为何不适用于实时音视频 UDP->RTP RTP协议结构 Jittbuffer RTP扩展头 RTP填充数据 参考 TCP为何不适用于实时音视频 可靠性是以牺牲实时性为代价的.按 ...

最新文章

  1. SQL语句order by两个字段同时排序
  2. java pdf 水印_Java 在PDF中添加水印——文本/图片水印
  3. 子类能否访问或覆盖父类的private方法
  4. mysql索引优化实际例子_MySQL索引优化的实际案例分析
  5. 【C语言】如何安装CLion并在CLion中Run一个程序
  6. 第 4 章 部署 Enterprise Library
  7. Yii2框架之旅(六)
  8. NPM 修复两个严重漏洞但无法确认是否已遭在野利用,可触发开源软件供应链攻击...
  9. 【matlab-1】工具箱、窗口、变量的存储与加载、帮助
  10. 【f1c200s/f1c100s】不带中断引脚采用扫描的方式实现通用gpio-keys
  11. php jwt token刷新方案,laravel JWT自动刷新 自定义验证器
  12. 测试员,面对自己30岁后的下坡路,我们该何去何从?
  13. Java中Date日期时间的工具类
  14. smzdm 扫地机器人_Dyson 360 EYE扫地机器人评测:这次的黑科技是否值得拥有?
  15. 27岁,今年研究生上岸,有什么忠告可以给我的?
  16. Python 为什么不支持 switch 语句?
  17. 论文解读:《Amy pred-FRL是一种通过使用特征表示学习来精确预测淀粉样蛋白的新方法》
  18. xp计算机共享上限,WindowsXP系统下怎样突破客户端连接数限制?突破xp系统共享用户个数限制的方法...
  19. matlab/simulink下的模糊pid的温度控制系统
  20. 有了她,容易多了-- aardio语法与使用手册

热门文章

  1. WiFi 802.11可调参数说明---信标间隔(Beacon Interval)
  2. GBDT训练分类器时,残差是如何计算的?
  3. 可能有用的篡改检测常识
  4. 如果您的iPhone关闭,静音或不打扰,警报是否会起作用?
  5. 华为接头人话术指南:欲投华为,必看此贴!引流华为招聘提前批(备份)
  6. iphone模拟器目录
  7. matlab 将路径靠左,latex 图片位置靠左
  8. nodejs之koa配置koa-views中间件
  9. [微信小程序开发者工具] [error] Error: Fail to open IDE 问题解决方法
  10. Docker安装Yapi