一 RTP扩展头
One-Byte Header:0xbede 2字节、length 2字节—扩展头的个数、
ID占4位、L占4位,共一字节。
sequence number 2字节,从1开始,依次递增。
需要对齐,扩展头以4字节为单位。
ID=7,kRtpExtensionTransportSequenceNumber。
static constexpr char kTransportSequenceNumberUri[] = " "
//注册支持那个RTP扩展头
stream.rtp_rtcp->RegisterRtpHeaderExtension(extension, id);
PacketRouter::SendPacket(
packet->SetExtension<TransportSequenceNumber>((++transport_seq_) & 0xFFFF);
transport_seq_=0,开始值是1。
二 RTCP包类型
RTCP头:4字节
Packet Type:200--SR、201--RR、202--SDES、205—RTPFB—包括Nack、206--PSFB(包括Pli、Fir等)。
RTP FB:Generic RTP Feedback。PSFB:Payload-specific Feedback。
205:fmt=1 Nack、fmt=15 Transport-wide Congestion Control。
206:fmt=1 PLI、fmt=4 FIR、fmt=15 REMB。
三 RTCP Feedback包
长度:整个RTCP包长度,5*4+4。
sender ssrc:是自己那端rtp流的ssrc。
media ssrc:随机值。?
四 CompoundRTCP:SR包后跟SDES(source description)
五 RTCP SR:28字节(4+24)
MSW+LSW=NTP timestamp,各4字节,Most significant word,Least,
NTP timestamp:自从1900年1月1日0点,到现在过了多少秒。
RTP timestamp:
packet count:4字节,octet count:4字节。
六 RTCP RR: 32字节。
Sender ssrc:ssrc of sender:自己那端rtp流ssrc。
Identifier的ssrc表示收到那一路的,有音频和视频。ssrc是rtp包的ssrc。
但我没搜到这个ssrc。
七 发送RTCP SR包频率
音频5000ms:media_config.audio.rtcp_report_interval_ms。
视频1000ms:int rtcp_report_interval_ms = 1000;
RTCP包占带宽5%。