组件 & 定制#
适配器架构#

适配器架构具有 2 个接口。两个接口都可以使用适配器加载器加载。
1) 设备发现接口#
此适配器接口用于发现设备,例如,ONVIF 协议或 UPnP 协议
新的设备发现适配器应实现
IDeviceDiscoveryInterface
类(请参阅 VST 容器中的include/device_discovery_adaptor.h
头文件)实现以下方法以创建和销毁适配器对象
typedef IDeviceDiscoveryInterface* createDiscoveryObject(); typedef void destroyDiscoveryObject ( IDeviceDiscoveryInterface* object );
2) 设备控制接口#
此适配器接口控制设备,例如,ONVIF 控制协议
新的设备控制适配器应实现
IDeviceControlInterface
类(请参阅 VST 容器中的include/device_control_adaptor.h
头文件)实现以下方法以创建和销毁适配器对象
typedef IDeviceControlInterface* createObject(); typedef void destroyObject( IDeviceControlInterface* object );
应用程序开发#
本节帮助开发人员了解 VST API。
VST 为客户端应用程序提供了一组 REST API,使开发人员能够访问 VST 的所有功能。
VST API 符合 OpenAPI 标准,因此开发人员能够通过 HTTP GET/POST 请求与 VST 交互。
获取所有设备的详细信息
GET *api/v1/sensor/list*
请求类型:GET
示例请求 URL
https://IP_ADDRESS:PORT_NUMBER/api/v1/sensor/list
成功时的示例响应,否则为空响应
[ { "firmwareVersion": "string", "hardware": "string", "hardwareId": "string", "sensorId": "string", "sensorIp": "string", "location": "string", "manufacturer": "string", "name": "string", "position": { "depth": "string", "direction": "string", "fieldOfView": "string", "coordinates": { "x": "string", "y": "string" }, "geoLocation": { "latitude": "string", "longitude": "string" }, "origin": { "latitude": "string", "longitude": "string" } }, "serialNumber": "string", "state": "online", "tags": "string" } ]
获取传感器流信息列表 (RTSP URL)
GET *api/v1/sensor/streams*
请求类型:GET
示例请求 URL
https://IP_ADDRESS:PORT_NUMBER/api/v1/sensor/streams
成功时的示例响应,否则为 NULL
[ { "7927cbbc-cba6-4f22-b65d-46f7382f5f65": [ { "streamId": "7927cbbc-cba6-4f22-b65d-46f7382f5f65", "isMain": true, "url": "rtsp://10.41.18.147:8554/live/7927cbbc-cba6-4f22-b65d-46f7382f5f65", "name": "HIKVISION%20DS-2CD2T43G0-I5", "metadata": { "bitrate": "8000", "codec": "H264", "framerate": "30", "govlength": "60", "resolution": "1920x1080" } } ] } ]
获取设备状态
GET *api/v1/sensor/status*
请求类型:GET
示例请求 URL
https://IP_ADDRESS:PORT_NUMBER/api/v1/sensor/status
成功时的示例响应,否则为 NULL
{ "Amcrest" : { "error_code" : "NoError", "error_message" : "No Error", "name" : "Amcrest", "state" : "online" } }
添加新设备(适用于 1) 设备发现接口)
POST *api/v1/sensor/add*
此 API 用于通过 IP 地址或 RTSP URL 添加设备。使用 IP 地址添加设备: 可以省略 url 字段。使用 RTSP URL 添加设备: 可以省略 sensorIp、username 和 password 字段。
请求类型:POST
请求正文
{ "sensorIp": "string", "name": "string", "location": "string", "hardware": "string", "username": "string", "password": "string", "manufacturer": "string", "serialNumber": "string", "firmwareVersion": "string", "hardwareId": "string", "tags": "string" }
成功时的示例响应,否则为 错误
{ "sensorId": "string" }
验证设备身份(适用于 1) 设备发现接口)
POST *api/v1/sensor/{sensor-id}/credentials*
请求类型:POST
sensor-id:使用
api/v1/sensor/list
检索的传感器 ID请求正文
{ "password": "string", "username": "string" }
成功时的示例响应,否则为 错误
true
开始录制设备流
POST api/v1/record/{stream-id}/start
请求类型:POST
sensor-id:使用 api/v1/sensor/list 检索的传感器 ID
请求正文
{ "streamId": "{stream-id}" }
成功时的示例响应,否则为 错误
true
停止录制设备流
POST api/v1/record/{stream-id}/stop
请求类型:POST
sensor-id:使用 api/v1/sensor/list 检索的传感器 ID
请求正文
{ "streamId": "{stream-id}" }
成功时的示例响应,否则为 错误
true
启动子网中新设备的扫描,适用于 1) 设备发现接口
POST api/v1/sensor/scan
请求类型:GET
示例请求
https://IP_ADDRESS:PORT_NUMBER/api/v1/sensor/scan
成功时的示例响应,否则为 NULL
true
请参阅 API 部分,其中提供了有关所有受支持的 RESTful API 的详细信息。
错误#
名称 |
类型 |
描述 |
必需 |
---|---|---|---|
error_code |
字符串 |
_示例:_ “VSTInternalError” |
是 |
error_message |
字符串 |
_示例:_ “VST 内部处理错误” |
是 |
VST 错误
HTTP 代码 |
错误代码 |
错误消息 |
---|---|---|
0 |
NoError |
无错误 |
403 |
DeviceUnauthorizedError |
设备未授权 |
401 |
ClientUnauthorizedError |
客户端未授权 |
400 |
InvalidParameterError |
参数无效或超出范围 |
404 |
DeviceNotFoundError |
未找到设备或设备 ID 无效 |
405 |
MethodNotAllowedError |
不允许的方法 |
408 |
DeviceRequestTimeoutError |
请求超时 |
500 |
CommunicationError |
设备通信错误 |
500 |
VSTInternalError |
VST 内部处理错误 |
501 |
VSTNotSupportedError |
不支持的操作/动作 |
507 |
VSTInsufficientStorage |
存储空间不足 |