webrtc
webrtc copied to clipboard
How does the interceptors work?
I need to make the video stream as stable as possible. Default interceptors should send rtcp automatically as I know. When I start Wireshark and packet drops I see RR only and picture crashes. Maybe I do something wrong:
func NewWebrtcReceiver() *WebrtcReceiver {
wr := &WebrtcReceiver{}
wr.lastRemoteSdp = ""
wr.wsUrl = "ws://signallingzur.air-link.space/wstest?name=GS001D0&partnerName=001D0"
wr.mediaEngine = &webrtc.MediaEngine{}
loggingFactory := logging.NewDefaultLoggerFactory()
loggingFactory.DefaultLogLevel.Set(logging.LogLevelTrace)
s := webrtc.SettingEngine{
LoggerFactory: loggingFactory,
}
s.SetICETimeouts(5*time.Second, 30*time.Second, 5*time.Second)
s.SetIPFilter(func(ip net.IP) bool {
return ip.To4() != nil
})
opusCodec := webrtc.RTPCodecParameters{
RTPCodecCapability: webrtc.RTPCodecCapability{
MimeType: webrtc.MimeTypeOpus,
RTCPFeedback: []webrtc.RTCPFeedback{
{Type: "nack"},
{Type: "nack", Parameter: "pli"},
{Type: "goog-remb"},
//{Type: "ccm", Parameter: "fir"},
},
}, PayloadType: 111,
}
wr.mediaEngine.RegisterDefaultCodecs()
if err := wr.mediaEngine.RegisterCodec(opusCodec, webrtc.RTPCodecTypeAudio); err != nil {
panic(err)
}
interceptorRegistry := &interceptor.Registry{}
if err := webrtc.RegisterDefaultInterceptors(wr.mediaEngine, interceptorRegistry); err != nil {
log.Fatal(err)
}
wr.api = webrtc.NewAPI(
webrtc.WithSettingEngine(s),
webrtc.WithMediaEngine(wr.mediaEngine),
webrtc.WithInterceptorRegistry(interceptorRegistry),
)
wr.createPeerConnection()
wr.establishWs()
return wr
}