VSS (视频监控服务) 服务对接开发接口文档
- 版本: v1.2.0
- 发布日期: 2026-05-28
- 对接说明: 本文档描述第三方系统如何对接与调用 VSS (视频监控服务 / Video Surveillance Service) 系统接口,以获取监控概览、管理与操作后台服务进程、配置视频源及关联的分发服务、管理设备及码流属性、配置设备合并、以及调用流媒体播放和球机/回放控制等。
- 适用范围: 适用于需要集成 VSS 监控资源管理能力的大视景数字孪生平台 (DTS) 开发人员或第三方集成商。
1. 前置说明
1.1 服务简介
VSS 是大视景科技自主研发的视频监控流服务系统,核心职责是接入各类视频源(NVR、网络摄像机、平台 SDK、本地/网盘视频文件等)、管理其子设备通道、分发音视频流并提供实时播放和控制服务。
1.2 服务节点与端口
- VSS 业务 API: 默认为
http://<VSS_Host>:38090(示例:http://192.168.100.37:38090) - VSS 写入服务节点: 默认为
http://<VSS_Host>:9105 - 默认服务节点 GUID:
96EA-EF2647F2-64069F30-3E467FE12038
1.3 认证与鉴权方式
本 API 统一采用 Authorization 请求头进行身份验证。客户端在调用需要权限的接口时,应在 HTTP 请求头中携带合法的 Bearer Token。
Authorization: Bearer <Your-VSS-Token>
[!IMPORTANT]
- 本服务对于添加 Onvif、流媒体、本地/网盘视频文件等功能,底层会对相关敏感数据(如摄像机密码、网盘连接密码)进行加密存储,接口的请求或响应中均不得以明文传输密码。
- 部分写操作接口可能涉及后台异步服务的重新启动,请勿在高并发流量下频繁调用写接口。
2. 公共参数
2.1 全局请求头 (Headers)
| 请求头名称 |
说明 |
示例值 |
是否必填 |
| Content-Type |
请求体格式说明 |
application/json |
是 |
| Authorization |
接口认证 Token |
Bearer eyJhbGciOiJIUzI1NiIsIn... |
是 |
2.2 公共响应格式
除数据导出等特殊接口外,本服务接口的标准返回体如下:
{
"code": 0,
"message": "操作成功",
"data": {}
}
- code: 返回状态码,
0 表示成功,非 0 表示发生异常或失败。常见错误码:2500001 参数校验失败,2500000 未知错误。 - message: 友好提示消息。
- data: 具体业务返回数据,可以是对象、数组或分页数据结构。
注意: 不同部署环境中该字段名称可能为 data 或 info,对接时请优先尝试 data 字段,若为空则回退读取 info 字段。
2.3 分页公共响应结构 (PageVO)
在分页查询接口中,data 字段固定为以下分页包装格式:
{
"currentPage": 1,
"pageSize": 10,
"totalPage": 5,
"totalRow": 48,
"list": []
}
| 字段名 |
类型 |
说明 |
currentPage |
Long |
当前页码 |
pageSize |
Long |
每页返回的记录数上限 |
totalPage |
Long |
总页数 |
totalRow |
Long |
满足查询条件的总记录数 |
list |
Array |
实际数据实体列表 |
3. 接口列表 (按功能模块分类)
3.1 身份认证与权限管理
3.1.1 用户登录
- 接口名称: 用户登录
- 请求方式:
POST - URL:
/openApi/internal/login - Host:
http://192.168.100.38:28080(IAM 统一认证网关) - 请求参数说明 (LoginDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
account |
String |
是 |
登录账号/用户名 |
admin |
password |
String |
是 |
登录密码 |
123 |
- 响应状态:
200 OK - 响应参数说明 (data 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
code |
Integer |
状态码,0表示成功 |
0 |
message |
String |
响应消息提示 |
登录成功 |
data |
String |
身份凭证 Bearer Token 字符串 |
Bearer eyJhbGciOiJIUzI1NiIsIn... |
- 请求示例:
{
"account": "admin",
"password": "123"
}
- 响应示例:
{
"code": 0,
"message": "登录成功",
"data": "Bearer eyJhbGciOiJIUzI1NiIsIn..."
}
3.1.2 退出登录
| 参数名 |
类型 |
参数说明 |
示例值 |
code |
Integer |
状态码,0表示成功 |
0 |
message |
String |
响应消息提示 |
注销成功 |
3.1.3 获取当前用户信息
- 接口名称: 获取当前用户信息
- 请求方式:
GET - URL:
/home/web_user - Host:
http://192.168.100.37:38090 - 接口描述: 获取当前已登录账户的详细基本信息(包含用户名、昵称、角色等属性)。
- 请求参数说明: 无 (从请求头中的 Authorization Token 自动解析)
- 请求示例:
GET /home/web_user
- 响应状态:
200 OK - 响应参数说明 (data 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
username |
String |
账户用户名 |
admin |
nickName |
String |
用户昵称 |
系统管理员 |
role |
String |
权限角色代码 |
admin |
- 响应示例:
{
"code": 0,
"message": "获取成功",
"data": {
"username": "admin",
"nickName": "系统管理员",
"role": "admin"
}
}
3.2 服务节点管理模块
3.2.1 获取服务节点列表
| 参数名 |
类型 |
参数说明 |
示例值 |
[] |
Array |
服务节点数组 |
- |
[].guid |
String |
服务节点唯一标识 GUID |
96EA-EF2647F2-64069F30-3E467FE12038 |
[].name |
String |
节点显示名称 |
默认服务节点 |
[].uri |
String |
服务网关的 HTTP 访问地址 (格式: http://ip:port) |
http://192.168.100.235:9105 |
- 响应示例:
{
"code": 0,
"message": "获取节点列表成功",
"data": [
{
"guid": "96EA-EF2647F2-64069F30-3E467FE12038",
"name": "默认服务节点",
"uri": "http://192.168.100.235:9105"
}
]
}
3.2.2 新增服务节点
- 接口名称: 新增服务节点
- 请求方式:
POST - URL:
/serviceNode/saveNode - Host:
http://192.168.100.37:38090 - 接口描述: 注册并新增一台视频网关服务节点。
- 请求参数说明 (WatchdogServiceNode对象数组):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
待新增服务节点列表 |
- |
[].name |
String |
是 |
节点显示名称 |
新服务节点-02 |
[].uri |
String |
是 |
服务网关的 HTTP 访问地址 (格式: http://ip:port) |
http://192.168.100.236:9105 |
- 响应状态:
200 OK - 响应参数说明 (data 内部字段): 成功返回空值或操作提示。
- 请求示例:
[
{
"name": "新服务节点-02",
"uri": "http://192.168.100.236:9105"
}
]
- 响应示例:
{
"code": 0,
"message": "服务节点保存成功",
"data": null
}
3.2.3 修改服务节点
- 接口名称: 修改服务节点
- 请求方式:
POST - URL:
/serviceNode/updateNode - Host:
http://192.168.100.37:38090 - 接口描述: 修改现有服务节点的信息。
- 请求参数说明 (WatchdogServiceNode对象数组):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
待修改服务节点列表 |
- |
[].guid |
String |
是 |
待修改服务节点的唯一 GUID |
96EA-EF2647F2-64069F30-3E467FE12039 |
[].name |
String |
是 |
节点名称 |
新服务节点-02-已修改 |
[].uri |
String |
是 |
服务网关的 HTTP 访问地址 (格式: http://ip:port) |
http://192.168.100.236:9105 |
- 响应状态:
200 OK - 请求示例:
[
{
"guid": "96EA-EF2647F2-64069F30-3E467FE12039",
"name": "新服务节点-02-已修改",
"uri": "http://192.168.100.236:9105"
}
]
- 响应示例:
{
"code": 0,
"message": "服务节点修改成功",
"data": null
}
`
3.2.4 删除服务节点
- 接口名称: 删除服务节点
- 请求方式:
POST - URL:
/serviceNode/deleteNode - Host:
http://192.168.100.37:38090 - 接口描述: 注销删除指定的服务节点。
- 输入参数 (Query 参数):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
guids |
String |
是 |
待删除的节点 GUID 列表,多个用英文逗号拼接 |
96EA-EF2647F2-64069F30-3E467FE12039 |
- 响应状态:
200 OK - 请求示例:
POST /serviceNode/deleteNode?guids=96EA-EF2647F2-64069F30-3E467FE12039
- 响应示例:
{
"code": 0,
"message": "服务节点删除成功",
"data": null
}
3.3 首页模块
3.3.1 获取进程执行记录
- 接口名称: 获取运行进程执行记录
- 请求方式:
POST - URL:
/home/findExecuteRecord - Host:
http://192.168.100.37:38090 - 请求参数说明 (GetExecuteRecordDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
date |
String |
是 |
查询目标日期(格式:yyyy-MM-dd) |
2026-05-28 |
nodeGuid |
String |
是 |
VSS 服务节点唯一编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
statusType |
String |
否 |
运行状态类型过滤 |
running |
- 响应状态:
200 OK - 响应参数说明 (data 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
[] |
Array |
运行执行记录列表 |
- |
[].guid |
Long |
执行记录唯一编号 |
1298481 |
[].nodeGuid |
String |
所属节点编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
[].processGuid |
String |
关联进程编号 |
FD296E9D-47C2-4B9B-BFC6-78739C351AFF |
[].instanceId |
String |
运行进程实例 ID |
proc_inst_901 |
[].statusType |
String |
运行状态类型 |
running |
[].executeRecord |
Object |
具体执行明细上下文键值对 |
{} |
[].addTime |
String |
记录添加时间 |
2026-05-28T09:00:00.000Z |
- 请求示例:
{
"date": "2026-05-28",
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"statusType": "running"
}
- 响应示例:
{
"code": 0,
"message": "获取执行记录成功",
"data": [
{
"guid": 1298481,
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"processGuid": "FD296E9D-47C2-4B9B-BFC6-78739C351AFF",
"instanceId": "proc_inst_901",
"statusType": "running",
"executeRecord": {},
"addTime": "2026-05-28T09:00:00.000Z"
}
]
}
3.3.2 获取媒体服务折线图数据
- 接口名称: 获取 MediaService 监控折线图数据
- 请求方式:
POST - URL:
/home/findMediaServiceChart - Host:
http://192.168.100.37:38090 - 请求参数说明 (GetMediaServiceChartDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
date |
String |
是 |
查询目标日期(格式:yyyy-MM-dd) |
2026-05-28 |
interval |
Integer |
否 |
采样聚合时间间隔(单位:分钟),默认5分钟 |
5 |
nodeGuid |
String |
是 |
VSS 服务节点唯一编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
- 请求示例:
{
"date": "2026-05-28",
"interval": 5,
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038"
}
- 响应状态:
200 OK - 响应示例:
{
"code": 0,
"message": "获取折线图数据成功",
"data": [
{
"guid": 1298482,
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"processGuid": "FD296E9D-47C2-4B9B-BFC6-78739C351AFF",
"instanceId": "proc_inst_chart_01",
"statusType": "active",
"executeRecord": {
"cpuUsage": "12.5%",
"memoryUsage": "256MB",
"streamRequestCount": 15,
"streamDistributeCount": 42
},
"addTime": "2026-05-28T09:05:00.000Z"
}
]
}
3.4 服务管理模块
3.4.1 获取服务列表
- 接口名称: 获取服务节点下进程服务列表
- 请求方式:
POST - URL:
/process/findProcessList - Host:
http://192.168.100.37:38090 - 请求参数说明 (GetProcessListDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
nodeGuid |
String |
是 |
服务节点唯一编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
softwareGuid |
String |
否 |
服务软件 GUID |
soft-zlm-01 |
usage |
Integer |
否 |
程序用途,0x00普通程序 0x01服务 0x02工具 0x10分组 0x100必备 |
1 |
- 请求示例:
{
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"softwareGuid": "soft-zlm-01",
"usage": 1
}
- 响应状态:
200 OK - 响应示例:
{
"code": 0,
"message": "获取服务列表成功",
"data": [
{
"guid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D",
"name": "ZLM流媒体服务网关",
"status": 1,
"usage": 1,
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038"
}
]
}
3.4.2 添加服务
- 接口名称: 添加服务进程配置
- 请求方式:
POST - URL:
/process/saveProcess - Host:
http://192.168.100.37:38090 - 请求参数说明 (WatchdogProcess对象):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
name |
String |
是 |
服务进程名称 |
ZLM流媒体转发测试 |
nodeGuid |
String |
是 |
服务节点唯一 GUID |
96EA-EF2647F2-64069F30-3E467FE12038 |
softwareGuid |
String |
是 |
配置模块或应用模板编号 |
soft-zlm-01 |
startTypes |
Integer |
是 |
启动模式与属性控制码(如0x01后台、0x02自启、0x04保活等) |
6 |
instanceNums |
Integer |
否 |
服务实例数目,默认为 1 |
1 |
keepAliveDelaySeconds |
Integer |
否 |
崩溃重启保活延迟秒数,默认 3 |
3 |
options |
String |
否 |
程序可选启动命令行参数参数 |
--port 8080 |
tag |
String |
否 |
进程分组 Tag 标识 |
zlm-stream |
- 响应状态:
200 OK - 响应参数说明:
data 返回新添加服务的 guid 标识。 - 请求示例:
{
"name": "ZLM流媒体转发测试",
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"softwareGuid": "soft-zlm-01",
"startTypes": 6,
"instanceNums": 1,
"keepAliveDelaySeconds": 3,
"options": "--port 8080",
"tag": "zlm-stream"
}
- 响应示例:
{
"code": 0,
"message": "服务添加成功",
"data": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D"
}
3.4.3 编辑服务
- 接口名称: 编辑修改服务配置
- 请求方式:
POST - URL:
/process/updateProcess - Host:
http://192.168.100.37:38090 - 请求参数说明 (WatchdogProcess对象): 包含字段与
添加服务 接口一致,但必须提供服务的 guid 标识。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
guid |
String |
是 |
服务进程唯一编号 GUID |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
name |
String |
是 |
服务进程名称 |
ZLM流媒体转发测试-修改 |
nodeGuid |
String |
是 |
服务节点唯一 GUID |
96EA-EF2647F2-64069F30-3E467FE12038 |
startTypes |
Integer |
是 |
启动模式与属性控制码 |
6 |
options |
String |
否 |
程序可选启动参数 |
--port 8081 |
- 请求示例:
{
"guid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D",
"name": "ZLM流媒体转发测试-修改",
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"startTypes": 6,
"options": "--port 8081"
}
- 响应状态:
200 OK - 响应示例:
{
"code": 0,
"message": "服务编辑修改成功",
"data": null
}
3.4.4 删除服务
- 接口名称: 删除服务进程
- 请求方式:
POST - URL:
/process/deleteProcess - Host:
http://192.168.100.37:38090 - 输入参数 (Query 参数):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
processGuid |
String |
是 |
待删除的服务进程唯一 GUID |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
- 响应状态:
200 OK - 请求示例:
POST /process/deleteProcess?processGuid=5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D
- 响应示例:
{
"code": 0,
"message": "服务删除成功",
"data": null
}
3.4.5 服务设置/进程控制
- 接口名称: 服务/进程配置与操作设置
- 请求方式:
POST - URL:
/process/processSetup - Host:
http://192.168.100.37:38090 - 请求参数说明: 传入
ProcessSetupDTO 数组。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
服务配置修改或控制参数数组 |
- |
[].guid |
String |
否 |
待操作进程编号。新增操作不传,修改/控制操作必须传入 |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
[].contextGuid |
String |
是 |
服务节点唯一编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
[].configGuid |
String |
否 |
所属配置模板编号 |
config-zlm-template |
[].data |
Object |
否 |
控制载荷数据(包含操作指令如 { "action": "restart" }) |
{ "action": "start" } |
- 请求示例:
[
{
"guid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D",
"contextGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"configGuid": "config-zlm-template",
"data": {
"action": "restart"
}
}
]
- 响应状态:
200 OK - 响应示例:
{
"code": 0,
"message": "服务设置已成功下发并执行",
"data": null
}
3.5 视频源管理模块
3.5.1 分页获取视频源列表
- 接口名称: 分页获取视频源列表
- 请求方式:
POST - URL:
/mediaSource/findMediaSourcePage - Host:
http://192.168.100.37:38090 - 请求参数说明 (GetMediaSourcePageDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
currentPage |
Long |
是 |
当前页码,默认 1 |
1 |
pageSize |
Long |
是 |
每页条数上限,默认 10 |
10 |
nodeGuid |
String |
是 |
服务节点唯一编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
name |
String |
否 |
视频源名称关键字模糊过滤 |
海康 |
driver |
String |
否 |
接入驱动协议过滤(如 hk、onvif、gbt28181、local、netdisk) |
onvif |
sortColumn |
Integer |
否 |
排序字段:0 服务名称,1 设备数量,2 创建时间 |
2 |
sortOrder |
Integer |
否 |
排序顺序:0 升序,1 降序 |
1 |
- 请求示例:
{
"currentPage": 1,
"pageSize": 10,
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038",
"driver": "onvif"
}
- 响应状态:
200 OK - 响应参数说明 (list[] 内部 MediaSourceBrief对象 关键字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
guid |
String |
视频源唯一标识 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
name |
String |
视频源名称 |
海康NVR接入 |
driver |
String |
驱动类型(如 hk、onvif、network 等) |
onvif |
uri |
String |
视频源连接 URI(密码部分已加密/脱敏) |
?combination=true |
deviceCount |
Integer |
该视频源下属关联的子设备通道总数 |
24 |
processCount |
Integer |
该视频源开启的后台拉流分发进程数 |
2 |
status |
Integer |
运行状态 |
1 |
context |
String |
所属节点编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
extendData |
String |
驱动参数配置信息 |
&accessMode=combination |
addTime |
String |
视频源创建时间 |
2026-05-28T09:10:00.000Z |
- 响应示例:
{
"code": 0,
"message": "获取视频源列表成功",
"data": {
"currentPage": 1,
"pageSize": 10,
"totalPage": 1,
"totalRow": 1,
"list": [
{
"guid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"name": "自然语言测试_ONVIF_192_168_100_80",
"driver": "onvif",
"uri": "?combination=true",
"deviceCount": 2,
"processCount": 1,
"status": 1,
"context": "96EA-EF2647F2-64069F30-3E467FE12038",
"extendData": "&accessMode=combination",
"addTime": "2026-05-28T09:10:00.000Z",
"updateTime": "2026-05-28T09:12:00.000Z"
}
]
}
}
3.5.2 添加/保存视频源
- 接口名称: 保存添加视频源配置
- 请求方式:
POST - URL:
/mediaSource/saveMediaSource - Host:
http://192.168.100.37:38090 - 请求参数说明: 传入
MediaSourceBrief对象 数组。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
视频源对象列表 |
- |
[].guid |
String |
是 |
视频源唯一标识 GUID(可由客户端生成 UUID) |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
[].name |
String |
是 |
视频源名称 |
本地视频源 |
[].driver |
String |
是 |
视频源驱动类别,如 local, netdisk, onvif, gbt28181, hk |
local |
[].uri |
String |
是 |
视频源路径或连接连接串(涉及密码参数建议提前加密) |
/www/wwwroot |
[].context |
String |
是 |
服务节点唯一 GUID |
96EA-EF2647F2-64069F30-3E467FE12038 |
[].extendData |
String |
否 |
自定义拉流或协议扩展控制串 |
freeKeepInterval=-1&accessMode=direct |
[].sourceTag |
String |
是 |
源标记类型(如 local, onvif, network, gbt28181) |
local |
[].resourceType |
Integer |
是 |
资源类型,一般填 1 |
1 |
- 响应状态:
200 OK - 请求示例:
[
{
"guid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"name": "自然语言测试_本地视频文件夹_www_wwwroot",
"driver": "local",
"uri": "/www/wwwroot",
"context": "96EA-EF2647F2-64069F30-3E467FE12038",
"extendData": "freeKeepInterval=-1&accessMode=direct",
"sourceTag": "local",
"resourceType": 1
}
]
- 响应示例:
{
"code": 0,
"message": "视频源保存成功",
"data": null
}
3.5.3 视频源添加分发服务
- 接口名称: 为视频源添加/绑定流分发服务
- 请求方式:
POST - URL:
/mediaSource/saveMediaService - Host:
http://192.168.100.37:38090 - 请求参数说明 (SaveMediaServiceDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
mediaSourceGuid |
String |
是 |
关联的视频源唯一 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
nodeGuid |
String |
是 |
分发目标服务节点的唯一 GUID |
96EA-EF2647F2-64069F30-3E467FE12038 |
- 响应状态:
200 OK - 响应参数说明:
data 返回新创建的分发任务进程 ID 字符串。 - 请求示例:
{
"mediaSourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"nodeGuid": "96EA-EF2647F2-64069F30-3E467FE12038"
}
- 响应示例:
{
"code": 0,
"message": "视频源分发服务添加成功",
"data": "proc-dist-zlm-01"
}
3.5.4 删除视频源
- 接口名称: 批量删除视频源
- 请求方式:
POST - URL:
/mediaSource/deleteMediaSource - Host:
http://192.168.100.37:38090 - 输入参数 (Query 参数):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
guids |
String |
是 |
待删除的视频源 GUID 列表,多个使用英文逗号拼接 |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F,ADBCE8A3-64AC-EB42-BD50-0F7C3808FDC7 |
- 响应状态:
200 OK - 请求示例:
POST /mediaSource/deleteMediaSource?guids=0362659D-81CE-4A0D-A5FA-825C8D92FF4F
- 响应示例:
{
"code": 0,
"message": "视频源已成功删除,关联的发现任务已完全注销",
"data": null
}
3.6 设备管理模块
3.6.1 分页获取设备列表
- 接口名称: 分页获取设备通道列表
- 请求方式:
POST - URL:
/mediaDevice/findMediaDevicePage - Host:
http://192.168.100.37:38090 - 请求参数说明 (GetMediaDevicePageDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
currentPage |
Long |
是 |
当前页码 |
1 |
pageSize |
Long |
是 |
每页条数上限 |
10 |
mediaSourceGuid |
String |
否 |
限制仅查询特定视频源 GUID 下挂载的设备 |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
name |
String |
否 |
设备名称关键字过滤 |
大门 |
type |
Integer |
否 |
设备摄像机类型:0 未知,1 枪机,2 球机,3 鱼眼,4 其他 |
1 |
status |
Integer |
否 |
设备运行状态:0 未知,1 在线,65536 离线,131072 锁定,262144 忙碌,524288 服务不可用,1048576 不存在 |
1 |
synchronizerGroupGuid |
String |
否 |
分组 Tag ID |
group-twin-01 |
sortColumn |
Integer |
否 |
排序字段:0 出厂编号,1 设备名称,2 快照,3 设备资源标识,4 默认名,5 更新时间 |
5 |
sortOrder |
Integer |
否 |
排序顺序:0 升序,1 降序 |
1 |
| 参数名 |
类型 |
参数说明 |
示例值 |
guid |
String |
设备全局唯一编号 |
dev_onvif_80_01 |
viewName |
String |
人工编辑的设备展示名称 |
北京大门入口球机 |
name |
String |
设备原始获取名(系统拉取,只读) |
dome_camera_ch1 |
deviceType |
Integer |
设备类型(如 1 枪机 2 球机 3 鱼眼) |
2 |
uri |
String |
播放拉流寻址地址或控制串 |
192.168.100.80?username=admin&port=80 |
status |
Integer |
状态编码 |
1 |
sourceGuid |
String |
关联视频源 Guid |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
extendData |
String |
扩展快照和分组等参数 |
&snapshotPath=/images/snap1.jpg |
addTime |
String |
记录添加时间 |
2026-05-28T09:12:00.000Z |
- 响应示例:
{
"code": 0,
"message": "获取设备列表成功",
"data": {
"currentPage": 1,
"pageSize": 10,
"totalPage": 1,
"totalRow": 1,
"list": [
{
"guid": "dev_onvif_80_01",
"viewName": "北京大门入口球机(大门入口球机)",
"name": "dome_camera_ch1",
"deviceType": 2,
"uri": "192.168.100.80?username=admin&port=80",
"status": 1,
"sourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"extendData": "NetworkState=1&ClientDeviceTag=client-uuid-01",
"addTime": "2026-05-28T09:12:00.000Z"
}
]
}
}
3.6.2 添加/修改设备
- 接口名称: 添加或修改单个通道设备
- 请求方式:
POST - URL:
/mediaDevice/updateMediaDevice - Host:
http://192.168.100.37:38090 - 请求参数说明 (UpdateMediaDeviceDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
guid |
String |
否 |
设备全局编号 GUID。新增设备时不传(系统自动生成),修改设备时必传 |
dev_onvif_80_01 |
viewName |
String |
是 |
设备自定义展示名称 |
大门外枪机-01 |
deviceType |
Integer |
是 |
设备类型:0 未知,1 枪机,2 球机,3 鱼眼,4 其他 |
1 |
deviceModel |
String |
否 |
摄像机物理硬件型号 |
DS-2CD2T26FD |
serialNumber |
String |
否 |
设备的物理唯一出厂序列号 |
SN-HK988120381 |
factoryGuid |
String |
否 |
出厂编号/设备ID |
FAC-DEV-109 |
spacePosition |
String |
否 |
设备地理空间位置描述或三维坐标值 |
116.397,39.908 |
extendData |
String |
否 |
额外扩展属性(包括快照或分组,如 &snapshotPath=/snap/pic.jpg&SynchronizerGroupGuid=group01) |
&snapshotPath=/snaps/dev_01.jpg |
- 响应状态:
200 OK - 请求示例 (新增设备):
{
"viewName": "办公区通道摄像机",
"deviceType": 1,
"deviceModel": "DH-IPC-HFW1230S",
"serialNumber": "SN-DH88901238",
"spacePosition": "116.402,39.912",
"extendData": "&SynchronizerGroupGuid=group-twin-01"
}
- 响应示例:
{
"code": 0,
"message": "设备保存成功",
"data": null
}
3.6.3 批量更新设备信息
- 接口名称: 批量修改更新设备属性
- 请求方式:
POST - URL:
/mediaDevice/batchUpdateMediaDevice - Host:
http://192.168.100.37:38090 - 请求参数说明: 传入
BatchUpdateMediaDeviceDTO 数组。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
待批量更新的设备实体列表 |
- |
[].guid |
String |
是 |
设备唯一编号 GUID |
dev_onvif_80_01 |
[].factoryGuid |
String |
是 |
出厂唯一设备编号或通道标识 |
FAC-DEV-109 |
[].viewName |
String |
否 |
修改后的摄像机设备显示名称 |
大门外球机-修改 |
[].deviceType |
Integer |
否 |
修改后的摄像机形态类别,1 枪机,2 球机 |
2 |
[].sourceGuid |
String |
是 |
设备所属视频源 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
[].extendData |
String |
否 |
更新快照与分组信息。格式:&snapshotPath=<path>&SynchronizerGroupGuid=<id> |
&snapshotPath=/images/snap1.jpg |
- 响应状态:
200 OK - 请求示例:
[
{
"guid": "dev_onvif_80_01",
"factoryGuid": "FAC-DEV-109",
"viewName": "大门外球机-修改",
"deviceType": 2,
"sourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"extendData": "NetworkState=1&ClientDeviceTag=client-uuid-01"
}
]
- 响应示例:
{
"code": 0,
"message": "批量更新设备属性成功",
"data": null
}
3.6.4 批量删除设备
- 接口名称: 批量删除设备
- 请求方式:
POST - URL:
/mediaDevice/deleteMediaDevices - Host:
http://192.168.100.37:38090 - 输入参数 (Query 参数):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
guids |
String |
是 |
待删除的设备 GUID 列表,多个使用英文逗号分隔 |
dev_onvif_80_01,dev_hk_99_02 |
- 响应状态:
200 OK - 请求示例:
POST /mediaDevice/deleteMediaDevices?guids=dev_onvif_80_01,dev_hk_99_02
- 响应示例:
{
"code": 0,
"message": "所选设备已批量删除成功",
"data": null
}
3.6.5 批量更新设备快照 (获取/配置快照图像)
- 接口名称: 批量更新配置设备快照图像地址
- 请求方式:
POST - URL:
/mediaDevice/batchUpdateDeviceSnapshot - Host:
http://192.168.100.37:38090 - 请求参数说明: 传入
BatchUpdateDeviceSnapshotDTO 数组。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
待更新快照的设备及快照地址列表 |
- |
[].deviceGuid |
String |
是 |
设备唯一编号 GUID |
dev_onvif_80_01 |
[].snapshotUri |
String |
是 |
新获取的快照图片访问 URL/URI 路径 |
/snapshots/snap_80_01.jpg |
- 响应状态:
200 OK - 请求示例:
[
{
"deviceGuid": "dev_onvif_80_01",
"snapshotUri": "/snapshots/snap_80_01.jpg"
}
]
- 响应示例:
{
"code": 0,
"message": "批量更新设备快照成功",
"data": null
}
3.6.6 批量更新设备状态 (检测状态/码流在线情况)
- 接口名称: 批量更新并反馈设备运行与在线状态
- 请求方式:
POST - URL:
/mediaDevice/batchUpdateDeviceStatus - Host:
http://192.168.100.37:38090 - 请求参数说明 (BatchUpdateDeviceStatusDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sourceGuid |
String |
是 |
所属视频源唯一 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
deviceInfos |
Array |
是 |
设备在线状态反馈列表 |
- |
deviceInfos[].deviceGuid |
String |
是 |
设备唯一编号 GUID |
dev_onvif_80_01 |
deviceInfos[].state |
Integer |
是 |
检测后上报的设备状态类型(0:离线,1:在线) |
1 |
- 响应状态:
200 OK - 请求示例:
{
"sourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"deviceInfos": [
{
"deviceGuid": "dev_onvif_80_01",
"state": 1
}
]
}
- 响应示例:
{
"code": 0,
"message": "状态检测及更新更新成功",
"data": null
}
3.6.7 获取设备媒体码流信息
- 接口名称: 获取单台设备的媒体流通道属性
- 请求方式:
POST - URL:
/mediaDevice/findMediaStreamBrief - Host:
http://192.168.100.37:38090 - 输入参数 (Query 参数):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
guid |
String |
是 |
设备唯一编号 GUID |
dev_onvif_80_01 |
- 响应状态:
200 OK - 响应参数说明 (data 内部 MediaStreamBrief对象 关键字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
[] |
Array |
媒体码流记录列表 |
- |
[].guid |
String |
码流条目唯一 ID |
stream_01_main |
[].deviceGuid |
String |
所属设备唯一 GUID |
dev_onvif_80_01 |
[].sourceGuid |
String |
视频源 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
[].name |
String |
码流通道显示名称(如主码流、子码流) |
主码流 |
[].uri |
String |
拉流取流 RTSP/RTMP 播放地址 |
rtsp://192.168.100.80:554/h264/ch1/main/av_stream |
[].streamHint |
Integer |
码流级别:0未知 1主码流 2辅码流 3三码流 |
1 |
[].videoCodecId |
Integer |
视频编码 ID(如 28:H.264,174:H.265) |
28 |
[].videoWidth |
Integer |
视频像素宽度 |
1920 |
[].videoHeight |
Integer |
视频像素高度 |
1080 |
[].videoFrameRate |
Long |
视频推流帧率上限 |
25 |
[].playType |
Integer |
播放类型:1 实时流,2 回放流 |
1 |
[].audioCodecId |
Integer |
音频编码 ID,0表示无音频轨 |
0 |
- 请求示例:
POST /mediaDevice/findMediaStreamBrief?guid=dev_onvif_80_01
- 响应示例:
{
"code": 0,
"message": "获取媒体流信息成功",
"data": [
{
"guid": "stream_01_main",
"deviceGuid": "dev_onvif_80_01",
"sourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"name": "主码流",
"uri": "rtsp://192.168.100.80:554/h264/ch1/main/av_stream",
"streamHint": 1,
"videoCodecId": 28,
"videoWidth": 1920,
"videoHeight": 1080,
"videoFrameRate": 25,
"playType": 1,
"audioCodecId": 0
}
]
}
3.6.8 批量编辑设备媒体码流信息
- 接口名称: 批量修改更新设备挂载的码流属性
- 请求方式:
POST - URL:
/mediaDevice/batchUpdateMediaStreamBrief - Host:
http://192.168.100.37:38090 - 请求参数说明 (BatchUpdateMediaStreamBriefDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sourceGuid |
String |
是 |
设备所属视频源唯一 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
deviceGuids |
Array |
是 |
需要批量编辑更新码流的一组设备 GUID 字符串列表 |
["dev_onvif_80_01"] |
mediaStreamBriefInfos |
Array |
是 |
替换覆盖后的最新媒体码流具体参数配置(数组内为 MediaStreamBrief对象) |
- |
- 响应状态:
200 OK - 请求示例:
{
"sourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"deviceGuids": [
"dev_onvif_80_01"
],
"mediaStreamBriefInfos": [
{
"name": "主码流-修改",
"streamHint": 1,
"uri": "rtsp://192.168.100.80:554/modified_stream",
"videoCodecId": 174,
"videoWidth": 1920,
"videoHeight": 1080,
"videoFrameRate": 30,
"playType": 1
}
]
}
- 响应示例:
{
"code": 0,
"message": "批量编辑码流成功",
"data": null
}
3.7 设备合并模块
3.7.1 分页获取组合设备列表
- 接口名称: 分页获取已合并的组合设备列表
- 请求方式:
POST - URL:
/mediaCombinationDevice/findPage - Host:
http://192.168.100.37:38090 - 请求参数说明 (GetMediaCombinationDevicePageDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
currentPage |
Long |
是 |
当前页码 |
1 |
pageSize |
Long |
是 |
每页条数上限 |
10 |
nodeGuid |
String |
是 |
服务节点唯一编号 |
96EA-EF2647F2-64069F30-3E467FE12038 |
mediaSourceGuid |
String |
否 |
视频源过滤 |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
name |
String |
否 |
组合设备名称模糊检索 |
环岛监控 |
type |
Integer |
否 |
设备类型过滤 |
1 |
| 参数名 |
类型 |
参数说明 |
示例值 |
guid |
String |
组合设备(合并后)主实体 GUID |
comb_dev_001 |
viewName |
String |
合并后的组合设备显示名称 |
环岛公路十字路口综合监控 |
subMediaDeviceBriefs |
Array |
合并到该主实体下的辅设备通道集合 |
- |
subMediaDeviceBriefs[].guid |
String |
辅设备唯一标识 |
dev_hk_99_02 |
subMediaDeviceBriefs[].viewName |
String |
辅设备通道名称 |
南门向东枪机 |
- 响应示例:
{
"code": 0,
"message": "获取组合设备成功",
"data": {
"currentPage": 1,
"pageSize": 10,
"totalPage": 1,
"totalRow": 1,
"list": [
{
"guid": "comb_dev_001",
"viewName": "环岛公路十字路口综合监控",
"deviceType": 1,
"sourceGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"subMediaDeviceBriefs": [
{
"guid": "dev_hk_99_02",
"viewName": "南门向东枪机",
"status": 1,
"sourceGuid": "ADBCE8A3-64AC-EB42-BD50-0F7C3808FDC7"
}
]
}
]
}
}
3.7.2 自动合并设备操作
- 接口名称: 自动规则匹配合并设备
- 请求方式:
POST - URL:
/mediaCombinationDevice/autoCombination - Host:
http://192.168.100.37:38090 - 请求参数说明 (AutoCombinationDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
mainGuid |
String |
是 |
用于作为“合并主实体”基准的视频源 GUID |
0362659D-81CE-4A0D-A5FA-825C8D92FF4F |
subGuids |
Array |
是 |
参与对比并合并的子视频源 GUID 数组 |
["ADBCE8A3-64AC-EB42-BD50-0F7C3808FDC7"] |
- 请求示例:
{
"mainGuid": "0362659D-81CE-4A0D-A5FA-825C8D92FF4F",
"subGuids": [
"ADBCE8A3-64AC-EB42-BD50-0F7C3808FDC7"
]
}
- 响应状态:
200 OK - 响应示例:
{
"code": 0,
"message": "自动合并分析与写入成功",
"data": null
}
3.7.3 手动批量添加组合设备
- 接口名称: 手动绑定并添加组合设备
- 请求方式:
POST - URL:
/mediaCombinationDevice/batchAdd - Host:
http://192.168.100.37:38090 - 请求参数说明: 传入
AddMediaCombinationDeviceDTO 数组。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
设备绑定关联关系列表 |
- |
[].mainGuid |
String |
是 |
主设备全局编号 GUID |
comb_dev_001 |
[].subGuids |
Array |
是 |
要强行作为子设备合并挂载的摄像机 GUID 数组 |
["dev_hk_99_02"] |
- 响应状态:
200 OK - 请求示例:
[
{
"mainGuid": "comb_dev_001",
"subGuids": [
"dev_hk_99_02"
]
}
]
- 响应示例:
{
"code": 0,
"message": "组合绑定配置保存成功",
"data": null
}
3.7.4 批量解除组合设备
- 接口名称: 解除合并设备通道关系
- 请求方式:
POST - URL:
/mediaCombinationDevice/batchRescission - Host:
http://192.168.100.37:38090 - 请求参数说明: 传入需要解除组合的主设备 GUID 数组。
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
[] |
Array |
是 |
待解绑释放的主组合设备 GUID 数组 |
["comb_dev_001"] |
3.8 视频播放与控制模块
3.8.1 创建播放会话
- 接口名称: 创建播放会话 (createSession)
- 请求方式:
POST - URL:
/scriptFunction/StdMedia/createSession - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 在标准媒体服务上为当前播放客户端建立与该服务节点的取流交互会话,并返回流媒体网络通信及取流参数配置。
- 请求参数说明 (CreateSessionDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格或会话 ID,建议由客户端生成 UUID |
c76e2730-8a58-47e1-8888-de882b3d30b2 |
- 响应状态:
200 OK - 响应参数说明 (ReturnValue 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
streamServer |
Object |
流媒体服务器配置信息 |
- |
streamServer.protocols |
Array |
支持的协议列表 |
["ws"] |
streamServer.address |
String |
流媒体服务 IP 地址 |
192.168.100.47 |
streamServer.streamPort |
Integer |
媒体取流服务网络端口 |
9305 |
- 请求示例:
{
"sessionID": "c76e2730-8a58-47e1-8888-de882b3d30b2"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": {
"streamServer": {
"protocols": [
"ws"
],
"address": "192.168.100.47",
"streamPort": 9305
}
}
}
3.8.2 销毁播放会话
- 接口名称: 销毁播放会话 (destroySession)
- 请求方式:
POST - URL:
/scriptFunction/StdMedia/destroySession - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 销毁指定的取流会话,断开其下所有视频通道的流连接并释放流媒体资源。
- 请求参数说明 (DestroySessionDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格或会话 ID |
c76e2730-8a58-47e1-8888-de882b3d30b2 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "c76e2730-8a58-47e1-8888-de882b3d30b2"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.3 获取会话对应的视频源列表
- 接口名称: 获取会话对应的视频源列表 (getMediaSourceList)
- 请求方式:
POST - URL:
/scriptFunction/StdMedia/getMediaSourceList - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 获取与该会话连通的所有激活的视频源信息。
- 请求参数说明 (GetSessionMediaSourceDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放会话唯一 ID |
c76e2730-8a58-47e1-8888-de882b3d30b2 |
- 响应状态:
200 OK - 响应参数说明 (ReturnValue.mediaSourceList[] 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
mediaSourceName |
String |
视频源名称 |
本地视频源 |
mediaSourceGuid |
String |
视频源唯一 GUID |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
- 请求示例:
{
"sessionID": "c76e2730-8a58-47e1-8888-de882b3d30b2"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": {
"mediaSourceList": [
{
"mediaSourceName": "本地视频源",
"mediaSourceGuid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D"
}
]
}
}
3.8.4 获取视频源的下属设备通道
- 接口名称: 获取视频源的下属设备通道 (getDeviceList)
- 请求方式:
POST - URL:
/scriptFunction/StdMedia/getDeviceList - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 查询该会话内指定视频源包含的子设备通道,常用于前端播放组件的通道资源展示与快速选定。
- 请求参数说明 (GetSessionDeviceListDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放会话唯一 ID |
c76e2730-8a58-47e1-8888-de882b3d30b2 |
sourceGuid |
String |
是 |
视频源唯一 GUID |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
pageNo |
Integer |
否 |
分页页码,从0开始 |
0 |
pageSize |
Integer |
否 |
每页返回的记录数上限,默认 1000 |
1000 |
- 响应状态:
200 OK - 响应参数说明 (ReturnValue.mediaDeviceList[] 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
deviceGuid |
String |
设备唯一 GUID |
dev_local_001 |
deviceName |
String |
设备物理文件名/出厂通道原始名 |
新东门外枪机.mp4 |
viewName |
String |
系统分配的展示名称 |
新东门外枪机 |
deviceType |
Integer |
摄像机硬件类别:1 枪机,2 球机 |
1 |
- 请求示例:
{
"sessionID": "c76e2730-8a58-47e1-8888-de882b3d30b2",
"sourceGuid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D",
"pageNo": 0,
"pageSize": 1000
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": {
"mediaDeviceList": [
{
"deviceGuid": "dev_local_001",
"deviceName": "新东门外枪机.mp4",
"viewName": "新东门外枪机",
"deviceType": 1
}
]
}
}
3.8.5 开启推流与获取流播放地址
- 接口名称: 开启播放推流并获取视频流数据地址 (startPlay)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/startPlay - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 在特定会话下,向流媒体服务端请求开启对指定设备通道的拉流与推流分发,建立对应的实时/回放数据通道。
- 请求参数说明 (StartPlayDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话唯一 ID(注:由于每个窗口播放独立视频,故此处对应每一个播放器实例的 sessionID) |
player-session-001 |
sourceGuid |
String |
是 |
设备所属的视频源唯一 GUID |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
deviceGuid |
String |
是 |
设备通道唯一 GUID |
dev_local_001 |
streamHint |
String |
是 |
码流级别:1 主码流,2 辅码流 |
1 |
playType |
Integer |
是 |
播放模式:1 实时流,2 历史回放 |
1 |
timeout |
Integer |
否 |
建立连接超时时长 (单位:毫秒),默认 30000 |
30000 |
- 流地址寻址与传输说明:
- 调用本接口成功在流媒体端启动推流任务后,播放端可通过 WebSocket 协议直连建立二进制播放连接:
ws://<streamServer.address>:<streamServer.streamPort>/<sessionID> (例如 ws://192.168.100.47:9305/player-session-001)。 - 连接建立成功后,流媒体服务会将该通道解析出的原始 H.264/H.265/AAC 编码流以 ArrayBuffer 形式向 WebSocket 客户端实时持续推送,无需客户端另行轮询拉取。
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001",
"sourceGuid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D",
"deviceGuid": "dev_local_001",
"streamHint": "1",
"playType": 1,
"timeout": 30000
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.6 停止播放与推流
- 接口名称: 停止播放与推流 (stopPlay)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/stopPlay - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 停止当前播放会话的流媒体数据传输并断开推流连接。
- 请求参数说明 (StopPlayDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.7 球机控制 - 开始云台控制
- 接口名称: 开始云台控制 (startPtz)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/startPtz - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 对球机摄像机下发云台开始移动指令(如转动方向、变焦缩放、光圈对焦等)。
- 请求参数说明 (StartPtzDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
ptzCmd |
Integer |
是 |
云台移动控制命令码(可组合)。1:上(Up), 2:右(Right), 4:下(Down), 8:左(Left), 16:变焦缩小(ZoomOut), 32:变焦放大(ZoomIn), 64:聚焦远, 128:聚焦近等。例如右上方向转动:1 + 2 = 3 |
1 |
ptzSpeed |
Integer |
否 |
云台移动旋转速度,取值范围 1 至 7,默认值为 4 |
4 |
ptzPriority |
Integer |
否 |
云台控制抢占优先级码 |
1 |
ptzLockTimeout |
Integer |
否 |
控制权独占锁定时长限制 (单位:秒) |
5 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001",
"ptzCmd": 1,
"ptzSpeed": 4,
"ptzPriority": 1,
"ptzLockTimeout": 5
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.8 球机控制 - 停止云台控制
- 接口名称: 停止云台控制 (stopPtz)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/stopPtz - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 停止当前正在旋转或调整中的云台移动动作。
- 请求参数说明 (StopPtzDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
ptzCmd |
Integer |
是 |
对应开始移动时发送的控制动作命令码 |
1 |
ptzPriority |
Integer |
否 |
云台控制优先级码 |
1 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001",
"ptzCmd": 1,
"ptzPriority": 1
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.9 球机控制 - 获取云台绝对坐标
- 接口名称: 获取云台三维空间绝对坐标 (getPtzPos)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/getPtzPos - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 查询球机当前的水平转角 (Pan)、垂直角 (Tilt) 及变焦倍数 (Zoom)。
- 请求参数说明 (GetPtzPosDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
- 响应状态:
200 OK - 响应参数说明 (ReturnValue 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
ReturnValue |
String |
绝对坐标格式字符串。形如:"Pan角度 Tilt角度 Zoom倍数" |
120.5 45.2 2.0 |
- 请求示例:
{
"sessionID": "player-session-001"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": "120.5 45.2 2.0"
}
3.8.10 球机控制 - 设置云台绝对坐标
- 接口名称: 设置并跳转云台绝对位置 (setPtzPos)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/setPtzPos - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 驱动球机直接定位并精准转动到指定的 PTZ 三维空间坐标位置。
- 请求参数说明 (SetPtzPosDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
ptzPos |
String |
是 |
空间绝对坐标位置描述串。格式:"Pan角度 Tilt角度 Zoom倍数" |
120.5 45.2 2.0 |
ptzSpeed |
Integer |
否 |
定位转动速度限制,取值范围 1 至 7,默认值为 4 |
4 |
ptzPriority |
Integer |
否 |
控制优先级 |
1 |
ptzLockTimeout |
Integer |
否 |
云台锁定时长(单位:秒) |
5 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001",
"ptzPos": "120.5 45.2 2.0",
"ptzSpeed": 4,
"ptzPriority": 1,
"ptzLockTimeout": 5
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.11 视频回放控制 - 暂停与恢复历史回放
- 接口名称: 暂停或恢复历史视频流的推送 (pausePlay / resumePlay)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/pausePlay (暂停) 或 /scriptFunction/WebSocketStream/resumePlay (恢复) - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 在视频历史录像回放模式下,控制当前数据传输流通道的暂停发送以及重新恢复启动,用以对接前端播放控制栏。
- 请求参数说明 (PlaybackControlDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
- 响应状态:
200 OK - 请求示例 (暂停回放):
{
"sessionID": "player-session-001"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.12 视频回放控制 - 跳转播放时间点
- 接口名称: 历史回放跳转播放 (seekPlay)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/seekPlay - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 快速跳转回放到视频通道中的任意毫秒级历史时间点重新开始推流。
- 请求参数说明 (SeekPlayDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
time |
Long |
是 |
目标跳转历史绝对时间戳(单位:毫秒) |
1716912000000 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001",
"time": 1716912000000
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.13 视频回放控制 - 历史回放倍速设定
- 接口名称: 修改历史回放的传输与播放速率 (setSpeed)
- 请求方式:
POST - URL:
/scriptFunction/WebSocketStream/setSpeed - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 改变历史回放时的推流传输倍速。
- 请求参数说明 (SetSpeedDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放窗格独立会话 ID |
player-session-001 |
speed |
Double |
是 |
播放倍率速度(支持 0.5, 1.0, 2.0, 4.0 等) |
2.0 |
- 响应状态:
200 OK - 请求示例:
{
"sessionID": "player-session-001",
"speed": 2.0
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": null
}
3.8.14 视频抓图
- 接口名称: 实时视频通道图像抓拍 (captureImage)
- 请求方式:
POST - URL:
/scriptFunction/StdMedia/captureImage - Host: 见取流服务 Http 地址 (示例:
http://192.168.100.47:9305) - 接口描述: 对播放中的指定通道视频帧进行实时抓图,服务端完成截图保存后,返回该张快照图片的 HTTP 下载/访问地址。
- 请求参数说明 (CaptureImageDTO):
| 参数名 |
类型 |
是否必传 |
参数说明 |
示例值 |
sessionID |
String |
是 |
播放会话唯一 ID |
c76e2730-8a58-47e1-8888-de882b3d30b2 |
sourceGuid |
String |
是 |
设备所属的视频源唯一 GUID |
5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D |
deviceGuid |
String |
是 |
设备通道唯一 GUID |
dev_local_001 |
streamHint |
String |
是 |
码流级别:1 主码流,2 辅码流 |
1 |
- 响应状态:
200 OK - 响应参数说明 (ReturnValue 内部字段):
| 参数名 |
类型 |
参数说明 |
示例值 |
ReturnValue |
String |
服务端生成的快照图像可直接访问/下载的 HTTP URL 地址 |
http://192.168.100.47:9305/snapshot/capture_dev_local_001.jpg |
- 请求示例:
{
"sessionID": "c76e2730-8a58-47e1-8888-de882b3d30b2",
"sourceGuid": "5B7BE8B7-82E9-FB4B-BC17-02691BAEAD2D",
"deviceGuid": "dev_local_001",
"streamHint": "1"
}
- 响应示例:
{
"Result": 0,
"Message": "Success",
"ReturnValue": "http://192.168.100.47:9305/snapshot/capture_dev_local_001.jpg"
}
3.8.15 播放码流解码信息回调
- 事件名称: 播放码流解码属性上报消息事件 (CmdReportDecodeMediaParams)
- 触发时机: 当客户端播放器加载取流成功、启动 Wasm 解码并解析出音视频的首帧元数据时,解码器模块(
bigview_decoder.js Web Worker)将以事件消息向前端应用发送当前播放的音视频详细封装与码流规格。 - 消息参数详情 (CmdReportDecodeMediaParams):
| 参数名 |
类型 |
描述 |
示例值 |
cmd |
Integer |
固定的回调消息控制码,此处为 128 |
128 |
params |
Object |
回调携带的媒体属性内容 |
- |
params.video |
Object |
视频流轨道的参数特征 |
- |
params.video.index |
Integer |
视频轨道的索引 ID |
0 |
params.video.codecID |
Integer |
视频编码格式代码(如 28:H.264,174:H.265) |
174 |
params.video.width |
Integer |
视频画面分辨率宽度像素值 |
1920 |
params.video.height |
Integer |
视频画面分辨率高度像素值 |
1080 |
params.video.frameRate |
Integer |
视频轨道帧率上限 |
25 |
params.audio |
Object |
音频流轨道的参数特征(若包含音频轨道) |
- |
params.audio.index |
Integer |
音频轨道的索引 ID |
1 |
params.audio.codecID |
Integer |
音频编码格式代码(如 86017:AAC) |
86017 |
params.audio.channels |
Integer |
音频轨道的声道数(如 1:单声道,2:立体声) |
2 |
params.audio.sampleRate |
Integer |
音频轨道的采样率(单位:Hz) |
44100 |
- 消息示例:
{
"cmd": 128,
"params": {
"video": {
"index": 0,
"codecID": 174,
"width": 1920,
"height": 1080,
"decodePixelFormat": 0,
"frameRate": 25
},
"audio": {
"index": 1,
"codecID": 86017,
"sampleFormat": 0,
"channels": 2,
"sampleRate": 44100
}
}
}
4. 附录
4.1 开发调试与连通性验证步骤
- 获取服务状态: 通过调用
/process/findProcessList 确认 ZLM流媒体服务网关 等核心必备进程处于在线运行状态(status 为 1)。 - 连接发现流程:
- 对于添加本地视频文件夹,调用
saveMediaSource 并将 driver 设为 local,通过 URI 直接指定服务器端的本地绝对路径。 - 对于添加网络文件夹源,将
driver 设为 netdisk,并通过 URI 参数形式传递加密后的连接凭证。
- 验证同步: 通过
/mediaDevice/findMediaDevicePage 分页获取被发现出的视频通道列表,核对设备名称与在线状态。 - 视频取流播放与控制验证:
- 首先利用
StdMedia/createSession 获取可用节点取流 IP 和端口,确认标准流媒体网关已成功初始化。 - 利用
WebSocketStream/startPlay 下发设备 GUID 开启取流与推流;前端播放器连接 ws://<IP>:<Port>/<SessionID> 开始拉流并上报 CmdReportDecodeMediaParams 验证码流帧规格。 - 利用云台控制
startPtz/stopPtz/getPtzPos/setPtzPos 验证球机绝对定位偏转功能正常。
4.2 更新记录
| 版本号 |
更新时间 |
更新人 |
更新日志简述 |
v1.0.0 |
2026-05-28 |
Antigravity AI |
首次发布,建立 VSS 基本模块的 13 个 REST API 接口定义。 |
v1.1.0 |
2026-05-28 |
Antigravity AI |
首次补充更新。添加服务模块的增删改、视频源分发服务绑定、设备管理模块的增删、快照获取、在线状态检测、及码流批量编辑等 9 个新 API。 |
v1.2.0 |
2026-05-28 |
Antigravity AI |
二次扩展补充。新增“用户认证与基本信息”模块(登录、注销、用户信息)、“服务节点管理”模块(增删改查)、以及详细的“视频播放与控制”模块(播放会话、推流分发、球机云台控制、历史录像回放控制、视频截图及码流参数回调等 15 个 API 及回调上报),进一步对标 Apifox/LiveQing 的表格与参数规范。 |
v1.3.0 |
2026-05-28 |
Antigravity AI |
三阶段验证修正。Swagger静态比对27个REST接口全部匹配;Demo源码核对14个RPC接口方法名和参数吻合;实际API联调13个端点验证通过。修正:节点管理字段改为uri、补充guid和factoryGuid必填字段、倍速接口修正为setSpeed、登录Host修正为IAM网关28080、新增响应字段data/info兼容说明。 |