Gst-plugins-rs webrtc-precise-sync-recv example producing artifacting

I’ve been facing lot of issues with webrtcbin with regards to artifcating (packet-loss) as I’ve posted on a previous thread and have created an issue. I assumed it was something I was doing wrong and decided to switch the webrtcsrc from gst-plugins-rs.
I realized it’s better to run the webrtc-precise-sync-recv example before fully committing to the rewrite.

I modified the source code of gstwebrtc-api to use getDisplayMedia instead of getUserMedia.
I opened 3 tabs on my terminal. I ran the following in each tab from the root of the repository

  1. cargo r --example webrtc-precise-sync-recv --no-default-features
  2. cargo run --bin gst-webrtc-signalling-server --no-default-features
  3. Navigated to gstwebrtc-api. pnpm i && pnpm start

I’m seeing lot of artifacting immediately. Is there something I’m missing?

OS: Fedora Linux 41 (Workstation Edition)
Output of gst-launch-1.0 --version

gst-launch-1.0 version 1.24.10
GStreamer 1.24.10
http://download.fedoraproject.org

The webrtc-precise-sync recv / send examples handle configurations suitable for use cases where the producer & consumer honor specific synchronisation properties.

When you use the gstwebrtc-api example as a producer, you should use the default configuration you get from webrtcsrc. ex.:

gst-launch-1.0 webrtcsrc signaller::producer-peer-id=45880b96-0f6b-48c9-9453-bb49bab404a8 ! queue ! autovideosink

where 45880b96-0f6b-48c9-9453-bb49bab404a8 is the Client-ID advertised by the web interface.

Using the main branch of the mono repo, you could simplify the invocation as:

gst-launch-1.0 webrtcsrc connect-to-first-producer=true ! queue ! autovideosink
1 Like

Ah got it! Thanks! It seems to work better…
But I’m still seeing artifacts after a while




It seems like you experience connectivity issues: for each screenshot, local time and sent packets increase while remote time and received packets remain the same.

Yup you’re right. But I don’t think it’s a network issue as I’m not facing this issue when the receiver is my browser.

To provide more details and a proper comparison, I took screenshots of GStreamer as receiver and browser as receiver (If you need any more details let me know)

GStreamer






Browser




Sorry to bother you! But do you have any recommendations on how to debug this?
So far I’m seeing artifacting only with gstreamer and not with the web browser

I would start by checking logs on the receiver e.g. using:

GST_DEBUG=*:2,rtpjitterbuffer:4 \
    gst-launch-1.0 webrtcsrc signaller::producer-peer-id=3b41936c-1cfc-4e34-af3d-ff0bd63aee55 ! queue ! autovideosink

You could also compare the result with what you get using webrtcsink as a sender instead of the web app:

gst-launch-1.0 videotestsrc ! webrtcsink video-caps=video/x-vp8

Thanks for the suggestion!
I am indeed noticing a difference. Here are the logs with 3 different pipelines.
All of the logs are captured by the receiver using GST_DEBUG=*:2,rtpjitterbuffer:4

gst-launch-1.0 videotestsrc ! webrtcsink video-caps=video/x-vp8

Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.245734701 32366 0x7f1774000d70 WARN                GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.246163338 32366 0x7f1764089a90 ERROR              webrtcbin gstwebrtcbin.c:7169:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.246181585 32366 0x7f1764089a90 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.350891632 32366 0x7f1774000f90 INFO         rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.311674016, rtptime 26:18:27.229622222
0:00:00.549393338 32366 0x7f1748000ca0 INFO         rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Got context from element 'vavp8dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\(R\)\ Gen\ Graphics", path=(string)/dev/dri/renderD128;
Redistribute latency...
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:01:47.281356003
Setting pipeline to NULL ...
0:01:47.329166695 32366 0x55e3fbab4720 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1483:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::end_session:<webrtcsrc0> failed to send EOS on video_6cdbeac2-471a-41eb-ad39-ad63879c721d_0
0:01:47.369040324 32366 0x55e3fbab4720 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "6cdbeac2-471a-41eb-ad39-ad63879c721d" not found
0:01:47.372071627 32366 0x55e3fbab4720 ERROR              webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "6cdbeac2-471a-41eb-ad39-ad63879c721d" not found
Freeing pipeline ...

gst-launch-1.0 uridecodebin uri=file:/filelocation ! videoconvert ! webrtcsink video-caps=video/x-vp8

Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.281378061 34707 0x7f9984000d70 WARN                GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.281798484 34707 0x7f9980089a90 ERROR              webrtcbin gstwebrtcbin.c:7169:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.281816311 34707 0x7f9980089a90 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.557997563 34707 0x7f9984000f90 INFO         rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.517165081, rtptime 23:45:53.408122222
0:00:00.756984280 34707 0x7f995c006170 INFO         rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Got context from element 'vavp8dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\(R\)\ Gen\ Graphics", path=(string)/dev/dri/renderD128;
0:00:00.858174174 34707 0x560a36f51ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 2 expired NACKS
Redistribute latency...
0:00:00.889451796 34707 0x7f9984002510 WARN            videodecoder gstvideodecoder.c:3662:gst_video_decoder_clip_and_push_buf:<vavp8dec0> Dropping frame due to QoS. start:0:00:00.617165081 deadline:0:00:00.617165081 earliest_time:0:00:00.679746311
0:00:00.897493569 34707 0x7f9984002510 WARN            videodecoder gstvideodecoder.c:3662:gst_video_decoder_clip_and_push_buf:<vavp8dec0> Dropping frame due to QoS. start:0:00:00.650498414 deadline:0:00:00.650498414 earliest_time:0:00:00.679746311
0:00:01.095219134 34707 0x560a36f51ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 11 expired NACKS
0:00:01.169993486 34707 0x7f99840022d0 ERROR            rtpvp8depay gstrtpvp8depay.c:212:send_last_lost_event:<rtpvp8depay0> Sending the last stopped lost event: custom-downstream event: 0x7f9918002bd0, time 99:99:99.999999999, seq-num 429, GstRTPPacketLost, timestamp=(guint64)917165080, duration=(guint64)33333333, retry=(uint)1, might-have-been-fec=(boolean)true;
0:00:01.332302496 34707 0x560a36f51ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 15 expired NACKS
0:00:01.569359367 34707 0x560a36f51ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 4 expired NACKS
0:00:03.465835061 34707 0x560a36f51ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 1 expired NACKS
0:00:22.316990493 34707 0x7f9984002510 ERROR              webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:553:gstrswebrtc::webrtcsrc::imp::Session::handle_webrtc_src_pad::{{closure}}:<webrtcsrc0> session "ecb09d46-37b4-4ea0-8c57-b493afd27ed2" does not exist
0:00:22.322631210 34707 0x7f9980092680 ERROR              webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "ecb09d46-37b4-4ea0-8c57-b493afd27ed2" not found
0:00:22.324467782 34707 0x7f9980092680 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "ecb09d46-37b4-4ea0-8c57-b493afd27ed2" not found
Got EOS from element "pipeline0".
Execution ended after 0:00:22.383546870
Setting pipeline to NULL ...
Freeing pipeline ...

With the browser as sender (getDisplayMedia())

Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.249456070 30993 0x7f7688000d70 WARN                GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.250412158 30993 0x7f7680089a90 ERROR              webrtcbin gstwebrtcbin.c:7169:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.250451046 30993 0x7f7680089a90 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.337284859 30993 0x7f7688000f90 INFO         rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.297963260, rtptime 26:01:08.977066666
0:00:00.537233182 30993 0x563f72bc56c0 INFO         rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Got context from element 'vavp8dec0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1", description=(string)"Intel\(R\)\ Gen\ Graphics", path=(string)/dev/dri/renderD128;
Redistribute latency...
0:00:01.874072445 30993 0x7f76880015f0 WARN            videodecoder gstvideodecoder.c:3662:gst_video_decoder_clip_and_push_buf:<vavp8dec0> Dropping frame due to QoS. start:0:00:01.642886250 deadline:0:00:01.642886250 earliest_time:0:00:01.646903826
0:00:05.800482120 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 10 expired NACKS
0:00:05.948604216 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 7 expired NACKS
0:00:08.684676798 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 5 expired NACKS
0:00:08.854526829 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 16 expired NACKS
0:00:12.123144036 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 6 expired NACKS
0:00:15.024812589 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 2 expired NACKS
0:00:15.064609317 30993 0x563f72bc5ad0 WARN              rtpsession rtpsession.c:4072:session_nack: Removing 6 expired NACKS
0:00:15.106249311 30993 0x7f7688000f90 WARN         rtpjitterbuffer rtpjitterbuffer.c:836:rtp_jitter_buffer_calculate_pts: backward timestamps: ignore rtx packet
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:27.797395113
Setting pipeline to NULL ...
0:00:27.855660855 30993 0x563f72b9f720 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1483:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::end_session:<webrtcsrc0> failed to send EOS on video_0c01e0e8-a0f4-4d6b-a89c-f7ca9b04515b_0
0:00:27.897383664 30993 0x563f72b9f720 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "0c01e0e8-a0f4-4d6b-a89c-f7ca9b04515b" not found
0:00:27.897867017 30993 0x563f72b9f720 ERROR              webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "0c01e0e8-a0f4-4d6b-a89c-f7ca9b04515b" not found
Freeing pipeline ...

I’m observing artifcating with the uridecodebin and the screen sharing from the browser, whereas with videotestsrc, I’m not seeing any artifacting.
The logs seems to be consistent with it.

What I don’t understand is that despite all of them being run on the same machine (loopback), why is there packet loss?

Could you try to force vp8 software decoding:

GST_PLUGIN_FEATURE_RANK=vp8dec:MAX GST_DEBUG=*:2,rtpjitterbuffer:4 gst-launch-1.0 webrtcsrc [...]

Forced VP8. Still the same results

Sender: uridecodebin ! videoconvert ! webrtcsink pipeline

Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.428244036  3290 0x76ad30000d60 WARN                GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.428591226  3290 0x76ad200a6db0 ERROR              webrtcbin gstwebrtcbin.c:7170:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.428608378  3290 0x76ad200a6db0 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.668032322  3290 0x76ad30000f70 INFO         rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.625117583, rtptime 21:29:52.568111111
0:00:00.866459515  3290 0x76ad0c034a10 INFO         rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
Redistribute latency...
0:00:00.972853900  3290 0x76ad30001ea0 WARN            videodecoder gstvideodecoder.c:3670:gst_video_decoder_clip_and_push_buf:<vp8dec0> Dropping frame due to QoS. start:0:00:00.691784249 deadline:0:00:00.691784249 earliest_time:0:00:00.755961638
0:00:01.202762060  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 35 expired NACKS
0:00:01.400297561  3290 0x76ad30001c60 ERROR            rtpvp8depay gstrtpvp8depay.c:212:send_last_lost_event:<rtpvp8depay0> Sending the last stopped lost event: custom-downstream event: 0x76acd0002eb0, time 99:99:99.999999999, seq-num 493, GstRTPPacketLost, timestamp=(guint64)1158450916, duration=(guint64)33333333, retry=(uint)1, might-have-been-fec=(boolean)true;
0:00:01.595561847  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 59 expired NACKS
0:00:01.597278573  3290 0x76ad30000f70 WARN         rtpjitterbuffer rtpjitterbuffer.c:836:rtp_jitter_buffer_calculate_pts: backward timestamps: ignore rtx packet
0:00:01.988361803  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 23 expired NACKS
0:00:02.381153939  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 26 expired NACKS
0:00:02.773993073  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 44 expired NACKS
0:00:03.166836282  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 35 expired NACKS
0:00:03.559648275  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 33 expired NACKS
0:00:03.952462888  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 37 expired NACKS
0:00:04.345299701  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 20 expired NACKS
0:00:04.738084866  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 35 expired NACKS
0:00:05.130881846  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 18 expired NACKS
0:00:05.523685805  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 6 expired NACKS
0:00:05.916506308  3290 0x76ad14063b00 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 12 expired NACKS
0:00:20.562064067  3290 0x76ad30001ea0 ERROR              webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:553:gstrswebrtc::webrtcsrc::imp::Session::handle_webrtc_src_pad::{{closure}}:<webrtcsrc0> session "135906a4-8e74-4e37-a42b-ca2238263771" does not exist
0:00:20.576602596  3290 0x76ad200f9b00 ERROR              webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1414:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "135906a4-8e74-4e37-a42b-ca2238263771" not found
0:00:20.577594482  3290 0x76ad200f9b00 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:1362:gstrswebrtc::webrtcsrc::imp::BaseWebRTCSrc::start_session::{{closure}}:<webrtcsrc0> session "135906a4-8e74-4e37-a42b-ca2238263771" not found
Got EOS from element "pipeline0".
Execution ended after 0:00:20.624321379
Setting pipeline to NULL ...
Freeing pipeline ...

Browser as sender:

Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:00.311989477  4584 0x7d9e24000d60 WARN                GST_PADS gstpad.c:4392:gst_pad_peer_query:<nicesrc0:src> could not send sticky events
0:00:00.312544000  4584 0x7d9e1c0a6db0 ERROR              webrtcbin gstwebrtcbin.c:7170:gst_webrtc_bin_get_transceiver:<webrtcbin0> No transceiver for idx 0
0:00:00.312563536  4584 0x7d9e1c0a6db0 WARN               webrtcsrc net/webrtc/src/webrtcsrc/imp.rs:854:gstrswebrtc::webrtcsrc::imp::Session::remote_description_set::{{closure}}: Transceiver for idx 0 does not exist, GStreamer <= 1.24, adding it ourself
Redistribute latency...
0:00:00.399948199  4584 0x7d9e24000f70 INFO         rtpjitterbuffer rtpjitterbuffer.c:874:rtp_jitter_buffer_calculate_pts: resync to time 0:00:00.343000339, rtptime 16:34:56.069066666
0:00:00.599988650  4584 0x7d9e080223a0 INFO         rtpjitterbuffer gstrtpjitterbuffer.c:4381:do_deadline_timeout:<rtpjitterbuffer0> got deadline timeout
0:00:01.443778795  4584 0x7d9e24000f70 WARN         rtpjitterbuffer rtpjitterbuffer.c:633:calculate_skew: delta - skew: 0:00:01.037330601 too big, reset skew
Redistribute latency...
0:00:02.492820793  4584 0x7d9e240015a0 WARN            videodecoder gstvideodecoder.c:3670:gst_video_decoder_clip_and_push_buf:<vp8dec0> Dropping frame due to QoS. start:0:00:02.202037956 deadline:0:00:02.202037956 earliest_time:0:00:02.226207916
0:00:04.822255448  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 12 expired NACKS
0:00:05.385347440  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 47 expired NACKS
0:00:05.408235723  4584 0x7d9e24000f70 WARN         rtpjitterbuffer rtpjitterbuffer.c:836:rtp_jitter_buffer_calculate_pts: backward timestamps: ignore rtx packet
0:00:05.948713417  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 9 expired NACKS
0:00:06.259957967  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 1 expired NACKS
0:00:06.405440545  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 6 expired NACKS
0:00:06.426562586  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 8 expired NACKS
0:00:07.018704702  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 1 expired NACKS
0:00:07.067204636  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 6 expired NACKS
0:00:07.107372709  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 6 expired NACKS
0:00:07.150078351  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 2 expired NACKS
0:00:07.193352244  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 7 expired NACKS
0:00:07.214483728  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 2 expired NACKS
0:00:07.235647468  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 7 expired NACKS
0:00:07.275647451  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 1 expired NACKS
0:00:07.319714743  4584 0x7d9e24000f70 WARN         rtpjitterbuffer rtpjitterbuffer.c:836:rtp_jitter_buffer_calculate_pts: backward timestamps: ignore rtx packet
0:00:07.565729555  4584 0x7d9e08064eb0 WARN              rtpsession rtpsession.c:4076:session_nack: Removing 1 expired NACKS

I also tried tweaking the frame rate of the webrtc connection on the browser using the media constraints.

I set the frame rate at 5 and I didn’t notice any artifacting in the span of 5 minutes after which I got
0:00:05.800482120 30993 0x563f72bc5ad0 WARN rtpsession rtpsession.c:4072:session_nack: Removing 10 expired NACKS
and saw the artifacting.

I later set the frame rate at 2 and I didn’t notice any artifacting in the span of 10 minutes which is the extent to which I’ve tested. In the browser, when I checked the webrtc stats, I saw that the nackCount was 0 whereas with 5, I saw that the nackCount wasn’t 0

I set the frame rate at 1 and the video was completely stuck and I was getting a completely different and unrelated error probably

0:00:04.655547992 42464 0x7deb68001a20 ERROR            rtpvp8depay gstrtpvp8depay.c:212:send_last_lost_event:<rtpvp8depay0> Sending the last stopped lost event: custom-downstream event: 0x7deb14001460, time 99:99:99.999999999, seq-num 390, GstRTPPacketLost, timestamp=(guint64)4376177701, duration=(guint64)1001612347, retry=(uint)1, might-have-been-fec=(boolean)true;

This leads me to question if it’s the load that is causing the issue