Skip to content

Repository files navigation

Camera Sentinel

A cross-platform desktop video wall for RTSP cameras. It keeps streams online, runs local YOLOv8n object detection on the live video, measures how far behind real time each stream is, and can trigger the camera's own siren on an alert.

Built with Avalonia on .NET 10, video by libmpv, inference by ONNX Runtime (CPU or CUDA). Everything runs locally: no cloud, no Python at runtime.

Camera Sentinel

Install on Ubuntu/Debian

curl -fsSL https://github.com/00F100/camera-sentinel/releases/latest/download/camera-sentinel_amd64.deb -o /tmp/camera-sentinel.deb && sudo dpkg -i /tmp/camera-sentinel.deb

The pipeline publishes each .deb as a GitHub Release (vX.Y.Z). Local builds show development in Settings → About.

Quick start

# Build a self-contained package (via Docker)
./scripts/dev.sh publish-linux

# Run it (uses repo config/ for your local JSON; bundled Demo always loads)
./scripts/dev.sh run

Docker is used only to build and package. The application itself runs from the published binary in dist/. User cameras, settings and layouts are stored outside the install directory (Linux: ~/.config/camera-sentinel; logs: /var/log/camera-sentinel). See configuration.

Features

Full documentation lives in docs/. Each docs page is English first, then Portuguese below a --- divider.

Overview What the app does, architecture, scope
Configuration User config/log directories, merge with bundled Demo defaults
Cameras Catalog, RTSP, stream profiles, discovery
Layouts and UI Tiles, drag, resize, grid, saving
Layout carousel Rotating through layouts
Streaming and watchdog Reconnect, freeze detection, idle disconnect
Recognition YOLOv8n, classes, motion gate, on-demand loading
Tracking and dwell Track IDs, trails, dwell time
Sync buffer Keeping overlays aligned with the video
Alerts Confirmation, cooldown, title flash, alert log
Siren and ONVIF Capability probe, ONVIF relay, DVRIP audio
Delay via OCR Reading the OSD clock to measure stream delay
Image filters Sharpen, contrast, brightness, gamma, denoise
Schedules Time windows and weekdays
Audio Master and per-camera volume, output device
Localization Languages and locale files
Demo layout Built-in offline demo (always merged from the bundle)
GPU and CUDA GPU inference and bundled redistributables
Development Docker workflow and dev.sh
Distribution Self-contained builds, deb/rpm/MSI
Models YOLO and OCR model files
Testing Unit tests and packaging smoke tests

Repository language policy

Identifiers, comments and log messages are written in English. This README and every page in docs/ are English first, then Portuguese below a line that contains only ---. Spanish exists only as user-facing UI translations in src/CameraSentinel/i18n/.

Security note

cameras.json in the user config directory contains camera credentials and is gitignored. Never commit it, and keep example files free of real secrets.


Camera Sentinel

Um mural de vídeo desktop multiplataforma para câmeras RTSP. Mantém os streams online, corre detecção local YOLOv8n no vídeo ao vivo, mede o atraso de cada stream e pode acionar a sirene da própria câmera num alerta.

Feito com Avalonia em .NET 10, vídeo por libmpv, inferência por ONNX Runtime (CPU ou CUDA). Tudo corre localmente: sem nuvem, sem Python em tempo de execução.

Instalar no Ubuntu/Debian

curl -fsSL https://github.com/00F100/camera-sentinel/releases/latest/download/camera-sentinel_amd64.deb -o /tmp/camera-sentinel.deb && sudo dpkg -i /tmp/camera-sentinel.deb

O pipeline publica cada .deb numa GitHub Release (vX.Y.Z). Builds locais mostram development em Definições → Sobre.

Início rápido

# Gerar um pacote autocontido (via Docker)
./scripts/dev.sh publish-linux

# Executar (usa config/ do repo para os JSON locais; o Demo do pacote carrega sempre)
./scripts/dev.sh run

O Docker serve só para compilar e empacotar. A aplicação corre a partir do binário em dist/. Câmeras, definições e layouts do utilizador ficam fora do diretório de instalação (Linux: ~/.config/camera-sentinel; logs: /var/log/camera-sentinel). Ver configuração.

Funcionalidades

A documentação completa está em docs/. Cada página começa em inglês e, abaixo de uma linha com apenas ---, traz a tradução em português.

Visão geral O que o app faz, arquitetura e escopo
Configuração Diretórios de config/logs, merge com os defaults Demo
Câmeras Catálogo, RTSP, perfis de stream, descoberta
Layouts e interface Tiles, arrastar, redimensionar, grade, salvar
Carrossel de layouts Alternância automática entre layouts
Streaming e watchdog Reconexão, detecção de travamento, desconexão ociosa
Reconhecimento YOLOv8n, classes, filtro de movimento, carga sob demanda
Rastreamento e permanência IDs de rastreio, trajetos, tempo de permanência
Buffer sincronizado Manter o overlay alinhado com o vídeo
Alertas Confirmação, cooldown, piscar do título, log de alertas
Sirene e ONVIF Sonda de capacidades, relay ONVIF, áudio DVRIP
Atraso via OCR Ler o relógio do OSD para medir o atraso
Filtros de imagem Nitidez, contraste, brilho, gama, redução de ruído
Horários Faixas de horário e dias da semana
Áudio Volume geral e por câmera, dispositivo de saída
Localização Idiomas e arquivos de tradução
Layout de demonstração Demonstração offline embutida (sempre fundida a partir do pacote)
GPU e CUDA Inferência em GPU e bibliotecas redistribuíveis
Desenvolvimento Fluxo com Docker e dev.sh
Distribuição Builds autocontidos, deb/rpm/MSI
Modelos Arquivos de modelo YOLO e OCR
Testes Testes unitários e smoke de empacotamento

Política de idioma do repositório

Identificadores, comentários e mensagens de log estão em inglês. Este README e cada página em docs/ começam em inglês e, abaixo de uma linha com apenas ---, trazem português. Espanhol existe só nas traduções da interface em src/CameraSentinel/i18n/.

Nota de segurança

O cameras.json no diretório de configuração do utilizador contém credenciais e está no .gitignore. Nunca faça commit desse ficheiro, e mantenha os exemplos livres de segredos reais.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages