1.业务场景

1.1 播放实时画面以及实时检测结果可视化
视频流播放以及实时检测结果可视化前端示例代码(点击此处跳转)
接口调用顺序: 2.1 -> 2.2 -> 2.3 ->2.4
说明:
2.1:获取画面播放相关的端口号
2.2:获取视频列表,仅status为1的视频可以播放实时画面
2.3:获取播放链接
2.4:订阅mqtt实时检测消息,获取正在播放的实时画面的实时检测结果
1.2 实时告警
接口调用顺序:2.4
1.3 最近7日告警趋势
接口调用顺序:2.5
示例:http://盒子IP:9092/ks/alert/count?group_by=alert_time&start_time=1752595200
1.4 告警类型排行
接口调用顺序:2.5
示例:http://盒子IP:9092/ks/alert/count?group_by=alg_display_name
1.5 告警统计
接口调用顺序:2.5
本周告警示例:http://盒子IP:9092/ks/alert/count?start_time=1748707200
1.6 接入状态
接口调用顺序: 2.2 -> 2.1
2.2分子,status为1表示启用状态
2.1分母,max_source
1.7 今日告警统计
接口调用顺序:2.5
示例:http://盒子IP:9092/ks/alert/count?start_time=1753113600&group_by=alert_time
2.原子接口
2.1. 查询数据源
- 接口功能描述:查询数据源,不传参表示查询所有数据源;
- 接口路径:[GET] http://盒子IP:9092/ks/source;
- Header请求参数说明;
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| Authorization | String | 是 | 'Bearer ' + token; token通过获取token接口获取 |
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| id | String | 否 | 数据源ID |
表. 请求参数
- 响应参数说明;
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| error_code | Int | 是 | 返回响应码 0: 成功 -1: 客户端错误 -2: 服务端错误 |
| message | String | 是 | 返回响应信息 |
| data | Object | 是 | 返回数据 |
- 响应示例;
| 项目 | 详情 |
|---|---|
| 报文格式 | JSON |
| 请求方法 | GET/POST(需补充) |
| 接口地址 | (需补充) |
| 报文说明 | 摄像头数据源查询响应报文 |
| 报文内容 | {
"error_code": 0,
"message": "查询数据源成功!",
"data": [
{
"id": "690dde04eb712e104fa98c25",
"desc": "159",
"index": 0,
"detail": {
"ipv4": "192.168.1.14",
"brand": "2",
"stream": ":554/h264/ch1/main/av_stream",
"password": "Admin123",
"protocol": "rtsp",
"rtsptype": "gen",
"username": "admin",
"stream_url": "rtsp://admin:Admin123@192.168.1.14:554/h264/ch1/main/av_stream"
},
"type": "camera",
"stream": {
"app": "a80c9349-39f5-4b77-a221-13e326fc425c",
"url": "rtsp://127.0.0.1:554/a80c9349-39f5-4b77-a221-13e326fc425c/690dde04eb712e104fa98c25",
"audio": {
"codec": "g711a",
"ready": true,
"channels": 1,
"sample_bit": 16,
"sample_rate": 8000
},
"video": {
"codec": "h265",
"ready": true,
"width": 1920,
"height": 1080
},
"stream": "690dde04eb712e104fa98c25",
"is_online": true,
"origin_ip": "192.168.1.14",
"image_size": {
"draw": [
1280,
720
],
"infer": 640
},
"origin_url": "rtsp://admin:Admin123@192.168.1.14:554/h264/ch1/main/av_stream"
},
"alg": {
"helmet": {
"bbox": {
"lines": [],
"polygons": []
},
"plan": {
"1": [[0,86400]],
"2": [[0,86400]],
"3": [[0,86400]],
"4": [[0,86400]],
"5": [[0,86400]],
"6": [[0,86400]],
"7": [[0,86400]]
},
"alg_type": "general",
"model_args": {
"zql_helmet": {
"conf_thres": 0.45
},
"zql_person": {
"conf_thres": 0.6
},
"zql_helmet_classify": {
"conf_thres": 0.7
}
},
"alert_window": {
"type": "interval_threshold_window",
"length": 5,
"interval": 5,
"threshold": 3
},
"hazard_level": "",
"reserved_args": {
"show": "false",
"sound_text": "未佩戴安全帽检测告警",
"extra_model": {
"zql_helmet_classify": 1
},
"display_name": "未佩戴安全帽检测"
}
}
},
"video_record": 0,
"status": 1
}
]
} |
| 项目 | 详情 |
|---|---|
| 报文格式 | JSON |
| 报文内容 | |
2.2. 订阅实时视频流
- 接口功能描述:订阅实时画面,获取实时画面播放地址;
- 接口路径:[GET] http://盒子IP:9092/stream/live/subscribe;
- Header请求参数说明;
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| Authorization | String | 是 | 'Bearer ' + token; token通过获取token接口获取 |
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| source_id | String | 是 | 数据源ID |
表. 请求参数
- 请求示例;
| 项目 | 详情 |
|---|---|
| 请求格式 | Query String |
| source_id | 6593d066522e4b1f0c6b95f6 |
- 响应参数说明;
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| error_code | Int | 是 | 返回响应码 0: 成功 -1: 客户端错误 -2: 服务端错误 |
| message | String | 是 | 返回响应信息 |
| data | Object | 是 | 返回视频流地址 |
- 响应示例;
| 项目 | 详情 |
|---|---|
| 报文格式 | JSON |
| 报文内容 | {
"error_code": 0,
"message": "订阅实时视频流成功!",
"data": "http://127.0.0.1:1985/index/api/webrtc?app=a80c9349-39f5-4b77-a221-13e326fc425c&stream=690dde04eb712e104fa98c25&type=play"
} |
2.3. 实时分析结果
- 接口功能描述:实时订阅实时分析结果(播放流时产生MQTT消息),用于前端播放时实时画框;
- topic: ks/video_detection, 用户名:"work", 密码:"Bjhmdys@202010";
- 对应平台位置:【实时画面】
- 响应示例。
| 项目 | 详情 |
|---|---|
| 报文格式 | JSON |
| 报文内容 | {
"msg_id": "uuid",
"msg_type": "video_detection",
"time": "2024-01-23 10:25:36.216528",
"data": {
"time": "1705976735.391402",
"hit": false,
"hazard_level": "", //危险等级
"source": {
"id": "摄像头id",
"ipv4": "摄像头ip",
"desc": "摄像头描述"
},
"alg": {
"type": "算法类型",
"name": "算法英文名称",
"ch_name": "算法中文名称",
},
"reserved_data": {
"bbox": {
"rectangles": [{
//左上角、右下角坐标
"xyxy": [680, 198, 1178, 696],
"color": [0, 0, 255], //BGR颜色
"conf": 0.91, //置信度
"label": "未佩戴安全帽", //标签
"ext": {} //扩展字段
}
] //矩形数组
"polygons": {
"xxxxxx": { //多边形id
"name": "离岗检测", //多边形名称
"color": [0, 0, 255], //BGR颜色
"polygon": [ //顶点坐标
[568, 205],
[920, 140],
[843, 471],
[576, 471]
],
"ext": {} //扩展字段
}
} //多边形对象
"lines": {
"xxxxxx": { //线段id
"name": "线段1", //线段名称
//顶点坐标
"line": [[680, 198], [1178, 696]],
"color": [0, 0, 255], //BGR颜色
"ext": {} //扩展字段
}
} //线段对象
}
}
}
} |
2.4. 实时告警信息
- 接口功能描述:实时订阅盒子告警;
- topic:ks/sink_alert, 用户名:"work", 密码:"Bjhmdys@202010";
- 对应平台位置:【实时画面】右侧【最新告警】模块
- 响应示例。
| 项目 | 详情 |
|---|---|
| 报文格式 | JSON |
| 报文内容 | {
"msg_id": "uuid",
"msg_type": "alert",
"time": "发送时间",
"data": {
"id": "告警id",
"alert_time": "时间戳",
"source_id": "摄像头ID,对应新增摄像头的ID",
"source_desc": "摄像头描述",
"source_ipv4": "摄像头IP",
"alg_name": "算法名称",
"alg_display_name": "算法显示名称",
"hazard_level": "危害等级",
"image": "图片路径,访问需要加上代理http://设备IP:9092/staticdata+图片路径",
"reserved_data": "人脸告警才有数据",
"video": "视频二进制数据",
"status": "摄像头状态"// 1: 启用,-1:停用
"desc": [],
"llm_status": "大模型复审状态"
}
} |
| reserved_data | {
group:{
"id": "666825ae5dc58a319bb9c1e8",
"name": "分组名称"
},
face:[{
"id": "6594e027522e4bbbcfe12194(唯一ID)",
"name": "姓名",
"age": "年龄",
"sex": "性别",
"desc": "描述",
"update_time": "时间戳",
"lib_image": "底库人脸图片",
"cap_image": "抓拍人脸图片",
"conf": "比对置信度"
}]
} |
2.5. 告警统计
- 接口功能描述:获取首页告警统计;
- 接口路径:[GET] http://盒子IP:9092/ks/alert/count;
- Header 请求参数说明:
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| Authorization | String | 是 | 'Bearer ' + token; token通过获取token接口获取 |
| 参数名称 | 数据类型 | 是否必须 | 说明 |
|---|---|---|---|
| group_by | String | 否 | 对查询结果分组 alert_time为根据时间分组; alg_display_name为根据算法名称分组 |
| start_time | Int | 否 | 开始时间秒数 |
表. 请求参数
- 请求示例;
| 项目 | 详情 |
|---|---|
| 请求格式 | Query String |
| start_time | 1753113600 |
| group_by | alert_time |
- 响应参数说明;
| 参数名称 | 数据类型 | 说明 |
|---|---|---|
| error_code | Int | 返回响应码 0: 成功 -1: 客户端错误 -2: 服务端错误 |
| message | String | 返回响应信息 |
| data | Object或Int | 告警统计数据 |
表. 请求参数
- 响应示例。
| 项目 | 详情 |
|---|---|
| 报文格式 | JSON |
| 报文内容 | { "error_code": 0, "message": "查询告警成功!", "data": { "2025-07-22": { "1": 110,// 未处理告警数 "2": 6,// 已确认告警数 "3": 10,// 误报告警数 } } } |
真诚点赞 诚不我欺
回复