<div dir="ltr">I think this is entirely down to the "media-pipeline" created by rtspserver being out of sync. Looking into this now.<div><br></div><div>Regards,</div><div>Chris</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, May 24, 2018 at 5:11 PM <<a href="mailto:daniel@poradnik-webmastera.com">daniel@poradnik-webmastera.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">W dniu 2018-05-24 16:56, Chris Duncan napisał(a):<br>
> I may be implementing proxysink/src incorrectly but i am having<br>
> issues. It seems as though proxysrc is either queuing up buffers or<br>
> there is a timestamping issue. Any help would be greatly appreciated.<br>
> <br>
> #!/usr/bin/python3<br>
> import gi<br>
> gi.require_version('Gst', '1.0')<br>
> gi.require_version('GstRtspServer', '1.0')<br>
> from gi.repository import Gst, GstRtspServer, GObject<br>
> <br>
> class RTSP_Factory(GstRtspServer.RTSPMediaFactory):<br>
>     def __init__(self, pipeline, clock):<br>
>         self.clock=clock<br>
>         self.pipeline = pipeline<br>
>         GstRtspServer.RTSPMediaFactory.__init__(self)<br>
> <br>
>     def do_create_element(self, url):<br>
>         self.pipeline.set_start_time(Gst.CLOCK_TIME_NONE)<br>
>         return self.pipeline<br>
> <br>
>     def do_configure(self, media):<br>
>         media.set_shared(True)<br>
> <br>
> Gst.init()<br>
> GObject.threads_init()<br>
> loop = GObject.MainLoop()<br>
> Gst.debug_set_active(True)<br>
> Gst.debug_set_default_threshold(4)<br>
> <br>
> mainpipeline = Gst.parse_launch("nvcamerasrc "<br>
>                                 "! video/x-raw(memory:NVMM),<br>
> width=(int)2592, height=(int)1458, format=(string)I420,<br>
> framerate=(fraction)30/1 "<br>
>                                 "! omxh264enc bitrate=4000000<br>
> profile=2 control-rate=2 insert-sps-pps=true insert-aud=true<br>
> insert-vui=true iframeinterval=20 "<br>
>                                 "! video/x-h264,<br>
> stream-format=byte-stream, profile=(string)main "<br>
>                                 "! tee ! proxysink name=psink")<br>
> <br>
> rtsppipeline = Gst.parse_launch("proxysrc name=psrc is-live=true !<br>
> queue name=rq max-size-buffers=3 ! h264parse ! rtph264pay name=pay0<br>
> pt=96 config-interval=1")<br>
> <br>
> sysclock = Gst.SystemClock.obtain()<br>
> <br>
> psink = mainpipeline.get_by_name("psink")<br>
> psrc = rtsppipeline.get_by_name("psrc")<br>
> <br>
> psrc.set_property("proxysink", psink)<br>
> <br>
> mainpipeline.use_clock(sysclock)<br>
> rtsppipeline.use_clock(sysclock)<br>
> mainpipeline.set_base_time(0)<br>
> rtsppipeline.set_base_time(0)<br>
> #mainpipeline.set_start_time(Gst.CLOCK_TIME_NONE)<br>
> rtsppipeline.set_start_time(Gst.CLOCK_TIME_NONE)<br>
> <br>
> server = GstRtspServer.RTSPServer()<br>
> mounts = server.get_mount_points()<br>
> factory = RTSP_Factory(rtsppipeline, sysclock)<br>
> <br>
> mounts.add_factory("/test", factory)<br>
> server.attach(None)<br>
> <br>
> mainpipeline.set_state(Gst.State.PLAYING)<br>
> loop.run()<br>
> <br>
> Regards,<br>
> Chris<br>
> _______________________________________________<br>
> gstreamer-devel mailing list<br>
> <a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br>
I asked similar question yesterday. Fortunately today after doing some <br>
tests I have found why it does not work and how to fix it. When pipeline <br>
goes to PLAYING state, it updates its base time to current time. To fix <br>
this, you have to get base time from one pipeline and set it as base <br>
time for second one. I do this just after setting state of 2nd one to <br>
PLAYING.<br>
<br>
You also should remove lines which change start time, this produces some <br>
strange results.<br>
<br>
Regards,<br>
Daniel<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</blockquote></div>