Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
cb1012e
Add Live Video Search stack with Smart NVR and VSS Search integration
bhardwaj-nakul Jan 20, 2026
2736f31
Merge branch 'open-edge-platform:main' into live-video-search
bhardwaj-nakul Jan 20, 2026
249aa99
Refactor Live Video Search configuration and documentation for RTSP s…
bhardwaj-nakul Jan 22, 2026
ec9eb47
Add USB camera support and update documentation for Live Video Search
bhardwaj-nakul Jan 22, 2026
e167ab2
Add output_args for USB camera recording configuration
bhardwaj-nakul Jan 22, 2026
d8a5563
Enhance device selection for DataPrep and Embedding services in setup…
bhardwaj-nakul Jan 22, 2026
638ac6d
Update output_args for USB camera recording to use segmented MP4 format
bhardwaj-nakul Jan 22, 2026
1f6a56c
Merge branch 'main' into live-video-search
bhardwaj-nakul Jan 27, 2026
63f7c80
Update MinIO image and enhance setup script for container management
bhardwaj-nakul Jan 29, 2026
b3d4bdf
Refactor Frigate configuration: reduce retention days to 0.5, enhance…
bhardwaj-nakul Jan 29, 2026
c4cbea8
Merge branch 'main' into live-video-search
bhardwaj-nakul Jan 29, 2026
55c0927
sanity
bhardwaj-nakul Jan 29, 2026
3d95e5a
Merge branch 'live-video-search' of https://github.com/bhardwaj-nakul…
bhardwaj-nakul Jan 29, 2026
a337b9e
Remove redundant record retention settings from camera configuration
bhardwaj-nakul Jan 29, 2026
aeecd09
Merge branch 'main' into live-video-search
bhardwaj-nakul Jan 30, 2026
a4ee4b0
Update telemetry configuration: replace fps.txt with dataprep_embeddi…
bhardwaj-nakul Jan 30, 2026
d2b7b65
Merge branch 'live-video-search' of https://github.com/bhardwaj-nakul…
bhardwaj-nakul Jan 30, 2026
f25f723
Update environment variable TAG in getting started guide to version 1…
bhardwaj-nakul Jan 30, 2026
373b3ef
Merge branch 'main' into live-video-search
bharagha Jan 30, 2026
9819cc3
Refactor Frigate configuration: remove unused detect sections and con…
bhardwaj-nakul Feb 2, 2026
c1c11f6
Merge branch 'live-video-search' of https://github.com/bhardwaj-nakul…
bhardwaj-nakul Feb 2, 2026
6089f9c
Merge branch 'main' into live-video-search
bhardwaj-nakul Feb 2, 2026
89ed925
Add ROI consolidation feature to video search configuration
bhardwaj-nakul Feb 5, 2026
dc40888
Merge pull request #1 from bhardwaj-nakul/feat/add-roi-consolidation
bhardwaj-nakul Feb 5, 2026
b69cb12
Merge branch 'main' into live-video-search
bhardwaj-nakul Feb 5, 2026
192f245
Merge branch 'main' into live-video-search
bhardwaj-nakul Feb 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 150 additions & 0 deletions metro-ai-suite/live-video-analysis/live-video-search/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
charts/
# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
test-results/

# Virtual environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Environment variables
.env.local
.env.development
.env.test
.env.production

# Jupyter Notebook
.ipynb_checkpoints

# pyenv
.python-version

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# IDE files
.vscode/
.idea/
*.swp
*.swo
*~

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Logs
*.log
logs/
log/

# Docker
.dockerignore

# Temporary files
*.tmp
*.temp
.cache/
.tmp/

# FastAPI/Uvicorn specific
*.pid

# Redis dump
dump.rdb

# Application specific
uploads/
downloads/
data/
storage/
frigate-logs

# Secrets and certificates
*.pem
*.key
*.crt
*.p12
secrets/
certificates/

