Process RTCP Packets in OnTrack examples

TWCC and Receiver Reports are needed for a good default experience
This commit is contained in:
Sean DuBois
2021-12-17 12:03:39 -05:00
parent b8489a8f7e
commit 080d7b8427
6 changed files with 75 additions and 2 deletions

View File

@@ -123,8 +123,6 @@ func main() {
peerConnection.OnTrack(func(track *webrtc.TrackRemote, receiver *webrtc.RTPReceiver) {
fmt.Println("Track has started")
// Start reading from all the streams and sending them to the related output track
rid := track.RID()
go func() {
ticker := time.NewTicker(3 * time.Second)
for range ticker.C {
@@ -134,6 +132,21 @@ func main() {
}
}
}()
// Read incoming RTCP packets
// Before these packets are returned they are processed by interceptors. For things
// like TWCC and RTCP Reports this needs to be called.
go func() {
rtcpBuf := make([]byte, 1500)
for {
if _, _, rtcpErr := receiver.Read(rtcpBuf); rtcpErr != nil {
return
}
}
}()
// Start reading from all the streams and sending them to the related output track
rid := track.RID()
for {
// Read RTP packets being sent to Pion
packet, _, readErr := track.ReadRTP()