【每天学点‘音视频’】前向纠错 和 漏包重传

在音视频传输中,前向纠错 和 漏包重传都是用于网络丢包、保障媒体流连续性的关键技术。
前向纠错(FEC)
FEC:Forward Error Correction ,前向表示提前预防,前向纠错表示提前冗余,预防丢包
1. FEC 原理
发送端在传输原始数据包的同时,会额外发送一部分冗余数据(纠错码),当有数据丢失时,接收端可通过冗余数据恢复出完整信息,无需额外请求重传。(有点像“备份策略“,在发送时就为可能的丢包做好准备)
2. 特点
优点:无需重传;抗突发丢包
缺点:冗余数据占用额外带宽;无法 100% 修复(若丢包超过冗余数据的恢复能力,仍会丢失数据)
3. 适应场景
实时音视频、直播会议、弱网环境
漏包重传(ARQ)
全称:ARQ:Automatic Repeat Request
1. 原理
接收端检测到丢包后,通过反馈机制通知发送端重新发送丢失的包,依赖双向通信。
2. 特点
优点:
精准修复:只重传丢失的包,无冗余带宽浪费。
高可靠性:理论上可保证 100% 数据完整(前提是网络允许重传)。
缺点
延迟增加:重传需要往返时间( RTT ),不适合强实时场景。
依赖网络状况:高丢包或高延迟下,重传可能失效。
3. 适应场景
对延迟不敏感但要求高可靠性的场景(如 VoIP、点播视频)。
什么是反馈机制
是指接收端向发送端传递网络状态或数据接收情况的控制信号,用于触发重传、调整编码参数或优化传输策略。具体就是通知发送端哪些数据包丢失了。有点就是可以精准修复、可以根据实时网络状况调整策略。
反馈机制的实现流畅
检测丢包:接收端发现序列号不连续
生成 NACK:构造包含丢失包 ID 的 NACK 报文
发送反馈:通过控制通道(RTCP)将 NACK 发送给发送端
触发重传:发送端接收到 NACK 后,立即重传指定包
常见的反馈机制

总结
通过本篇文章可了解前向纠错和漏包重传的概念,另外需要知道的是反馈机制是漏包重传的核心,在音视频传输中,两种技术会结合使用,以平衡实时性和可靠性。例如,WebRTC 会优先用 FEC 修复少量丢包,仅在关键帧丢失或 FEC 失效时触发 NACK 重传。
版权声明: 本文为 InfoQ 作者【小曾同学.com】的原创文章。
原文链接:【http://xie.infoq.cn/article/07163cbbed275136abb145f4a】。文章转载请联系作者。
评论