An issue about the delay caused by pulling rtsp video streams,using python.
# Create the empty pipeline
if self.codec == "H264":
self.pipeline = Gst.parse_launch(
"rtspsrc name=m_rtspsrc ! rtph264depay name=m_rtpdepay ! h264parse ! nvh264dec name=m_avdec ! videoconvert name=m_videoconvert ! videorate name=m_videorate ! appsink name=m_appsink"
)
elif self.codec == "H265":
self.pipeline = Gst.parse_launch(
"rtspsrc name=m_rtspsrc ! rtph265depay name=m_rtpdepay ! h265parse ! nvh265dec name=m_avdec ! videoconvert name=m_videoconvert ! videorate name=m_videorate ! appsink name=m_appsink"
)
# source params
self.source = self.pipeline.get_by_name("m_rtspsrc")
self.source.set_property("latency", 1200)
self.source.set_property("location", self.streamLink)
self.source.set_property("drop-on-latency", "true")
# decode params
self.decode = self.pipeline.get_by_name("m_avdec")
# convert params
self.convert = self.pipeline.get_by_name("m_videoconvert")
# framerate parameters
self.framerate_ctr = self.pipeline.get_by_name("m_videorate")
self.framerate_ctr.set_property("max-rate", self.framerate / 1)
self.framerate_ctr.set_property("drop-only", "true")
# sink params
self.sink = self.pipeline.get_by_name("m_appsink")
# Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
# flags: readable, writable
# Integer64. Range: -1 - 9223372036854775807 Default: -1
self.sink.set_property("max-lateness", 500000000)
# The maximum number of buffers to queue internally (0 = unlimited)
# flags: readable, writable
# Unsigned Integer. Range: 0 - 4294967295 Default: 0
self.sink.set_property("max-buffers", 10)
# Drop old buffers when the buffer queue is filled
# flags: readable, writable
# Boolean. Default: false
self.sink.set_property("drop", "true")
# Emit new-preroll and new-sample signals
# flags: readable, writable
# Boolean. Default: false
self.sink.set_property("emit-signals", True)
# self.sink.set_property('drop', True)
self.sink.set_property("sync", False)
# The allowed caps for the sink pad
# flags: readable, writable
# Caps (NULL)
caps = Gst.caps_from_string(
"video/x-raw, format=(string){BGR, GRAY8}; video/x-bayer,format=(string){rggb,bggr,grbg,gbrg}"
)
self.sink.set_property("caps", caps)
Above is my gstremaer pipline, which is used to continuously get live images from an rtsp camera(fps=12), but there is a certain delay (more than a few seconds) when I use it, is this related to my pipeline Settings? How can I make changes? Can anyone give me some advice, thank you very much!