Rtsp source issues with some cameras

We are trying to use deepstream and it doesn’t work on some of our cameras.

Logs with --gst-debug-level=2

0:00:00.623755219  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2947:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:sink> Could not probe maximum capture size for pixelformat VP90
0:00:00.623765221  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:3056:gst_v4l2_object_get_nearest_size:<nvv4l2decoder0:sink> Unable to try format: Unknown error -1
0:00:00.623774040  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2941:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:sink> Could not probe minimum capture size for pixelformat VP80
0:00:00.623779984  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:3056:gst_v4l2_object_get_nearest_size:<nvv4l2decoder0:sink> Unable to try format: Unknown error -1
0:00:00.623784844  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2947:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:sink> Could not probe maximum capture size for pixelformat VP80
0:00:00.623795728  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:3056:gst_v4l2_object_get_nearest_size:<nvv4l2decoder0:sink> Unable to try format: Unknown error -1
0:00:00.623807651  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2941:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:sink> Could not probe minimum capture size for pixelformat H264
0:00:00.623812801  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:3056:gst_v4l2_object_get_nearest_size:<nvv4l2decoder0:sink> Unable to try format: Unknown error -1
0:00:00.623817697  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2947:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:sink> Could not probe maximum capture size for pixelformat H264
0:00:00.624235452  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:3056:gst_v4l2_object_get_nearest_size:<nvv4l2decoder0:src> Unable to try format: Unknown error -1
0:00:00.624244434  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2941:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:src> Could not probe minimum capture size for pixelformat NM12
0:00:00.624251033  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:3056:gst_v4l2_object_get_nearest_size:<nvv4l2decoder0:src> Unable to try format: Unknown error -1
0:00:00.624258150  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2947:gst_v4l2_object_probe_caps_for_format:<nvv4l2decoder0:src> Could not probe maximum capture size for pixelformat NM12
0:00:00.624267733  1125 0x55a20cdf4240 WARN                    v4l2 gstv4l2object.c:2394:gst_v4l2_object_add_interlace_mode:0x7f6cd80cbad0 Failed to determine interlace mode
** ERROR: <cb_newpad3:500>: Failed to link depay loader to rtsp src
0:00:01.049700431  1125 0x7f6cdc029f60 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc4> error: Internal data stream error.
0:00:01.049732363  1125 0x7f6cdc029f60 WARN                 basesrc gstbasesrc.c:3072:gst_base_src_loop:<udpsrc4> error: streaming stopped, reason not-linked (-1)

**PERF:  FPS 0 (Avg)	
**PERF:  0.00 (0.00)	
**PERF:  0.00 (0.00)	

Debug level 4 reveals:

0:00:01.819122664  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
0:00:01.819230121  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
0:00:01.819339413  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
0:00:01.819449609  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
0:00:01.819559200  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
0:00:01.819667996  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
0:00:01.819694265  1101 0x7fb1800194c0 FIXME           rtph265depay gstrtph265depay.c:1310:gst_rtp_h265_depay_process:<depay_elem0> Assuming DONL field is not present
**PERF:  0.00 (0.00)	

The configuration is as follows:


[application]
enable-perf-measurement=1
perf-measurement-interval-sec=1
#gie-kitti-output-dir=streamscl

[tiled-display]
enable=0
rows=4
columns=4
width=1280
height=720
gpu-id=0
#(0): nvbuf-mem-default - Default memory allocated, specific to particular platform
#(1): nvbuf-mem-cuda-pinned - Allocate Pinned/Host cuda memory, applicable for Tesla
#(2): nvbuf-mem-cuda-device - Allocate Device cuda memory, applicable for Tesla
#(3): nvbuf-mem-cuda-unified - Allocate Unified cuda memory, applicable for Tesla
#(4): nvbuf-mem-surface-array - Allocate Surface Array memory, applicable for Jetson
nvbuf-memory-type=0

