WebRTC RTCP协议 PLI、FIR 请求关键帧

本篇文章主要介绍rtcp的反馈包,在音视频通话过程中反馈包是接收端用来通知发送端的消息。

RTCP 反馈包

反馈包详情见:rfc4585

反馈包协议格式:

   All FB messages MUST use a common packet format that is depicted in
   Figure 3:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |V=2|P|   FMT   |       PT      |          length               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  SSRC of packet sender                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                  SSRC of media source                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   :            Feedback Control Information (FCI)                 :
   :                                                               :

           Figure 3: Common Packet Format for Feedback Messages

协议字段介绍

  • version : 协议版本号
  • P :是否包含填充数据。如果包含,在包的尾部会存在填充数据
  • FMT :Feedback message type  反馈类型,常用的反馈消息如:NACK 、PLI、FIR等
  • PT :包类型。有两大类型的反馈包,PT =205、PT =206,分别为传输层反馈,负载层反馈
NAMEValueBrief Description
RTPFB205Transport layer FB message
PSFB206Payload-specific FB message
  • length:包的总长度,包括头与填充数据的总长度。
  • SSRC :发送该RTCP包的发送者的SSRC
  • media ssrc :该RTCP发送给谁,media SSRC就是谁的
  • FCI: 反馈包的控制信息,该字段是变长的,不同的反馈包FCI的内容和长度不一样

本文将介绍负载层常用的两类反馈消息:PLI 、FIR

PLI

Picture loss indication (PLI) (RFC 4585)

  • 格式:FMT = 1,PT =206
  • 作用:在发生关键帧丢失无法解码时,请求发送端产生新的关键帧

PLI 反馈包没有FCI字段,只包含前面12个字节,webrtc处理PLI包见pli.cc文件。

当发送PLI通知对方产生关键帧时,至少需要等待一个RTT时间,且关键帧的包比普通包要大,发送时间也会增加,所以会增加一定的延时。

FIR

Full intra request (FIR) (RFC 5104)

  • 格式:FMT = 4,PT =206
  • 作用:请求发送端产生新的关键帧。PLI是在发生丢包时请求产生关键帧,而FIR是当新用户进入房间,为了使该用户立马看到视频,所以给他产生一个新的关键帧,让其可以立即解码渲染看到视频。

FIR包除了前面几个相同字段外,包含一个或多个FCI字段,当房间内有多个用户时,此时FIR就会包含多个FCI字段,一个FCI对应一个用户。

FCI 字段格式如下:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                              SSRC                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Seq nr.       |    Reserved                                   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段介绍:

  • SSRC :这个SSRC 和前面的Medias SSRC相等。该FIR包发给谁,让谁产生关键帧就填谁的SSRC
  • Seq nr: 该fir包序列号,占8位
  • Reserved :预留字段

webrtc的处理见fir.cc 文件。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论