Usage & Configuration

Reference Web App

Default URL: http://<IP_address>:30000

VST deployment can be verified using a web-based application binary. Please note: at this point the web-based application is only available for Chrome browser running on Linux, Windows or MacOS. The UI can be accessed on any viewing machine on local subnet. The following instructions refer to same host. Substitute ‘localhost’ with IP address of your viewing machine.

  1. Launch Chrome browser

  2. In the address bar enter http://<IP_address>:<port_number>

  3. A notice regarding connection privacy is likely to be displayed. If you see it, use ‘Advanced’ button to accept the risks. If no such button is displayed, type ‘thisisnotsafe’ while browser is in focus to reveal login UI. Use ‘admin’ for both username and password.

The VST web-based UI allows for seamless and hassle-free discovery of most ONVIF-S compliant cameras.

Although a relatively short list of models are guaranteed to work with VST release, any fully ONVIF-S compliant camera you might already have purchased should work with this release as well. Contact us if your cameras are not working.

VST will auto-discover, and attempt to communicate with any ONVIF-S camera attached downstream of the host. Once discovered, VST will attempt to communicate with the camera, to retrieve its settings and parameters, and populate the web UI.

There is a good chance that your camera has been secured by a custom username and password prior to the first VST use. In such a case (even though the camera would be discovered) VST might not be able to communicate with it immediately.

This short guide will explain how to ensure that you can see live and recorded content from new or previously used ONVIF-S cameras.


Open a web browser (Chrome is required for best video streaming experience) at http://<IP_address>:<port>. Enter admin for username and password when prompted. The following page will be displayed upon successful login:

VST WebUI Login

As the page opens, it shows overall health of VST, information about VST Devices, Camera discovered, Record Size. Also, it shows the vital information about cameras such as Record Status, Camera Status etc.,


User options like Home, Profile, Settings, etc., are not implemented in current release.

Camera management

Cameras that had been discovered will be listed. If VST discovered the camera, but was not able to communicate with it, the camera status indicates a lock icon. If the lock icon appears, navigate to ‘Camera Management’ tab, and click on ‘Camera Credentials’ section as displayed in the following image:

VST WebUI Login
  • Click on the ‘Select cameras’ drop down list, and select the camera that cannot be streamed from. Then input that camera’s username and password, and click ‘Submit’. An instantaneous message box will confirm if your credentials are valid. Repeat the same procedure for all cameras that cannot be streamed from.

  • It should now be possible to stream from all the cameras attached to VST.

  • If you do not remember your camera’s custom username or password, you might need to perform a hardware factory reset for that camera, re-start VST, and consult that camera’s guide to set its username and password again.

  • VST is now aware of usernames and passwords for all cameras, and is ready to stream live video from the auto-discovered ONVIF-S sources.

Add cameras

To manually add camera into VST, navigate to Camera Management tab, and go to Add device manually option. To Add ONVIF compliant camera using IP option click on IP button then provide ip address, username, password fields. Remaining fields are optional. If you want to add direcly RTSP url, click on RTSP option and provide RTSP url, username, password. You can see a screen as displayed in the following image:

VST WebUI camera add.

Remove cameras

To remove the camera from VST, navigate to Camera Management tab, and go to Remove camera option. Select the camera from dropdown list and click on Remove button as displayed in the following image:

VST WebUI camera remove.

Live streams

Navigate back to the Live Streams tab, click on the center drop-down list, and select the first camera on the list. A black rectangle will appear on the UI, and the camera’s IP address will be displayed on top of the drop-down list. Repeat the same with up to max cameras supported. You should see a screen similar to the following:

VST WebUI camera stream.

From here on, you can control each of the video streams independently. Click on each triangle to see live video from your camera.


  • It can take a few seconds for the VST to commence live streaming. If you see a constantly revolving crescent for a prolonged amount of time - please try to restart the browser.

  • VST has been tested extensively with Chrome and we are aware of existing problems while streaming through alternative browsers.

Recording management


Now that you are able to stream live video, it is time to try out recording. Navigate to the Record Setting tab, and select camera from drop down list:


All recordings will be saved to your local storage; older recordings will be overwritten with newer ones automatically should VST run out of the disk space.

VST WebUI camera record setting.
  • You can select a particular camera from the drop down list and set recording of that camera only.

  • Each camera can be assigned a separate recording schedule.

  • Click on the Live Streams tab again, and verify a red dot is displayed at the top right of the live video.

  • Click on the Recorded Streams tab, you can use a scrubber at the bottom of the video stream to go back in time and play back the recorded content for cameras the recordings are available.

  • Click back on the Live Streams tab to go back to view the live feeds.

  • Recorded videos will be stored at directory set to ‘“video_path”’ config parameter in ‘“storage_config_file”’ (Storage Config.) config parameter in ‘vst_config.json’ file and default video directory path is located at installation path inside ‘vst_video’ directory.

Playback overlay

Now that you are able to record video, it is time to try out Overlay Feature of VST. To enable bounding boxes on the video, navigate to Recorded Streams tab and select a video stream then select overlay option from the video player and enable it.

