webrtc fec

深入浅出WebRTC—ULPFEC ULPFEC 实现的核心是 FEC 保护比率的计算和掩码表的生成,FEC 保护比率决定了能使用多少 FEC 报文来保护原始报文,掩码表决定了 FEC 报文如何保护原始报文。围绕这两个核心概念,涉及如何生成 FEC 报文,如何打包和解包、如何发送和接收以及如何恢复原始报文等相关处理逻辑。 阅读详情
在基于IP网络的多媒体通信系统(比如WebRTC)中,网络丢包对多媒体通信质量有非常严重的影响:例如造成视频的马赛克、图像模糊、帧率下降等问题,造成音频的声音失真、噪声干扰、音频中断等问题。这都会严重影响系统的通信质量,造成非常差的用户体验。
WebRTC主要采取两种手段对抗网络丢包:丢包重传(NACK)和前向纠错(FEC)。FEC是一种前向纠错技术,发送端将负载数据加上一定的冗余纠错码一起发送,接收端根据接收到的纠错码对数据进行差错检测,如果发现差错,则利用纠错码进行纠错。而ULPFEC(Uneven Level Protection FEC,直译为非均等保护前向纠错)则是WebRTC实现的FEC方案之一,[本文深入学习ULPFEC的理论基础和实现细节](http://www.jianshu.com/p/06a27ebacec7)。

webrtc fec

相关源码在/src/webrtc/modules/rtp_rtcp/source目录下

解fec包

源码实现在 ulpfec_receiver_impl.cc 
demo

//初始化对象
void init() {
    std::unique_ptr<webrtc::UlpfecReceiver> fec_receiver_;

    fec_receiver_.reset(webrtc::UlpfecReceiver::Create(this));
}  

//添加rt
WebRTC 的前向纠错编码 - XOR FEC FEC FormatWebRTC 应用RFC 5109所定义的 XOR 来对RTP 数据进行保护, 以抵抗网络丢包. 协议所定义的包结构如下:+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP Header (12 octets or more) | +-+-+-+-+-+-+-+-+-+-+-+-+- 阅读详情

相关推荐

WebRTC:音频QoS中的前向纠错 (FEC) 技术解析

转载请标明出处:https://blog.csdn.net/qq_29621351 1. 前言        WebRTC语音传输中保证传输质量的主要措施分为丢包重传 (NACK) 和前向纠错 (FEC),其中NACK主要是接收端在检测到数据包RTP序列号不连续的时候,发送重传请求,发送端接收到重传请求后重新向接收端发送丢失的数据。FEC主要通过后一个数据包携带前一个数据包的冗余包,这样当前一...

无聊科技 5516

WebRTC系列--FEC介绍

RedFEC (Reduced-Complexity Forward Error Correction) 是一种前向纠错协议,定义在RFC2189中,它旨在通过向数据流中添加冗余信息来提高数据传输的可靠性;RedFEC通过在发送端对数据进行冗余编码,并在接收端使用冗余数据进行纠错来抵抗数据包丢失或错误。在规范中即定义了打包的格式,及如何通过RedFEC生成冗余包来对原始数据进行保护;异或的规则:两个值不相等则为 1,相等则为 0;当两个输入位相同时,异或结果为0。

HOSTEN的博客 1399

webrtc中的FEC配置

void VideoSendStreamImpl::ConfigureProtection() { RTC_DCHECK_RUN_ON(worker_queue_); // Consistency of FlexFEC parameters is checked in MaybeCreateFlexfecSender. const bool flexfec_enabled = (f...

chinabinlang的专栏 3836

WebRTC-FEC

RTP Payload Format for Generic Forward Error Correction摘要1.简介2.术语3.基本操作4.奇偶校验码5.不均匀电平保护(ULP)6.RTP 媒体包结构7.FEC 数据包结构7.1. 数据包结构7.2. FEC 数据包的 RTP 报头7.3. FEC 数据包的 FEC 标头7.4. FEC 数据包的 FEC 级别标头8. 保护操作8.1. FEC 报头的生成8.2. FEC 有效载荷的生成9.恢复程序9.1. RTP 头的重建9.2. RTP Paylo

viyana的博客 1680

流媒体学习之路(WebRTC)——FEC逻辑分析(6)

前面为大家介绍了GCC的部分逻辑,GCC作为码率控制的第一环所有的数据都会收到它输出的参考码率的限制。在发送的数据内容中有很多的分类:视频数据、音频数据、重传数据、FEC数据。FEC前面有向大家介绍过,中文称为:前向纠错。在WebRTC中有一个很好的Fec应用例子,它通过RR回复的网络信息进行动态调整,使得在传输中抵抗不同程度的网络损伤。下面我针对FEC给大家介绍一下动态变化的逻辑。FecController是WebRTC提供的接口,如果需要自定义自己的控制类,那么继承它之后进行开发就可以了。

qw225967的博客 2484

webrtc QOS方法二.1(FEC原理)

一、概述 webrtc冗余打包方式有三种:Red(rfc2198)、Ulpfec(rfc5109)、Flexfec(草案)。其中Red和Ulpfec要成对使用。 二、RedFEC 简单将老报文打包到新包上。如下图所示,冗余度为1时,RFC2198打包情况: 这种方法在音视频领域几乎不使用,因为冗余包只能保护特定一个报文,这种方法带宽占用量很大,恢复能力有限,性价比很低。只是早期的T38......

CrystalShaw的博客 1万+

webrtc 中的 fec

基于IP网络的多媒体通信系统(比如WebRTC)中,网络丢包对多媒体通信质量有非常严重的影响:例如造成视频的马赛克、图像模糊、帧率下降等问题,造成音频的声音失真、噪声干扰、音频中断等问题。这都会严重影响系统的通信质量,造成非常差的用户体验。 WebRTC主要采取两种手段对抗网络丢包:丢包重传(NACK)和前向纠错(FEC)。FEC是一种前向纠错技术,发送端将负载数据加上一定的冗余纠错码一起发送,接...

好记性不如写博客! 3092

WebRTC::FEC

WebRTC::FEC 目录 WebRTC::FEC ULPFEC FLEXFEC Encode ulpfec Decode ulpfec 动态 FEC 冗余度 FlexFEC in WebRTC WebRTC::FEC Tags: WebRTC FEC WebRTC中的 FEC 实现分为 UlpFEC 和 FlexFEC ulpfec:rfc 5109 ...

chinabinlang的专栏 1074

WebRTCFec实现

FEC报文构建、FEC掩码构造和丢失数据包恢复 ForwardErrorCorrection::EncodeFec()主要: 如2.2.1中所介绍的,随机丢包和突发丢包下fec组包模式不同,所以webrtc准备了两张mask表 kFecMaskRandom(随机丢包), kFecMaskBursty(突发丢包)去生成mask, 调用internal::GeneratePacketMasks()去生成mask 根据mask和packet, 调用GenerateFecPayloads()生成fec

fdsafwagdagadg6576的专栏 558

WebRTC FEC

Tags: WebRTC FEC WebRTC中的 FEC 实现分为 UlpFEC 和 FlexFEC ulpfec:rfc 5109 FlexFEC还在实现中, 相关标准也还是 RFC草案.详见:FlexFex WebRTCFEC进行恢复处理的动作对RTCP的统计是透明的. WebRTCFEC的冗余度计算是动态的, 会根据丢包情况和网络带宽估计(BWE)的结果动态调整冗余...

chinabinlang的专栏 3297

WebRTC-FEC协议总结

需要解决的问题 1、FEC Level Header for FEC Packets中的Protection Length 字段的大小是如何确定的?RFC5109中10.2节的例子中没有明确给出该字段值的计算方式。 2、RFC5109中10.3节的东西,还需要仔细阅读,因为WebRTC中,就是采用该方式传输的数据包。 3、ULP FEC的具体实现,需要阅读WebRTC源码 FEC总结比较好的文章 1、FEC 5109协议的翻译 https://blog.csdn.net/viyana/article/det

viyana的博客 1244

WebRTC[31]-WebRTCFEC类型

WebRTC中的 FEC 实现分为 UlpFEC 和 FlexFEC。主要区别:1.Ulpfec详情可以参考:RFC 5109。FlexFEC还在实现中, 相关标准也还是RFC草案。2.WebRTCFEC进行恢复处理的动作对RTCP的统计是透明的。3.WebRTCFEC的冗余度计算是动态的,会根据丢包情况和网络带宽估计(BWE)的结果动态调整冗余度,内部会维护一个静态的冗余度表。冗余度范围: ...

liuzhen007的专栏 3612

webrtc QOS FEC原理

fec webrtc

disikj的专栏 416

WebRTCFEC前向纠错协议

FEC前向纠错用于丢包恢复,对媒体包进行异或或其他算法生成冗余包进行发送。如果接收端出现丢包,可以通过冗余包恢复出原始的媒体包。FEC的代价是增加码率带宽,所以一般会根据网络状况、丢包率来动态调整FEC冗余系数,也会结合NACK/ARQ丢包重传使用。WebRTC使用的FEC包括:ULP、flex、RED三种协议。接下来,我们主要分析ULP的协议结构。

徐福记456 2124

WebRTCFEC、RED、PLC、RTX 如何提高实时通信的媒体质量

WebRTC media resilience 如何工作?什么是FEC、RED、PLC、RTX,以及为什么需要它们来提高实时通信的媒体质量。网络本质上是挑剔的,媒体编解码器更是如此。在网络中,并不是所有发送的东西都能在另一端收到,这意味着在处理WebRTC媒体时,我们又多了一件需要处理和关注的事情。对我们来说,幸运的是,有相当多的内置工具可供我们使用。但是,我们应该在每个点上使用哪一个,它们能带来什么好处?这就是我在这篇文章中要重点讨论的问题。

Lucky_wu24的博客 1497

WebRTC 音频抗弱网技术(上)

人均社恐,钟爱语聊。以语聊房为代表的语音社交产品解锁陌生人社交新方式,也不断讲述着新的出圈故事。关注【融云全球互联网通信云】了解更多而声音卡顿、断断续续、快进、慢放等现象会严重影响用户体验,直接导致用户离开,这些都是弱网引起的常见问题。本文主要从音频应用的角度来分析常用的弱网对抗技术,主要有如下几种:前向纠错技术(FEC、RED 等)后向纠错技术(ARQ、PLC 等)编码器抗弱网特性(本文重点关注 OPUS 编码器的特性)抗抖动技术(JitterBuffer)我们将用上、下两篇文章,结合 WebRTC 中使

weixin_44764152的博客 1380

webrtc FEC终极秘籍_推流端

1. 计算fec 媒体分组大小(通过丢包率和单个视频帧的码率计算得到)(如fec媒体分组大小是2的话,表示fec模块 每缓冲两帧视频帧大小的rtp数据就开始进行fec编码

debug&code的专栏 417
上一篇: PCM 编码为AAC
下一篇: 音视频pts计算
jaygno
博客等级 码龄17年 17粉丝 52原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值