Integrate Scenescape with Smart NVR#
This guide describes how to integrate Intel® SceneScape with Smart NVR for enhanced traffic monitoring using live data from the Smart Intersection application.
Overview#
Smart NVR integrates with Intel® SceneScape to enable:
Real-time object counting and tracking (vehicles, pedestrians)
Traffic flow analysis
Automated event routing based on count thresholds
Enhanced surveillance for smart intersection management
Prerequisites#
Docker and Docker Compose installed
The
edge-ai-suitesrepository cloned with themetro-vision-ai-app-recipedirectory adjacent tosmart-nvr
Deployment Modes#
Smart NVR with SceneScape supports two deployment modes:
Mode |
Description |
Command |
|---|---|---|
Single-Node |
All services (SI + NVR) on one machine |
|
Distributed Node |
SI on System 1, NVR on System 2 |
|
Single-Node Deployment#
In single-node mode, all services run on one machine. The setup script performs the following steps automatically:
Validates required environment variables
Configures DL Streamer and Frigate for SceneScape mode
Downloads demo videos and starts the MediaMTX RTSP streamer
Starts the Smart Intersection stack (runs
install.shon first launch)Starts the NVR stack and connects it to the SceneScape network
Set Environment Variables#
export NVR_SCENESCAPE=true
export VSS_SUMMARY_IP=<vss_ip>
export VSS_SUMMARY_PORT=<vss_port>
export VSS_SEARCH_IP=<vss_ip>
export VSS_SEARCH_PORT=<vss_port>
# export RTSP_STREAM_PORT=<rtsp port> # optional, default 8554
# export MQTT_USER=<mqtt-username> # optional, auto-generated if omitted
# export MQTT_PASSWORD=<mqtt-password> # optional, auto-generated if omitted
Start#
source setup.sh start
Verify#
docker logs nvr-event-router -f
# Expected output: "SceneScape MQTT client started"
The UI is available at http://<host_ip>:7860.
Distributed Node Deployment#
In distributed mode, Smart Intersection runs on a dedicated machine (System 1) while the NVR stack runs on a separate machine (System 2).
System 1 (SI Node)#
export NVR_SCENESCAPE=true
# export RTSP_STREAM_PORT=<rtsp port> # optional, default 8554
# export RTSP_STREAM_HOST=<external_rtsp_ip> # optional: set to use an external RTSP source; skips local demo streamer
source setup.sh start-si
By default, start-si downloads demo videos and starts a local MediaMTX RTSP streamer. If RTSP_STREAM_HOST is set to a different machine’s IP, the local streamer is skipped and SI reads from the external RTSP source instead.
Upon successful startup, the script outputs the System 1 IP address required for System 2 configuration.
System 2 (NVR Node)#
# Required
export NVR_SCENESCAPE=true
export SCENESCAPE_MQTT_BROKER=<system1_ip>
export RTSP_STREAM_HOST=<system1_ip>
export VSS_SUMMARY_IP=<vss_ip>
export VSS_SUMMARY_PORT=<vss_port>
export VSS_SEARCH_IP=<vss_ip>
export VSS_SEARCH_PORT=<vss_port>
# Optional
# export RTSP_STREAM_PORT=<rtsp port> # default 8554
# export MQTT_USER=<mqtt-username> # optional, auto-generated if omitted
# export MQTT_PASSWORD=<mqtt-password> # optional, auto-generated if omitted
source setup.sh start-nvr
System 2 connects to System 1’s MQTT broker (port 1883 by default) for SceneScape events and RTSP server (port 8554 by default) for video streams.
Stop Services#
# Single-node
source setup.sh stop
# Distributed node
source setup.sh stop-nvr # System 2
source setup.sh stop-si # System 1
# Restart
source setup.sh restart
When stopping System 1, if a local RTSP streamer is running, the script prompts:
Local RTSP streamer is running. Stop it too? [y/N]
Enter
yto stop both SI services and the RTSP streamer.Enter
nor press Enter to stop only SI services and leave the streamer running. The streamer can be stopped independently withsource setup.sh stop-streamer.
RTSP Streamer Only#
To start only the MediaMTX RTSP streamer without launching the full NVR or Smart Intersection stack, use the following command. This is intended for development and testing scenarios where video stream availability needs to be verified independently.
source setup.sh start-streamer
To stop the streamer:
source setup.sh stop-streamer
Verify Integration#
docker logs nvr-event-router -f
# Expected output: "SceneScape MQTT client started"
User Interface#
With Intel® SceneScape Enabled#

When Intel® SceneScape is enabled (NVR_SCENESCAPE=true):
Source dropdown shows only “scenescape” (Frigate source is not available in this mode)
Count field is visible and editable
Minimum count threshold for rule triggering can be configured (e.g., 5, 10, 15)
Rules table includes a “Count” column for tracking thresholds
Count validation enforces non-negative integers
Auto-Route Events Configuration#
Creating Rules#
Navigate to the Auto-Route Events tab
Source is pre-set to “scenescape”
Set Count: Define the minimum detection threshold (e.g., 5)
Select Camera: Choose the target camera
Choose Detection Label: Select the object type (“vehicle” or “pedestrian”)
Select Action: Choose “Summarize” or “Add to Search”
Click Add Rule
Rule Behavior Example#
Source: scenescape
Camera: camera1
Count: 5
Label: vehicle
Action: Summarize
This rule triggers video summarization when 5 or more vehicles are detected in camera1.
Troubleshooting#
SceneScape features not visible in UI
Verify that NVR_SCENESCAPE is set to true and restart the services:
echo $NVR_SCENESCAPE
export NVR_SCENESCAPE=true
source setup.sh restart
After restarting, perform a hard refresh in the browser (Ctrl+Shift+R or Cmd+Shift+R).
No SceneScape events received
# Check MQTT connectivity to the SceneScape broker
docker logs nvr-event-router | grep -i scenescape
# Verify Smart Intersection containers are running
docker ps | grep metro-vision-ai-app-recipe
Diagnostic commands
# Monitor live SceneScape MQTT messages
docker logs nvr-event-router -f | grep "scenescape"
# List all running containers with status
docker ps --format "table {{.Names}}\t{{.Status}}"
# Check container resource utilization
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
Support#
When reporting issues, verify the following:
Environment variables — Confirm all required variables are exported:
env | grep -E "NVR_|SCENESCAPE|MQTT|VSS"MQTT connectivity — Check logs for the message:
"SceneScape MQTT client started"Smart Intersection — Confirm SI containers are running:
docker ps | grep metroDistributed node connectivity — Confirm System 2 can reach System 1 on port 1883 (MQTT) and port 8554 (RTSP)
Resource utilization — Run
docker stats --no-streamto identify resource-constrained containers
For general Smart NVR issues, refer to the Troubleshooting Guide.