Skip to content

Подсистема камер и архитектура жизненного цикла ​

В 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: true RUSEON не держит постоянное RTSP-соединение с камерой при отсутствии активных зрителей.
  • Как только оператор открывает камеру в веб-панели, соединение поднимается за доли секунды.
  • Через 30 секунд после закрытия последнего плеера захват потока мягко останавливается, экономя мобильный трафик.

3. Двухпоточная архитектура (Main и Sub) ​

RUSEON Core поддерживает настройку нескольких профилей потоков:

  • Основной поток (Main): Высокое разрешение (4K / 1080p @ 4–8 Мбит/с) для непрерывной записи в архив fMP4 и детального полноэкранного просмотра.
  • Дополнительный поток (Sub): Низкое разрешение (720p / 360p @ 512 Кбит/с) для мультиэкранной сетки видеостены.

Связанная документация ​

Released under the MIT License.