设计师个人网站欣赏,上海知名网站,wordpress 分类做导航栏,网络营销外包推广FEC前向纠错用于丢包恢复#xff0c;对媒体包进行异或或其他算法生成冗余包进行发送。如果接收端出现丢包#xff0c;可以通过冗余包恢复出原始的媒体包。FEC的代价是增加码率带宽#xff0c;所以一般会根据网络状况、丢包率来动态调整FEC冗余系数#xff0c;也会结合NACK/…FEC前向纠错用于丢包恢复对媒体包进行异或或其他算法生成冗余包进行发送。如果接收端出现丢包可以通过冗余包恢复出原始的媒体包。FEC的代价是增加码率带宽所以一般会根据网络状况、丢包率来动态调整FEC冗余系数也会结合NACK/ARQ丢包重传使用。WebRTC使用的FEC包括ULP、flex、RED三种协议。接下来我们主要分析ULP的协议结构。
ULP全称为Uneven Level Protection不均匀级别保护权衡网络带宽和保护力度。FEC冗余包越多丢包恢复能力越强但是带宽消耗越多。并不是所有媒体包的优先级都相同因此可根据优先级来划分保护等级比如优先分配给音频包然后是视频的I帧包接着是P帧、B帧。
1、ULP结构
基于ULP的FEC包有一个或多个保护等级。如下图所示FEC包#1只有一个等级用于保护媒体包A和B而FEC包#2有两个等级0级用于保护媒体包C和D1级用于保护媒体包A、B、C、D。 2、FEC数据包结构
FEC数据包由RTP头、FEC头、FEC等级、FEC载荷组成如下图所示。 3、FEC头结构
FEC头的结构由扩展位E、长掩码L、填充位P、扩展标志X、CSRC计数、标志位M 、PT载荷类型、基本序列号、时间戳、长度组成占8个字节。如下图所示
E扩展位占1 bit默认为0
L长掩码占1 bitL0时掩码长度为16 bitsL1时掩码长度为48 bits
P、X、CC、M、PT与RTP头的数值一致
SN base基本序列号占16 bits
TS recovery恢复包的时间戳占32 bits
length recovery恢复包的长度占16 bits
4、 FEC的ULP等级
FEC的等级头占4或8字节当L0时头部长度为4字节当L1时头部长度为8字节。其中保护长度占16 bitsmask掩码占16 bits当L1时有扩展mask占32 bits。 掩码的设置需要符合以下条件
(1)、保护等级大于0的媒体包只会被保护一次保护等级等于0的媒体包可以被多次保护
(2)、假设媒体包的保护等级为p它可以被等级为p-1的任意FEC包进行保护
(3)、假设FEC包包含保护等级p它必须包含保护等级p-1
5、生成FEC包
FEC包由媒体包逐位异或得到并且根据每个等级生成不同的FEC包。假如RTP媒体包之间长度不同需要以最长的媒体包为基准其他媒体包添加填充位。
单个保护等级的FEC包示例如下这里以媒体包D长度为准其他媒体包后面填充0 两个保护等级的FEC包示例如下 6、FEC应用SDP会话
如下图所示分为2个FEC组第一组为agroup:FEC 1 2由音频流1和ulpfec流2组成第二组为agroup:FEC 3 4由视频流3和ulpfec流4组成。