receiving multiple rtp audi streams

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

receiving multiple rtp audi streams

Mikkel Pihl
Dear all,

I am new to gstreamer and it is a bit overwhelming. I have a project i would like some help with.

I have two devices each sending an rtp audio stream using the following pipelines

gst-launch-1.0 -v rtpbin name=rtpbin alsasrc !  audio/x-raw,format=S32LE,rate=48000,width=32,depth=32,channels=2 ! audioconvert ! rtpL24pay ! rtpbin.send_rtp_sink_0    rtpbin.send_rtp_src_0 ! udpsink host=192.168.0.1 port=5002 rtpbin.send_rtcp_src_0 ! udpsink host=192.168.0.1 port=5003 sync=false async=false udpsrc port=5007 ! rtpbin.recv_rtcp_sink_0

gst-launch-1.0 -v rtpbin name=rtpbin alsasrc !  audio/x-raw,format=S32LE,rate=48000,width=32,depth=32,channels=2 ! audioconvert ! rtpL24pay ! rtpbin.send_rtp_sink_0    rtpbin.send_rtp_src_0 ! udpsink host=192.168.0.1 port=5008 rtpbin.send_rtcp_src_0 ! udpsink host=192.168.0.1 port=5009 sync=false async=false udpsrc port=5013 ! rtpbin.recv_rtcp_sink_0

I would like to receive the two audio streams on a third device. I can receive and play one stream at a time but i am unsure how to receive and play both. I naively tried the following which is not working and likely does not make much sense.

gst-launch-1.0 -v rtpbin name=rtpbin udpsrc caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)L24,encoding-params=(string)2,channels=(int)2, payload=(int)96" port=5002 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtpL24depay ! audioconvert ! audiomixer name=audiomix ! alsasink udpsrc port=5003 ! rtpbin.recv_rtcp_sink_0 rtpbin.send_rtcp_src_0 ! udpsink host=192.168.0.2 port=5007 sync=false async=false udpsrc caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)L24,encoding-params=(string)2,channels=(int)2, payload=(int)96" port=5008 ! rtpbin.recv_rtp_sink_1 rtpbin. ! rtpL24depay ! audioconvert ! audiomix. udpsrc port=5009 ! rtpbin.recv_rtcp_sink_1 rtpbin.send_rtcp_src_1 ! udpsink host=192.168.0.3 port=5013 sync=false async=false

I will be very grateful for any hints.

All the best,
Mikkel Pihl



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: receiving multiple rtp audi streams

Tim Müller
On Tue, 2019-04-30 at 10:00 +0200, Mikkel Pihl wrote:

Hi Mikkel,

Not sure if this is an option for you and makes sense for your use
case, but if this is unidirectional I would recommend just using RTSP
instead of setting up RTP pipelines yourself 'manually', e.g. something
like this as sender:

 
https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/blob/master/examples/test-launch.c

with

  alsasrc !  audio/x-raw,format=S32LE,rate=48000,channels=2 !
audioconvert ! rtpL24pay name=pay0

as pipeline string, and then on the client side you can just do:


  rtspsrc location=rtsp://1.2.3.4/test ! rtpL24depay ! audioconvert !
..

or even

  uridecodebin uri=rtsp://1.2.3.4/test ! audioconvert ! ...


As for debugging your existing receiver pipeline, have you tried
without the audiomixer already? I would first try with two audio sinks
(e.g. pulsesink if you have pulseaudio running on your system) or just
two fakesink silent=false (so it will print output with gst-launch-1.0
-v when it receives buffers).

That way you should be able to narrow it down to the RTP part or the
audiomixing/sinks part at least.

Cheers
 Tim

--
Tim Müller, Centricular Ltd - http://www.centricular.com

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel