New request regarding gstreamer with SRT

Dear all,

we are developing a system to get broadcast quality camera pictures from certain e-sports participants to a main control center. Gstreamer with nvarguscamerasrc and all the hardware encoding is a very “cool tool”… :-)

As udp-streaming (ultra-low latency is mandantory) is fighting with loosing frames, we found SRT will do it right.

But - the gstreamer that comes with the Nano contains version 1.14.5, which does not include SRT support.
Even 1.16.3 does not (should have according to gstreamer, but does not, as somebody told due to a bug in Ubuntu).

Now wasted 3 days in trying to find a workaround.
Gstreamer 1.16.3 is the latest version, which can be installed with gst-install, to get 1.18.3, you have to built with meson and ninja. But even after managing this, the 1.14.5 stays (gst-inspect-1.0 --version) in the system. Uninstalling with apt-remove will get 1.16.3 on top, but removes support of nvarguscamerasrc and all those components.

Even when building with nix gstreamer works with SRT but is lacking nvidia support. And I got it only working once. Trying to open a nix-shell again failed.

Does anybode has an idea which way to go?
Upgrading Ubuntu?
First killing 1.14.5 and then building 1.18.3 and were to get the nvidia stuff?
Kicking gstreamer and try with ffmpeg?
Drink a beer and wait for the barbeque?

Any help is highly appreciated,
Alex

Hi Alex_S_aus_K,

Thanks for raisin this request, as you found that SRT is not supported at current Jetson SW, we will discuss this requirement internally to see if any solution for your use case.

Thanks

Hi,
There is guidance to manually upgrade gstreamer version:

However, the releases are tested with 1.14.5, there could be stability issue if upgrading to another version.

The next r32.5 is still in 1.14.5. We will evaluate upgrading gstreamer version.

Dear @DaneLLL,

already tried this a several times. Got it up to 1.16.3 but adding installation path to $PATH in .bashrc results in a conflict with the existing 1.14.5 (crashing). Manually removing the old 1.14.5 does it but looses all nvargus libs. Is there a way to manually install them too? Perhaps in the new gstreamer path? And SRT is still missing.
Or - does anyone have a good suggestion for low latency UHD streaming from Jetson Nano?
Best,
Alex

You’re probably better off streaming with obs studio or something to a gstreamer app than pointing a camera at the screen with nvarguscamerasrc. Obs supports srt, and so does newer versions of GStreamer.

Some of the nvidia elements are available to build from source in which case you should be able to use them with 1.8 provided you rebuild. The hardware decoders, however, i can’t manage to find in the public sources tarball. I would expect at least the deprecated OMX decoders would be there, but no. You can have a look and see if there is a decoder i missed in there.

If you find one, I’ll help you integrate it into the meson build system. I’ve already done so for the argus camera source. Then you can use it as a subproject in any Meson project, like gstreamer itself.

Dear Michael,

thanks for the suggestions.
We have to build about 100 stand alone boxes with camera, vpn and a point to point streaming - so obs studio requiring a pc would be not that suitable.
Right now I’ll give ffmpeg a try, let’s see…

As far as I remember, after gstreamer version 1.14, srt is supported.
Can you please try to build suitable srt version and then build bad plugins, while configuring bad plugins, srt should be detected and then you can use it with gstreamer. That is what I did and it is working with version 1.14.5.

A bit confused. This is not for pc gaming?

I’m pretty sure you’re right, but some elements were rewritten for 1.16. see:

1.16 is what’s shipped with the 20.04 rootfs, so I’d imagine when Nvidia upgrades the new elements will be available without any backporting necessary.

@mdegans
You’re right - will be a new simracing league. No - the pcs don’t have to be touched - that’s the reason for the stand alone boxes… And the jetson because of the hardware encoding…
Do you have any idea when 20.04 will be available? Is the a chance to get a nightly?

@elibolfurkan didn’t mange it.
Manual build of plugins-bad failed:

Makefile:917: recipe for target ‘libgstsrt_la-gstsrt.lo’ failed
make[3]: *** [libgstsrt_la-gstsrt.lo] Error 1
make[3]: Leaving directory ‘/home/gsp/gst/ext/srt’
Makefile:1316: recipe for target ‘srt’ failed
make[2]: *** [srt] Error 2
make[2]: Leaving directory ‘/home/gsp/gst/ext’
Makefile:952: recipe for target ‘all-recursive’ failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory ‘/home/gsp/gst’
Makefile:883: recipe for target ‘all’ failed
make: *** [all] Error 2

gst ist directory of gstreamer-plugins-bad built.
srt-build is in /home/gsp/srt, also done with sudo make install…

@mdegans - do you know if this is fixed in the new jetpack?

@Alex_S_aus_K can you try like below, the srt version should be suitable with gst bad plugin. And you can check srt is enabled or not after gst bad plugin configure. I hope it will work like this way.

sudo apt-get install tclsh pkg-config cmake libssl-dev build-essential
git clone https://github.com/Haivision/srt.git
cd srt/
git checkout v1.2.3
./configure
make
sudo make install
sudo ldconfig

cd ../
sudo apt install gtk-doc-tools
git clone https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad.git
cd gst-plugins-bad/
git checkout 1.14.5
./autogen.sh
make

Dear @elibolfurkan ,
I’m so sorry but this doesn’t work either. There were no errors during compilation…

gsp@gsp002:~$ gst-inspect-1.0 |grep srt*
dtls:  dtlssrtpdemux: DTLS SRTP Demultiplexer
dtls:  dtlssrtpenc: DTLS-SRTP Encoder
dtls:  dtlssrtpdec: DTLS-SRTP Decoder
subparse: subparse_typefind: srt, sub, mpsub, mdvd, smi, txt, dks, vtt
subenc:  srtenc: Srt encoder
srtp:  srtpdec: SRTP decoder
srtp:  srtpenc: SRTP encoder
gsp@gsp002:~$ gst-inspect-1.0 srtsink
No such element or plugin 'srtsink'
gsp@gsp002:~$ gst-launch-1.0 -v audiotestsrc ! srtsink uri=srt://host
WARNING: erroneous pipeline: no element "srtsink"
gsp@gsp002:~$ gst-launch-1.0 -v audiotestsrc ! srtserversink uri=srt://host
WARNING: erroneous pipeline: no element "srtserversink"
gsp@gsp002:~$ 

Hi @Alex_S_aus_K ,

Probably could not find so
Can you try to find it manually to see if it is in correct path or not.
sudo find / -name libgstsrt.so