Skip to content

VST configuration for Event reviewer application on DGX spark #72

@ronakharesh

Description

@ronakharesh

Hi,

Platform :DGX spark,
Deploying event reviewer application

Went with sotck application no changes to code base.

Image

storage apis are available. But cant see other apis.

curl -s http://localhost:30000/api/v1/storage/version
{
        "storage_management_version" : "0.0.1"
}


Next,

I did chnage the

  • ADAPTOR= ONVIF
  • NEED_RECORDING=true
  • NEED_RTSPSERVER=true
  • NEED_STORAGE=true
storage-ms:
    image: ${VST_IMAGE:-nvcr.io/nvidia/blueprint/vst-storage:2.1.0-25.11.1.1}
    networks:
      - vss-shared-network
    user: "0:0"
    runtime: nvidia
    entrypoint: ["/bin/bash", "-c", "if [ \"$$VST_INSTALL_ADDITIONAL_PACKAGES\" = \"true\" ]; then /home/vst/vst_release/tools/user_additional_install.sh; fi && exec /home/vst/vst_release/launch_vst"]
    environment:
      - VST_INSTALL_ADDITIONAL_PACKAGES=${VST_INSTALL_ADDITIONAL_PACKAGES}  # Set to true when needed
      - CONTAINER_NAME=storage-ms
      - NVIDIA_VISIBLE_DEVICES=${NVIDIA_VISIBLE_DEVICES:-all}
      - ADAPTOR=onvif
      - NEED_RECORDING=true
      - NEED_RTSPSERVER=true
      - NEED_STORAGE=true
      - NEED_STREAM_MONITORING=true
      - HTTP_PORT=${STORAGE_HTTP_PORT}
    volumes:
      - ${VST_CONFIG_PATH}:/home/vst/vst_release/configs
      - ${VST_DATA_PATH}:/home/vst/vst_release/vst_data
      - ${VST_VIDEO_STORAGE_PATH}:/home/vst/vst_release/vst_video
      - ${ALERT_REVIEW_MEDIA_BASE_DIR}:/home/vst/vst_release/streamer_videos
        #container_name: storage-ms
    ports:
    - "${STORAGE_HTTP_PORT}:${STORAGE_HTTP_PORT}"
    - "30554:30554"
    - "31000-31100:31000-31100/udp"
      
    restart: on-failure    # Restart only if the container exits with non-zero status

Still the same things.

Am I missing anything?

VST storage logs

