One more RTSP DeepStream Jetson Nano problem

Hi everyone.

Have been trying to run the deepstream-app with the following config for some time and without success (DeepStream 4.0.2, r32.2.1):

[source1]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=4
uri=rtsp://[address]/user=user_password=password_channel=1_stream=1.sdp
#drop-frame-interval=2
gpu-id=0

(0): memtype_device - Memory type Device

(1): memtype_pinned - Memory type Host Pinned

(2): memtype_unified - Memory type Unified

cudadec-memtype=0

[sink0]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4: Encode+RTSP streaming 5: Overlay (Jetson only) 6:Message #converter + Message broker
type=2
sync=0
source-id=0
gpu-id=0
qos=0
nvbuf-memory-type=0
overlay-id=1

the result being:

Using winsys: x11
Creating LL OSD context new
gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream-4.0/lib/libnvds_mot_klt.so
gstnvtracker: Optional NvMOT_RemoveStreams not implemented
gstnvtracker: Batch processing is OFF

Runtime commands:
h: Print this help
q: Quit

p: Pause
r: Resume

NOTE: To expand a source in the 2D tiled display and view object details, left-click on the source.
To go back to the tiled display, right-click anywhere on the window.

** INFO: <bus_callback:189>: Pipeline ready

**PERF: FPS 0 (Avg)
**PERF: 0.00 (0.00)
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
**PERF: 0.00 (0.00)
**PERF: 0.00 (0.00)
**PERF: 0.00 (0.00)
**

The following Gstreamer pipe runs without problems:
gst-launch-1.0 rtspsrc location=rtsp://[address]/user=user_password=passwd_channel=1_stream=1.sdp ! rtph264depay ! h264parse ! avdec_h264 ! nvvideoconvert ! nvdsosd ! nvegltransform ! nveglglessink

It also runs with omxh264dec instead of avdec_h264,
but with the nvv4l2decoder the result is:

gst-launch-1.0 rtspsrc location=rtsp://[address]/user=user_password=password_channel=1_stream=1.sdp ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvideoconvert ! nvdsosd ! nvegltransform ! nveglglessink
Setting pipeline to PAUSED …

Using winsys: x11
Opening in BLOCKING MODE
Creating LL OSD context new
Pipeline is live and does not need PREROLL …
Got context from element ‘eglglessink0’: gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://[address]/user=user_password=password_channel=1_stream=1.sdp
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING …
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261

(gst-launch-1.0:4491): GStreamer-CRITICAL **: 19:54:28.052: gst_mini_object_unref: assertion ‘mini_object != NULL’ failed
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261

and here it hangs forever.

The deepstream-app also uses nvv4l2decoder

So the question is - what can be done to make the deepstream-app work with the camera I have?

I am ready to share the RTSP stream if need be.

Hi,

This is a longshot because it looks like a decoder problem, but have you tried a pipeline with uridecodebin:

gst-launch-1.0 uridecodebin uri=rtsp://[address]/user=user_password=password_channel=1_stream=1.sdp ! nvdsosd ! nvegltransform ! nveglglessink

uridecodebin will try to use nvv4l2decoder if it is available in your system and it handles more cases.

Hi, miguel.taylor
Thanks for your answer.

I did try it before. Did not work.
Anyway here is the result of your suggested pipeline:

gst-launch-1.0 uridecodebin uri=rtsp://[address]/user=user_password=password_channel=1_stream=1.sdp ! nvdsosd ! nvegltransform ! nveglglessink
Setting pipeline to PAUSED …

Using winsys: x11
Creating LL OSD context new
Pipeline is live and does not need PREROLL …
Got context from element ‘eglglessink0’: gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://[address]/user=user_password=password_channel=1_stream=1.sdp
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING …
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261

and here it hangs forever…

It definitely is a nvv4l2decoder problem, the question is how to solve/circumvent it with the camera I am using.

Any ideas?

Hi,
DS4.0.2 should run with Jetpack4.3(r32.3.1)
https://forums.developer.nvidia.com/t/announcing-deepstream-sdk-4-0-2/109325
Do you install through SDKManager? SDKManager handles version control and the mismatch should not happen.