These are two elements my client absolutely needs for their app:
0:00:00.062168840 16 0x281e6a60 WARN GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "nvvidconv"!
0:00:00.065322471 16 0x281e6a60 WARN GST_ELEMENT_FACTORY gstelementfactory.c:456:gst_element_factory_make: no such element factory "nvjpegenc"!
Both of these are missing from the docker image but cannot be installed because:
nvidia apt sources are not enabled in any l4t images (why?).
even if this is hacked around, the preinst script in nvidia-l4t-gstreamer prevents the installation of the gstreamer plugins because it depends on nvidia-l4t-gstreamer which checks for /proc/device-tree/compatible that cannot exist at build time (/proc is not mounted during docker build).
Preparing to unpack .../nvidia-l4t-core_32.4.3-20200625213809_arm64.deb ...
/var/lib/dpkg/tmp.ci/preinst: line 40: /proc/device-tree/compatible: No such file or directory
dpkg: error processing archive /var/cache/apt/archives/nvidia-l4t-core_32.4.3-20200625213809_arm64.deb (--unpack):
new nvidia-l4t-core package pre-installation script subprocess returned error exit status 1
Either an updated base image, a fixed nvidia-l4t-gstreamer package, or a workaround would be much appreciated.
I can use nvvideoconvert instead of nvvidconv (please unify these, it’s very confusing), but I can see no clean way to get jpegenc into the container.
Hi,
The two plugins, nvvidconv and nvjpegenc, are not compatible with plugins in DeepStream SDK. The plugins are implemented on the basis of NvBuffer APIs defined in
Appreciate the prompt and thorough answer. Assuming my pipeline is separated in such a way the capture to jpeg is in a separate branch of a pipeline (after a tee), can I use it then?
Just a suggestion: even if this isn’t DeepStream specific, it would be nice if all the Nvidia GStreamer plugins were available in l4t-base and derived images. The inconsistency between the l4t rootfs and l4t-base makes it very difficult to use at times.
I prefer adduser since I’ve wiped out users’ groups before by doing -G instead of -aG. Plus the order makes more sense to me. YMMV.
Re: original topic solution. It seems nvjpegenc and nvvidconv do work in Docker provided the --nvidia runtime is used and the user in the video group. Not sure about any Deepstream elements, since those haven’t been added yet, but the plan is to have them in a seperate branch of the pipeline, so I would assume it’s probably fine.