logo

Hikvision Camera Manager

Веб-приложение для управления IP-камерами Hikvision и HiWatch через браузер. Разработано специально для работы в локальной сети, для доступа к интерфейсу не требуется Internet Explorer — современный браузер на основе Chromium/Firefox/Safari.

Серверная часть работает на Linux x86_64 (MOS13 / ROSA Fresh 13, Ubuntu/Debian совместимы).

Возможности

  • 🔍 Поиск камер в локальной сети
  • 🎥 Просмотр live-видео в реальном времени через HLS с fallback на MJPEG
  • 📼 Архивные записи с фильтром по дате и времени
  • ⬇️ Пакетное скачивание архива с прогрессом (DAV → MP4 через FFmpeg)
  • 💾 Докачка и кэш — скачанные файлы не перекачиваются повторно
  • 📷 Снимки экрана в HD-качестве
  • 🔐 Авторизация в веб-интерфейсе
  • 🔒 HTTPS из коробки — автоматическая генерация самоподписанного сертификата

Совместимость

Программа использует официальный SDK Hikvision (HCNetSDK) и протестирована с камерами:

  • HiWatch DS-I452S и аналогичные модели
  • Hikvision с совместимыми прошивками

Поддерживаемые протоколы:

  • ISAPI / SDK Hikvision для поиска, архива и снимков
  • RTSP через FFmpeg для HLS/MJPEG streaming

⚠️ Для корректной работы требуется, чтобы камера поддерживала SDK Hikvision или ISAPI. Некоторые функции могут отличаться в зависимости от модели и версии прошивки.

Требования

  • ОС: Linux x86_64 (MOS13 / ROSA Fresh 13, Ubuntu/Debian совместимы)
  • Python: 3.9+
  • FFmpeg: 4.4+ (рекомендуется 7.x)
  • OpenSSL: для генерации самоподписанных сертификатов
  • Библиотеки Hikvision SDK: libhcnetsdk.so и зависимости

Python-зависимости

pip3 install flask werkzeug hikvision-sdk --user

Модуль hikvision-sdk — это Python-обёртка над нативным HCNetSDK. По умолчанию SDK библиотеки ищутся в папке ./lib/ рядом со скриптом. Если библиотеки находятся в другом месте, задайте путь через переменную окружения HIKVISION_SDK_PATH.

Установка

  1. Клонировать репозиторий:
git clone https://hub.mos.ru/i/hik.git
cd hik
  1. Установить зависимости:
pip3 install flask werkzeug hikvision-sdk --user
  1. При необходимости указать путь к SDK (если библиотеки не в ./lib/):
export HIKVISION_SDK_PATH=/usr/local/lib/hikvision
  1. Запустить:

По умолчанию пароль входа показывает при запуске программы. Обязательно смените его через:

python3 hikvison.py --modify

Запуск сервера:

python3 hikvison.py

После запуска откройте в браузере:

https://<ip-адрес-сервера>:5000

Использование

CLI-аргументы

Аргумент Описание
-v, --version Вывести версию
-r, --reset Сбросить пароль входа на значение по умолчанию
-m, --modify Изменить пароль входа
-p, --port Задать порт (по умолчанию 5000)
--no-https Запустить без HTTPS (только для диагностики)

Добавление камеры

  1. Нажмите «Добавить камеры».
  2. Укажите диапазон IP, порт, логин и пароль.
  3. Нажмите «Начать поиск».
  4. Выберите найденные камеры и сохраните.

Архив и скачивание

  1. Выберите камеру в списке слева.
  2. Перейдите на вкладку «Архив».
  3. Выберите дату и нужные записи.
  4. Нажмите «Скачать выбранные».

Скачанные файлы автоматически конвертируются из DAV в MP4 и объединяются, если выбрано несколько записей.

Live-просмотр

  1. Выберите камеру.
  2. Перейдите на вкладку «Live».
  3. Используйте кнопки «HD / SD» для переключения потока и «HLS / MJPEG» для смены режима.

HTTPS и сертификаты

Приложение автоматически использует HTTPS:

  • Если в папке cert/ есть пара сертификат + ключ, используется она.
  • Если сертификатов нет — генерируется самоподписанный сертификат.

Поддерживаемые имена файлов в папке cert/:

cert/
├── certificate.crt   + private.key
├── cert.pem          + key.pem
├── server.crt        + server.key
├── fullchain.pem     + privkey.pem
└── certificate.pem   + private.key

Чтобы использовать свой сертификат, положите файлы в папку cert/ с одной из перечисленных пар имён. При отсутствии сертификатов программа сама создаст cert/certificate.crt и cert/private.key.

⚠️ При использовании самоподписанного сертификата браузер будет предупреждать о небезопасном соединении. Это нормально. Для production разместите сертификат, выданный доверенным CA, или добавьте самоподписанный сертификат в доверенные корневые сертификаты системы.

Запуск через systemd (от текущего пользователя)

  1. Создайте файл сервиса:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/hikvison.service
  1. Вставьте содержимое (путь к Python и папке проекта отредактируйте при необходимости):
[Unit]
Description=Hikvision Camera Manager
After=network.target

[Service]
Type=simple
# Раскомментируйте, если SDK находится не в ./lib/, а в другом месте
# Environment="HIKVISION_SDK_PATH=/usr/local/lib/hikvision"
WorkingDirectory=%h/hik
ExecStart=/usr/bin/python3 %h/hik/hikvison.py
Restart=on-failure

[Install]
WantedBy=default.target
  1. Перезагрузите конфигурацию systemd, включите и запустите сервис:
systemctl --user daemon-reload
systemctl --user enable --now hikvison
  1. Проверить статус:
systemctl --user status hikvison
  1. Просмотр логов:
journalctl --user -u hikvison -f

Структура проекта

.
├── hikvison.py              # Основной Flask backend
├── templates/
│   ├── index.html           # Основной интерфейс
│   └── login.html           # Страница входа
├── static/
│   ├── hls.min.js           # Локальная копия hls.js
│   └── script.js            # Frontend логика
├── lib/                     # Нативные библиотеки SDK
├── cert/                    # TLS-сертификаты
├── upload/                  # Временные файлы и кэш
├── cameras.db               # SQLite база камер
└── README.md                # Этот файл

Решение проблем

Браузер предупреждает о небезопасном соединении

Это нормально для самоподписанного сертификата. Используйте свой сертификат, выданный доверенным CA, или добавьте самоподписанный сертификат в доверенные корневые сертификаты системы.

HTTPS работает медленно или зависает

Убедитесь, что используется сертификат с ключом RSA 2048 бит, а не 4096. Приложение автоматически перегенерирует слишком медленные сертификаты.

Камера не найдена

  • Проверьте, что камера включена и доступна по сети.
  • Убедитесь, что указан правильный порт (обычно 8000 для SDK/ISAPI).
  • Проверьте логин и пароль.

Технологии

  • Backend: Python 3.11, Flask, SQLite
  • Streaming: FFmpeg, HLS, MJPEG
  • Frontend: Vanilla JavaScript, hls.js, CSS
  • SDK: Hikvision HCNetSDK

Лицензия

GNU GENERAL PUBLIC LICENSE Version 3.


Разработано для MOS13 / ROSA Fresh 13. Тестовая камера: HiWatch DS-I452S.