Capturing UDP stream of images

Alexa_B alexa.becerra99 at gmail.com
Mon Apr 29 19:53:22 UTC 2019


I currently have a Python program which pushes images to a gstreamer
pipeline, however it only seems to display the images using autovideosink,
and not with udpsink. 

def __init__(self):
		self.is_push_buffer_allowed = None
		self._mainloop = GObject.MainLoop()
		udp_sink_pipeline = "appsrc name=source !
image/jpeg,framerate=(fraction)30/1  ! decodebin ! videoscale ! capsfilter
caps=video/x-raw,width=640,height=480,pixel-aspect-ratio=(fraction)1/1  !
queue ! autovideosink"

'''jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1,port=5000'''

		self._pipeline = Gst.parse_launch(udp_sink_pipeline)

		self._src = self._pipeline.get_by_name('source')
		self._src.connect('need-data', self.start_feed)
		self._src.connect('enough-data', self.stop_feed)

		self._src.set_property('format','time')
		self._src.set_property('do-timestamp', True)


	def start_feed(self,src,length):
		self.is_push_buffer_allowed = True

	def stop_feed(self,src):
		self.is_push_buffer_allowed = False

	def play(self):
		self._pipeline.set_state(Gst.State.PLAYING)

	def stop(self):
		self._pipeline.set_state(Gst.State.NULL)

	def run(self):
		self._mainloop.run()

	def push(self, filename):
		if self.is_push_buffer_allowed:
			handle = open(filename, 'rb');
			data = handle.read()
			handle.close()
			buf = Gst.Buffer.new_allocate(None, len(data),None)
			buf.fill(0,data)
			sample = Gst.Sample.new(buf, Gst.caps_from_string("image/jpeg,
framerate=(fraction)30/1"),None,None)
			gst_flow_return = self._src.emit('push-sample',sample)

			if gst_flow_return != Gst.FlowReturn.OK:
				print("Error, Stopped streaming")

			else:
				'''print("Enough data on buffer.")'''


I try to capture using:

gst-launch-1.0 udpsrc port=5000 !
application/x-rtp,encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec !
autovideosink




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


More information about the gstreamer-devel mailing list