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”
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.
VST Config details can be found here: VST Config.