Installation completed successfully!
        Host HTTP port: 30000
        Recorded Video Root: /home/vst/vst_release/vst_video
        stunurl list: stun.l.google.com:19302, stun1.l.google.com:19302
        static_turnurl_list: 
        use_coturn_auth_secret: 0
        use_twilio_stun_turn: 0
        coturn_turnurl_list_with_secret: 
        twilio_account_sid: 
        twilio_auth_token: 
        use reverse proxy RP: 0
        reverse proxy server address: REVERSE_PROXY_SERVER_ADDRESS:100
        NTP servers: 
        Use sensor ntp time: 0
        Sensor Discovery Timeout(secs): 10
        Sensor Discovery Freq(secs): 5
        Onvif request Timeout(secs): 10
        Onvif sensor time sync interval(secs): 60
        Onvif sensor time sync compensation(ms): 20
        Sensor Discovery Network Interfaces: 
        Enable perf logging: 1
        Max Webrtc output connections: 8
        Max Webrtc input connections: 8
        Storage Config file: ./configs/vst_storage.json
        Total video storage size: 1000000
        VST database path: /home/vst/vst_release/vst_data
        storage threshold percentage: 95
        storage monitoring frequency secs: 2
        enable aging policy: 0
        Max Video Download Size in MB: 1000
        Always Recording: 1
        Event Recording: 0
        Event Recording Length Secs: 10
        Recording Buffer Length Secs: 2
        Use Software Path: 0
        Use Webrtc out inbuilt encoder: 
        Enable rtsp server sei support: 0
        Enable Proxy server sei support: 0
        Webrtc IN Resolution: 1280x720
        Webrtc IN max frameRate: 30
        Webrtc IN video bitrate thresold: 50
        Webrtc IN Pass-through mode: 0
        Webrtc Sender Quality: pass_through
        Is camera auto discovery enabled ?: 1
        Webservice allowed/denied Subnet/IP list?: 
        RTSP preferred network interface: 
        RTSP server port: 30554
        RTSP server instances: 8
        RTSP server use socket poll: 1
        Incoming rtsp initial port: -1
        RTCP RTP Port multiplex: 1
        Outgoing rtsp initial port: -1
        rtsp streaming over tcp: 0
        RTSP server reclamation client timeout sec: 10
        Server domain name: 
        Enable Notfication: 0
        Message Broker used: redis
        Enable Notfication Consumer: 0
        Message Broker used for consumer: kafka
        Notification event: vst_events
        Message Broker payload key: sensor.id
        Message Broker metadata topic: test
        Message Broker topic for consumer: 
        Redis server env var: 
        Kafka Server address: 
        MQTT Broker address: 
        Max Sensors Supported: 500
        Max stream_monitor_interval (secs): 5
        rtp_udp_port_range: 31000-31100
        Max udp_latency_ms: 200
        udp_drop_on_latency: 0
        webRTC Latency ms: 1000
        Frame Drop Enabled: 1
        Video Metadata Server URL: 
        Calibration File Path: /home/vst/vst_release/configs/calibration.json
        Calibration Mode: synthetic
        Use Camera Groups: 1
        Enable Recentering: 1
        Floor Map File Path: /home/vst/vst_release/configs/gev.png
        3D Overlay Sensor Name: 
        Video Metadata Max results fetched: 300
        Bbox tolerance in millisec: 33
        Enable Overlay Skip Frame: 0
        Video Use old specs for metadata parsing: 1
        Enable QoS Monitoring: 1
        QoS logfile path: ./vst_data/logs/
        QoS data capture interval sec: 1
        QoS data publish interval sec: 5
        Enable GST debug Probes: 1
        Recieve Socket Buffer Size: 1000000
        Send Socket Buffer Size: 1000000
        Send RTP Packet Size: 1300
        Enable Packet Pacing: 0
        RTP Packet Pace Time us: 1000
        RTP Packet Batch Size: 5
        Proxyclient Jitter Buffer Size ms: 200
        Enable Prometheus: 0
        Prometheus Port: 8080
        NV Streamer directory path: /home/vst/vst_release/streamer_videos/
        NV Streamer loop playback: 1
        NV Streamer max upload file size: 10000
        NV Streamer seekable: 0
        NV Streamer Sync Playback: 0
        NV Streamer Sync File Count: 0
        NV Streamer RTSP server buffer size kb: 1000
        NV Streamer supported containers: mp4, mkv
        Video codecs supported: h264, h265
        Audio codecs supported: pcmu, pcma, mpeg4-generic
        Bitrate Kbps: 8000
        Framerate: 30
        Resolution: 1920x1080
        GOV Length: 60
        Profile: Main
        Quality: 3
        Encoding Interval: 1
        Enable Highlighting logs: 1
        Enable debug options: 1
        Enable dump webrtc input stats: 0
        Enable network bandwidth notification: 0
        Enable frameId in webrtc stream: 0
        Use HTTP digest authentication: 0
        Use multi user: 0
        Enable user cleanup: 0
        Session max age sec: 2592000
        Multi user extra flags: Secure, SameSite=none
        Use HTTPS authentication: 0
        Nv org ID: 
        Nv NGC kry: 
        Use RTSP authentication: 0
        webrtc_video_quality_tunning: {
        "resolution_1080" : 
        {
                "bitrate_range" : 
                [
                        2000,
                        10000
                ],
                "bitrate_start" : 5000,
                "qp_range_I" : 
                [
                        10,
                        30
                ],
                "qp_range_P" : 
                [
                        10,
                        30
                ]
        },
        "resolution_1440" : 
        {
                "bitrate_range" : 
                [
                        5000,
                        20000
                ],
                "bitrate_start" : 10000,
                "qp_range_I" : 
                [
                        0,
                        15
                ],
                "qp_range_P" : 
                [
                        0,
                        10
                ]
        },
        "resolution_2160" : 
        {
                "bitrate_range" : 
                [
                        10000,
                        50000
                ],
                "bitrate_start" : 20000,
                "qp_range_I" : 
                [
                        0,
                        20
                ],
                "qp_range_P" : 
                [
                        0,
                        20
                ]
        },
        "resolution_480" : 
        {
                "bitrate_range" : 
                [
                        500,
                        3000
                ],
                "bitrate_start" : 1000,
                "qp_range_I" : 
                [
                        10,
                        30
                ],
                "qp_range_P" : 
                [
                        10,
                        30
                ]
        },
        "resolution_720" : 
        {
                "bitrate_range" : 
                [
                        1000,
                        8000
                ],
                "bitrate_start" : 2000,
                "qp_range_I" : 
                [
                        10,
                        30
                ],
                "qp_range_P" : 
                [
                        10,
                        30
                ]
        }
}

        webrtc_peer_conn_timeout_sec: 10
        enable_grpc: 0
        grpc_server_port: 50051
        AI Bridge Endpoint: 
        webrtc_in_audio_sender_max_bitrate: 128000
        webrtc_in_video_degradation_preference: detail
        enable_websocket_pingpong: 0
        websocket_keep_alive_ms: 5000
        webrtc_in_video_sender_max_framerate: 30
        gpu_indices: 
        Remote VST address: 
        Enable latency logging: 1
        WebRTC Out Encode Fallback Mechanism (software/pass_through): software
        Enable IPC Path: 0
        IPC Socket Path: /tmp/
        IPC Src Buffer Timestamp Copy: 1
        IPC Src Connection Attempts: 5
        IPC Src Connection Interval: 1000000
        IPC Sink Buffer Timestamp Copy: 1
        IPC Sink Buffer Copy: 1
        Enable MEGA Simulation: 0
        MEGA Simulation Min Delay: 0
        MEGA Simulation Max Delay: 5000
        MEGA Simulation Base Time: 2024-09-27T10:00:00.123456Z
        Default file expiry minutes: 10080
        Default ingress port: 30888
        Use Webrtc HW decoder: 1
        Enable frame drop in Stream Recorder: 1
        Max frame queue size in Stream Recorder: 16000000
        analytic_server_address: http://:30080/emdx
        webrtc_out_enc_quality_tuning (ultra_low_latency / low_latency / high_quality): ultra_low_latency
        webrtc_out_enc_preset(ultra_fast / fast / slow): ultra_fast
        enable drc: 1
        Enable loopback multicast: 0
        tokkio plugin server url: 
        Use StreamSDK: 0
        Update Record Details in sec: 10
        Halo Safety UDP Port: -1
        Halo Safety Proximity Class: Forklift
        Halo Safety Text Size: 0
        Halo Safety Active Text: 
        Halo Safety Active Text Color: 
        Halo Safety Active Text BG Color: 
        Halo Safety Inactive Text: 
        Halo Safety Inactive Text Color: 
        Halo Safety Inactive Text BG Color: 
        Enable Cloud Storage: 0
        Cloud Storage Type: minio
        Cloud Storage Endpoint: http://127.0.0.1:9000
        Cloud Storage Bucket: videos
        Cloud Storage Region: 
        Cloud Storage Use SSL: 0
        Download Files Timeout Secs: 300
