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.
Установка
- Клонировать репозиторий:
git clone https://hub.mos.ru/i/hik.git
cd hik
- Установить зависимости:
pip3 install flask werkzeug hikvision-sdk --user
- При необходимости указать путь к SDK (если библиотеки не в
./lib/):
export HIKVISION_SDK_PATH=/usr/local/lib/hikvision
- Запустить:
По умолчанию пароль входа показывает при запуске программы. Обязательно смените его через:
python3 hikvison.py --modify
Запуск сервера:
python3 hikvison.py
После запуска откройте в браузере:
https://<ip-адрес-сервера>:5000
Использование
CLI-аргументы
| Аргумент | Описание |
|---|---|
-v, --version
|
Вывести версию |
-r, --reset
|
Сбросить пароль входа на значение по умолчанию |
-m, --modify
|
Изменить пароль входа |
-p, --port
|
Задать порт (по умолчанию 5000) |
--no-https |
Запустить без HTTPS (только для диагностики) |
Добавление камеры
- Нажмите «Добавить камеры».
- Укажите диапазон IP, порт, логин и пароль.
- Нажмите «Начать поиск».
- Выберите найденные камеры и сохраните.
Архив и скачивание
- Выберите камеру в списке слева.
- Перейдите на вкладку «Архив».
- Выберите дату и нужные записи.
- Нажмите «Скачать выбранные».
Скачанные файлы автоматически конвертируются из DAV в MP4 и объединяются, если выбрано несколько записей.
Live-просмотр
- Выберите камеру.
- Перейдите на вкладку «Live».
- Используйте кнопки «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 (от текущего пользователя)
- Создайте файл сервиса:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/hikvison.service
- Вставьте содержимое (путь к 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
- Перезагрузите конфигурацию systemd, включите и запустите сервис:
systemctl --user daemon-reload
systemctl --user enable --now hikvison
- Проверить статус:
systemctl --user status hikvison
- Просмотр логов:
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.