Cannot launch deepstream_imagedata-multistream.py in deepstream_python_v0.9 with python deepstream 5.0

I just installed a new environment on TX2 (see this post, though it has problem to start GUI, yet I can ssh log into it to do something). Nvidia Jetson TX2 is hanging on “Started Update UTMP about System Runlevel Changes.” after flashing new packages with SDKManager 1.1

I tried to launch a sample deepstream_imagedata-multistream.py, it failed on creating NvStreamMux.

deepstream_python_v0.9/python/apps/deepstream-imagedata-multistream$ python3 deepstream_imagedata-multistream.py rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov /tmp/output_video

Frames will be saved in /tmp/output_video
Creating Pipeline

Creating streamux

Unable to create NvStreamMux
Traceback (most recent call last):
File “deepstream_imagedata-multistream.py”, line 415, in
sys.exit(main(sys.argv))
File “deepstream_imagedata-multistream.py”, line 266, in main
pipeline.add(streammux)
TypeError: Argument 1 does not allow None as a value

I did a simpler test, Gst.ElementFactory.make failed to create an object. Why the gi package doesn’t have nvstreammux? Is there anything I missed?

$ python3
Python 3.6.9 (default, Nov 7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

import gi
gi.require_version(‘Gst’, ‘1.0’)
from gi.repository import GObject, Gst
Gst.init(None)

streammux = Gst.ElementFactory.make(“nvstreammux”, “Stream-muxer”)
print(streammux)
None

print(gi.version)
3.26.1

$ gst-inspect-1.0 --version
gst-inspect-1.0 version 1.14.5
GStreamer 1.14.5
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0

I saw this post [pyds] Unable to create NvStreamMux, pgie, nvosd, saying it’s related to deepstream. I don’t know how above sample codes could be related to deepstream. Anyway I’m using deepstream 5.0 deepstream_sdk_v5.0.0_jetson.tbz2 on TX2.

Hi
You need deepstream package, the python sample will use plugins like nvstreammux, osd, nvinfer … and so on.
you can install deepstream package by sdkmanager.

Thanks @amycao. I installed deepstream 5.0 via sdkmanager. I’m looking to verify if those plugins were installed properly, could you please let me know how the python sample use and locate those plugins?

plugins location:
/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream

Here is documentation about how to setup and run python sample,

I managed to run it natively on Nano (TX2 got broken GPU card), yet failed to launch it insider docker.

Does it support to be running insider docker container? I’m using docker image nvcr.io/nvidia/deepstream-l4t:5.0-dp-20.04-samples.

After entering the container, launching test1 sample with below command got error “Could not get EGL display connection”. I confirmed x11 forwarding is configured and xclock shows properly.

root@nano-desktop:/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test1# ./deepstream-test1-app …/…/…/…/samples/streams/sample_720p.h264
nvbuf_utils: Could not get EGL display connection
nvbuf_utils: Could not get EGL display connection
One element could not be created. Exiting.

I’ve followed the instructions in README to install necessary packages and build test1 application.

Please follow instructions in the apps/sample_apps/deepstream-app/README on how
to install the prequisites for Deepstream SDK, the DeepStream SDK itself and the
apps.

You must have the following development packages installed
GStreamer-1.0
GStreamer-1.0 Base Plugins
GStreamer-1.0 gstrtspserver
X11 client-side library

To install these packages, execute the following command:
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
libgstrtspserver-1.0-dev libx11-dev

Compilation Steps:
cd apps/deepstream-test1/ make
$ ./deepstream-test1-app <h264_elementary_stream>

What else did I miss?

Now I managed to run test1 sample successfully insider docker no matter ssh session or local session.

Can you paste your docker command used? make sure before you run docker, run xhost + first.

Yes, xhost + matters. The docker command is like below.

docker run --rm -it --net=host --env=“DISPLAY” -v /tmp/.X11-unix/:/tmp/.X11-unix --volume="$HOME/.Xauthority:/root/.Xauthority:rw" nvcr.io/nvidia/deepstream-l4t:5.0-dp-20.04-samples bash

You issue solved, correct?

Yes, solved. Thanks for helping.