Unable to view yolov3 rtsp streaming output using deepstream sdk.

Hey Guys,

I’m trying to run the yolov3 on deepstream. Input source is an ip camera, output sink is rtsp.
Deepstream app displays following the cli. But I don’t see any rtsp output rendered on vlc or mplayer, it just goes blank (though the runtime seconds in the player keeps increasing) or pulls up the output video stream for 1 or 2 seconds completely pixelated and then goes back to blank for couple of mins . It seems fine if I save the output to a file. Issue is viewing the output live. It’s same for other object detection models.

Parts of output displayed on deepstream:

RTSP info:

*** DeepStream: Launched RTSP Streaming at rtsp://localhost:8554/ds-test ***

Performance info:

**PERF: 29.92 (30.26)
**PERF: 30.04 (30.22)
**PERF: 29.98 (30.19)

Server configuration:
GPU : T4
CPU : Intel® Xeon® Gold 6240C (72 cores)
OS Distribution : Ubuntu 18.04
CUDA version: 10.2
Nvidia Driver version: 440.33.01
Deepstream container version: deepstream:4.0.2-19.2-devel

IP Camera config:
Resolution : 1920*1080P
Frame rate: 30 fps
Max. Bitrate : 8192 Kbps
Video Encoding: H.264

Deepstream config file:

[tiled-display]
enable=1
rows=1
columns=1
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
type=3
uri=rtsp://username:password@ipaddress
num-sources=1
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=RTSPStreaming
type=4
#1=h264 2=h265
codec=2
sync=0
#iframeinterval=10
bitrate=8192000

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=0
batch-size=1
##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

config-file property is mandatory for any gie section.

Other properties are optional and if set will override the properties set in

the infer config file.

[primary-gie]
enable=1
gpu-id=0
#model-engine-file=model_b1_fp32.engine
labelfile-path=labels.txt
batch-size=1
#Required by the app for OSD, not a plugin property
bbox-border-color0=1;0;0;1
bbox-border-color1=0;1;1;1
bbox-border-color2=0;0;1;1
bbox-border-color3=0;1;0;1
gie-unique-id=1
nvbuf-memory-type=0
config-file=config_infer_primary_yoloV3.txt

[tests]
file-loop=0

Is it OK to run "source30_1080p_dec_infer-resnet_tiled_display_int8.txt " which sink is like this

[sink2]
enable=1
#Type - 1=FakeSink 2=EglSink 3=File 4=RTSPStreaming
type=4
#1=h264 2=h265
codec=1
sync=0
bitrate=4000000
# set below properties in case of RTSPStreaming
rtsp-port=8554
udp-port=5400

Hey Chris,

Thank you for the suggestion, the change seems to be setting codec to h264 and bitrate to 4000Kbps. This change runs fine and I’m able to view the output rendered via vlc player.

I have couple of questions,

  1. The deepstream performance benchmark documentation shows h265 will have higher performance. So why do I run into output rendering issues if I chose h265?
  2. My cameras bitrate is 8192Kbps, setting the bitrate to 4000000 in deepstream config seems to solve the output rendering issue but is that the correct approach? The bit rate is reduced by half right from input to output?
  3. When I try to repeat the same in another server with T4 and centos7, I’m running into the original issue of not being able to view the rtsp output though the deepstream shows as running fine. The only differences are host servers operating system is centos instead of ubuntu and since it doesn’t have a display, I’m x11 forwarding the display to a gateway server and using the vlc in gateway server to view the output. Any suggestion to get the rtsp output viewed in this setup?

Thanks.

  1. Do you mean h265 has issue in #2 test?

  2. Do you mean codec=h265, bitrate=4000000 can fix your rendering issue?

  3. We did not do test on centOS.