interceptor寻踪:总结

发送方 主角:TrackLocal和RTPSender BindRTCPReader在NewRTPSender里被调用,返回的RTCPReader.Read在RTPSender的Read里调用,供用户从RTPSender里读取自定义的RTCP包 BindLocalStream在RTPSender.S

发送方

主角:TrackLocalRTPSender

  • BindRTCPReaderNewRTPSender里被调用,返回的RTCPReader.ReadRTPSenderRead里调用,供用户从RTPSender里读取自定义的RTCP包

  • BindLocalStreamRTPSender.Send里被调用,并且在最顶层上都是在SetLocalDescriptionSetRemoteDescription里初始化时调用的。在RTPSender.Send里,RTPSender构造为TrackLocalWriter封装进TrackLocalContext然后绑定给用户定义的TrackLocal里,实际发送RTP包需要用户在自己实现的TrackLocal里调用TrackLocalWriter.Write

接收方

主角:TrackRemoteRTPReceiver

  • 读取RTP包:OnTrack里用户获取到TrackRemote,调用TrackRemote里的ReadRead调用RTPReceiver里的非导出类执行发RTP包的操作

  • 读取RTCP包:OnTrack里用户获取到RTPReceiver,调用RTPReceiver里的Read就是实际读取RTCP包的操作

  • 初始化:在SetLocalDescriptionSetRemoteDescription里,interceptor相关类被初始化(BindRemoteStreamBindRTCPReader)后放入TrackRemoteRTPReceiver里,在OnTrack里里用户获取到的就是这些初始化好的类

额外

  • BindRTCPWriterNewPeerConnection里被调用,返回的RTCPWriter.WritePeerConnectionWriteRTCP里调用,供用户发送一些自定义的RTCP包

LICENSED UNDER CC BY-NC-SA 4.0
Comment