[source0]
enable=1
#Type - 1=CameraV4L2 2=URI 3=MultiURI 4=RTSP
type=4
uri=<rtsp url of our internal camera>
num-sources=1
#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

## for primary display.
[sink0]
enable=0
#Type - 1=FakeSink 2=EglSink 3=File
type=2
sync=0
source-id=0
gpu-id=0
nvbuf-memory-type=0

## for file output
[sink1]
enable=0
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming
type=3
#1=mp4 2=mkv
container=1
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
#iframeinterval=10
bitrate=2000000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
output-file=output/out.mp4
source-id=0

## for rtspstreaming
[sink2]
enable=0
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming
type=4
#1=h264 2=h265
codec=1
#encoder type 0=Hardware 1=Software
enc-type=0
sync=0
#iframeinterval=10
bitrate=400000
#H264 Profile - 0=Baseline 2=Main 4=High
#H265 Profile - 0=Main 1=Main10
profile=0
# set below properties in case of RTSPStreaming
rtsp-port=8554
udp-port=5400

[osd]
enable=1
gpu-id=0
border-width=1
text-size=15
text-color=1;1;1;1;
text-bg-color=0.3;0.3;0.3;1
font=Serif
show-clock=0
clock-x-offset=800
clock-y-offset=820
clock-text-size=12
clock-color=1;0;0;0
nvbuf-memory-type=0

[streammux]
gpu-id=0
##Boolean property to inform muxer that sources are live
live-source=1
batch-size=4
##time out in usec, to wait after the first buffer is available
##to push the batch even if the complete batch is not formed
batched-push-timeout=40000
## Set muxer output width and height
width=1920
height=1080
##Enable to maintain aspect ratio wrt source, and allow black borders, works
##along with width, height properties
enable-padding=0
nvbuf-memory-type=0
## If set to TRUE, system timestamp will be attached as ntp timestamp
## If set to FALSE, ntp timestamp from rtspsrc, if available, will be attached
# attach-sys-ts-as-ntp=1

In this stackoverflow question, op has similar problems which he fixed with the solution he provided.

Is there a solution for this, perhaps you can patch deepstream-app with above solution to accept any payload type?

You can check the status of connecting to the cameras with
gst-launch-1.0 --gst-debug-level=rtspsrc:5 uridecodebin uri=your-rtsp-uri ! fakesink

Here are the logs:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to <rtsp_url>
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
Missing element: VND.ONVIF.METADATA RTP depayloader
WARNING: from element /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0: No decoder available for type 'application/x-rtp, media=(string)application, payload=(int)107, clock-rate=(int)90000, encoding-name=(string)VND.ONVIF.METADATA, a-recvonly=(string)"", ssrc=(uint)33520, clock-base=(uint)3600, seqnum-base=(uint)1, npt-start=(guint64)415142000000000, play-speed=(double)1, play-scale=(double)1'.
Additional debug info:
gsturidecodebin.c(920): unknown_type_cb (): /GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0

@Fiona.Chen I think the error is correlated with this line, do you have any suggestions?

Do you know which video format is in your camera stream? H264 or H265?

If it is h264, can you try the following pipeline:
gst-launch-1.0 --gst-debug=v4l2videodec:5 rtspsrc location=rtsp://xxxxxx ! rtph264depay ! h264parse ! nvv4l2decoder ! fakesink

Hey @Fiona.Chen,
Here are the results.

0:00:00.285730837  1375 0x558ca618b610 DEBUG           v4l2videodec gstv4l2videodec.c:1834:gst_v4l2_video_dec_sink_getcaps:<nvv4l2decoder0> Returning sink caps image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream }, alignment=(string){ au }; video/x-h265, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream }, alignment=(string){ au }; video/mpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true; video/mpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], mpegversion=(int)[ 1, 2 ], systemstream=(boolean)false, parsed=(boolean)true; video/x-divx, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], divxversion=(int)[ 4, 5 ]; video/x-av1, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp9, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.285803991  1375 0x558ca618b610 DEBUG           v4l2videodec gstv4l2videodec.c:1834:gst_v4l2_video_dec_sink_getcaps:<nvv4l2decoder0> Returning sink caps image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream }, alignment=(string){ au }; video/x-h265, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream }, alignment=(string){ au }; video/mpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true; video/mpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], mpegversion=(int)[ 1, 2 ], systemstream=(boolean)false, parsed=(boolean)true; video/x-divx, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], divxversion=(int)[ 4, 5 ]; video/x-av1, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp9, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.285826598  1375 0x558ca618b610 DEBUG           v4l2videodec gstv4l2videodec.c:1810:gst_v4l2_video_dec_src_query:<nvv4l2decoder0> Returning src caps video/x-raw(memory:NVMM), width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.285856597  1375 0x558ca618b610 DEBUG           v4l2videodec gstv4l2videodec.c:1810:gst_v4l2_video_dec_src_query:<nvv4l2decoder0> Returning src caps video/x-raw(memory:NVMM), width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
Setting pipeline to PAUSED ...
0:00:00.285913613  1375 0x558ca618b610 DEBUG           v4l2videodec gstv4l2videodec.c:593:gst_v4l2_video_dec_open:<nvv4l2decoder0> Opening
0:00:00.527635240  1375 0x558ca618b610 DEBUG           v4l2videodec gstv4l2videodec.c:670:gst_v4l2_video_dec_start:<nvv4l2decoder0> Starting
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to <rtsplink>
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
0:00:00.584734940  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1066:gst_v4l2_video_dec_drain:<nvv4l2decoder0> Draining...
0:00:00.584770315  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:919:gst_v4l2_video_dec_flush:<nvv4l2decoder0> Flushed
0:00:00.585067206  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1834:gst_v4l2_video_dec_sink_getcaps:<nvv4l2decoder0> Returning sink caps video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string)byte-stream, alignment=(string)au, parsed=(boolean)true
0:00:00.585278016  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1834:gst_v4l2_video_dec_sink_getcaps:<nvv4l2decoder0> Returning sink caps video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string)byte-stream, alignment=(string)au, parsed=(boolean)true
0:00:00.585430412  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1834:gst_v4l2_video_dec_sink_getcaps:<nvv4l2decoder0> Returning sink caps video/x-h264, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string)byte-stream, alignment=(string)au, parsed=(boolean)true
0:00:00.585491765  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:730:gst_v4l2_video_dec_set_format:<nvv4l2decoder0> Setting format: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, parsed=(boolean)true
0:00:00.603145399  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1834:gst_v4l2_video_dec_sink_getcaps:<nvv4l2decoder0> Returning sink caps video/x-h264, width=(int)1280, height=(int)720, framerate=(fraction)25/1, stream-format=(string)byte-stream, alignment=(string)au, parsed=(boolean)true, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, profile=(string)high, level=(string)3.1
0:00:00.603168571  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:730:gst_v4l2_video_dec_set_format:<nvv4l2decoder0> Setting format: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)1280, height=(int)720, framerate=(fraction)25/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, profile=(string)high, level=(string)3.1
0:00:00.603625859  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1388:gst_v4l2_video_dec_handle_frame:<nvv4l2decoder0> Handling frame 0
0:00:00.603634267  1375 0x7f67f801a0c0 DEBUG           v4l2videodec gstv4l2videodec.c:1426:gst_v4l2_video_dec_handle_frame:<nvv4l2decoder0> Sending header

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU)
• DeepStream Version
• JetPack Version (valid for Jetson only)
• TensorRT Version
• NVIDIA GPU Driver Version (valid for GPU only)

The DeepStream 6.1.1 is released, can you try with DeepStream 6.1.1, we have fixed some bugs in 6.1.1 version. DeepStream 6.1.1 is now available with support for JetPack 5.0.2 and an updated compute stack - Intelligent Video Analytics / DeepStream SDK - NVIDIA Developer Forums

DeepStream 6.1.1 runs without issues, thanks.

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