Сверхлегкий просмотрщик IP-камер
Сверхлёгкий многокамерный просмотрщик и регистратор RTSP: десятки камер на одном слабом ПК или сервере написанный на чистом C.
Ориентированное на Windows приложение для мониторинга IP-камер с минимумом зависимостей, написанное на C11 поверх FFmpeg и SDL2: показывает до нескольких десятков RTSP-камер в матричной сетке, записывает каждый поток в часовые...

Ориентированное на Windows приложение для мониторинга IP-камер с минимумом зависимостей, написанное на C11 поверх FFmpeg и SDL2: показывает до нескольких десятков RTSP-камер в матричной сетке, записывает каждый поток в часовые сегменты MPEG-TS с ограничением объема архива, воспроизводит историю на прокручиваемой временной шкале, управляет поворотными ONVIF-камерами мышью и предоставляет C ABI для плагинов анализа кадров и звука.
Создано для реального склада/цеха заказчика (15 камер в поставляемом settings.ini), поставляется как портативный exe + SDL2.dll со статически слинкованным минимальным FFmpeg, а также в виде установщиков MSI/MSIX и отдельного MSI для плагинов.
Главное — лёгкость: статическая минимальная сборка FFmpeg и один рабочий поток на камеру позволяют работать на очень слабых ПК и серверах и держать на одной машине заметно больше IP-камер, чем обычное ПО видеонаблюдения.
Что умеет
- Матричная сетка камер с отдельным рабочим потоком на камеру, разворачиванием по двойному клику, переключением превью/основного потока, прогревом буферов и кэшированными миниатюрами для мгновенного запуска
- Непрерывная запись в часовые сегменты MPEG-TS (recordings/<cam>/<dd.MM.yyyy>/<start__end>.ts) через полностью асинхронный рекордер на каждую камеру, никогда не блокирующий декодирование; чистильщик архива поддерживает лимит MaxArchiveGB
- DVR-воспроизведение «машина времени» (F9): сканирует записи в индекс покрытия, нижняя полоса временной шкалы с панорамированием/масштабированием, перемотка, воспроизведение в темпе 1x поверх живой плитки
- Интеграция ONVIF: обнаружение устройства, получение медиапрофилей, PTZ ContinuousMove/Stop с digest-аутентификацией WS-Security, из выделенного потока с однослотовым почтовым ящиком и защитным watchdog
- Встроенные оверлеи менеджера камер, настроек и менеджера плагинов (F1/F2/F10), локализация EN/RU, вступительная подсказка, settings.ini сохраняется фоновым писателем
- Система плагинов: версионированный C ABI (структуры с проверкой magic/abi/size), плагины получают кадры YUV420P и звук S16 и возвращают прямоугольники для оверлея; поставляемый плагин Face Counter обнаруживает, повторно идентифицирует и считает лица за день без внешних библиотек
- Надежность: журналирование сбоев через SEH, поток-watchdog зависаний UI, семафор ограничения открытия RTSP (исключает всплески рукопожатий с NVR), трассировочный лог запуска, автоматическое переподключение
- Упаковка: скрипт статической сборки минимального FFmpeg, портативный дистрибутив (exe + 2 DLL), WiX MSI, MSIX с тестовым сертификатом, отдельный установщик плагинов
17 тыс. строк написанного вручную C с четкой дисциплиной потоков: один воркер на камеру, блокировки на уровне камеры, потоки декодирования не трогают диск, поток UI только подглядывает. Самописный клиент ONVIF/SOAP с digest WS-Security (без gSOAP). DVR-перемотка по часовым TS-сегментам с точными интервалами в именах файлов, переименовываемых при закрытии. Стабильный расширяемый C ABI для плагинов и написанный с нуля плагин обнаружения/повторной идентификации лиц (каскад pico + LBP-гистограммы, ноль зависимостей). Собственная минимальная статическая сборка FFmpeg сжимает дистрибутив до exe + SDL2.dll. Реальное внедрение на объекте заказчика с 15 камерами.
Нужно что-то похожее?
Делаю это вживую на звонке в Zoom / Яндекс Телемост, вы смотрите на экран, таймер останавливается по вашему слову. Первые 15 минут бесплатно.