Видеонаблюдение
на ваших серверах
Для предприятий и объектов с дежурной сменой, управляющих компаний и городов, операторов видеонаблюдения как услуги и интеграторов. Дежурные смотрят камеры в браузере, архив пишется круглосуточно, каждому открыт доступ только к своим камерам — от одной площадки до тысяч камер на десятках серверов. Видео и архив остаются в вашей сети.
- до 1000 камер
- на один медиаузел — ориентир при 2 Гбит/с суммарного битрейта
- ≈1 с
- задержка у оператора в браузере, без плагинов
- 24/7 архив
- с переходом по событиям и выгрузкой фрагмента файлом
- 0 пауз в записи
- при отказе управляющего узла: медиаузлы продолжают показ и архив
Кому она нужна и что даёт
Четыре типовые задачи. Одна установка обслуживает столько организаций, сколько нужно: филиалы предприятия, объекты подрядчика или клиентов оператора. Пока организация одна, интерфейс не показывает лишнего.
Предприятия и объекты
Дежурная смена следит за территорией, происшествия разбираются по записи.
- Видеостены в браузере и на отдельном мониторе в режиме киоска
- Непрерывный архив с переходом по событиям и выгрузкой фрагмента файлом
- Видео и архив не покидают вашу сеть
Управляющие компании и города
Много объектов, тысячи камер и много людей, которым нужны разные камеры.
- Камеры распределяются по медиаузлам: рост — это новый узел, а не новая система
- Операторам и подрядчикам открываются только нужные камеры и действия: эфир, архив, PTZ, экспорт
- Неизменяемый журнал: кто выдал доступ, показал пароль камеры, выгрузил архив
Видеонаблюдение как услуга
Подключать камеры клиентов и продавать им видеонаблюдение как услугу.
- Организации-арендаторы с квотами на камеры и пользователей, данные клиентов полностью разделены
- Камеры за NAT подключаются через агент — белый адрес и проброс портов у клиента не нужны
- Лицензируется медиаузел по числу потоков; управляющий узел лицензии не требует
Интеграторы
Сдать заказчику систему наблюдения и связать её со смежными системами.
- Установка на серверы заказчика: базу данных установщик ставит и настраивает сам
- Массовое заведение камер и инвентаризация через REST API
- Приём событий от внешних детекторов и смежных систем
Задача рядом, но не совпадает? Опишите её — скажем прямо, подходит система или нет.
Что умеет система
Камера — это запись в управляющем узле, а не строка в конфигурации сервера: источник, профили, политика архива и права хранятся централизованно и применяются на узлах автоматически.
Приём с камер
ONVIF-камеры с автоопределением профилей, прямой RTSP по TCP и UDP, камеры за NAT через агент в закрытой сети.
Просмотр
MSE-WS с задержкой около секунды у зрителя и HLS для слабого канала — в браузере, без плагинов и установки.
Архив
Непрерывная запись на диски узла, глубина по сроку или объёму, холодная копия в S3-совместимом хранилище.
События
Системные события платформы, ONVIF-события камер, интервальные эпизоды с длительностью, вложения-доказательства.
Организации
Мультиарендность с квотами: камеры, пользователи, теги, мозаики и события одной организации не видны из другой.
Мозаики
Раскладки из камер и тегов, автосмена страниц, вывод на отдельный монитор в режиме киоска.
Управление PTZ
Поворот, наклон и зум по ONVIF — отдельной привилегией, которая выдаётся адресно, а не «за компанию».
Контроль действий
Неизменяемый журнал аудита: кто завёл камеру, показал пароль, выдал доступ, выгрузил фрагмент архива.
Мозг и мышцы
Система состоит из двух самостоятельных программ. Управляющий узел — консоль, API, база и права; медиаузлы забирают видео с камер, раздают его зрителям и пишут архив. Весь тяжёлый трафик идёт через узлы.
видео управление
Узлов может быть много: камеры распределяются между ними, управляющий узел один.
- Видео мимо управления
- Браузер получает поток напрямую с медиаузла. Канал и процессор управляющего узла не зависят от числа зрителей — он не становится узким местом.
- Узлы переживают отказ управления
- Если управляющий узел недоступен, видео и запись не прерываются; перестают работать вход в консоль, выдача новых прав и изменение настроек.
- Желаемое состояние
- Управляющий узел хранит конфигурацию каждого медиаузла и приводит его к ней: телеметрия опрашивается примерно каждые 5 секунд, конфигурация сверяется примерно раз в минуту, изменения рассылаются сразу.
- Рост — это новые узлы
- Камеры распределяются между узлами; каждая камера в каждый момент принадлежит одному узлу. Управляющий узел остаётся один.
| Отказал компонент | Что продолжает работать | Что перестаёт |
|---|---|---|
| Управляющий узел | Видео и запись архива на узлах не прерываются | Вход в консоль, выдача новых прав, события, изменение настроек |
| Медиаузел | Остальные узлы и их камеры | Видео, архив и запись камер только этого узла |
| База данных | Узлы продолжают вещать и писать | Управляющий узел целиком |
| Сеть до камеры | Всё остальное | Эта камера: видео нет, в архиве пропуск, откроется событие |
Камеры и зрители
Тип источника выбирается один раз при заведении камеры и определяет, что будет доступно дальше: автоопределение профилей, события камеры и PTZ — или только приём потоков по готовым ссылкам.
Источники
| Тип | Когда выбирать | Что даёт |
|---|---|---|
| ONVIF-камера | Камера доступна по IP и поддерживает ONVIF | Автоопределение профилей и адресов потоков, события камеры, PTZ |
| Прямой RTSP | Известен готовый адрес RTSP | Приём потоков по указанным ссылкам |
| Камера через агент | Камера за NAT, в закрытой сети | Стабильные зашифрованные маршруты ONVIF и RTSP через релей |
Камеры заводят вручную, поиском в сети по ONVIF, из шаблона или массово через REST API. Для закрытых сетей агент сам приходит исходящим соединением на релей: белый адрес и проброс портов на объекте не нужны.
Просмотр
| Протокол | Доставка | Где применять |
|---|---|---|
| MSE-WS | доли секунды | Наблюдение в реальном времени, работа с поворотной камерой |
| HLS | несколько секунд | Нестабильная связь и слабый канал: картинка реже рвётся |
| RTSP | десятки миллисекунд | Видеорегистраторы и стороннее ПО, служебная диагностика |
| Превью-кадр | — | Плитки в списке камер и в ячейках мозаики |
Режим переключается вкладкой прямо в плеере — устанавливать ничего не нужно. В колонке «Доставка» — путь до плеера; итог у зрителя определяет запас плеера: около секунды на MSE-WS, около восьми — на HLS.
Два потока камеры
Если камера отдаёт основной и дополнительный потоки, оператор переключает качество прямо над видео, а стена собирается из низкобитрейтных потоков.
На запись переключатель не влияет: архив всегда пишется основным потоком. Перекодирования нет ни на одном шаге — профили готовятся на камере.
- Основной поток
- полное разрешение — рассмотреть лицо, номер, надпись
- Дополнительный
- меньше нагрузка на канал — «для присмотра» и для больших стен
Запись и разбор
Архив — непрерывная запись потока камеры на диск медиаузла. Оператор листает время по шкале, находит момент по всплывающему кадру и выгружает нужный фрагмент файлом.
Фрагмент сохраняется в MP4 и открывается любым проигрывателем. Длительность одной выгрузки ограничена — обычно до пятнадцати минут, точный предел задаёт администратор; каждая выгрузка попадает в журнал аудита.
- Глубина на каждой камере
- Режим «по сроку хранения» или «по объёму хранилища»: например, 7 дней или 500 ГиБ. Запись включается для каждой камеры отдельно.
- Архив принадлежит узлу
- Файлы всегда лежат на том узле, к которому привязана камера; управляющий узел хранит только политику и знает, где искать записи. Пишется основной профиль.
- Холодная копия в S3
- Узел всегда пишет на локальный диск, а объектное хранилище подключается отдельно — как холодная копия уже записанных сегментов.
- Разбор по шкале времени
- Календарь отмечает дни с записью, шкала — закрашенные участки; наведение показывает кадр на этот момент, скорость от 0,5× до 16×, а по отметкам событий переходят от одного происшествия к другому.
Стена и лента событий
Мозаика — сохранённая раскладка: сетка до восьми ячеек по горизонтали и по вертикали, заполненная камерами и тегами. Тег разворачивается в свои камеры сам, поэтому новая камера на объекте попадает на стену без переделки раскладки. Ту же мозаику выводят на отдельный монитор в режиме киоска — без меню и шапки.
Настраивать оператору нечего: камеры, права и раскладки назначает администратор. Видео открывается в браузере и в мобильных приложениях.
| Раздел | Что в нём |
|---|---|
| Обзор | Стартовый экран дежурного: сводка за сегодня и живая лента событий |
| Камеры | Список камер, к которым открыт доступ, с просмотром и архивом |
| Мозаики | Назначенные раскладки: несколько камер на одном экране |
| События | Журнал происшествий: фильтры, вложения, переход к записи |
Сотни потоков на логическое ядро
Медиаузел построен на том же ядре, что и медиасервер, и наследует его главное свойство — высокую плотность потоков: расход линеен и предсказуем.
до 50 Гбит/с
с одного узла Верхняя граница трафика одной машины при достаточной полосе. Как и плотность, зависит от характеристик потоков.
Зрители обходятся почти даром
Поток камеры упаковывается один раз, и эта работа не зависит ни от числа смотрящих, ни от числа протоколов. Оператор добавляет к ней только отправку байтов, поэтому смена из двадцати человек на общей стене не удваивает нагрузку узла.
Откуда это берётся
Ядро написано на Rust — современном высокопроизводительном языке. Дальше дело в качестве: выверенный и тщательно протестированный код и архитектура, спроектированная под эту нагрузку с самого начала.
Сколько узлов и сколько дисков
Узел не перекодирует видео, поэтому нагрузку определяет суммарный битрейт, а не число камер и не их разрешение: сто камер по 8 Мбит/с тяжелее трёхсот по два. По процессору запас велик — считать надо сеть и диск. Глубина архива на память не влияет вообще.
Один медиаузел: камеры по 2 Мбит/с с записью
| Камер | Память | Входящая сеть |
|---|---|---|
| до 50 | 8 ГБ | 100 Мбит/с |
| 100 | 8 ГБ | 200 Мбит/с |
| 250 | 16 ГБ | 500 Мбит/с |
| 500 | 16–32 ГБ | 1 Гбит/с |
| 1000 | 32–64 ГБ | 2 Гбит/с |
Это ориентир, а не гарантия. Держите запас 30–50 % по памяти — и помните, что два узла по 250 камер всегда предпочтительнее одного на 500.
Архив на 100 камер, терабайты без запаса
| Битрейт | 7 суток | 14 суток | 30 суток |
|---|---|---|---|
| 1 Мбит/с | 3,8 | 7,6 | 16,2 |
| 2 Мбит/с | 7,6 | 15,1 | 32,4 |
| 4 Мбит/с | 15,1 | 30,2 | 64,8 |
Один мегабит в секунду записи — примерно 10,8 ГБ в сутки. Добавьте 10–15 % запаса; звук G.711 прибавляет около 0,7 ГБ в сутки на камеру, а копия в объектном хранилище равна по объёму локальной.
Что видно и что записывается
Роль определяет, какие разделы доступны, грант — какие камеры и с какими возможностями. Без грантов список камер у оператора пуст: права только добавляются, запретить грантом нельзя.
Шесть привилегий на камеру
- Прямой эфир
- Живое видео камеры
- Архив
- Просмотр записей на шкале времени
- События
- Лента происшествий по камере
- PTZ
- Поворот, наклон и зум по ONVIF
- Экспорт
- Скачивание фрагмента архива файлом
- Превью
- Одиночный кадр в списках и ячейках мозаики
Область гранта — вся организация, тег или одна камера. Несколько грантов складываются по максимуму; ссылка доступа не может выдать больше, чем есть у того, кто её выпустил.
Восемь системных событий
- Узел не в сети интервал
- Поток недоступен интервал
- Ошибка авторизации камеры мгновенное
- Хранилище архива недоступно мгновенное
- Потеряна подписка на события ONVIF интервал
- Ошибка управления ONVIF PTZ мгновенное
- Некорректная конфигурация узла мгновенное
- Квота организации мгновенное
Плюс события самих камер по ONVIF и события от внешних детекторов, принимаемые по отдельному модульному токену. Интервальное событие живёт от открытия до закрытия и показывает длительность.
Консоль и REST API
В системе нет действия, доступного в интерфейсе и недоступного в API: через него делают массовое заведение камер, инвентаризацию, перенос между узлами, выгрузку событий и внешний мониторинг.
Группы операций
Единый базовый адрес на том же хосте, что и консоль: отдельного порта под API нет. Ответы — JSON; живые данные идут потоками SSE — лента событий, состояние флота, телеметрия узлов, журнал аудита.
- Аутентификация
- Камеры
- События
- Узлы и хранилища
- Теги, мозаики, шаблоны
- Организации и пользователи
- Мониторинг и служебное
- Листание курсором
- Выборка листается ключом последней строки, а не смещением: страница не «съезжает», когда данные меняются под запросом.
- Живые данные потоком
- События, состояние флота и журналы отдаются потоком SSE. Поток конечен — не длиннее пяти минут, после чего клиент переподключается.
- Роль читается из базы
- Не из токена: понижение прав действует со следующего же запроса, а не после истечения выданного токена.
- Пределы пакетных операций
- Не более 500 идентификаторов в одной пакетной операции, 32 тегов и 4 профилей на камеру, 50 камер в одной подписке.
Три роли
- Суперадмин
- Вся установка: организации, узлы, хранилища, настройки, TLS
- Админ организации
- Своя организация: камеры, пользователи, теги, мозаики, события
- Оператор
- Только то, что открыто грантами: без грантов список камер пуст
Журнал аудита
Неизменяемый, только на добавление: время, кто, что сделал, над каким объектом, с какого адреса. Отдельно от технических журналов служб.
Отдельную камеру можно показать ссылкой: получатель открывает её в браузере без учётной записи. Срок ссылки — от часа до 90 дней; её можно ограничить сайтом и адресами, отозвать — в любой момент.
Ставится на ваши серверы
Управляющий узел и медиаузлы устанавливаются на обычные серверы Linux. Видео, архив и события остаются в вашей сети: наружу уходят только проверка лицензии узла и выпуск сертификатов.
Обновление управляющего узла можно делать в рабочее время: узлы переживают его перезапуск без потери видео и записи.
- Два сервиса systemd
- Управляющий узел и медиаузел ставятся отдельно и могут работать на разных серверах — рекомендуемый вариант.
- Linux x86-64
- Ядро 5.1 и новее, glibc 2.31, systemd. Оборудование общего назначения.
- База данных
- Управляющему узлу нужна PostgreSQL: установщик ставит и настраивает её сам. Ориентир для малой и средней установки — 2–4 ядра и 4–8 ГБ памяти.
- TLS без прокси
- Сертификаты выпускаются автоматически по ACME. Узел должен быть доступен браузеру: видео идёт напрямую с него.
- Лицензируется узел
- Управляющий узел лицензии не требует. Предел — число одновременных потоков на узле; при недоступности службы активации узел продолжает работать несколько суток.
- Резервное копирование
- Состояние установки — это база управляющего узла и вложения событий; узлы восстанавливаются из конфигурации.
Кто с кем разговаривает
Видео идёт от медиаузла к браузеру напрямую, поэтому узел должен быть доступен зрителю — управляющий узел видео не проксирует и от числа зрителей не зависит.
Порт 80 нужен постоянно, а не только при установке: сертификат продлевается автоматически примерно каждые 60 дней.
| Откуда | Куда | Порт | Зачем |
|---|---|---|---|
| Браузер оператора | Управляющий узел | 443 | Консоль, API, страница плеера |
| Браузер оператора | Медиаузел | 443 или 9443 | Видео: живое, архив, превью |
| Управляющий узел | Медиаузел | тот же, что и у браузера | Управление, телеметрия, конфигурация |
| Медиаузел | Управляющий узел | 443 | Ключи проверки прав и отзывы |
| Медиаузел | Камера | 554 | Приём видео по RTSP |
| Управляющий узел | Камера | 80 · 8000 · 554 | ONVIF: поиск, профили, PTZ, события |
| Управляющий узел | PostgreSQL | 5432 | База данных, обычно на том же хосте |
| Интернет | Узлы | 80 | Проверка при автоматическом выпуске сертификата |
| Туннельный агент | Релей | 443 | Исходящее соединение из закрытой сети |
Как это выглядит
Консоль администратора и мастер заведения камеры. Всё, что делает консоль, доступно и по REST API — интерфейс не имеет привилегий, недоступных вашей системе автоматизации.
Что спрашивают чаще всего
Восемь вопросов из тех, что задают до внедрения. Полный список — в разделе «Вопросы и ответы» документации.
- Сколько камер тянет один узел?
- По процессору запас огромный: от 250 потоков на одно логическое ядро современной машины. Определяющий фактор — суммарный битрейт, а не число камер: 100 камер по 8 Мбит/с нагружают узел сильнее, чем 300 по 2 Мбит/с. Раньше процессора кончаются сеть и диск, поэтому два узла по 250 камер предпочтительнее одного на 500.
- Камера пропадала, а событие не создалось — почему?
- Так задумано: короткие «моргания» подавляются. Камера объявляется недоступной после трёх подряд неудачных опросов — примерно через 15 секунд, при этом начало эпизода ставится задним числом на первый неудачный опрос.
- Что означает счётчик «Ошибки» у камеры?
- Число переподключений к источнику с момента запуска потока, а не количество испорченных кадров. У здоровой камеры там ноль: первое подключение не считается.
- Можно ли перенести камеру на другой узел без потери архива?
- Нет. Записи не переезжают между узлами — нужные фрагменты выгружаются файлом до переноса.
- Почему архив не пишется?
- Причин обычно три: диск не инициализирован, у камеры выключена запись либо не в порядке сам том — кончилось место или он подменён.
- Сколько места нужно под архив?
- Поток в 1 Мбит/с даёт примерно 10–11 ГБ на камеру в сутки. К расчёту добавляется 10–15 % запаса; звук G.711 прибавляет около 0,7 ГБ в сутки на камеру.
- Почему выкидывает, когда коллега заходит под тем же логином?
- Сработал лимит одновременных сеансов организации: система завершает самый старый сеанс. Вытеснение записывается в журнал аудита.
- Что обязательно резервировать?
- Три вещи: базу PostgreSQL, файл настроек управляющего узла и его ключи. Видеоархив в резервную копию обычно не включают — узлы восстанавливаются из конфигурации.
Проверьте на своих камерах
По запросу выдаём демо-лицензию: ставите систему у себя, заводите часть парка и смотрите работу смены на своих камерах — стену, архив и разбор события. Помогаем с настройкой и отвечаем по ходу проверки.