gstreamer upgrade to 1.16

I have tried the manual build instructions at Welcome — Jetson Linux<br/>Developer Guide 34.1 documentation and now can see that my system is using 1.16.2 instead of the bundled 1.14.5 version.

1 Like

Thank you!

One can upgrade to ubuntu 20 and get the official packages for 1.16, worked for me.

Anyone has instructions to install 1.18, which is the version that I need to test?

It seems to be extremely difficult to find instructions anywhere, what I found was incomplete, there were missing steps and at the end the install failed altogether.

Maybe is something that an expert had tried before and succeeded, but I’m not an expert and find it very frustrating to be unable to install a simple package.

Regards,

Daniel

Check out this link and the instructions to build the latest version of Gstreamer: GitHub - GStreamer/gst-build: Build GStreamer and plugin modules using the Meson build system. This module has been merged into the main GStreamer repo for further development.

Check out v1.18 and then build an “uninstalled” environment for your desired version.

However, you will need to have a basic understanding of build systems if you’re going to want to work with GStreamer. Not the easiest framework to work with.

Which encoder/decoder did you use? Were you able to use NVIDIA’s HW-acccelerated codecs on the non-native 1.16.2 version?

Yes, we use nvv4l2h264enc with GStreamer 1.16.2. Actually the nvidia plugins stay as they are from the jetpack installation, so you can use all of them:

jetson@xavier:/usr/lib/aarch64-linux-gnu/gstreamer-1.0$ ls -a libgstnv*
libgstnvarguscamerasrc.so  libgstnveglglessink.so   libgstnvivafilter.so  libgstnvv4l2camerasrc.so  libgstnvvideocuda.so
libgstnvcompositor.so      libgstnveglstreamsrc.so  libgstnvjpeg.so       libgstnvvidconv.so        libgstnvvideosink.so
libgstnvdrmvideosink.so    libgstnvegltransform.so  libgstnvtee.so        libgstnvvideo4linux2.so   libgstnvvideosinks.so

Hi @razvan.grigore , how did you manage to install ubuntu20.04 in jetson nano?

I created a gist here for anyone interested in upgrading to gstreamer 1.18.

YMMV… it works however I ran into some warnings/errors regarding buffer recycling in one of my pipelines that gave me pause and reconsidered the unsupported nature of this version.

https://gist.github.com/J-Rojas/95cf4f71afe023e18c7c50bfb44b15e7

You can run the script like so:

./build_and_install_gstreamer.sh [PATH] [GSTREAMER_VERSION] [INSTALLATION_PATH] [NVIDIA_LIBRARY_PATH]

You will most likely have to resolve any missing system components to have a complete build with the gstreamer modules you are interested in. For example, libopus-dev needs to be installed for opus support.

Just for clarification:
So, having ubuntu20 after latest update, it’s possible upgrading gstreamer to at least 1.16 to have full usage of SRT with nvarguscamerasrc?

Stay safe…

Can you confirm if this works for you with the NVIDIA HW-accelerated encoders? I think simply copying the dynamic libs from the system installation (1.14) to the 1.18 “local” installation won’t work properly. Did you run a video encoding pipeline with the HW encoder to verify this?

It did work to a certain degree as the API apparently is binary compatible, however there are subtle problems that still could be caused by implementation differences - up to you to decide if it works for you or not. I did run with the Jetson HW encoding/decoding pipeline.

In the documentation it states that it’s only available for the Jetson AGX Xavier.

This document is a user guide for the GStreamer version 1.0 based accelerated solution
included in NVIDIA® Tegra® Linux Driver Package (L4T) for NVIDIA® Jetson AGX
Xavier™ devices.

It seems like it’s not compatible with the Nano at the time.

Does any one have full instuction how to install gstreamer 1.18 on jetson nano with python support? I read all previous message and don’t understand which way to install right, can anyone help me please?

Like others, I’ve needed webrtc and datachannels for a project, so gstreamer 1.16.2 has been required. After months of struggling, using a mixture of experiences found in here and elsewhere, with the gst-install command I’ve been able to get python to launch the appropriate version, however it still is missing plugins for dtls and srtp.

Razvan, your guidance for installing the missing libnice and usrsctp worked perfectly for those libraries-- can you share how you were able to install dtls and srtp? I know they should be included with the plugins-bad set but they simply are not being installed, and I’m having trouble understanding how anyone gets webrtc to work through gstreamer.

I should add: attempting to build gstreamer from source via the nvidia guide fails at the gst-install-plugins-bad-1.16.2 step, with the error “requested gstreamer-1.0 >= 1.16.2’ but version of GStreamer is 1.14.5.”
installation of base and good plugins was successful.

just upgrade to ubuntu 20 and get the official packages, it’s way easier. I also managed to compile it, but it was trying to get the shared libs from old 1.14, so I gave up in the end.