From 6258f9a5e49471309f7059095b4b456f698f25c9 Mon Sep 17 00:00:00 2001 From: Sergey Stepanov Date: Tue, 13 Feb 2024 21:17:27 +0300 Subject: [PATCH] Add RTCP packet reader for output streams Default interceptors need those. --- pkg/network/webrtc/webrtc.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/pkg/network/webrtc/webrtc.go b/pkg/network/webrtc/webrtc.go index f94d79154..0f67ba7d9 100644 --- a/pkg/network/webrtc/webrtc.go +++ b/pkg/network/webrtc/webrtc.go @@ -42,9 +42,20 @@ func (p *Peer) NewCall(vCodec, aCodec string, onICECandidate func(ice any)) (sdp if err != nil { return "", err } - if _, err = p.conn.AddTrack(video); err != nil { + vs, err := p.conn.AddTrack(video) + if err != nil { return "", err } + // Read incoming RTCP packets + go func() { + rtcpBuf := make([]byte, 1500) + for { + _, _, rtcpErr := vs.Read(rtcpBuf) + if rtcpErr != nil { + return + } + } + }() p.v = video p.log.Debug().Msgf("Added [%s] track", video.Codec().MimeType) @@ -53,9 +64,20 @@ func (p *Peer) NewCall(vCodec, aCodec string, onICECandidate func(ice any)) (sdp if err != nil { return "", err } - if _, err = p.conn.AddTrack(audio); err != nil { + as, err := p.conn.AddTrack(audio) + if err != nil { return "", err } + // Read incoming RTCP packets + go func() { + rtcpBuf := make([]byte, 1500) + for { + _, _, rtcpErr := as.Read(rtcpBuf) + if rtcpErr != nil { + return + } + } + }() p.log.Debug().Msgf("Added [%s] track", audio.Codec().MimeType) p.a = audio