Gstreamer, yocto and nvvidconv

on jetson xavier nx programmed using yocto we have a gstreamer installation which works only (as far as nvvidconv is concerned) when launched as root, our normal user cannot get it to work even within a gst-launch cvommand line when the same line works as root or sudo

anyone with an idea is welcome to pitch in!!!

You may post the output of gst-launch (using -v) with your pipeline for better advice.
Is your user added to video and renderer groups ?
Is your user allowed to use current DISPLAY ?
Is your Jetson system running into graphical or multi-user target ?

The user is part of video group, there is no renderer group in the system. The default mode is multi-user.target so no DISPLAY environment variable.

gst-launch-1.0 -v v4l2src device=/dev/video0 ! ‘video/x-raw,width=1280, height=960, framerate=75/1’ ! videorate ! ‘video/x-raw,width=1280, height=960, framerate=10/1’ ! nvvidconv ! ‘video/x-raw(memory:NVMM),width=1280, height=960, framerate=10/1’ ! nvv4l2h264enc bitrate=2000000 ! h264parse ! avimux ! filesink location=output.avi

Output:

WARNING: erroneous pipeline: no element “nvvidconv”

Same command works as root and produces an output.avi that can be played in VLC for example

I’d first suggest that you try to clear the user gstreamer cache and rebuild:

rm ~/.cache/gstreamer-1.0/registry.aarch64.bin

gst-inspect-1.0 -b

gst-inspect-1.0 nvvidconv

If this doesn’t work, you may investigate if you have library libgstnvvidconv.so in a path that is available for LD with this user. With L4T the lib is in /usr/lib/aarch64-linux-gnu/gstreamer-1.0 so check if /usr/lib/aarch64-linux-gnu/ is found by ld :

ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012

You may also be sure that root and user use the same gst-launch:

which gst-launch-1.0

Last, you may use strace (can be installed with apt) and check differences between both cases.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.