WebRTC接收NACK消息的过程

接收NACK的调用栈

Call::DeliverPacket 判断数据包

C++音视频开发学习资料点击领取音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

通过DeliverPacket()函数区分出RTP包和RTCP包进入不同的处理流程.

而判断是否RTCP包的核心思想就是: 判断packet的payloadtype

RTCPReceiver::IncomingPacket 解析数据包

  • compound packet : 联合包, 将多个RTP包串起来通过一个UDP包进行传输
  • 通过计算长度进行拆分每一个包, 此逻辑前文中有提及
  • 将解析完的数据保存在packetInformation对象中

OnReceivedNack 重传包

C++音视频开发学习资料点击领取音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

以上几个函数所做的就是将丢包的对列中每一个包从历史记录中找到, 如果这个包还没有被重传过, 那么就会将这个包放入重传队列中进行重传

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章