Подсистема камер и архитектура жизненного цикла
В RUSEON Core встроен высокопроизводительный движок управления камерами (internal/stream/manager.go), способный контролировать сотни одновременных RTSP-потоков с непрерывным мониторингом доступности, автоматическим восстановлением и раздачей видео без перекодирования.
1. Конечный автомат жизненного цикла камер
Каждая камера работает в изолированной горутине-супервизоре:
| Состояние | Описание | Триггер перехода |
|---|---|---|
Configured | Запись камеры сохранена в BadgerDB | Старт сервиса или создание камеры через API/UI |
Connecting | Установка TCP-сокета и выполнение RTSP хендшейка | Получение токена из dialSemaphore |
Streaming | Приём видео/аудио пакетов и передача в RingBuffer | Успешный ответ RTSP PLAY |
Reconnecting | Ожидание паузы между попытками после обрыва сети | Закрытие сокета, EOF или таймаут TCP |
Disabled | Камера принудительно выключена администратором | Обновление через REST API (enabled: false) |
2. Режим захвата по требованию (lazy_hls)
Для работы через мобильные каналы (4G/5G) или систем с сотнями камер:
- При включенном
lazy_hls: trueRUSEON не держит постоянное RTSP-соединение с камерой при отсутствии активных зрителей. - Как только оператор открывает камеру в веб-панели, соединение поднимается за доли секунды.
- Через 30 секунд после закрытия последнего плеера захват потока мягко останавливается, экономя мобильный трафик.
3. Двухпоточная архитектура (Main и Sub)
RUSEON Core поддерживает настройку нескольких профилей потоков:
- Основной поток (Main): Высокое разрешение (4K / 1080p @ 4–8 Мбит/с) для непрерывной записи в архив fMP4 и детального полноэкранного просмотра.
- Дополнительный поток (Sub): Низкое разрешение (720p / 360p @ 512 Кбит/с) для мультиэкранной сетки видеостены.