0

I have built Gstreamer from Github source, version 1.5.2. I try to receive four RTP streams via UDP and mix them to a single sink.

gst-launch-1.0 executes the pipeline without issues:

gst-launch-1.0 adder name=mix \
mix. ! audioresample ! "audio/x-raw, rate=(int)48000" ! audioconvert ! alsasink device=hw:0,0 sync=true\
udpsrc port=8001 ! "application/x-rtp, payload=(int)127, clock-rate=(int)48000, encoding-name=(string)L24, channels=(int)2" ! queue ! rtpL24depay ! audiorate ! "audio/x-raw, rate=(int)48000" ! audioconvert ! mix. \
udpsrc port=8002 ! "application/x-rtp, payload=(int)127, clock-rate=(int)48000, encoding-name=(string)L24, channels=(int)2" ! queue ! rtpL24depay ! audiorate ! "audio/x-raw, rate=(int)48000" ! audioconvert ! mix. \
udpsrc port=8003 ! "application/x-rtp, payload=(int)127, clock-rate=(int)48000, encoding-name=(string)L24, channels=(int)2" ! queue ! rtpL24depay ! audiorate ! "audio/x-raw, rate=(int)48000" ! audioconvert ! mix. \
udpsrc port=8004 ! "application/x-rtp, payload=(int)127, clock-rate=(int)48000, encoding-name=(string)L24, channels=(int)2" ! queue ! rtpL24depay ! audiorate ! "audio/x-raw, rate=(int)48000" ! audioconvert ! mix.

Here a snippet of the debug output:

 0:00:00.030580800  7944      0x1a0a180 DEBUG                 udpsrc gstudpsrc.c:920:gst_udpsrc_open:<udpsrc0> allocating socket for   0.0.0.0:8001
 0:00:00.030776434  7944      0x1a0a180 DEBUG                 udpsrc gstudpsrc.c:891:gst_udpsrc_resolve:<udpsrc0> IP address for host 0.0.0.0 is 0.0.0.0
 0:00:00.030906105  7944      0x1a0a180 DEBUG                 udpsrc gstudpsrc.c:933:gst_udpsrc_open:<udpsrc0> got socket 0x1a82130
 0:00:00.030973628  7944      0x1a0a180 DEBUG                 udpsrc gstudpsrc.c:940:gst_udpsrc_open:<udpsrc0> binding on port 8001
 0:00:00.031013585  7944      0x1a0a180 INFO                  udpsrc gstudpsrc.c:1008:gst_udpsrc_open:<udpsrc0> have udp buffer of 212992 bytes
 0:00:00.031048025  7944      0x1a0a180 DEBUG                 udpsrc gstudpsrc.c:1081:gst_udpsrc_open:<udpsrc0> bound, on port 8001

When I build this pipeline in a Python 3.4 program, the udpsrc fails with the following output:

 0:00:00.209166227  8783 0x7f23ac005330 DEBUG                 udpsrc gstudpsrc.c:920:gst_udpsrc_open:<udpsrc0> allocating socket for 0.0.0.0:8001
 0:00:00.209216934  8783 0x7f23ac005330 DEBUG                 udpsrc gstudpsrc.c:891:gst_udpsrc_resolve:<udpsrc0> IP address for host 0.0.0.0 is 0.0.0.0
 0:00:00.209256307  8783 0x7f23ac005330 DEBUG                 udpsrc gstudpsrc.c:933:gst_udpsrc_open:<udpsrc0> got socket 0x7f23b4012bb0
 0:00:00.209281194  8783 0x7f23ac005330 DEBUG                 udpsrc gstudpsrc.c:940:gst_udpsrc_open:<udpsrc0> binding on port 8001
 0:00:00.209318428  8783 0x7f23ac005330 INFO                  udpsrc gstudpsrc.c:1008:gst_udpsrc_open:<udpsrc0> have udp buffer of 212992 bytes
 0:00:00.209351430  8783 0x7f23ac005330 DEBUG                 udpsrc gstudpsrc.c:1081:gst_udpsrc_open:<udpsrc0> bound, on port 8001
 ...
 0:00:00.216234022 10012 0x7f1e80001d90 LOG                   udpsrc gstudpsrc.c:628:gst_udpsrc_create:<udpsrc0> read packet of 1398 bytes
 0:00:00.216279688 10012 0x7f1e80001d90 WARN                 basesrc gstbasesrc.c:2943:gst_base_src_loop:<udpsrc0> error: Internal data flow error.
 0:00:00.216297871 10012 0x7f1e80001d90 WARN                 basesrc gstbasesrc.c:2943:gst_base_src_loop:<udpsrc0> error: streaming task paused, reason not-negotiated (-4)
 Error received from element udpsrc0: Internal data flow error.
 Debugging information: gstbasesrc.c(2943): gst_base_src_loop (): /GstPipeline:INPUT/GstUDPSrc:udpsrc0:
 streaming task paused, reason not-negotiated (-4)OUTPUT Pipeline state changed from ready to paused.

The only difference I see in the debugging output is the socket address. gst-launch-1.0 prints a 7-Byte socket address, and my Python program prints a 12-Byte socket address.

What is going wrong here? Did I forget a queue or have I set wrong properties?

Christoph Kuhr
  • 245
  • 1
  • 5
  • 16
  • Please also post the python snippet – Cilyan Jul 26 '15 at 19:45
  • Its about 1000 lines... I wanted to add the svg representation, but imgur does not support svg. A png does not make sence... I try to upload the svg another place – Christoph Kuhr Jul 26 '15 at 19:47
  • If it's too big you may consider posting to a pastebin, but first try to narrow your problematic piece of code to something you can post. With GStreamer, I doublt you need all that 1000 lines of code to produce the above gst-launch command – Cilyan Jul 26 '15 at 19:55
  • I copied the the caps and props from my program. The only that different then in the gst-launch pipe are caps of the adder request pads. – Christoph Kuhr Jul 26 '15 at 20:00
  • well, no... I have two pipes running parallel. One input, the other output... – Christoph Kuhr Jul 26 '15 at 20:05

0 Answers0