Some options:

  • Provide comma-separated object-ids in overlay filter section to draw bounding boxes for specific objects. You can get the object-ids from Elasticsearch metadata.

  • Select overlay color for bounding boxes color.

  • Enable/Disable overlay debug for information about timestamps and object count.

  • Select thickness for bounding boxes thickness.

VST Overlay Settings VST Overlay Video

Download recordings

To download recorded video, select Download videos option in Camera Management tab. Then choose the device and corresponding timeline.

VST WebUI Download Option

Storage utilization

You can examine the amount of disk space used by clicking on Dashboard tab:

VST WebUI diskspace


The active VST configuration can be viewed from the VST Settings tab:

VST WebUI VST Settings


Finally, the Debug tab will allow you to create and examine a debug package. It will come handy if you ever need to contact us. Enjoy the VST experience!

VST WebUI Debug tab

Refer to the Components & Customization for comprehensive list of APIs and its usage.

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


NAT types

STUN/TURN requirement


Symmetric to Symmetric



Symmetric to Port-Restricted Cone



Symmetric to Address-Restricted Cone

STUN (but probably not reliable)


Symmetric to Full Cone



Everything else


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.

VST web UI is verified with coturn server. To install, run the following command:

sudo apt-get install coturn


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

Setup & Deployment

Using Docker Container

  1. Copy all VST related configs in one single directory.

  2. Modify VST configs as per requirement.

  3. Run the docker command either with auto-discovery mode or with predefined RTSP streams.

    • Camera auto-discovery mode (ONVIF auto-discovery):

      sudo docker run -it -v <absolute_host_path_of_configs_dir>/:/home/vst/vst_release/configs/ --net=host --gpus all --vstConfigFile /home/vst/vst_release/configs/vst_config.json
    • Pre-defined RTSP Streams mode. Modify rtsp_streams.json to add predefined RTSP urls & toggle param "enabled": true:

      sudo docker run -it -v <absolute_host_path_of_configs_dir>/:/home/vst/vst_release/configs/ --net=host --gpus all -e ADAPTOR=vst_rtsp --vstConfigFile /home/vst/vst_release/configs/vst_config.json --rtspStreamsFile /home/vst/vst_release/configs/rtsp_streams.json

To get the latest container version, refer here:

Using Helm Charts

  1. Download VST Helm chart:

    helm fetch --username='$oauthtoken' --password=<YOUR API KEY>
  2. Install Helm chart:

    # with default config parameters
        helm install <name> <latest-version>
    # with customized config parameters
        helm install <name> <latest-version> -f command-values.yaml

Sample format of command-values.yaml. Edit as per your requirement:

  - name: ngc-docker-reg-secret

        # List of turnUrls with static credentials. Example - admin:admin@
        static_turnurl_list: []
        # List of coturn turnUrls with secret. Example -
        use_coturn_auth_secret: false
        # Twilio account details userId & auth_token.
        use_twilio_stun_turn: false
        twilio_account_sid: ""
        twilio_auth_token: ""
        # Camera to VST streaming, UDP option might not work due to firewall. Disable if no firewall.
        rtsp_streaming_over_tcp: true
        # If true then forward camera/nvstreamer ntp time to clients otherwise forward vst ntp time
        use_sensor_ntp_time: false
        device_name: "VST"
        device_location: ""
        gpu_indices: [0]
        always_recording: true
        use_software_path: false
        use_webrtc_inbuilt_encoder: ""
        enable_notification: false
        # supported - redis, kafka
        use_message_broker: "kafka"
        # Redis stream name
        message_broker_topic: mdx_notification
        message_broker_payload_key: "sensor"
        redis_server_env_var: REDIS_SVC_SERVICE_HOST:9092
        kafka_server_address: mdx-kafka-cluster-kafka-brokers:9092
        video_metadata_server: "mdx-elasticsearch-cluster-master-headless:9200/mdx-raw*"
        video_metadata_query_batch_size_num_frames: 300
        use_video_metadata_protobuf: true
        use_https: false
        use_http_digest_authentication: false
        use_rtsp_authentication: false
        nv_org_id: ""
        nv_ngc_key: ""

      total_video_storage_size_MB: 100000
      # Below are default container paths which are mapped to host volumes
      data_path: "/opt/vmounts/vst-data/"
      video_path: "/opt/vmounts/video-data/"

    # Choose adaptor type between vst_rtsp, onvif, remote. Default adaptor is vst_rtsp
      # This adaptor used to pick pre-defined RTSP URLs from rtsp_streams.json file
      - enabled: true
        control_adaptor_lib_path: prebuilts/arch/
        id: 6cdec7d7-0f30-450c-a78a-756c3e132fd3
        name: vst_rtsp
        need_recording: true
        need_rtsp_server: true
        type: vst
      # This adaptor used to auto discover the onvif cameras
      - enabled: false
        control_adaptor_lib_path: prebuilts/arch/
        discovery_adaptor_lib_path: prebuilts/arch/
        id: 044bc643-33c5-479a-b988-10d0bbc4e05c
        name: onvif
        need_recording: true
        need_rtsp_server: true
        type: vst
      # This adaptor used in edge to cloud use-case. Enable this adaptor at the cloud side
      - enabled: false
        control_adaptor_lib_path: prebuilts/arch/
        id: 780bd844-5d1c-11ee-8c99-0242ac120002
        name: remote
        need_recording: true
        need_rtsp_server: true
        type: vst

    # Known RTSP URLs can be provided statically in below config. Make sure vst_rtsp adaptor is selected.
      - enabled: false
        stream_in: rtsp://admin:admin@
        name: Camera_1
      - enabled: false
        stream_in: rtsp://nvstreamer-nvstreamer-svc:31554/nvstream/opt/vmounts/streamer-videos/Building_K_Cam1.mp4
        name: Building_K_Cam1

To get the latest Helm Chart version, refer here:

For more context on configuration, when the microservice is used:

VST Config

Following table describes the parameters in VST config file, which should be provided as command-line option deploying helm chart:

VST config file



Typical Value


Section to define all Network related parameters


HTTP port number for accessing VST webservices



Server domain name



STUN server address



TURN server address



Coturn Turnurl list with secret



Enable/Disable Coturn Auth secret



Enable/Disable Twilio



Twilio Account Sid



Auth token for Twilio



NTP server address



If true then forward camera/nvstreamer ntp time in SR reports to the clients. Otherwise provide current ntp time in SR report.



Max number of webrtc output connections at a given time



Max number of webrtc input connections at a given time



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 -, this means to deny only that single IP address.



User given rtsp port number



Preferred network interface for RTSP streaming



RTSP UDP Port Number



RTSP UDP Port Number



Enable / Disable RTSP Streaming over TCP



Timeout for RTSP Server reclamation client



Stream Monitor interval in seconds



Latency for UDP connection in millisecond



Enable/Disable UDP frame drop



Latency for webrtc in milliseconds



Enable/Disable frame drop



Maximum bitrate for Webrtc camera



Minimum bitrate for Webrtc camera



Start bitrate for Webrtc camera



Timeout duration in seconds for peer connection establishment



Enable/Disable GRPC server



GRPC server port



webrtc in audio sender maximum bitrate



webrtc in video degradation preference



webrtc in video sender maximum framerate



Cloud VST Address


Min and Max Port Range for webRTC

“{min”:0 “max”:0}”””


Enable/Disable websocket ping pong messages



Timeout for websocket to keep alive



Section to define all ONVIF related parameters


Device discovery timeout to receive probe match message from device



Timeout to receive ONVIF command response from device



device discovery frequency in secs



Network interface for device discovery e.g eth0, eth1



Limiting maximum number of devices



Default value of bitrate setting on device



Default value of framerate setting on device



Default value of resolution setting on device



Default value of GOV length setting on device



Section to define all VST data related parameters


Path to storage configuration JSON file



% value of storage occupancy when aging policy triggers



Monitor storage usage with frequency in seconds



Directory to store files in nvstreamer



Enable/Disable looping in nvstreamer



Enable/Disable seeking in nvstreamer



Maximum file upload size in nvstreamer



Media containers supported in nvstreamer



Buffer size for RTSP server output in KB



Metadata containers supported in nvstreamer



Video codec supported for video recording



Audio codec supported for audio recording and decode



Enable/Disable aging policy of video files



Limiting the maximum video download size



Enable/Disable always ON recording



Enable allows processing on CPU otherwise on GPU



Fixed resolution for webrtc input stream



Maximum framerate for webrtc input stream



webrtc input video bitrate thresold percentage



webrtc input without transcode



webrtc input quality



Enable frameid support for rtsp in nvstreamer



GPU indices



webRTC Out Enable / Disable SPS PPS insertion



webRTC Out set I-Frame Interval



webRTC Out set IDR Interval



webRTC Out minimum interval between DRC requests



Device Name for edge VST



Device Location for edge VST



Enable/Disable low latency in decoder



Section to define all Notifications related parameters


Enable notification of device events on message broker



Message Broker to use (Kafka/Redis)



Topic/event used in message broker



Redis server address:port



Kafka server address and port



Section to define all Debug related parameters


Enable/Disable perf logging



Enable/Disable QOS logging



OS log file path



QOS log capture interval



QOS log publish interval



Enable/Disable gstreamer probes



Enable/Disable stats update on prometheus



prometheus port number



Enable certain logs highlighting by special colors



Enable/Disable Debug apis



Enable/Disable webRTC IN stats



Enable/Disable frameid in webRTC Stream



Section to define all overlay related parameters


Server to fetch Metadata from



Size of metadata to fetch



Use Protobuf spec for metadata parsing



Section to define all security related parameters


Enable/Disable https



Enable/Disable RTSP proxy stream authentication



Enable/Disable HTTP user authentication








Storage Config

Following table describes the parameters in VST storage config file:

VST storage config file



Typical Value


Path where VST related data files are created



Path to root folder where recorded videos to be stored



Total size available to store recorded videos


RTSP Stream Config

Following table describes the parameters in RTSP Streams config file:

RTSP Streams config file



Typical Value


Array of streams in JSON format



Enable / Disable stream



Actual RTSP URL of camera



Stream Name


Frequently Asked Questions

Refer to the VST FAQ for more information.