VST Config#

Following table describes the parameters in VST config file:

VST config file#

Key

Description

Typical Value

network

Section to define all Network related parameters

“http_port”

HTTP port number for accessing VST webservices

“30000”

“server_domain_name”

Server domain name

“vst-service”

“stunurl_list”

STUN server address

[“stun.l.google.com:19302”]

“static_turnurl_list”

TURN server address

[]

“coturn_turnurl_list_with_secret”

Coturn Turnurl list with secret

[]

“use_coturn_auth_secret”

Enable/Disable Coturn Auth secret

FALSE

“use_twilio_stun_turn”

Enable/Disable Twilio

FALSE

“twilio_account_sid”

Twilio Account Sid

“”

“twilio_auth_token”

Auth token for Twilio

“”

“ntp_servers”

NTP server address

[“time.google.com”]

“max_webrtc_out_connections”

Max number of webrtc output connections at a given time

8

“webservice_access_control_list”

An Access Control List allows restrictions to be put on the list of IP addresses which have access to the web server. The ACL is a comma separated list of IP subnets, where each subnet is pre-pended by either a - or a + sign. A plus sign means allow, where a minus sign means deny. If a subnet mask is omitted, such as -1.2.3.4, this means to deny only that single IP address.

“+10.42.0.0/32”

“rtsp_server_port”

User given rtsp port number

8554

“rtsp_server_instances_count”

Maximum RTSP server instances

1

“rtsp_preferred_network_iface”

Preferred network interface for RTSP streaming

“eth1”

“rtsp_in_base_udp_port_num”

RTSP UDP Port Number

-1

“rtsp_out_base_udp_port_num”

RTSP UDP Port Number

-1

“rtsp_streaming_over_tcp”

Enable / Disable RTSP Streaming over TCP

FALSE

“rtsp_server_reclamation_client_timeout_sec”

Timeout for RTSP Server reclamation client

10

“rx_socket_buffer_size”

Receiver Socket buffer size, to avoid frame drop in bytes

1000000

“tx_socket_buffer_size”

Transmit Socket buffer size, to avoid frame drop in bytes

1000000

“stream_monitor_interval_secs”

Stream Monitor interval in seconds

2

“udp_latency_ms”

Latency for UDP connection in millisecond

200

“udp_drop_on_latency”

Enable/Disable UDP frame drop

FALSE

“webrtc_latency_ms”

Latency for webrtc in milliseconds

500

“enable_frame_drop”

Enable/Disable frame drop

TRUE

“webrtc_video_quality_tunning”

Tune bitrate and QP Range as per resolution for webrtc

{ “resolution_2160”: { “bitrate_start” : 20000, “bitrate_range” : [15000,25000], “qp_range_I” : [0,30], “qp_range_P” : [0,51] }, “resolution_1440”: { “bitrate_start” : 10000, “bitrate_range” : [8000,15000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] }, “resolution_1080”: { “bitrate_start” : 5000, “bitrate_range” : [3000,8000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] }, “resolution_720”: { “bitrate_start” : 3000, “bitrate_range” : [2000,5000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] }, “resolution_480”: { “bitrate_start” : 1000, “bitrate_range” : [800,3000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] } }

onvif

Section to define all ONVIF related parameters

device_discovery_timeout_secs”

Device discovery timeout to receive probe match message from device

10

“onvif_request_timeout_secs”

Timeout to receive ONVIF command response from device

10

“device_discovery_freq_secs”

device discovery frequency in secs

5

“device_discovery_interfaces”

Network interface for device discovery e.g eth0, eth1

[]

“max_devices_supported”

Limiting maximum number of devices

8

“default_bitrate_kbps”

Default value of bitrate setting on device

8000

“default_framerate”

Default value of framerate setting on device

30

“default_resolution”

Default value of resolution setting on device

“1920x1080”

“default_max_gov_length”

Default value of GOV length setting on device

60

data

Section to define all VST data related parameters

“storage_config_file”

Path to storage configuration JSON file

./configs/vst_storage.json

“storage_threshold_percentage”

% value of storage occupancy when aging policy triggers

95

“storage_monitoring_frequency_secs”

Monitor storage usage with frequency in seconds

2

“supported_video_codecs”

Video codec supported for video recording

[“h264”,”h265”]

“supported_audio_codecs”

Audio codec supported for audio recording and decode

[“pcmu”,”pcma”,”mpeg4-generic”]

“enable_aging_policy”

Enable/Disable ageing policy on recorded videos

true

“max_video_download_size_MB”

Limiting the maximum video download size

1000

“always_recording”

Enable/Disable always ON recording

true

“event_recording”

Enable/Disable event based recording

true

“event_record_length_secs”

Maximum duration of event based recorded file

10

“record_buffer_length_secs”

Maximum length in seconds to buffer internaly

2

“use_webrtc_inbuilt_encoder”

Software Encoder to be used in webRTC, options : vp8 and h264, default : h264

“h264”

“webrtc_out_enable_insert_sps_pps”

webRTC Out Enable / Disable SPS PPS insertion

TRUE

“webrtc_out_set_iframe_interval”

webRTC Out set I-Frame Interval

30

“webrtc_out_set_idr_interval”

webRTC Out set IDR Interval

256

“webrtc_out_min_drc_interval”

webRTC Out minimum interval between DRC requests

5

“webrtc_out_encode_fallback_option”

webRTC Out encode fallback option (sofware (h264) or pass_through)

“software”

“enable_dec_low_latency_mode”

Enable/Disable HW decoder low latency mode

true

“webrtc_out_default_resolution”

webRTC out default resolution, supported upto 4K

“width x height”

“recorder_enable_frame_drop”

This setting allows the recorder to drop frames if necessary to maintain real-time performance. Enabling frame dropping can help prevent buffer overflows and keep the recording process smooth, but may result in some frames being skipped in the final recording

true

“recorder_max_frame_queue_size_bytes”

This sets the maximum size of the frame queue in bytes. The frame queue acts as a buffer for frames waiting to be recorded. A larger queue can help absorb temporary spikes in processing load, but uses more memory

16000000

“enable_ipc_path”

Enable/Disable efficient IPC buffer sharing between VST and DeepStream(DS) microservices

false

“ipc_socket_path”

Specifies the directory where the IPC socket would be created if IPC was enabled

/tmp

notifications

Section to define all Notifications related parameters

“enable_notification”

Enable notification of device events on message broker

true

“use_message_broker”

Message Broker to use (Redis)

“redis”

“message_broker_topic”

Topic/event used in message broker

“vst.event”

“message_broker_payload_key”

Message Key for Redis / Kafka messages

“sensor.id”

“message_broker_metadata_topic”

Topic/event used in message broker for Metadata

“test”

“redis_server_env_var”

Redis server address:port

REDIS_SVC_SERVICE_HOST:6379

debug

Section to define all Debug related parameters

“enable_perf_logging”

Enable/Disable perf logging

TRUE

“enable_qos_monitoring”

Enable/Disable QOS logging

TRUE

“qos_logfile_path”

OS log file path

/root/vst_release/webroot/log/

“qos_data_capture_interval_sec”

QOS log capture interval

1

“qos_data_publish_interval_sec”

QOS log publish interval

5

“enable_gst_debug_probes”

Enable/Disable gstreamer probes

TRUE

“enable_prometheus”

Enable/Disable stats update on prometheus

FALSE

“prometheus_port”

prometheus port number

8080

“enable_highlighting_logs”

Enable certain logs highlighting by special colors

TRUE

“enable_debug_apis”

Enable/Disable Debug apis

TRUE

overlay

Section to define all overlay related parameters

“enable_gem_drawing”

Enable/Disable GEM Drawing

TRUE

“analytic_server_address”

Address of analytics server

http://<ip_address>:<port_num>/emdx”

“overlay_text_font_type”

Overlay Font type, refer /usr/share/fonts/truetype/ for more fonts

“DejaVuSansMono.ttf”

security

Section to define all security related parameters

“use_https”

Enable/Disable https

TRUE

“use_rtsp_authentication”

Enable/Disable RTSP proxy stream authentication

TRUE

“use_http_digest_authentication”

Enable/Disable HTTP user authentication

TRUE

Remote Access Options#

Installation of STUN / TURN Server#

Installation and configuration of these servers are mandatory for WebRTC streaming. Below are the NAT type requirements for STUN/TURN:

Cameras Supported#

Case

NAT types

STUN/TURN requirement

1

Symmetric to Symmetric

TURN

2

Symmetric to Port-Restricted Cone

TURN

3

Symmetric to Address-Restricted Cone

STUN (but probably not reliable)

4

Symmetric to Full Cone

STUN

5

Everything else

STUN

Depending on your network type, you may choose to install STUN and/or TURN servers:

  • You can set the STUN server using stunurl config parameter.

  • You can set the TURN server using turnurl config parameter.


Turn-server settings required for WebRTC streaming, use either one of the below options from vst-config:

Examples:

Option 1: Specify turn server URLs with static credentials.

  • static_turnurl_list: [“admin:admin@10.0.0.1:3478”]

Option 2: Specify coturn turnUrls with secret.

To install coturn server, run the following command:

sudo apt-get install coturn
  • use_coturn_auth_secret: true

  • coturn_turnurl_list_with_secret: [“10.0.0.1:3478:secret_key”,10.0.0.2:3478:secret_key2]

Option 3: Specify Twilio turn-server account details userId & auth_token. User has to create account on https://www.twilio.com/

  • use_twilio_stun_turn: true

  • twilio_account_sid: “<accound-sid>” OR twilio_account_sid: “<account_sid>:<key_sid>”

  • twilio_auth_token: “<auth_token>” OR twilio_auth_token: “<key_secret>”

Here is public STUN server from Google:

  • “stun.l.google.com:19302”, you may use this by setting vst-config option “stunurl” option

Note

TURN server is not mandatory, this is required only if Client and Server are in different networks.

Want to use CSI camera?#

CSI Camera Setup#

This guide provides instructions for setting up the CSI camera:

Prerequisites#

  • IMX 274 dual CSI camera connected to the Jetson board

Detection and Setup#

1. Verify CSI Camera Detection#

First, ensure your system can detect the connected CSI camera.

  • Update package lists and install necessary utilities:

    sudo apt-get update
    sudo apt-get install v4l-utils
    
  • List detected video devices:

    v4l2-ctl --list-devices
    
  • Confirm that the IMX274 dual cameras are listed in the output.

2. Configure Container Access to Camera Devices#

  • Open the device configuration file:

    sudo nano /etc/nvidia-container-runtime/host-files-for-container.d/devices.csv
    
  • Append the following line to the file if it’s not already present:

    dev, /dev/video*
    
  • Save and close the editor.

3. Configure VST for Native Adapter#

  • Open the VST compose file:

    sudo nano /opt/nvidia/jetson/services/vst/compose.yaml
    
  • Add the native adapter environment variable under the VST service:

    environment:
      ADAPTOR: "native"
    
  • Save and close the editor.

Activating CSI Camera#

After completing the setup, restart the jetson-vst service to apply the changes. The CSI cameras should now be accessible from VST GUI.

Note

If you don’t want to use CSI camera, remove the ADAPTOR environment variable from the VST compose file and restart the jetson-vst service.

VST Config details can be found here: VST Config.