发送方
主角:TrackLocal
和RTPSender
BindRTCPReader
在NewRTPSender
里被调用,返回的RTCPReader.Read
在RTPSender
的Read
里调用,供用户从RTPSender
里读取自定义的RTCP包BindLocalStream
在RTPSender.Send
里被调用,并且在最顶层上都是在SetLocalDescription
和SetRemoteDescription
里初始化时调用的。在RTPSender.Send
里,RTPSender
构造为TrackLocalWriter
封装进TrackLocalContext
然后绑定给用户定义的TrackLocal
里,实际发送RTP包需要用户在自己实现的TrackLocal
里调用TrackLocalWriter.Write
接收方
主角:TrackRemote
和RTPReceiver
读取RTP包:
OnTrack
里用户获取到TrackRemote
,调用TrackRemote
里的Read
,Read
调用RTPReceiver
里的非导出类执行发RTP包的操作读取RTCP包:
OnTrack
里用户获取到RTPReceiver
,调用RTPReceiver
里的Read
就是实际读取RTCP包的操作初始化:在
SetLocalDescription
和SetRemoteDescription
里,interceptor相关类被初始化(BindRemoteStream
和BindRTCPReader
)后放入TrackRemote
和RTPReceiver
里,在OnTrack
里里用户获取到的就是这些初始化好的类
额外
BindRTCPWriter
在NewPeerConnection
里被调用,返回的RTCPWriter.Write
在PeerConnection
的WriteRTCP
里调用,供用户发送一些自定义的RTCP包