Hello,
I have a DeepStream 7.0 application that runs directly on a L4T 36.3.0 Jetson AGX Orin. For portability and ease of use, I’d like to move the application to be run inside a Docker container.
To do this, I’ve pulled and run the 7.0-samples-multiarch image from DeepStream | NVIDIA NGC. However, when I run my application inside the container, I get the following error:
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# ./app
[2024-12-05T16:49:09Z INFO app] Starting app, hostname: Default
thread 'main' panicked at app/src/main.rs:107:6:
Failed to create app: Failed to create processing pipeline
Caused by:
0: failed to make nvstreammux
1: Gstreamer couldn't make element nvstreammux
2: Failed to find element factory with name 'nvstreammux' for creating element
Running gst-inspect-1.0 inside the container gives:
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# gst-inspect-1.0 | grep nv | grep mux
nvdsgst_metamux: nvdsmetamux: meta muxer
However, running the same command outside the container correctly identifies the missing plugin, nvdsgst_multistream
:
2024-12-05T16:37:43+0000 root@ORIN:/home/root $ gst-inspect-1.0 | grep nv | grep mux
nvdsgst_metamux: nvdsmetamux: meta muxer
nvdsgst_multistream: nvstreamdemux: Stream demultiplexer
nvdsgst_multistream: nvstreammux: Stream multiplexer
So it looks like nvsgst_multistream
is accessible from the docker image. I’ve tried running /opt/nvidia/deepstream/deepstream-7.0/user_additional_install.sh
inside the image, but still get the same error.
It does appear to be present in the Gstreamer plugins directory, just blacklisted:
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# ls /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_multistream.so
/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_multistream.so
...
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# gst-inspect-1.0 -b
Blacklisted files:
libcustom2d_preprocess.so
libnvdsgst_inferserver.so
libnvdsgst_multistream.so
libnvdsgst_nvmultiurisrcbin.so
libnvdsgst_udp.so
Total count: 5 blacklisted files
...
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# gst-inspect-1.0 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_multistream.so
(gst-inspect-1.0:1360): GStreamer-WARNING **: 17:08:26.061: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_multistream.so': libgstnvdsseimeta.so.1.0.0: cannot open shared object file: No such file or directory
Could not load plugin file: Opening module failed: libgstnvdsseimeta.so.1.0.0: cannot open shared object file: No such file or directory
Also, I know my application uses nvvideo4linux2
, but this appears to be fully missing from the docker image, even after ./user_additional_install.sh
:
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# gst-inspect-1.0 | grep nvvideo4linux2
(gst-plugin-scanner:597): GStreamer-WARNING **: 17:31:03.910: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_nvmultiurisrcbin.so': libgstnvcustomhelper.so: cannot open shared object file: No such file or directory
(gst-plugin-scanner:597): GStreamer-WARNING **: 17:31:04.009: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtritonserver.so: cannot open shared object file: No such file or directory
(gst-plugin-scanner:597): GStreamer-WARNING **: 17:31:04.038: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: cannot open shared object file: No such file or directory
...
root@ORIN:/opt/nvidia/deepstream/deepstream-7.0# find /* -name libgstnvvideo4linux2.so
How do I access these plugins in my Docker image?