# Frigate config (keep base templates)
config/frigate-config/*
!config/frigate-config/config-default.yml
!config/frigate-config/config-rtsp.yml
!config/frigate-config/config-usb.yml
!config/frigate-config/config.yml
29 changes: 29 additions & 0 deletions metro-ai-suite/live-video-analysis/live-video-search/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Live Video Search

Live Video Search is a Metro AI Suite sample that adapts the VSS pipeline for semantic search on live Frigate streams. It ingests live camera streams, indexes video segments with embeddings and timestamped camera metadata, and lets users select cameras, time ranges, and free‑text queries to retrieve ranked, playable clips with confidence scores while surfacing live system metrics.

## Documentation

- **Overview**
- [Overview](docs/user-guide/index.md): High‑level introduction and navigation.
- [Architecture](docs/user-guide/overview-architecture-live-video-search.md): End‑to‑end architecture.

- **Getting Started**
- [Get Started](docs/user-guide/get-started.md): Step‑by‑step setup.
- [System Requirements](docs/user-guide/system-requirements.md): Hardware and software requirements.
- [How to Use the Application](docs/user-guide/how-to-use-application.md): Search workflow and tips.

- **Deployment**
- [Build from Source](docs/user-guide/how-to-build-from-source.md): Build images for the stack.

- **API Reference**
- [API Reference](docs/user-guide/api-reference.md): Key endpoints and references.

- **Release Notes**
- [Release Notes](docs/user-guide/release-notes.md): Updates and fixes.

## Notes

- Telemetry is **enabled** for this app and shown in the VSS UI when connected.
- Use Smart NVR UI **Add to Search** to ingest clips into VSS Search.
- Use `source setup.sh --start-usb-camera` to run Frigate with a USB camera input.
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
mqtt:
enabled: true
host: mqtt-broker
port: 1883
topic_prefix: frigate
client_id: frigate
user: '{FRIGATE_MQTT_USER}'
password: '{FRIGATE_MQTT_PASSWORD}'

logger:
default: info

record:
enabled: true
retain:
days: 0.5
mode: all

cameras:
backyard:
ffmpeg:
inputs:
- path: /videos/backyard.mp4
input_args: -re -stream_loop -1 -fflags +genpts
roles:
- detect
- record
detect:
enabled: true
max_disappeared: 30
objects:
track: [bicycle, car, motorcycle, person, vehicle]
filters:
person:
min_score: 0.6
threshold: 0.80
record:
enabled: true
retain:
days: 0.5
snapshots:
enabled: true
retain:
default: 1
genai:
enabled: false
use_snapshot: true
objects:
- person
- car

livingroom:
ffmpeg:
inputs:
- path: /videos/livingroom.mp4
input_args: -re -stream_loop -1 -fflags +genpts
roles:
- detect
- record
detect:
enabled: true
max_disappeared: 30
record:
enabled: true
retain:
days: 0.5
objects:
track: [person, vehicle]
filters:
person:
min_score: 0.6
threshold: 0.80
snapshots:
enabled: true
retain:
default: 1
genai:
enabled: false
use_snapshot: true
objects:
- person
- vehicle


garage:
ffmpeg:
inputs:
- path: /videos/garage.mp4
input_args: -re -stream_loop -1 -fflags +genpts
roles:
- detect
- record
detect:
enabled: true
max_disappeared: 30
record:
enabled: true
retain:
days: 0.5
objects:
track: [person, vehicle]
filters:
person:
min_score: 0.6
threshold: 0.80
snapshots:
enabled: true
retain:
default: 1
genai:
enabled: false
use_snapshot: true
objects:
- person
- vehicle
version: 0.15-1
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
mqtt:
enabled: true
host: mqtt-broker
port: 1883
topic_prefix: frigate
client_id: frigate
user: '{FRIGATE_MQTT_USER}'
password: '{FRIGATE_MQTT_PASSWORD}'

logger:
default: info

record:
enabled: true
retain:
days: 0.5
mode: all

cameras:
rtsp-garage:
ffmpeg:
inputs:
- path: rtsp://rtsp-server:8554/rtsp-garage
roles:
- detect
- record
output_args:
record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v libx264 -preset veryfast -profile:v baseline -level 3.1 -crf 23 -g 50 -pix_fmt yuv420p -movflags +faststart
detect:
enabled: true
max_disappeared: 30
width: 1280
height: 720
fps: 10
record:
enabled: true
retain:
days: 0.5
objects:
track: [person, vehicle, car]
filters:
car:
min_score: 0.6
threshold: 0.70
snapshots:
enabled: true
retain:
default: 1

version: 0.15-1
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
mqtt:
enabled: true
host: mqtt-broker
port: 1883
topic_prefix: frigate
client_id: frigate
user: '{FRIGATE_MQTT_USER}'
password: '{FRIGATE_MQTT_PASSWORD}'

logger:
default: info

record:
enabled: true
retain:
days: 0.5
mode: all

cameras:
usb-camera:
ffmpeg:
inputs:
- path: /dev/video0
input_args: -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 30
roles:
- detect
- record
output_args:
record:
-f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v libx264 -preset veryfast -profile:v baseline -level 3.1 -crf 23 -g 50 -pix_fmt yuv420p -movflags +faststart
detect:
enabled: true
max_disappeared: 30
width: 1280
height: 720
fps: 10
record:
enabled: true
retain:
days: 0.5
objects:
track: [person, vehicle]
snapshots:
enabled: true
retain:
default: 1

version: 0.15-1
Loading