dobrovolskiy.com
EN
← все проектыдесктоп · 2026

Сверхлегкий просмотрщик IP-камер

Сверхлёгкий многокамерный просмотрщик и регистратор RTSP: десятки камер на одном слабом ПК или сервере написанный на чистом C.

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

Сверхлегкий просмотрщик IP-камер

Ориентированное на 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 минут бесплатно.

Ещё проекты

SVGViewer: рендерер на C11SVG-рендерер на C11 без зависимостей с собственным XML-парсером и многопоточным аналитическим растеризатором.Приложение для домофонаОднофайловое настольное приложение для Windows: живой RTSP-поток, открытие двери в один клик через HTTP API домофона, звуковой сигнал при обнаружении лица (YuNet)CSV Viewer (Win32, C)Однофайловый Win32-просмотрщик CSV/TSV на C, мгновенно открывающий огромные файлы.