Deploy Wowza Streaming Engine with Video Intelligence Framework using Docker

This article explains how to deploy Wowza Streaming Engine (WSE), Wowza Streaming Engine Manager (WSEM), and the Video Intelligence Framework (VIF) using Docker Compose to enable real-time object detection and scene analysis for live video streams managed by Wowza Streaming Engine.

The deployment is driven by a single docker-compose.yaml file with named profiles, giving you the flexibility to run all services on one machine or distribute them across multiple servers.

Supported deployment configurations

  • WSE + WSEM + VIF - All three services on a single server (recommended for getting started)

  • WSE + VIF - Streaming Engine and Video Intelligence on one server, without the Manager UI

  • WSE + WSEM on server 1 / VIF on server 2 - Separate GPU server for Video Intelligence processing

Prerequisites

Before you begin, ensure you have the following items:

  • A valid Wowza Streaming Engine license key

  • A valid Video Intelligence Service (VIS) license key. If you need a license key, contact Wowza.

  • The latest version of Git installed on your machine

  • Docker Engine and Docker Compose v2 installed

  • A live stream source (e.g., OBS, an IP camera, or an MP4 file) that you can push to Wowza Streaming Engine through any of the supported protocols. See Supported protocols and formats for more information. 

Note: VIC runs inside the WSE container and requires no GPU. Video Intelligence Service (VIS) runs in its own container and requires an NVIDIA GPU with compatible drivers and the NVIDIA Container Toolkit.

System requirements

The following baseline configuration supports approximately 10 concurrent 720p streams, each analyzed at up to 15 fps under typical production conditions.

Component Requirement
GPU

1 x NVIDIA T4 (16 GB) minimum. 1 x NVIDIA L4 (24 GB) recommended.

The minimum requirement is CUDA 12.8 with a GPU on Turing architecture or newer. For more information, see Turing Architecture vGPU Types.

CPU 8 vCPU minimum. 16 vCPU recommended. 
RAM 32 GB
Storage 32 GB free disk space; NVMe recommended
Network 10 GbE preferred for multi-stream deployments
NVIDIA Driver Version 570 or above (nvidia-smi must work)
NVIDIA Container Toolkit nvidia-container-toolkit required

Note: The following baseline configuration supports approximately 8 concurrent 720p streams, each analyzed at up to 10 fps, under typical production conditions.

Choose a deployment profile

VIF deployment is driven by a single docker-compose.yaml with named profiles so that you can run everything on one machine or split services across servers.

Note: This page covers deployment concepts only. It doesn't include the full step-by-step setup. To actually deploy VIF, follow the instructions in the README in the VIF GitHub repo. Treat the repo as the source of truth, as it's updated with every release, and the steps needed to get a working deployment (cloning the repo, configuring .env, generating a VIS_API_KEY, persisting WSE data, TLS setup) live there.

Profile Services started Use case
(none) / default wse + manager + VIS Full stack on one server — recommended for getting started
wse wse + manager Streaming Engine + Manager only, connecting to a remote VIS
wse-only wse only Streaming Engine without the Manager UI
wsem manager only Manager interface only
vi-service VIS only Dedicated GPU server, no Engine or Manager
vlm VIS + VLM sidecar Add vision-language model analysis (see Use VLM analysis in VIF)
svd VID + SVD sidecar Add synthetic video detection

Note: You'll need an NVIDIA NGC API key and a GPU from SVD's supported list. See Use Synthetic Video Detector in VIF for more information.

For a GPU-only, standalone VIS deployment (including air-gapped installs with pre-downloaded model weights), see the VIS Deployment guide.  

Monitor the VIS container performance

The VIF Dashboard shows metrics for the WSE instance. To monitor the VIS container (where AI inference runs), use the following host-level commands.

CPU and memory

Use Docker's built-in stats command for a live feed of CPU, RAM, network, and disk utilisation:

docker stats video-intelligence-service-gpu

Or monitor all running containers at once:

docker stats

GPU utilisation

Standard docker stats does not report GPU metrics. Because the VIS container uses NVIDIA GPUs, run nvidia-smi inside the container:

docker exec -it video-intelligence-service-gpu nvidia-smi

This returns:

  • GPU utilisation percentage
  • GPU memory usage
  • Temperature
  • Power consumption
Note: For continuous monitoring, add --loop or wrap the command in watch -n 2:
watch -n 2 docker exec video-intelligence-service-gpu nvidia-smi

More resources