<div dir="ltr">Hi all,<div><br></div><div>First of al, excuse me for the possible duplicate. I had some problems with my subscription to this mailing list.<br><br>I've been working on a project where a client receives a stream over RTP<br>with the help of RTCP using the element RTPbin and udpsrc and udpsink. When<br>I run the following command from the command line it always works:<br><br># Server<br>IP=127.0.0.1<br><br>gst-launch-1.0 rtpbin name=rtpbin \<br>filesrc location="" ! \<br>    rawvideoparse format=i420 width=3840 height=720 framerate=30/1 !<br>videoconvert !  x264enc ! \<br>    rtph264pay ! rtpbin.send_rtp_sink_0 \<br>    rtpbin.send_rtp_src_0 ! udpsink port=5004 host=$IP sync=true async=false<br>\<br>    rtpbin.send_rtcp_src_0 ! udpsink port=5006 host=$IP sync=true<br>async=false udpsrc port=5008 ! rtpbin.recv_rtcp_sink_0<br><br># Client<br>gst-launch-1.0 -v rtpbin name=rtpbin \<br>udpsrc<br>caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=H264"<br>port=5004 ! \<br>rtpbin.recv_rtp_sink_0 rtpbin. ! rtph264depay ! h264parse ! avdec_h264 !<br>xvimagesink \<br>udpsrc port=5006 ! rtpbin.recv_rtcp_sink_0 rtpbin.send_rtcp_src_0 ! \<br>udpsink port=5008 async=false    <br><br><br>But creating the exact same pipeline in Python for GStreamer makes it that<br>it sometimes connect and sometimes doesn't:<br><br>self.src_frame = Gst.ElementFactory.make('appsrc',  'appsrc2')<br>rtpbin = Gst.ElementFactory.make('rtpbin', 'rtpbin')<br><br>if self.stream_from_file == True:<br>    filesrc = Gst.ElementFactory.make("filesrc", "filesrc")<br>    filesrc.set_property("location", "")<br><br>rawvideoparse2 = Gst.ElementFactory.make('rawvideoparse', 'rawvideoparse2')<br>videoconvert2 = Gst.ElementFactory.make('videoconvert', 'videoconvert2')<br>x264enc2 = Gst.ElementFactory.make('x264enc', 'x264enc2')<br>rtph265pay2 = Gst.ElementFactory.make('rtph264pay', 'rtph265pay2')<br>udpsink_5004_2 = Gst.ElementFactory.make('udpsink', 'udpsink_5004_2')<br>udpsink_5006_2 = Gst.ElementFactory.make('udpsink', 'udpsink_5006_2')<br>udpsrc2 = Gst.ElementFactory.make('udpsrc',  'udpsrc2')    <br><br># Add to pipeline<br>pipeline = Gst.Pipeline()<br>pipeline.add(rtpbin)<br><br>if self.stream_from_file:<br>    pipeline.add(filesrc)<br>else:<br>    pipeline.add(self.src_frame)<br><br>pipeline.add(rawvideoparse2)<br>pipeline.add(videoconvert2)<br>pipeline.add(x264enc2)<br>pipeline.add(rtph265pay2)<br>pipeline.add(udpsink_5004_2)<br>pipeline.add(udpsink_5006_2)<br>pipeline.add(udpsrc2)    <br><br># Linking<br>if self.stream_from_file:<br>    filesrc.link(rawvideoparse2)<br>else:<br>    self.src_frame.link(rawvideoparse2)<br><br>rawvideoparse2.link(videoconvert2)<br>videoconvert2.link(x264enc2)<br>x264enc2.link(rtph265pay2)<br># caps2.link(rtph265pay2)<br><br>rtph265pay2.link_pads('src', rtpbin, 'send_rtp_sink_0')<br>rtpbin.link_pads('send_rtp_src_0', udpsink_5004_2 , None)<br>rtpbin.link_pads('send_rtcp_src_0',  udpsink_5006_2,  None)<br><br>udpsrc2.link_pads('src',  rtpbin,  'recv_rtcp_sink_0')<br><br># Set Properties<br>rawvideoparse2.set_property('format', 'i420')<br>rawvideoparse2.set_property('width' , self.width)<br>rawvideoparse2.set_property('height', self.height)<br>rawvideoparse2.framerate = self.framerate<br><br>udpsrc2.set_property('port', 5004)<br><br># Create probe<br>if self.stream_from_file == True:<br>    pad = filesrc.get_static_pad("src")<br>else:<br>    pad = self.src_frame.get_static_pad("src")<br><br>udpsink_5004_2.set_property('port',  5004)<br>udpsink_5004_2.set_property('host',  self.rec_ip_addr)<br><br>udpsink_5004_2.set_property('async', False)<br>udpsink_5004_2.set_property('sync', True)<br><br>udpsink_5006_2.set_property('port',  5006)<br>udpsink_5006_2.set_property('host',  self.rec_ip_addr)<br><br>udpsink_5006_2.set_property('async', False)<br>udpsink_5006_2.set_property('sync', True)<br><br>self.pipeline = pipeline<br><br>I've tried different content, ports, using a different IP (instead of<br>127.0.0.1), checked the difference between pipelines from commandline and<br>the python code using the DOT files, changed encoder settings to only<br>transmit i-frames, changed preset of the encoder to 1 (I thought it could be<br>the speed of the encoder since I'm using an big resolution. GST_DEBUG=3<br>doesn't give errors on client or server side and it does receive an RTCP<br>session because I do get messages in the console. The only thing I havent<br>tried is doing it on two PC's because I currently don't have them available.<br><br>I must be missing something. Please help!<br></div></div>