From: Alexandre IOOSS <erdnaxe@crans.org>
To: Juliusz Chroboczek <jch@irif.fr>
Cc: galene@lists.galene.org
Subject: [Galene] Re: Building a streaming gateway for Galène
Date: Wed, 7 Apr 2021 22:40:06 +0200 [thread overview]
Message-ID: <f38a3fc2-c560-188f-c46f-d6f8046c82cb@crans.org> (raw)
In-Reply-To: <877dlfrofb.wl-jch@irif.fr>
On 4/7/21 1:19 AM, Juliusz Chroboczek wrote:>> When dumping Firefox
WebRTC traffic, I also see "Generic RTP Feeback:
>> NACK" packets, which confirms the fact that GStreamer is not doing NACK
>> in my script. I should see if it's possible to enable it.
>
> This will improve things a lot. You'll need to keep a history of recently
> sent packets, I don't know if gstreamer can do that automatically.
>
> As to keyframes — you should send periodic keyframes, but you shouldn't do
> it too often (Chrome sends one every 120s). On the other hand, you should
> send a keyframe fairly quickly (within 500ms or so) whenever you receive
> a PLI (Picture Loss Indication) RTCP packet.
I have good and bad news. The good news is that GStreamer webrtcbin
supports NACK and PLI. I added those lines:
# Enable WebRTC negative acknowledgement and FEC
transceiver_count = self.webrtc.emit("get-transceivers").len
for i in range(transceiver_count):
transceiver = self.webrtc.emit("get-transceiver", i)
transceiver.set_property("do-nack", True)
transceiver.set_property("fec-type", GstWebRTC.WebRTCFECType.ULP_RED)
Now I see "Generic RTP Feeback: NACK" packets in Wireshark and the SDP
offer being sent to Galène also looks better:
[...]
a=sendrecv
a=rtpmap:97 VP8/90000
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=framerate:30
a=rtpmap:98 red/90000
a=rtpmap:99 ulpfec/90000
a=rtpmap:100 rtx/90000
a=fmtp:100 apt=98
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=97
a=ssrc-group:FID 1611068776 2492991179
[...]
a=sendrecv
a=rtpmap:96 OPUS/48000/2
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=fmtp:96 sprop-maxcapturerate=48000;sprop-stereo=1
a=rtpmap:102 red/48000
a=rtpmap:103 ulpfec/48000
a=rtpmap:104 rtx/48000
a=fmtp:104 apt=102
a=rtpmap:105 rtx/48000
a=fmtp:105 apt=96
a=ssrc-group:FID 2413482691 909406007
[...]
The bad news is that the stream is still dropping. If I print some
statistics during streaming, GStreamer reports `pli-count=0` and
`nack-count=0`, so something seems broken.
Looking the issue online I found
<https://mediasoup.discourse.group/t/broadcasting-a-vp8-rtp-stream-from-gstreamer/93/18>:
> GStreamer first looks at the sender ssrc. If it gets NULL then it
> tries with media ssrc. [...] somehow, GStreamer is getting “something”
> when looking for sender ssrc = 0, which is crazy.
Looking at the Wireshark dump, Galène seems also to use "0" as sender
SSRC, so that might be the issue. I might try to do a dirty hack
somewhere to confirm this hypothesis.
Does Galène has ulpfec support (https://github.com/pion/webrtc/issues/1418)?
Should I do PLI and ulpfec on audio and video in this specific
application or is it a terrible idea?
Thank you again for all your advice!
--
Alexandre Iooss
next prev parent reply other threads:[~2021-04-07 20:40 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-06 11:05 [Galene] " Alexandre IOOSS
2021-04-06 12:57 ` [Galene] " Juliusz Chroboczek
2021-04-06 16:10 ` [Galene] webrtc security cameras? Dave Taht
2021-04-06 17:07 ` [Galene] " Juliusz Chroboczek
2021-04-06 17:44 ` [Galene] Re: Building a streaming gateway for Galène Alexandre IOOSS
2021-04-06 23:19 ` Juliusz Chroboczek
2021-04-07 20:40 ` Alexandre IOOSS [this message]
2021-04-07 22:01 ` Juliusz Chroboczek
2021-04-07 22:05 ` Juliusz Chroboczek
2021-04-09 13:42 ` Alexandre IOOSS
2021-04-09 13:55 ` Juliusz Chroboczek
2021-04-09 14:17 ` Juliusz Chroboczek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://lists.galene.org/postorius/lists/galene.lists.galene.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f38a3fc2-c560-188f-c46f-d6f8046c82cb@crans.org \
--to=erdnaxe@crans.org \
--cc=galene@lists.galene.org \
--cc=jch@irif.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox