rtpfunnel does not handle rtcp alone or muxed

breakthrough scott at breakthrough-tech.com
Mon Oct 26 17:08:05 UTC 2020


We've been wrestling trying to multiplex RTP and RTCP together, or preferably
multicast and multiplex RTP streams with different SSRC files on one port,
and the related RTCP streams on another..

In all cases, if we send the RTCP out directly to the udpsink, it works
(although we can't multiplex RTCP on the same port, as using the same
host:port with udpsink on each, creates a conflict).

We've narrowed down the problem to rtpfunnel, which apparently does not
handle rtcp properly (we don't know why, we think it's a timing thing
related to when the rtpbin.send_rtcp_sink_x is available...and so the pad
doesn't exist when the rtpfunnel wants it..but not sure..

Here is a simple test case scenario..

We're declaring two funnels, f and g, f we use for rtp traffic, g we use for
rtcp traffic
If we send rtcp out directly to udpsink, this works, doesn't stall, and we
see RTCP over wireshark..
However, if we send rtcp out through a funnel, it does not work, the rtcp
never sends onto the network.


This works..

gst-launch-1.0 rtpbin name=rtpbin rtpfunnel name=g rtpfunnel name=f
videotestsrc ! videoconvert ! x264enc ! rtph264pay ! rtpbin.send_rtp_sink_0
rtpbin.send_rtp_src_0 ! f. rtpbin.send_rtcp_src_0 ! udpsink host=127.0.0.1
port=5002 sync=false async=false  g. ! udpsink host=127.0.0.1 port=5001
sync=false async=false f. ! udpsink host=127.0.0.1 port=5000 sync=true

This does not..

GST_DEBUG=5 gst-launch-1.0 rtpbin name=rtpbin rtpfunnel name=g rtpfunnel
name=f videotestsrc ! videoconvert ! x264enc ! rtph264pay !
rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! f. rtpbin.send_rtcp_src_0 !
g.  g. ! udpsink host=127.0.0.1 port=5001 sync=false async=false f. !
udpsink host=127.0.0.1 port=5000 sync=true

The only difference is us piping RTCP out through rtpfunnel.

This was noted as an issue with another user recently, but received no
response.

I believe the issue lies within rtpfunnel, however, we're open to coming up
with another approach if viable..

We ultimately want to mux multiple RTP streams on one port and mux the
related RTCP streams onto another port... all from the same clock.

Using rtpfunnel hangs us up when we push rtcp through the funnel.





--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list