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