[2026-2-18T23:48:16.214Z:266852730843168:utils.cpp:1480: setRecvMaxSocketBufferSize]    Setting OS's socket receive max buffer size to = 1000000
sysctl: setting key "net.core.rmem_max": Operation not permitted
[2026-2-18T23:48:16.215Z:266852730843168:utils.cpp:1491: setSendMaxSocketBufferSize]    Setting OS's socket send max buffer size to = 1000000
sysctl: setting key "net.core.wmem_max": Operation not permitted
[2026-2-18T23:48:16.217Z:266852730843168:vstmodule.cpp:46: ModuleLoader]        Created ModuleLoader instance
[2026-2-18T23:48:16.217Z:266852730843168:Main.cpp:51: getCurrentModuleId]       Loading the vst module:storage
[2026-2-18T23:48:16.217Z:266852730843168:server.cpp:376: VmsServer]     #### VST version: 2.1.0-25.11.1 ####
[2026-2-18T23:48:16.222Z:266852730843168:server.cpp:72: startGLoop]     g_main_loop is running now

(gst-plugin-scanner:748): GStreamer-WARNING **: 23:48:16.228: Failed to load plugin '/home/vst/vst_release/prebuilts/aarch64/gst-plugins/libgstcuosd.so': libnvbufsurface.so.1.0.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:748): GStreamer-WARNING **: 23:48:16.302: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmplex.so': libmplex2-2.1.so.0: cannot open shared object file: No such file or directory
[2026-2-18T23:48:18.525Z:266852730843168:utils.cpp:2563: detectGPU]     ############## GPU ID DETECTED = 0 ##############
[2026-2-18T23:48:18.525Z:266852730843168:utils.cpp:2564: detectGPU]     ############## GPU Device =  ##############
[2026-2-18T23:48:18.525Z:266852730843168:server.cpp:112: initialize]    Host Ip = 172.18.0.4
[2026-2-18T23:48:18.525Z:266852730843168:adaptor_loader.cpp:302: loadAdaptor]   device_manager->name:microservice
        Adaptor name: microservice
        Adaptor id: 640c3667-81e6-460f-b926-b8008a130dbd
        Adaptor ip: 
        Adaptor user: 
        Adaptor password: 
        Adaptor port: 
        Adaptor type: vst
        Adaptor url: http://
        Adaptor enabled: 1
        Need RTSP Server?: 0
        Need Stream Monitoring?: 0
        Need Recording?: 0
        Need Storage Management?: 1
        Adaptor isOnline: 0

