У каждого есть только одна истинная ответственность: найти себя. Затем придерживайтесь этого в своем сердце до конца своей жизни, всем сердцем и никогда не останавливайтесь. Все остальные дороги непроходимы, человеческие побеги, трусливое возвращение к народным идеалам, дрейф, внутренние страхи - Герман Гессе, "Демиан"
Существует простая необходимость удаленно изменить конфигурацию сетевой камеры Hikvision с помощью программы. Изображения могут захватываться через определенные промежутки времени и передаваться на назначенный сервер через FTP. Необходимо изменить следующие элементы конфигурации сетевой камеры:
NET_DVR_SET_FTPCFG_V40
,NET_DVR_GET_FTPCFG_V40
NET_DVR_GET_JPEG_CAPTURE_CFG
,NET_DVR_SET_JPEG_CAPTURE_CFG
(Размер изображения и т. д.,интервал времени)NET_DVR_GET_SCHED_CAPTURECFG
,NET_DVR_SET_SCHED_CAPTURECFG
(每天什么时候Снимок)Каталог проекта
X:.
├─main
│ ├─java
│ │ └─com
│ │ └─xtj
│ │ └─hikvisionsdkintegration
│ │ ├─config
│ │ ├─controller
│ │ ├─dto
│ │ ├─sdklib
│ │ ├─service
│ │ ├─task
│ │ └─util
│ └─resources
Адрес проекта: https://github.com/LIRUILONGS/Hikvision-sdk-Integration.
Вызывающий метод вызывается через интерфейс, поддерживающий Get,Post
Способ
get Способ
http://127.0.0.1:8099/config/state/192.168.1.143
http://127.0.0.1:8099/config/ftp?ips=192.168.1.143,192.168.1.141,192.168.1.142
http://127.0.0.1:8099/config/ftp/status?ips=192.168.1.143,192.168.1.141,192.168.1.142
post Способ
curl --location --request POST 'http://127.0.0.1:8099/config/ftp' \
--header 'Content-Type: application/json' \
--data-raw ' [
"192.168.1.143",
"192.168.1.141",
"192.168.1.142"
]'
curl --location --request POST 'http://127.0.0.1:8099/config/ftp/status' \
--header 'Content-Type: application/json' \
--data-raw ' [
"192.168.1.143",
"192.168.1.141",
"192.168.1.142"
]
'
Предоставляет пользовательский интерфейс Swagger и документы интерфейса, которые можно вызывать напрямую.
server:
port: 8099
logging:
level:
org:
springframework.web: info
# Камера Конфигурация
CAMERA:
username: "admin"
password: "hik12345"
# ftp Конфигурация
FTP:
username: "face"
password: "face"
serverIP: "110.110.110.110"
serverPort: 21
enableAnony: 0
custdir: "face"
#СнимокConfiguration
snapshot:
dwPicInterval: 4000 # Захват временного интервала 4s
текущий SDK , window
Вам необходимо скачать SDK Баова текущийпроект jar Поместите пакет в каталог того же уровня, Linux
Нужно разместить /usr/lib/
под
java -jar hikvision-sdk-integration-0.0.1-SNAPSHOT.jar
┌──[root@vms81.liruilongs.github.io]-[~/ftpconfig]
└─$ ls
Dockerfile hikvision-sdk-integration-0.0.1-SNAPSHOT.jar sdk sdk.tar
┌──[root@vms81.liruilongs.github.io]-[~/ftpconfig]
└─$ cat Dockerfile
FROM openjdk:8u102-jdk
COPY ./hikvision-sdk-integration-0.0.1-SNAPSHOT.jar /
ADD ./sdk.tar /usr/lib/
# Установите команду при запуске контейнера
CMD ["java", "-jar" ,"hikvision-sdk-integration-0.0.1-SNAPSHOT.jar"]
┌──[root@vms81.liruilongs.github.io]-[~/ftpconfig]
└─$
Адрес склада: https://hub.docker.com/r/liruilong/hikvision-sdk-config-ftp
docker pull liruilong/hikvision-sdk-config-ftp
┌──[root@vms81.liruilongs.github.io]-[~/ftpconfig]
└─$ docker run --rm -it -p 8099:8099 hikvision-sdk-config-ftp:latest
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.5.3)
2023-10-12 17:20:41.184 INFO 1 --- [ main] c.x.h.HikvisionSdkIntegrationApplication : Starting HikvisionSdkIntegrationApplication v0.0.1-SNAPSHOT using Java 1.8.0_102 on bbb649e2e354 with PID 1 (/hikvision-sdk-integration-0.0.1-SNAPSHOT.jar started by root in /)
2023-10-12 17:20:41.186 INFO 1 --- [ main] c.x.h.HikvisionSdkIntegrationApplication : No active profile set, falling back to default profiles: default
2023-10-12 17:20:42.650 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8099 (http)
2023-10-12 17:20:42.669 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-10-12 17:20:42.669 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.50]
2023-10-12 17:20:42.764 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
.............
loop[2] find 2 mac and 0 ip
2023-10-12 17:20:44.151 INFO 1 --- [pool-1-thread-1] c.x.h.task.InitSdkTask : ============== InitSDK init success ====================
2023-10-12 17:21:02.986 INFO 1 --- [nio-8099-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-10-12 17:21:02.986 INFO 1 --- [nio-8099-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-10-12 17:21:02.988 INFO 1 --- [nio-8099-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms
2023-10-12 17:21:03.243 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : userId=0
2023-10-12 17:21:03.286 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : Получение параметров успешно
2023-10-12 17:21:03.287 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : =========================== Информация об устройстве ============================
2023-10-12 17:21:03.287 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : Имя устройства: IP CAMERA Серийный номер устройства: DS-IPC-B12HV2-IA20210812AACHG51171281.
2023-10-12 17:21:03.287 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : Название модели оборудования: DS-IPC-B12HV2-IA оборудование Модель: 31
2023-10-12 17:21:03.287 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : Количество аналоговых каналов: 1
2023-10-12 17:21:03.289 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : Номер версии программного обеспечения: [firstVersion:5, secondVersion:5, lowVersion:34]
2023-10-12 17:21:03.289 INFO 1 --- [nio-8099-exec-1] c.x.h.controller.ConfigController : Дата сборки программного обеспечения: Сборка: 2021.7.14.
Руководство по разработке, загрузка динамической библиотеки:
https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10&id=5cda5902f47ae80dd41a54b7
Руководство по разработке
Просмотрите соответствующее определение макроса,СтруктураНастройте FTP как демонстрационную версию:
Макрос переменные
public static final int NET_DVR_GET_FTPCFG_V40 = 6162; //Получаем информацию о FTP
public static final int NET_DVR_SET_FTPCFG_V40 = 6163; //Устанавливаем информацию о FTP
Преобразование структуры
public static class NET_DVR_STRUCTHEAD extends Structure {
public short wLength; //длина структуры
public byte byVersion ; /*4 верхние и нижние цифры обозначают верхнюю и нижнюю версии соответственно. Последующее расширение будет зависеть от версии и длины, а длина различных версий будет ограничена*/.
public byte byRes;
}
//Расширение именования изображений 2013-09-27
public static class NET_DVR_PICTURE_NAME_EX extends Structure {
public byte[] byItemOrder = new byte[PICNAME_MAXITEM]; /* Массив Eucalyptus определяет правила именования файлов. */
public byte byDelimiter; /*Разделитель, обычно '_'*/
public byte[] byPicNamePrefix = new byte[PICNAME_PREFIX/*32*/]; //Пользовательский префикс имени изображения
}
public static class STRUCT_SELF_DOMAIN extends Structure {
public byte[] szDomain = new byte[64]; //адрес сервера, можно использовать IPv4 IPv6 или доменное имя
public byte[] byRes1 = new byte[80];
}
public static class STRUCT_SELF_IP extends Structure {
public NET_DVR_IPADDR struIp = new NET_DVR_IPADDR(); /*IP-адрес: IPv4 IPv6-адрес, 144 байта*/
}
public static class UNION_SELF_FTPSEVER extends Union {
public STRUCT_SELF_DOMAIN struDomain = new STRUCT_SELF_DOMAIN();
public STRUCT_SELF_IP struAddrIP = new STRUCT_SELF_IP();
}
public static class NET_DVR_FTPCFG_V40 extends Structure {
public NET_DVR_STRUCTHEAD struStruceHead = new NET_DVR_STRUCTHEAD();
public byte byEnableFTP; /*Включить ли функцию загрузки по ftp, 0-нет, 1-да*/
public byte byProtocolType; /*Тип протокола 0-FTP,1-SFTP*/
public short wFTPPort; /*порт*/
public UNION_SELF_FTPSEVER unionServer = new UNION_SELF_FTPSEVER();
public byte[] szUserName = new byte[32]; /*имя пользователя*/
public byte[] szPassWORD = new byte[16]; /*пароль*/
public byte[] szTopCustomDir = new byte[64]; /*Настраиваем каталог первого уровня*/
public byte[] szSubCustomDir = new byte[64]; /*Пользовательский дополнительный каталог*/
public byte byDirLevel; /*0 = Нет структуры каталогов, сохранение непосредственно в корневом каталоге, 1 = использовать каталог уровня 1,2=использовать каталог уровня 2*/
public byte byTopDirMode; /* Каталог первого уровня, 0x1 = использоватьоборудованиеимя,0x2 = использоватьоборудование Число,0x3 = использоватьоборудованиеipадрес,
0x4=использовать точку мониторинга, 0x5=использовать время (год и месяц), 0x6-использовать пользовательское ,0x7=тип нарушения,0x8=направление,0x9=место*/
public byte bySubDirMode; /*Вторичный каталог, 0x1=использовать имя канала, 0x2=использовать номер канала 0x3=использовать время (год, месяц, день),
0x4=использовать номер полосы, 0x5-использовать пользовательский, 0x6=тип нарушения, 0x7=направление, 0x8=место, 0x9 = Номер парковочного места*/
public byte byType; /* 0-сервер, 1-сервер*/
public byte byEnableAnony; /*Включить анонимность 0-нет 1 —*/
public byte byAddresType; /*0 использоватьIPV4、IPV6 1- использовать域имя*/ public byte byFTPPicType; //0-зарезервировано, 1-правила именования снимков парковки
public byte byPicArchivingInterval; //Интервал архивации изображений [1~30], 0 означает закрыто
public NET_DVR_PICTURE_NAME_EX struPicNameRule = new NET_DVR_PICTURE_NAME_EX(); /* Правила именования изображений:
byFTPPicType Когда ==1, правило именования в собственном массиве является правилом именования для снимков парковки*/
public byte byPicNameRuleType; //Тип правила команды изображения; 0 ~ тип по умолчанию, 1 ~ определение имени префикса изображения (включите поле byPicNamePrefix в struPicNameRule)
public byte[] byRes = new byte[203]; /*бронировать*/
}
public static class NET_DVR_FTP_TYPE extends Structure {
public byte byType; // 0-главный сервер, 1-сервер
public byte[] byRes = new byte[3];
}
Напишите функциональный бизнес
© Авторские права на ссылки в этой статье принадлежат оригинальному автору. Если есть какие-либо нарушения, пожалуйста, сообщите нам. Это проект с открытым исходным кодом. Если вы его одобряете, не скупитесь на звезды :)
https://github.com/LIRUILONGS/Hikvision-sdk-Integration
https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10&id=5cda5902f47ae80dd41a54b7
https://gitee.com/naylor_personal/ramble-spring-boot/tree/master/hikvision-sdk-integration
© 2018-2023 liruilonger@gmail.com, All rights reserved. Сохранение авторства – некоммерческое использование – ShareAlike (CC) BY-NC-SA 4.0)