RTCP丢包重传策略之NACK
NACK全称Negative acknowledgements,相关具体描述可以查看rfc4585(NACK)文档。如果音视频收发双发都支持RTCP-NACK,当接收端认为发送端过来的RTP数据有丢包,这时接收端会向RTCP(NACK)的报文,请求发送端发送网络传输过程中丢掉的RTP数据包,同一个RTCP-NACK反馈包,可以请求发送端重传多个RTP包,下面主要讲下NACK格式的RTCP报文的主要组成部分:
typedef struct rtcp_header
{
#if __BYTE_ORDER == __BIG_ENDIAN
uint16_t version:2;
uint16_t padding:1;
uint16_t rc:5;
uint16_t type:8;
#elif __BYTE_ORDER == __LITTLE_ENDIAN
uint16_t rc:5;
uint16_t padding:1;
uint16_t version:2;
uint16_t type:8;
#endif
uint16_t length:16;
} rtcp_header;
/* Set header */
rtcp-version = 2;//版本号
rtcp->type = 205;//RTCP_RTPFB
rtcp->rc = 1; /* FMT=1 */
/*! \brief RTCP-FB (http://tools.ietf.org/html/rfc4585) */
typedef struct rtcp_fb
{
/*! \brief Common header */
rtcp_header header;
/*! \brief Sender SSRC */
uint32_t ssrc;
/*! \brief Media source */
uint32_t media;
/*! \brief Feedback Control Information */
char fci[1];
} rtcp_fb;
/*! \brief RTCP NACK (http://tools.ietf.org/html/rfc4585#section-6.2.1) */
typedef struct rtcp_nack
{
/*! \brief Packet ID */
uint16_t pid;
/*! \brief bitmask of following lost packets */
uint16_t blp;
} rtcp_nack;
如果只发送的RTCP-NACK报文中只要求发送端只重传一个RTP包,那么整个RTCP反馈包中的rtcp_nack数据只有一个;如果只发送的RTCP-NACK报文中只要求发送端只重传多个RTP包,则整个RTCP反馈包中的rtcp_nack数据有多个,其中每个rtcp_nack部分对应重传的一个RTP包。整个RTCP包的其它数据都只有一份。
RTCP丢包重传策略之NACK相关推荐
- Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析
Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析 本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表 ...
- android蓝牙丢包重传,华为TE Desktop Mobile软终端引领市场
[IT168厂商动态] 华为自从2013年推出TE30以后,随着视讯行业的迅猛发展与客户对视讯要求的不断提高,华为继续推出了TE40.TE50.TE60三款全新的高清视频会议终端,能全方位覆盖从中小型 ...
- TCPIP协议栈的心跳、丢包重传、连接超时机制实例详解
目录 1.问题概述 2.TCPIP协议栈的心跳机制 2.1.TCP中的ACK机制 2.2.TCPIP协议栈的心跳机制说明 2.3.修改TCPIP协议栈的默认心跳参数 3.libwebsockets开源 ...
- Wireshark tcptrace图关于丢包重传细节图解
上周六写了< 在Wireshark的tcptrace图中看清TCP拥塞控制算法的细节(CUBIC/BBR算法为例)>,收到一封邮件,说我文中的图示画错了. 确实,关于CUB ...
- P2P穿透(ENet丢包重传)
资源链接:http://download.csdn.net/download/yuanchunsi/10159049 P2P穿透成功后,获得对端IP和端口通过ENet进行连接传输数据,解决了UDP丢包 ...
- 云网络丢包故障定位全景指南
作者简介:冯荣,腾讯云网络高级工程师,腾讯云网络核心开发人员. 万字长文 建议收藏 引言 本期分享一个比较常见的⽹络问题--丢包.例如我们去ping⼀个⽹站,如果能ping通,且⽹站返回信息全⾯,则 ...
- Linux下网络丢包故障定位
Linux下网络丢包故障定位 | syxdevcode博客转载: 云网络丢包故障定位全景指南 硬件网卡丢包Ring Buffer溢出 如图所示,物理介质上的数据帧到达后首先由NIC(网络适配器)读取, ...
- UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?
关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/LearnLHC/article/details/115268028 整理:技术让梦想更伟大 | 李肖遥 一.UD ...
- UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景
目录 一.UDP 报文格式 二.UDP 分片 1.UDP 有发送缓存区吗? 1>.先说结论: 2>.逐步分析: 2.UDP 分片 1>.UDP 包最佳传输大小 2>.分片问题 ...
- 网络编程之网络丢包故障如何定位?如何解决?
引言 本期分享一个比较常见的网络问题--丢包.例如我们去ping一个网站,如果能ping通,且网站返回信息全面,则说明与网站服务器的通信是畅通的,如果ping不通,或者网站返回的信息不全等,则很可能是 ...
最新文章
- leetcode--无重复字符的最长子串--python
- linux上使用git把代码push到gitee上
- 控制科学对计算机能力的要求,0811控制科学与工程基本要求.pdf
- pl/sql远程连接oracle服务器问题(各种情况) .,plsql远程连接oracle服务器问题(各种情况).docx...
- Scala模式匹配中的变量
- “宝藏”大会NVIDIA GTC Digital来袭!这些AI前沿课程不容错过
- 六台机器搭建RedisCluster分布式集群
- 微信内置浏览器点击“返回”关闭窗口
- count(*)效率提高_2020年最新整理财务统计函数,学会让你财务统计效率提升95%以上...
- linux 配置远程日志服务器配置,配置远程日志服务器—实现日志的集中管理
- 您已购买此 App 内购买项目。此项目将免费恢复。This In-App purchase has already been bought.It will be restored for free.
- 3D目标检测-二阶段方法(region proposal-based Methods)之基于语义分割的方法(Segmentation based)解读
- 机器人工程行业算制造业吗
- git小游戏通关攻略(基础、高级、远程)
- 【译】Inside SafetyNet - part 3
- radio男女选择取值
- veracrypt加密mysql_VeraCrypt怎么用 VeraCrypt加密文件的图文教程方法
- loglog matlab,MATLAB 函数loglog()
- 共享内存 shmget函数
- windows下运行phalcon4.1.2,php7.4.3nts版本