Can GStreamer do this?

(10 rtsp cameras) => GStreamer <=rtsp stream=> multiple applications

Basically I only want to tax the camera’s with one RTSP connection instead of what I am doing now (one connection to each cam per application, it limits scaling).

So in essence, can I consume ONE rtsp camera and publish it to x other applications realtime? Maybe even record the h264 to disk at the same time?
What kind of added latency would I be looking at?

Hope it’s ok to ask that kind of Q here…Thanks.

Hi !

Yes, you can definitely do that with gst-rtsp-server with a pipeline that will access the original rtsp stream and then take care of sending it to all remote clients.

The pipeline being exposed can also do other things, like mux/record to disk.

You can check the examples here to get a better feeling of what can be done : subprojects/gst-rtsp-server/examples · main · GStreamer / gstreamer · GitLab

1 Like

If you want to do other things with the stream than sharing it again over RTSP, you probably want to have a separate pipeline for receiving the stream and doing whatever else you want with it. And then pass the stream to the pipeline managed by gst-rtsp-server via some appsink / appsrc solution (like the new inter elements).

Reason for that is that gst-rtsp-server needs to manage the whole pipeline, but it sounds like you would like to have the pipeline running (e.g. for recording) even if no clients are currently connected.

1 Like

Hey, that is exactly what I want to do. I need GStreamer to be always on and record to disk, in intervals of say 20 meg files. I have another job that will archive them elsewhere at runtime.

Then optionally (really, one or two will always be on) connect to GStreamer with my own app and consume the feeds of x cameras… There’s a couple of scenarios where this app will manipulate the video - if I can transfer that back to GStreamer for archiving as well, that’d be great too. GStreamer would become the essential central hub in my deployment.

1 Like