Управление камерой (Скачать)
# OpenIPC HTTP API
##
Общая информацияAPI приближённо соответствует документам:
* [DAHUA IPC HTTP API V1.00x](
https://community.jeedom.com/uploads/short-url/tTQJPaNah7gZnU12VGGN9ZHEhOk.pdf)
* [DAHUA HTTP API V2.89](
https://ipcamtalk.com/threads/latest-version-of-dahua-http-api-for-ipc-documentation.45213/)
* [AMCREST HTTP Protocol API Specifications Rev. 2.13](
https://drive.google.com/file/d/1VM2Tb-q4PhmZuvLxSk5OwWInbFxUuTR-/view)
Параметры запросов:* Номер порта - 85
* Логин - admin
* Пароль (заводские настройки) - 123456
## configManager.cgi
###
Установка параметров`action=setConfig`
Пример GET-запроса:
```
http://admin:123456@192.168.0.141:85/cgi-bin/configManager.cgi?action=setConfig&Encode[0].MainFormat[0].AudioEnable=true
```
Поддерживаемые параметры:###
Agent.Enable* `true` - включить Agent
* `false` - отключить Agent
###
Agent.AddressАдрес сервера для подключения агента. По умолчанию `camagent.ufanet.ru`
###
Autoupdate.Enable* `true` - включить автообновление
* `false` - отключить автообновление
###
Autoupdate.AddressАдрес сервера автообновлений
###
Encode[0].MainFormat[0].AudioEnable* `true` - аудио вкл.
* `false` - аудио выкл.
###
Encode[0].MainFormat[0].Audio.CompressionАудиокодек:
* `mp3`
* `opus`
* `aac`
* `pcm`
* `alaw`
* `ulaw`
###
Encode[0].MainFormat[0].Audio.FrequencyЧастота дискретизации аудио в [Гц]
###
Encode[0].MainFormat[0].VideoEnable* `true` - основной поток (/stream=0) видео вкл.
* `false` - видео выкл.
###
Encode[0].MainFormat[0].Video.BitRateВидео битрейт в [kbps]
###
Encode[0].MainFormat[0].Video.BitRateControlРежим работы RC (Rate Control):
* `avbr` (Adaptive Variable BitRate)
* `cbr` (Constant BitRate)
* `vbr` (Variable BitRate)
###
Encode[0].MainFormat[0].Video.CompressionВидеокодек:
* `h264`
* `h265`
###
Encode[0].MainFormat[0].Video.FPSЧастота кадров
###
Encode[0].MainFormat[0].Video.GOPКоличество опорных кадров в 1 секунде (от 0.1 до 20)
###
Encode[0].MainFormat[0].Video.GOPmodeРежим работы GOP:
* `normal`
* `dual`
* `smart`
###
Encode[0].MainFormat[0].Video.resolutionРазрешение, например, `1920x1080` (допускаются только четные значения; количество пикселей должно быть кратным 256, например, 1920*1080=2073600 кратно 256)
Аналогичные параметры видео для дополнительного потока (/stream=1):
### Encode[0].ExtraFormat[0].VideoEnable### Encode[0].ExtraFormat[0].Video.BitRate### Encode[0].ExtraFormat[0].Video.BitRateControl### Encode[0].ExtraFormat[0].Video.Compression### Encode[0].ExtraFormat[0].Video.FPS### Encode[0].ExtraFormat[0].Video.GOP### Encode[0].ExtraFormat[0].Video.GOPmode### Encode[0].ExtraFormat[0].Video.resolutionАудио параметры для потоков общие (для `Encode[0].ExtraFormat[0].Video.BitRateControl` допустим только `avbr`)
###
MotionDetect[0].Enable* `true` - детектор движения вкл.
* `false` - детектор движения выкл.
###
MotionDetect[0].EventHandler.DejitterМинимальное время в секундах между срабатываниями детектора движения в диапазоне 0 — 30
###
MotionDetect[0].EventHandler.WebHookURLURL, на который отправляется сообщение о срабатывании детектора движения. Пример:
```
http://10.0.8.196/admin/api/v0/event/rvi/json/{stream_number}
```
###
MotionDetect[0].MotionDetectWindow[0].ROIОбласть отслеживания. Формат: XxYxWxH, например, 0x0x500x500. По умолчанию — весь кадр. Для сброса в значение по умолчанию достаточно указать пустое значение: `MotionDetect[0].MotionDetectWindow[0].ROI=''`
* `X` - x-координата левого верхнего угла
* `Y` - y-координата левого верхнего угла
* `W` - ширина
* `H` - высота
###
MotionDetect[0].MotionDetectWindow[0].SensitiveЧувствительность детектора движения в диапазоне 1 — 50
###
MotionDetect[0].MotionDetectWindow[0].SkipInОбласть исключения отслеживания. Формат: XxYxWxH, например, 200x200x100x100. По умолчанию — нулевая область. Для сброса в значение по умолчанию достаточно указать пустое значение: `MotionDetect[0].MotionDetectWindow[0].SkipIn=''`
* `X` - x-координата левого верхнего угла
* `Y` - y-координата левого верхнего угла
* `W` - ширина
* `H` - высота
###
MotionDetect[0].Visualize* `true` - визуализация детектора движения вкл.
* `false` - визуализация детектора движения выкл.
###
NTP.AddressАдрес NTP-сервера
###
NTP.TimeZoneИмя часового пояса из [tz database](https://www.iana.org/time-zones), например, `Asia/Yekaterinburg`
###
PrivacyMasking[0].Enable* `true` - вкл приватную маску
* `false` - выкл
*Примечание:
`PrivacyMasking[0].Enable` также управляет включением и выключением OSD*
###
PrivacyMasking[0].RectКоординаты прямоугольника `PrivacyMasking[0].Rect=100x110x500x1000`. Формат координат: x, y верхней левой точки, ширина и высота в пикселях. Есть возможность через запятую указывать координаты до 5 прямоугольников: `1854x1304x216x606,1586x1540x482x622`. Для сброса маски достаточно указать пустое значение: `PrivacyMasking[0].Rect=''`
###
RTSP.Block* `false` - разблокировать 554 порт
* `true` - заблокировать 554 порт
###
Syslog.AddressАдрес сервера для отправки логов в соответствии со стандартом syslog по протоколу UDP. Значение в формате `адрес[:порт]`. Если порт не указан, то используется порт по умолчанию `514`. Пустая строка - логи ведутся только локально
###
Syslog.LevelУровень логирования 1 — 8. В syslog попадают только логи с уровнем меньше, чем значение этого параметра
###
VideoColor[0][0].BrightnessЯркость изображения в диапазоне 1 — 100, либо автоматический режим — auto
###
VideoColor[0][0].ContrastКонтрастность изображения в диапазоне 1 — 100, либо автоматический режим — auto
###
VideoColor[0][0].HueЦветовой тон изображения в диапазоне 1 — 100
###
VideoColor[0][0].SaturationНасыщенность изображения в диапазоне 1 — 100
###
VideoImageControl[0].Flip* `true` - включить функцию переворота видео вертикально
* `false` - отключить функцию переворота видео вертикально
###
VideoImageControl[0].Mirror* `true` - включить функцию отражения видео горизонтально
* `false` - отключить функцию отражения видео горизонтально
###
VideoImageControl[0].Rotate90Вращение видео:
* `0` - без вращения
* `1` - по часовой стрелке повернуть на 90°
* `2` - против часовой стрелки повернуть на 90°
###
VideoInContourLight[0][0].Mode* `0` - компенсация контрового света выкл.
* `1` - компенсация контрового света вкл.
###
VideoInDayNight[0].Mode* `Color` - всегда дневной режим
* `Brightness` - день/ночь авто
* `BlackWhite` - всегда ч/б
* `Schedule` - день/ночь по расписанию
###
VideoInDayNight[0].BW.TimeВремя включения ночного режима, например, `21:00`
###
VideoInDayNight[0].Color.TimeВремя включения дневного режима, например, `9:00`
###
VideoInDayNight[0].DelayЗадержка переключения дня и ночи от 3 сек до 10 сек
###
VideoInDayNight[0].Light.BrightnessЯркость подсветки или мощность фонарика. Диапазон от 0 до 100, где 0 - подсветка отключена, 100 - яркость на максимум. Соотвественно при значении 50 подсветка будет включаться в половину мощности от максимальной яркости
###
VideoInDayNight[0].SensitivityЧувствительность переключения для автоматического переключения дня и ночи от 1 до 8 птенчиков
###
VideoInOptions[0].NightOptions.Profile* `0` - временно дневной режим
* `1` - временно ночной режим
* `другие значения` - сброс на авто (перезапустить поток)
###
VideoInWDR[0][0].Mode* `0` - WDR выкл.
* `1` - WDR вкл. (слабый режим)
* `2` - WDR вкл. (средний режим)
* `3` - WDR вкл. (сильный режим)
* `4` - WDR вкл. (супер режим)
###
VideoWidget[0].TimeTitle.FrontColor[3]* `0` - OSD выкл.
* `1..255` - OSD вкл.
###
VideoWidget[0].TimeTitle.Rect[0]Положение OSD (X-координата). Отрицательное значение означает смещение относительно правого края
###
VideoWidget[0].TimeTitle.Rect[1]Положение OSD (Y-координата). Отрицательное значение означает смещение относительно нижнего края
###
Locales.TimeFormatСообщение OSD, например, `"%F %T"`. Поддерживается форматирование [strftime](https://man7.org/linux/man-pages/man3/strftime.3.html)
###
Получение параметров`action=getConfig`
Пример GET-запроса:
```
http://admin:123456@192.168.0.141:85/cgi-bin/configManager.cgi?action=getConfig&name=Encode
```
Вывод:
```
table.Encode[0].MainFormat[0].AudioEnable=false
table.Encode[0].MainFormat[0].Video.BitRateControl=vbr
table.Encode[0].MainFormat[0].Video.BitRate=2048
table.Encode[0].MainFormat[0].Video.Compression=h264
table.Encode[0].MainFormat[0].Audio.Frequency=8000
table.Encode[0].MainFormat[0].VideoEnable=true
```
Поддерживаемые параметры:###
Agent* Agent.Enable
* Agent.Address
###
Autoupdate* Autoupdate.Enable
* Autoupdate.Address
###
Encode* Encode[0].MainFormat[0].AudioEnable
* Encode[0].MainFormat[0].Audio.Compression
* Encode[0].MainFormat[0].Audio.Frequency
* Encode[0].MainFormat[0].VideoEnable
* Encode[0].MainFormat[0].Video.BitRate
* Encode[0].MainFormat[0].Video.BitRateControl
* Encode[0].MainFormat[0].Video.Compression
* Encode[0].MainFormat[0].Video.FPS
* Encode[0].MainFormat[0].Video.GOP
* Encode[0].MainFormat[0].Video.GOPmode
* Encode[0].MainFormat[0].Video.resolution
* Encode[0].ExtraFormat[0].VideoEnable
* Encode[0].ExtraFormat[0].Video.BitRate
* Encode[0].ExtraFormat[0].Video.BitRateControl
* Encode[0].ExtraFormat[0].Video.Compression
* Encode[0].ExtraFormat[0].Video.FPS
* Encode[0].ExtraFormat[0].Video.GOP
* Encode[0].ExtraFormat[0].Video.GOPmode
* Encode[0].ExtraFormat[0].Video.resolution
###
Locales* Locales.TimeFormat
###
MotionDetect* MotionDetect[0].Enable
* MotionDetect[0].EventHandler.Dejitter
* MotionDetect[0].EventHandler.WebHookURL
* MotionDetect[0].MotionDetectWindow[0].ROI
* MotionDetect[0].MotionDetectWindow[0].Sensitive
* MotionDetect[0].MotionDetectWindow[0].SkipIn
* MotionDetect[0].Visualize
###
NTP* NTP.Address
* NTP.TimeZone
###
Network* Network.*interface*.PhysicalAddress
* Network.*interface*.IPAddress
* Network.*interface*.DefaultGateway
* Network.*interface*.SubnetMask
* Network.*interface*.DnsServers[0]
* Network.*interface*.DnsServers[1]
###
PrivacyMasking* PrivacyMasking[0].Enable
* PrivacyMasking[0].Rect
###
RTSP* RTSP.Block
###
Syslog* Syslog.Address
* Syslog.Level
###
VideoColor* VideoColor[0][0].Brightness
* VideoColor[0][0].Contrast
* VideoColor[0][0].Hue
* VideoColor[0][0].Saturation
###
VideoImageControl* VideoImageControl[0].Flip
* VideoImageControl[0].Mirror
* VideoImageControl[0].Rotate90
###
VideoInContourLight* VideoInContourLight[0][0].Mode
###
VideoInDayNight* VideoInDayNight[0].Mode
* VideoInDayNight[0].BW.Time
* VideoInDayNight[0].Color.Time
* VideoInDayNight[0].Delay
* VideoInDayNight[0].Light.Brightness
* VideoInDayNight[0].Sensitivity
###
VideoInWDR* VideoInWDR[0][0].Mode
###
VideoWidget* VideoWidget[0].TimeTitle.FrontColor
* VideoWidget[0].TimeTitle.Rect[0]
* VideoWidget[0].TimeTitle.Rect[1]
## magicBox.cgi
###
Запрос модели устройства`action=getMachineName`
Пример GET-запроса:
```
http://admin:123456@192.168.0.141:85/cgi-bin/magicBox.cgi?action=getMachineName
```
Пример ответа:
```
name=BMSCGL500
```
###
Запрос серийного номера`action=getSerialNo`
Пример ответа:
```
sn=6801780337772
```
###
Запрос версии прошивки`action=getSoftwareVersion`
Пример ответа:
```
version=2.3.02.10
kernel=2023060714
```
###
Запрос состояния стримера`action=getStreamerState`
Пример ответа:
```
streamerState=up
```
###
Запрос uptime`action=getUptime`
Пример ответа:
```
uptime=90047.46
```
###
Перезагрузка камеры`action=reboot`
Пример GET-запроса:
```
http://admin:123456@192.168.0.141:85/cgi-bin/magicBox.cgi?action=reboot
```
###
Сброс на заводские настройки`action=resetSystemEx`
Выполнение сброса занимает 1-2 минуты. После сброса камера автоматически перезагружается
Пример GET-запроса:
```
http://admin:123456@192.168.0.141:85/cgi-bin/magicBox.cgi?action=resetSystemEx
```
## upgrader.cgi
Отправка данных методом POST, тип содержимого [`multipart/form-data`](https://datatracker.ietf.org/doc/html/rfc2388)
Выполнение обновления занимает 1-2 минуты. После обновления камера автоматически перезагружается
###
Обновление ядраПример команды, отправляющей файл ядра `uImage`:
```
curl -u admin:123456 -F kernel=@uImage http://192.168.0.141:85/cgi-bin/upgrader.cgi
```
###
Обновление файловой системыПример команды, отправляющей файл образа файловой системы `rootfs.squashfs`:
```
curl -u admin:123456 -F rootfs=@rootfs.squashfs http://192.168.0.141:85/cgi-bin/upgrader.cgi
```
## Скрины
Скрины доступны на 85 порту по адресу:
```
http://192.168.0.188:85/image.jpg
```
или с указанием размеров:
```
http://192.168.0.188:85/image.jpg?width=640&height=360
```
## userManager.cgi
###
Смена пароля`action=modifyPassword`
Необходимо указать в запросе имя пользователя `admin`, новый и старый пароль
Пример GET-запроса:
```
http://admin:123456@192.168.0.141:85/cgi-bin/userManager.cgi?action=modifyPassword&name=admin&pwd=67890&pwdOld=12345
```