VST Config#
Following table describes the parameters in 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:
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.