Wowza Streaming Engine Manager includes a dedicated VIF tab in the top navigation bar. This tab provides integrated views for real-time monitoring and configuration of VIF, the VIF Dashboard, the VIF Default Config page, and the per-stream Stream Configuration panel, as well as a standalone Test Player for previewing analyzed streams.
VIF Dashboard
http://<WSE_HOST>:8088/Home.htm#plugin/server/vif/playback.html
The VIF Dashboard is the default landing page when you click the VIF tab. It shows real-time system health and per-stream metrics.
Two buttons appear in the top right of the dashboard:
- Default Config — opens the VIF Default Config page, where you set the service connection and the video-processing defaults that apply to all streams.
- Stream Configs — opens the Stream Configuration panel for per-stream rule overrides.
System-level stats (cards across the top)
| Card | Description |
|---|---|
| WSE | Wowza Streaming Engine version (for example, 4.11.1+1). |
| WSE VIF Module | VIF plugin module version (for example, 0.17.0). |
| CPU | Current CPU utilisation of the WSE host (for example, 4%). |
| Card | GPU model name (for example, Tesla T4). |
| Driver | NVIDIA driver version (for example, 570.133.20). |
| CUDA | CUDA version (for example, 12.8). |
| GPU | Current GPU utilisation percentage. |
| Mem Bandwidth | GPU memory bandwidth utilisation percentage. (Labeled "Mem Bandwidth" in the UI — this measures memory bus throughput, not how much VRAM capacity is in use.) |
| GPU Encode | GPU encoder utilisation percentage. |
| GPU Decode | GPU decoder utilisation percentage. |
Inference panel (Video Intelligence Service)
Below the WSE host stats, a separate Inference panel shows stats for the Video Intelligence Service (VIS) container itself — labeled with the VIS host and version, for example Inference — video-intelligence-service.docker (0.61.0).
| Field | Description |
|---|---|
| Streams | The stream names currently routed to this VIS instance (for example, live/scene.stream, live/fire.stream). |
| CPU | Current CPU utilisation of the VIS container. |
| GPU Utilization | Current GPU utilisation percentage for this VIS instance, shown per GPU device (for example, cuda:0). |
| Memory | GPU memory utilisation percentage for this VIS instance. |
Active streams section
The Active Streams header shows the stream count alongside average processing and detection timing, for example: Active Streams: 2 · Processing avg 42 ms · Detect avg 43 ms.
A Thumbnails toggle at the right of the Active Streams header switches the layout between the detailed table view (default) and a thumbnail grid of live preview cards.
Each active stream displays as a row with the following columns:
| Column | Description |
|---|---|
| Type | Detector type icon and model name (for example, Model: medium). For scene and VLM streams, a second line shows the analysis window length, for example Window: 2s. |
| Stream Name | Stream identifier (for example, live/object.stream) with inline Active and Overlay toggles for runtime control. |
| Stream Info | Resolution, source frame rate, analysis frame rate, and frame interval (for example, 1280x704 @ 30fps/12fps (33ms)). Also shows an Inference fps slider for adjusting analysis frequency in real time, and the VIS host, version, and connection status (for example, video-intelligence-service.docker (0.61.0) with connected shown in green). For scene and VLM streams, the slider also shows a computed equivalence, for example = 10 frames / 2s request, reflecting how many images each analysis request will carry. |
| Ping (RTT) | Round-trip latency to VIS in milliseconds. |
| Ttl Processing Avg | Total processing time average per frame. |
| Frame Detect Avg | Frame detection processing average. |
| Frames Analyzed | Detection rate shown as frames kept out of frames analyzed, with a percentage (for example, 5 of 5 frames (100%)). |
| Thumbnail | Latest captured frame with overlay rendering. |
The Inference fps slider on each row lets you adjust analysis frequency in real time without editing the configuration.
VIF Default Config
http://<WSE_HOST>:8088/Home.htm#plugin/server/vif/default.html
The VIF Default Config page (opened with the Default Config button on the dashboard) sets the values that apply to all streams unless a per-stream rule overrides them. These correspond to the top-level keys of video-intelligence.json. Environment variable placeholders (for example, ${VIS_API_KEY}) are resolved at runtime.
Service Connection
| Setting | Description |
|---|---|
| VIS URL | WebSocket endpoint for the Video Intelligence Service (VIS) (for example, ${VIS_PROTOCOL}://${VIS_HOST}:${VIS_PORT}). Supports ${ENV_VAR} substitution. |
| VIS API Key | Sent as the X-API-KEY header. Use Show to reveal the stored value. |
Video Processing Defaults
| Setting | Description |
|---|---|
| Inference FPS | Default frames per second sent for analysis. Set to -1 to match each stream's frame rate. Per-stream configs can override this value. Default 12. |
| Use Transcoder | When enabled, frames are pulled from the transcoder output instead of the incoming stream. |
| Frame Grab Interval | Seconds between frame grabs when not using the transcoder. Set this to the GOP of the incoming stream. Default 1. |
| Duration (seconds) | Scene/VLM only. Length of the clip sent to the Video Intelligence Service (VIS) per analysis request. Default 2. Per-stream configs can override this value — see Video processing section below. |
| Concurrent Executions - Object Detection | Maximum simultaneous object detection inferences. Increase this if GPU usage stays below 50% at full load. Default 10. |
| Concurrent Executions - Scene Detection | Maximum simultaneous scene detection inferences. Default 1. |
Stream Configuration panel
http://<WSE_HOST>:8088/Home.htm#plugin/server/vif/stream-config.html
The Stream Configuration panel manages per-stream overrides — the entries in the streams array of video-intelligence.json. It lets you view and edit VIF settings per stream rule without modifying config files or using the REST API. Defaults that are not overridden here come from the VIF Default Config page.
Incoming Stream selector — use the dropdown at the top to choose which stream rule to configure (for example, live / fire.* or live / object.*). The Application must match exactly; the Stream Name can be an exact name or a regex pattern. You can create new rules or remove the current one using the Save all changes and Delete Config buttons at the top right.
Note: The UI displays confidence and overlap values as percentages (for example, 30, 50, 20). The corresponding values in
video-intelligence.jsonare stored as decimals (0.3, 0.5, 0.2). The UI converts automatically on save.
Video processing section
| Setting | Description |
|---|---|
| Active | Turn VIF processing on or off for streams matching this rule. |
| Detector Type | Object detection tracks boxes like person/car. Scene detection classifies the whole frame or clip. VLM sends clips to a Vision Language Model endpoint and supports three modes: Detect, Describe, and Custom. Synthetic sends frames to an NVIDIA Maxine Synthetic Video Detector endpoint and returns a real/fake verdict per analysis window. |
| Grayscaled | Convert frames to grayscale before analysis to reduce bandwidth and processing overhead. |
| Use Transcoder | When enabled, frames are pulled from the transcoder output instead of the incoming stream. |
| Inference FPS | Frames per second sent for analysis. Lower values reduce load but may miss short events. Set to -1 to match the stream frame rate. For VLM, see Duration below for how this interacts with the endpoint's per-request image cap. |
| Inference Video Height | Controls the frame size sent for analysis. DEFAULT uses the plugin's built-in sizing behavior. SOURCE sends frames at the original stream height. MODEL uses the model's native input size. CUSTOM lets you specify an exact pixel height. |
| Duration (seconds) | Length of each analysis window, in seconds. For VLM, one request is sent per window carrying Duration × Inference FPS images; if that exceeds the endpoint's image cap, the service evenly subsamples the window down to the limit rather than rejecting the configuration. |
| Auto Frame Throttle | Automatically lowers Inference FPS when inference can't keep up. Throttling first means fewer coverage gaps before Catch Up To Live has to skip ahead. |
| Catch Up To Live | When inference falls persistently behind real time, automatically skip a batch of old frames to catch up with the live edge. |
| Catch-Up Max Behind (seconds) | How far behind live detections may fall before catch-up skips ahead. Leave blank for auto (~2s). |
Object analysis section
Configures object detection and optional ByteTrack tracking. Visible when Detector Type is Object.
| Setting | Description |
|---|---|
| Model Name | Choose a built-in model size or select Custom to load custom object detection models / model weights from the checkpoint path. |
| Checkpoint Path | Visible when Model Name is Custom. A dropdown listing available customised models and model weights (for example, models/fire_smoke.pth). Required when using a custom object model. |
| Class Names | A multi-select list of the model's available classes. Select one or more class names to allowlist (for example, fire, smoke). Leave nothing selected to pass all classes. |
| Confidence Threshold % | Minimum object score (as a percentage) to keep before listener filtering or tracking logic runs. Default 30 (stored as 0.3 in JSON). |
| Tracking Method | ByteTrack links detections across video frames so the same moving object keeps a consistent ID over time. Use it when you need consistent IDs for regions of interest, counts, direction, or time-in-area logic. Use None for raw detections only. |
ByteTrack properties
These settings control when tracks start, how long they persist, and how strict matching is between frames. They appear when Tracking Method is ByteTrack.
| Setting | Description |
|---|---|
| Ignore Untracked Objects | When enabled, objects that are not being tracked are excluded from event listener results. |
| Min Track Confidence % | The minimum score (as a percentage) needed to create a new track. Default 50 (stored as 0.5 in JSON). |
| Max Lost Track Frames | The number of missed frames a track survives before removal. Default 30. |
| Min Consecutive Overlap % | How much two detection boxes must overlap (as a percentage) to be treated as the same tracked object. Default 20 (stored as 0.2 in JSON). |
| Min Consecutive Frames | The number of consistent frames required before a new track becomes visible. Default 3. |
VLM analysis section
Configures Vision Language Model (VLM) analysis using an external AI endpoint. Visible when Detector Type is VLM.
| Setting | Description |
|---|---|
| Model Name | Set globally in Default.json (vlm_defaults). Per-stream override is not supported. |
| Endpoint URL | URL of the VLM API endpoint. Leave empty to use the default for the model. |
| API Key | API key for authenticating with the VLM endpoint. Use Show to reveal the stored value. |
| Request Timeout (seconds) | Timeout in seconds for each VLM API request. |
| Analysis Mode | Detect — list what to look for, get a per-item verdict. Describe — a written description of each window, no fixed class list or prompt configuration. Custom — your own prompts and, optionally, your own output schema. For how each mode works and what it returns, see Use VLM analysis in VIF. |
Synthetic video detection analysis
Configures synthetic video detection using NVIDIA's Maxine Synthetic Video Detector (SVD) model. Visible when Detector Type is Synthetic.
| Setting | Description |
|---|---|
| Endpoint | The SVD endpoint as host:port (not an HTTP URL). |
| Classification Threshold | A score above this value is labeled synthetic. Default 0.3. |
| Transport Security (TLS) | Force TLS on or off, or leave on auto-detect (TLS when a certificate is set or the port is 443; plaintext otherwise). |
| API Key | NVIDIA's hosted evaluation endpoint only. Ignored by a self-hosted detector. |
| Function ID | Required by NVIDIA's hosted endpoint only. |
Advanced
| Setting | Description |
|---|---|
| Temperature | Controls randomness in model output. Lower values are more deterministic. |
| Max Tokens | Maximum number of tokens in the VLM response. |
Event listeners section
Event listeners are triggered by detections and control how detection data is delivered. Use Select Listener to Edit to edit an existing listener or Create New Listener to add another one. A listener's type stays fixed after creation.
The panel includes:
- Active listeners banner — a summary line showing all currently configured listeners and their delivery modes, for example:
Active listeners: Id3Event (Rollup), Overlays (Immediate). - Rollup/Batch Time — a single field that sets the time in seconds used by event listeners with a method of rollup or batch. This corresponds to
rollup_batch_intervalinvideo-intelligence.json(default2). The setting applies to every listener on this stream rule that uses rollup or batch delivery. - Select Listener to Edit — a dropdown listing every listener configured for this stream rule. Selecting a listener shows its edit form with Cancel and Remove buttons.
- Create New Listener — adds a new listener to this stream rule, choosing from the four built-in listener types (
OverlayEvent,LogFileEvent,WebhookEvent2,Id3Event) or any custom listener installed on the server. Once a listener type is created, the type is fixed and cannot be changed — only its settings (delivery mode, threshold, custom properties) can be modified.
Each listener edit form has three common settings:
| Setting | Description |
|---|---|
| Listener type | Read-only. Shows the underlying event class (for example, Id3Event). It is fixed once you create an event listener. Remove the existing listener and create a new one to change the type. |
| Method | Delivery mode: Immediate (fires per result), Batch (groups over the holdback time window), Rollup (sends summarised output over the same window), or Disabled (keeps the config in place without emitting events). |
| Confidence threshold | Listener-side confidence filter. Detections below this score are not passed to this listener, even if the detector's own threshold kept them (default varies per listener). |
Below these common settings, each listener shows a contextual description and may expose custom properties.
The four built-in listener types
Id3Tags (type: Id3Event) — Injects timed metadata into the HLS stream for downstream players or consumers. Rollup is useful for summary-style outputs such as counts, dwell time, or aggregate state over a window. There are no custom properties to configure.
Webhooks (type: WebhookEvent2) — Sends detections using the webhook destinations configured in webhooks.json. When set to Disabled, the listener config is preserved but no events are emitted, which is useful for temporarily pausing webhook delivery without removing the listener. A yellow warning banner, "This listener is disabled and will not receive events," appears when the method is set to Disabled. There are no custom properties to configure.
LogFiles (type: LogFileEvent) — Writes detection activity to a log file, which is helpful for audits and debugging. Batch mode is useful when you want short, grouped windows instead of one event per detection. There are no custom properties to configure.
Overlays (type: OverlayEvent) — Draws boxes, labels, and optional stats onto the -vi video output. Immediate is best when downstream systems need each detection as it happens. The Overlays listener exposes additional custom properties:
| Property | Description |
|---|---|
| Fade Step | Number of frames over which overlays fade out (default 0). Set to a higher value (for example, 20) for smoother visual transitions. |
| Jitter | Don't draw if the pixel change is less than this amount. Reduces flickering in static scenes. |
| Show Stats | Toggle on to overlay system stats (ping, processing time) on the video. |
| Replace Video | Toggle on to replace the original video with the overlay rendering. |
| Debug String | Title overlay using a date format pattern, for example 'Cur time:' HH:mm:ss.SSS yyyy-MM-dd or 'Cam-01:' yyyy-MM-dd HH:mm:ss. |
Note: A stream can have multiple listeners active simultaneously. For example, the default configuration runs
Id3Eventin rollup mode andOverlaysin immediate mode at the same time.
Advanced options
The Advanced Options section holds per-stream connection overrides and debug settings. Leave any field blank to inherit the defaults from the VIF Default Config page.
Service Connection
Service connection overrides for this stream only.
| Setting | Description |
|---|---|
| VIS URL | Override the Video Intelligence Service (VIS) WebSocket URL for this stream only. Supports ${ENV_VAR} substitution. |
| VIS API Key | Override the X-API-KEY header sent to the Video Intelligence Service (VIS) for this stream only. Use Show to reveal the stored value. |
Debug options
Troubleshooting settings for this stream. Leave blank to inherit defaults.
| Setting | Description |
|---|---|
| Log Max Messages | Maximum VIF/WebSocket messages written to the WSE access log. Use 0 to disable. Default 0. |
| Log Timing | Delay in seconds between writing logging details/timing metrics to /tmp/vif/<stream_name>. 0 is disabled. |
All changes are applied at runtime, and no restart is required. Use Save all changes to persist them.
Note: These settings are also available via the VIF REST API for automation.
Test player (VIF Viewer)
http://<WSE_HOST>:8088/vif/vif-viewer.html
The test player is a standalone page outside the Manager UI. It lets you view the -vi overlay stream with live detection events directly in the browser.
Features
- Load any active
-vistream by name - Min Score slider for filtering detections by confidence
- Live ID3 panel with real-time events
- Two modes:
- Formatted View — human-readable summary of each detection
- Raw JSON Log — the full JSON payload of every ID3 event