[2026-2-18T23:48:18.531Z:266852730843168:sqlite_helper.cpp:3530: setDbVersion]  SQL query: INSERT OR IGNORE INTO DB_DETAILS(ROW_ID,DB_VERSION,CREATED_DATE_TIME,MODIFIED_DATE_TIME) VALUES ({0},{1},{2},{3});
[2026-2-18T23:48:18.537Z:266852730843168:device_manager.cpp:578: updateDeviceId]        Device ID already present: a27d362c-3711-46fe-8d40-84d7f49f6842
[2026-2-18T23:48:18.537Z:266852730843168:device_manager.cpp:604: updateDeviceName]      Device Name already present: VST
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:45: createStorageReader]      === Unified Storage Reader Configuration Debug ===
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:46: createStorageReader]      enable_cloud_storage: false
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:47: createStorageReader]      cloud_storage_type: 'minio'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:48: createStorageReader]      cloud_storage_endpoint: 'http://127.0.0.1:9000'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:49: createStorageReader]      cloud_storage_bucket: 'videos'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:50: createStorageReader]      cloud_storage_access_key: 'SET'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:52: createStorageReader]      cloud_storage_secret_key: 'SET'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:85: createStorageReader]      Cloud storage is disabled, using local storage
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:95: createStorageReader]      Configuring storage settings for type: LOCAL
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:624: createStorageConfig]     Local storage configured successfully
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:101: createStorageReader]     Creating unified storage reader for type: local
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_reader_utils.cpp:118: createStorageReader]     Unified storage reader created successfully
[2026-2-18T23:48:18.547Z:266852730843168:storage_management.cpp:3319: initUnifiedStorageReader] Unified storage reader initialized successfully
[2026-2-18T23:48:18.547Z:266852730843168:storage_management.cpp:3320: initUnifiedStorageReader] Cloud storage enabled: false
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:51: initializeStorageManager]        === Unified Storage Manager Configuration Debug ===
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:52: initializeStorageManager]        enable_cloud_storage: false
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:53: initializeStorageManager]        cloud_storage_type: 'minio'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:54: initializeStorageManager]        cloud_storage_endpoint: 'http://127.0.0.1:9000'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:55: initializeStorageManager]        cloud_storage_bucket: 'videos'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:56: initializeStorageManager]        cloud_storage_access_key: 'SET'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:58: initializeStorageManager]        cloud_storage_secret_key: 'SET'
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:91: initializeStorageManager]        Cloud storage is disabled, using local storage
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:101: initializeStorageManager]       Configuring storage settings for type: LOCAL
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:495: createStorageManagerConfig]     Local storage manager configured successfully
[2026-2-18T23:48:18.547Z:266852730843168:unified_storage_manager_utils.cpp:107: initializeStorageManager]       Creating unified storage manager for type: local
[2026-2-18T23:48:18.548Z:266852730843168:unified_storage_manager_utils.cpp:135: initializeStorageManager]       Unified storage manager created and configured successfully
[2026-2-18T23:48:18.548Z:266852730843168:storage_management.cpp:3347: initUnifiedStorageManager]        Unified storage manager initialized successfully
[2026-2-18T23:48:18.548Z:266852730843168:storage_management.cpp:2500: startTempFileCleanup]     Started temp file cleanup service (every 5 minutes)
[2026-2-18T23:48:18.548Z:266851065913792:prometheus_client.cpp:41: PrometheusClient]     Creation
[2026-2-18T23:48:18.548Z:266852730843168:storage_management.cpp:3884: initializeDurationBasedCleanup]   Initializing duration-based cleanup for existing temp files
[2026-2-18T23:48:18.548Z:266852730843168:storage_management.cpp:3962: initializeDurationBasedCleanup]   Duration-based cleanup initialization complete - Total files: 0, Videos scheduled: 0, Videos cleaned immediately: 0, Images skipped: 0

Edit:

libmplex2-2.1.so.0: cannot open are these files missing for the spark? Do the sensors apis dont support spark?
I see different docker archs on ngc

Image

and the compose

in the compose we have nvcr.io/nvidia/blueprint/vst-storage:2.1.0-25.11.1.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions