webrtc笔记-媒体部分(RTP/RTCP)

本文详细介绍了WebRTC中RTP/RTCP协议在媒体数据处理和传输中的作用,重点讲解了RTP数据包和RTCP数据包的结构及其在webrtc源码中的实现。通过分析,揭示了RTP如何打包和解包帧,以及RTCP如何处理接收和发送,同时探讨了端口复用、丢包、抖动和拥塞等问题的处理策略。
摘要由CSDN通过智能技术生成

webrtc媒体部分主要研究媒体数据的处理和传输,这也是webrtc的核心,重点研究传输方向,包括传输过程中丢包、抖动、拥塞问题,涉及到的协议就是流传输协议RTP/RTCP。

RTP/RTCP协议栈位于webrtc-master\webrtc-master\modules\rtp_rtcp目录,主要负责将帧打包成RTP报文,RTP报文解包成帧。RTP/RTCP协议栈模块类ModuleRtpRtcpImpl,重点关注其中RTPSender,RTCPSender,RTCPReceiver类型对象,用于包收发处理;RtpPacket类派生RtpPacketToSend,RtpPacketReceived,用于存储RTP包数据和打包解包;RtcpPacket类派生App,Bye,Psfb,CompoundPacket等类,用于存储RTCP包数据和打包解包。

常见情况,RTP、RTCP收发分别用偶数、奇数端口,webrtc可以使用端口复用,RTCP用RTP端口收发,在RtpTransport::OnReadPacket函数,根据不同包类型分类处理,在RtpTransport::SendPacket函数,支持rtcp_mux_enabled_的RTCP包用rtp_packet_transport_发,不支持用rtcp_packet_transport_发。

从webrtc源码中找的RTP/RTCP包结构:
一、RTP数据包
// 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|X| CC |M| PT | sequence number |
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
// | timestamp |
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
// | synchronization source (SSRC) identifier |
// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// | Contributing source (CSRC) identifiers |
// | … |
// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
// | header eXtension profile id | length in 32bits |
// ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+
// | Extensions |
// | … |
// +=+=+=+=+=+=+=+=+=+=+=+=+=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值