WebRTC的RTP扩展头、RTCP包

一  RTP扩展头

One-Byte Header:0xbede 2字节、length 2字节—扩展头的个数、

ID4位、L4位,共一字节

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包类型

 RTCP4字节

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:自从1900110,到现在过了多少秒。

RTP timestamp:

packet count:4字节,octet count:4字节。

六  RTCP RR: 32字节。

Sender ssrc:ssrc of sender:自己那端rtp流ssrc。

Identifier的ssrc表示收到那一路的,有音频和视频。ssrcrtp包的ssrc

但我没搜到这个ssrc。

七  发送RTCP SR包频率

音频5000ms:media_config.audio.rtcp_report_interval_ms。

视频1000ms:int rtcp_report_interval_ms = 1000;

RTCP包占带宽5%。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTC(Web Real-Time Communication)是一个开源项目,它提供了在浏览器中实现实时音视频通信的技术。下面是对WebRTC源码的简要分析: WebRTC源码主要分为以下几个模块: 1. 信令(Signaling)模块:负责建立和维护通信的连接。它使用WebSocket或者其他协议进行通信,括传输SDP(Session Description Protocol)和ICE(Interactive Connectivity Establishment)信息。 2. 媒体(Media)模块:处理音视频数据的采集、编码、解码和传输。媒体模块使用WebRTC提供的API,通过WebRTC的PeerConnection建立点对点的媒体通信。 3. 网络(Networking)模块:处理网络传输相关的功能,例如NAT穿越、ICE候选地址的收集和选择、STUN和TURN服务器的使用等。 4. 安全(Security)模块:处理加密和身份验证相关的功能,确保通信过程的安全性和隐私性。 5. SDP解析(SDP Parsing)模块:解析和生成SDP信息,SDP含了关于媒体会话的描述和参数。 6. ICE代理(ICE Agent)模块:负责管理ICE协议的运行,处理候选地址的收集和选择,以及NAT穿越等功能。 7. RTP/RTCP模块:处理音视频的实时传输协议(RTP)和实时传输控制协议(RTCP),括数据的发送和接收、丢恢复、拥塞控制等。 8. 编解码器(Codec)模块:负责音视频数据的编码和解码,WebRTC支持一系列开源编解码器,如VP8、VP9、H.264等。 这些模块之间相互协作,实现了基于浏览器的实时音视频通信。WebRTC的源码使用C++语言编写,涉及到了底层的网络和媒体处理,同时也提供了一系列的API供开发者使用。 请注意,由于WebRTC源码较为庞大,这里只是简要地介绍了主要模块,实际的源码分析需要深入研究和阅读源码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值