WebRTC源码分析之RTP/RTCP(二)

WebRTC中RTP和RTCP共用一个UDP端口WebRTC中的RTP和RTCP都使用udp传输,并且RTP和RTCP混合使用同一个udp端口,因为打通NAT本来就不是一件容易的事,如果还分开两个端口的话更增加程序复杂度和NAT打洞成功的难度。WebRTC怎么区分RTP/RTCP包webrtc/call/call.cc:PacketReceiver::Deliver...
摘要由CSDN通过智能技术生成

WebRTC中RTP和RTCP共用一个UDP端口


WebRTC中的RTP和RTCP都使用udp传输,并且RTP和RTCP混合使用同一个udp端口,因为打通NAT本来就不是一件容易的事,如果还分开两个端口的话更增加程序复杂度和NAT打洞成功的难度。

WebRTC怎么区分RTP/RTCP包


webrtc/call/call.cc:

PacketReceiver::DeliveryStatus Call::DeliverPacket(
    MediaType media_type,
    rtc::CopyOnWriteBuffer packet,
    const PacketTime& packet_time) {
  RTC_DCHECK_CALLED_SEQUENTIALLY(&configuration_sequence_checker_);
  if (RtpHeaderParser::IsRtcp(packet.cdata(), packet.size()))
    return DeliverRtcp(media_type, packet.cdata(), packet.size());

  return DeliverRtp(media_type, std::move(packet), packet_time);
}

既然RTP和RTCP都使用同一个UDP端口,那么就要区分出收到的UDP包是RTP还是RTCP包,在上面代码中IsRtcp判断了是否是RTCP包。

RTP/RTCP的相关代码在modules/rtp_rtcp目录下。

RtpHeaderParser::IsRtcp调用了RtpHeaderParser::RTCP()判断是否RTCP包:

webrtc/modules/rtp_rtcp/source/rtp_utility.cc:

bool RtpHeaderPa
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值