I am trying to use SRT sink with GStreamer 1.16.0 on Ubuntu and I am facing
an issue at startup that is quite frequent. Once it's up and running it works great, but about 50% of the time it simply doesn't want to start. I managed to come up with a very simple pipeline to reproduce my issue First, I start the consumer: gst-launch-1.0 -v srtsrc uri="srt://127.0.0.1:8888" ! identity silent=false ! fakesink async=false And then I try broadcasting something: gst-launch-1.0 -v videotestsrc ! queue ! x264enc ! queue ! mpegtsmux alignment=7 ! identity silent=false ! queue leaky=downstream ! srtsink uri="srt://:8888" sync=false async=false The identity element from my consumer will print stuff when it works, and I tend to have to restart my 2nd pipeline 2 or 3 times before that happens, even though the identity from this pipeline will always print, proving that buffers seem to be flowing through normally there Does anyone have experience with SRT streaming in GStreamer? Is anything wrong with my pipeline? My knowledge on SRT is quite limited (thanks GStreamer for abstracting all that complexity), so I am not sure what else I can do to help with debugging here. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
After looking at this post:
http://gstreamer-devel.966125.n4.nabble.com/SRT-stream-not-sending-td4693973.html I considered replacing my srtsink with a udpsink and spawning a srt-live-transmit in the background to pick up my UDP stream and take care of the SRT logic. This seems to work 100% of the time, however this solution will never support multiple clients: https://github.com/Haivision/srt/issues/574 They actually suggest using GStreamer in this thread for this kind of use case, so hopefully something can be tweaked in my pipeline to make it work as smoothly as their test app? From there, I decided to try and see what is different between the default config for srtsink and srt-live-transmit. It turns out they are using a block size of 1456 instead of the default 4096 in srtsink, so I started using blocksize=1456 on my srtsink. It's hard to tell for sure, but it seems to be working better for me. It is still failing occasionally, but seems to work about 80% of the time now... -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
After further testing, I found that when my element gets into this blocking
state, it is stuck at this line: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/1.16.0/ext/srt/gstsrtobject.c#L640 srtobject->listener_poll_id seems to be valid (it is always 2 in my tests). I've tried setting poll-timeout=1000, but unfortunately it keeps timing out and never picks up my existing client. From what I can tell, it shouldn't even reach this line anyway since I start my client first. So my gut feeling is, something might be going wrong in the way listeners register callers. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |