Skip to content

vladios13/RTSPcamTG

Repository files navigation

RTSPcamTG

Мониторинг IP-камер по RTSP с детекцией объектов (YOLOv8) и отправкой уведомлений в Telegram. Без облачных зависимостей.

Python OpenCV YOLOv8 Docker Telegram Platform

Скриншоты

Быстрый старт

Веса модели (cfg/yolov8n.onnx, ~13 МБ) уже в репозитории — скачивать отдельно не нужно.

# 1. Клонируйте репозиторий
git clone https://github.com/vladios13/RTSPcamTG.git
cd RTSPcamTG

# 2. Заполните конфиг
cp config.json.example config.json
# Откройте config.json и укажите tg_token, tg_chat и RTSP-потоки

# 3. Создайте директории для хранения детекций
mkdir -p output alarm

# 4. Запустите
docker compose build && docker compose up -d

Зоны детекции настраиваются через Web UI: http://127.0.0.1:8000/config

Настройка

Отредактируйте config.json перед запуском:

{
  "tg_token": "123456:ABC-DEF...",
  "tg_chat": -100123456789,
  "stream_startup_delay_s": 2,
  "streams": [
    {
      "label": "front_door",
      "url": "rtsp://user:pass@192.168.1.10/stream",
      "detect_in_polygon": [[100,200],[400,200],[400,500],[100,500]],
      "ignore": []
    }
  ]
}

detect_in_polygon — список точек (x, y). Редактор полигонов доступен в Web UI (/config).

Web UI

Bootstrap 5.3.3, без jQuery, адаптивный. Шрифт Manrope, светлая тема, индиго акцент. Снапшоты камер обновляются каждые 2 секунды через onload-цепочку — без накопления очереди запросов к серверу.

Путь (порт 8000) Описание
/ Сетка live-снапшотов всех камер
/config Настройка потоков, Telegram, polygon-зон
/video/<tag> Live-просмотр одной камеры
/movement Лента событий: последние 50 кадров из alarm/, фильтр по камере, пагинация
/api/stats, /api/movement, /api/alarms JSON API

Как работает

  • Система получает видео с камер по RTSP и анализирует каждый кадр через YOLOv8n (инференс через ONNX + cv2.dnn).
  • Если в заданной зоне обнаружен человек (или другой отслеживаемый объект) — отправляется фото в Telegram с подписью: камера, время, что обнаружено.
  • Одно и то же срабатывание не дублируется: повторные уведомления об одном объекте в той же точке подавляются на 5 минут.
  • При обрыве соединения с камерой система автоматически переподключается с нарастающим интервалом: 5→10→20→40→60 сек.
  • Данные сохраняются на диск: кропы объектов в output/ и полные кадры тревог в alarm/.

Telegram-команды: /ustop — пауза детекции, /ustart — возобновить.

Пересборка модели

Если нужно обновить или сменить веса — scripts/export_yolov8.py экспортирует yolov8n.pt в ONNX:

python -m venv /tmp/yolo-export && . /tmp/yolo-export/bin/activate
pip install ultralytics onnx onnxslim
python scripts/export_yolov8.py   # → cfg/yolov8n.onnx

Зависимости

  • Python 3.8
  • OpenCV 4.9.0
  • YOLOv8n (ONNX, ~13 МБ, в комплекте, скачивать отдельно не нужно)
  • aiogram 3.7.0
  • Sanic 19.12.5
  • Shapely, Jinja2
  • Docker / docker-compose (лимит CPU контейнера: 0.4)

Основано на Nalorokk/ultracam, развивается независимо.

About

Мониторинг IP-камер по RTSP с детекцией объектов (YOLOv8) и отправкой уведомлений в Telegram

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors