MVP API 接口:
后台 PTZ 接口(可选):
维护人:TG Live
POST http://localhost:10050/api/camera/listPOST https://tg-live-game.pwtk.cc/api/camera/list描述:获取摄像头列表
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| machineId | String | 否 | - | 机器 ID(可选) | machine_001 |
{
"machineId": "machine_001"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 摄像头名称 | 主摄像头 |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2143G2-IS |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ status | String | 否 | - | 摄像头状态: ONLINE, OFFLINE | ONLINE |
| └ capability | String | 否 | - | 摄像头能力: switch_only, ptz_enabled | ptz_enabled |
| └ ptzSupported | Boolean | 否 | - | 是否支持 PTZ | true |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"cameraId": "cam_001",
"name": "主摄像头",
"lssId": "lss_001",
"model": "DS-2CD2143G2-IS",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101",
"channelNo": "1",
"status": "ONLINE",
"capability": "ptz_enabled",
"ptzSupported": true,
"remark": "string",
"enabled": true
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/camera/{cameraId}GET https://tg-live-game.pwtk.cc/api/camera/{cameraId}描述:获取摄像头信息
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| cameraId | 是 | 摄像头 ID | camera_001 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: CameraDTO) | ||
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 摄像头名称 | 主摄像头 |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2143G2-IS |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ status | String | 否 | - | 摄像头状态: ONLINE, OFFLINE | ONLINE |
| └ capability | String | 否 | - | 摄像头能力: switch_only, ptz_enabled | ptz_enabled |
| └ ptzSupported | Boolean | 否 | - | 是否支持 PTZ | true |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"cameraId": "cam_001",
"name": "主摄像头",
"lssId": "lss_001",
"model": "DS-2CD2143G2-IS",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/Streaming/Channels/101",
"channelNo": "1",
"status": "ONLINE",
"capability": "ptz_enabled",
"ptzSupported": true,
"remark": "string",
"enabled": true
}
}
无
维护人:TG Live
POST http://localhost:10050/api/camera/switchPOST https://tg-live-game.pwtk.cc/api/camera/switch描述:切换摄像头通道(MVP 核心)
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| machineId | String | 是 | - | 机器 ID | machine_001 |
| channelId | String | 是 | - | 目标通道 ID | ch_001 |
{
"machineId": "machine_001",
"channelId": "ch_001"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: ChannelDTO) | ||
| └ channelId | String | 否 | - | 通道 ID | ch_001 |
| └ name | String | 否 | - | 通道名称 | 主通道 |
| └ rtspUrl | String | 否 | - | RTSP 地址 | rtsp://192.168.1.100:554/stream1 |
| └ defaultView | Boolean | 否 | - | 是否默认视角 | true |
| └ status | String | 否 | - | 通道状态: ONLINE, OFFLINE | ONLINE |
| └ cameraId | String | 否 | - | 所属摄像头 ID | cam_001 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"channelId": "ch_001",
"name": "主通道",
"rtspUrl": "rtsp://192.168.1.100:554/stream1",
"defaultView": true,
"status": "ONLINE",
"cameraId": "cam_001"
}
}
无
维护人:TG Live
GET http://localhost:10050/api/camera/currentGET https://tg-live-game.pwtk.cc/api/camera/current描述:获取当前活动通道
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| machineId | string | 是 | - | 机器 ID | machine_001 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: ChannelDTO) | ||
| └ channelId | String | 否 | - | 通道 ID | ch_001 |
| └ name | String | 否 | - | 通道名称 | 主通道 |
| └ rtspUrl | String | 否 | - | RTSP 地址 | rtsp://192.168.1.100:554/stream1 |
| └ defaultView | Boolean | 否 | - | 是否默认视角 | true |
| └ status | String | 否 | - | 通道状态: ONLINE, OFFLINE | ONLINE |
| └ cameraId | String | 否 | - | 所属摄像头 ID | cam_001 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"channelId": "ch_001",
"name": "主通道",
"rtspUrl": "rtsp://192.168.1.100:554/stream1",
"defaultView": true,
"status": "ONLINE",
"cameraId": "cam_001"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/camera/{cameraId}/ptz/startPOST https://tg-live-game.pwtk.cc/api/camera/{cameraId}/ptz/start描述:开始 PTZ 控制(后台专用)
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| cameraId | 是 | 摄像头 ID | hikvision_ptz |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| action | string | 是 | - | PTZ 动作 | up |
| speed | int32 | 是 | - | 速度(1-100) | 50 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/camera/{cameraId}/ptz/stopPOST https://tg-live-game.pwtk.cc/api/camera/{cameraId}/ptz/stop描述:停止 PTZ 控制(后台专用)
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| cameraId | 是 | 摄像头 ID | hikvision_ptz |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
与前端海康调试接口一致:直接传 pan/tilt/zoom 值
维护人:TG Live
POST http://localhost:10050/api/camera/{cameraId}/ptz/controlPOST https://tg-live-game.pwtk.cc/api/camera/{cameraId}/ptz/control描述:PTZ 直接控制(兼容前端 pan/tilt/zoom 方式)
与前端海康调试接口一致:直接传 pan/tilt/zoom 值
ContentType:application/json
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| cameraId | 是 | 摄像头 ID | hikvision_ptz |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| pan | Integer | 否 | 100 | 水平移动速度 负值向左,正值向右 范围: -100 ~ 100 |
0 |
| tilt | Integer | 否 | 100 | 垂直移动速度 负值向下,正值向上 范围: -100 ~ 100 |
0 |
| zoom | Integer | 否 | 100 | 缩放速度 负值缩小,正值放大 范围: -100 ~ 100 |
0 |
| channel | Integer | 否 | - | 通道号(可选,默认 1) | 0 |
{
"pan": 0,
"tilt": 0,
"zoom": 0,
"channel": 0
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/cameras/listPOST https://tg-live-game.pwtk.cc/api/admin/cameras/list描述:获取摄像头列表(分页)
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| page | Integer | 否 | - | 页码 (从 1 开始) | 1 |
| size | Integer | 否 | - | 每页条数 | 10 |
| keyword | String | 否 | - | 搜索关键词 (模糊匹配名称、ID 等) | 摄像头 |
| enabled | Boolean | 否 | - | 启用状态过滤 (null=全部, true=启用, false=禁用) | true |
| sortBy | String | 否 | - | 排序字段 | createdAt |
| sortDir | String | 否 | - | 排序方向 (ASC/DESC) | DESC |
| lssId | String | 否 | - | LSS 节点 ID 过滤 | lss_001 |
| status | String | 否 | - | 在线状态过滤 (ONLINE/OFFLINE) | ONLINE |
{
"page": 1,
"size": 10,
"keyword": "摄像头",
"enabled": true,
"sortBy": "createdAt",
"sortDir": "DESC",
"lssId": "lss_001",
"status": "ONLINE"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: PageResponse) | ||
| └ list | List | 否 | 数据列表 (ActualType: T) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 名称 | 主摄像头 |
| └ ip | String | 否 | - | IP 地址 | 192.168.1.100 |
| └ port | Integer | 否 | - | 端口 | 80 |
| └ username | String | 否 | - | 用户名 | admin |
| └ brand | String | 否 | - | 品牌 | hikvision |
| └ capability | String | 否 | - | 能力: switch_only, ptz_enabled | ptz_enabled |
| └ status | String | 否 | - | 状态: ONLINE, OFFLINE | ONLINE |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2T47G2-LSU/SL |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/stream1 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
| └ page | Integer | 否 | - | 当前页码 (从 1 开始) | 1 |
| └ size | Integer | 否 | - | 每页条数 | 10 |
| └ total | Long | 否 | - | 总记录数 | 100 |
| └ totalPages | Integer | 否 | - | 总页数 | 10 |
| └ hasNext | Boolean | 否 | - | 是否有下一页 | true |
| └ hasPrevious | Boolean | 否 | - | 是否有上一页 | false |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| machineId | string | 否 | - | 机器 ID(可选) | machine_001 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 名称 | 主摄像头 |
| └ ip | String | 否 | - | IP 地址 | 192.168.1.100 |
| └ port | Integer | 否 | - | 端口 | 80 |
| └ username | String | 否 | - | 用户名 | admin |
| └ brand | String | 否 | - | 品牌 | hikvision |
| └ capability | String | 否 | - | 能力: switch_only, ptz_enabled | ptz_enabled |
| └ status | String | 否 | - | 状态: ONLINE, OFFLINE | ONLINE |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2T47G2-LSU/SL |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/stream1 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"id": 1,
"cameraId": "cam_001",
"name": "主摄像头",
"ip": "192.168.1.100",
"port": 80,
"username": "admin",
"brand": "hikvision",
"capability": "ptz_enabled",
"status": "ONLINE",
"lssId": "lss_001",
"model": "DS-2CD2T47G2-LSU/SL",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/stream1",
"channelNo": "1",
"remark": "string",
"enabled": true,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/cameras/detailGET https://tg-live-game.pwtk.cc/api/admin/cameras/detail描述:获取摄像头详情
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 摄像头主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: CameraInfoDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 名称 | 主摄像头 |
| └ ip | String | 否 | - | IP 地址 | 192.168.1.100 |
| └ port | Integer | 否 | - | 端口 | 80 |
| └ username | String | 否 | - | 用户名 | admin |
| └ brand | String | 否 | - | 品牌 | hikvision |
| └ capability | String | 否 | - | 能力: switch_only, ptz_enabled | ptz_enabled |
| └ status | String | 否 | - | 状态: ONLINE, OFFLINE | ONLINE |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2T47G2-LSU/SL |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/stream1 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"cameraId": "cam_001",
"name": "主摄像头",
"ip": "192.168.1.100",
"port": 80,
"username": "admin",
"brand": "hikvision",
"capability": "ptz_enabled",
"status": "ONLINE",
"lssId": "lss_001",
"model": "DS-2CD2T47G2-LSU/SL",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/stream1",
"channelNo": "1",
"remark": "string",
"enabled": true,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/cameras/addPOST https://tg-live-game.pwtk.cc/api/admin/cameras/add描述:添加摄像头
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| cameraId | String | 是 | 50 | 摄像头 ID(唯一标识)
Validate[max: 50; ] | cam_001 |
| name | String | 是 | 100 | 名称
Validate[max: 100; ] | 主摄像头 |
| ip | String | 是 | - | IP 地址
Validate[regexp: ^((25[0-5] | 2[0-4]\d | [01]?\d\d?)\.){3}(25[0-5] | 2[0-4]\d | [01]?\d\d?)$; ] | 192.168.1.100 |
| port | Integer | 否 | - | 端口 | 80 |
| username | String | 否 | 50 | 用户名
Validate[max: 50; ] | admin |
| password | String | 否 | 100 | 密码
Validate[max: 100; ] | password123 |
| brand | String | 否 | 30 | 品牌
Validate[max: 30; ] | hikvision |
| capability | String | 否 | - | 能力: switch_only, ptz_enabled
Validate[regexp: ^(switch_only | ptz_enabled)$; ] | ptz_enabled |
| lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| model | String | 否 | 100 | 摄像头型号
Validate[max: 100; ] | DS-2CD2T47G2-LSU/SL |
| rtspUrl | String | 否 | 500 | RTSP 推流地址
Validate[max: 500; ] | rtsp://admin:password@192.168.1.100:554/stream1 |
| channelNo | String | 否 | 20 | 通道号 (用于多通道摄像头)
Validate[max: 20; ] | 1 |
| remark | String | 否 | 500 | 备注
Validate[max: 500; ] | |
{
"cameraId": "cam_001",
"name": "主摄像头",
"ip": "192.168.1.100",
"port": 80,
"username": "admin",
"password": "password123",
"brand": "hikvision",
"capability": "ptz_enabled",
"lssId": "lss_001",
"model": "DS-2CD2T47G2-LSU/SL",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/stream1",
"channelNo": "1",
"remark": "string"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: CameraInfoDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 名称 | 主摄像头 |
| └ ip | String | 否 | - | IP 地址 | 192.168.1.100 |
| └ port | Integer | 否 | - | 端口 | 80 |
| └ username | String | 否 | - | 用户名 | admin |
| └ brand | String | 否 | - | 品牌 | hikvision |
| └ capability | String | 否 | - | 能力: switch_only, ptz_enabled | ptz_enabled |
| └ status | String | 否 | - | 状态: ONLINE, OFFLINE | ONLINE |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2T47G2-LSU/SL |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/stream1 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"cameraId": "cam_001",
"name": "主摄像头",
"ip": "192.168.1.100",
"port": 80,
"username": "admin",
"brand": "hikvision",
"capability": "ptz_enabled",
"status": "ONLINE",
"lssId": "lss_001",
"model": "DS-2CD2T47G2-LSU/SL",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/stream1",
"channelNo": "1",
"remark": "string",
"enabled": true,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/cameras/updatePOST https://tg-live-game.pwtk.cc/api/admin/cameras/update描述:更新摄像头
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | Long | 否 | - | 摄像头数据库 ID | 1 |
| name | String | 否 | - | 名称 | 主摄像头 |
| ip | String | 否 | - | IP 地址 | 192.168.1.100 |
| port | Integer | 否 | - | 端口 | 80 |
| username | String | 否 | - | 用户名 | admin |
| password | String | 否 | - | 密码(不传或为空则不修改) | password123 |
| brand | String | 否 | - | 品牌 | hikvision |
| capability | String | 否 | - | 能力: switch_only, ptz_enabled | ptz_enabled |
| lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| model | String | 否 | - | 摄像头型号 | DS-2CD2T47G2-LSU/SL |
| rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/stream1 |
| channelNo | String | 否 | - | 通道号 | 1 |
| remark | String | 否 | - | 备注 | |
| enabled | Boolean | 否 | - | 启用状态 | true |
{
"id": 1,
"name": "主摄像头",
"ip": "192.168.1.100",
"port": 80,
"username": "admin",
"password": "password123",
"brand": "hikvision",
"capability": "ptz_enabled",
"lssId": "lss_001",
"model": "DS-2CD2T47G2-LSU/SL",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/stream1",
"channelNo": "1",
"remark": "string",
"enabled": true
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: CameraInfoDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ name | String | 否 | - | 名称 | 主摄像头 |
| └ ip | String | 否 | - | IP 地址 | 192.168.1.100 |
| └ port | Integer | 否 | - | 端口 | 80 |
| └ username | String | 否 | - | 用户名 | admin |
| └ brand | String | 否 | - | 品牌 | hikvision |
| └ capability | String | 否 | - | 能力: switch_only, ptz_enabled | ptz_enabled |
| └ status | String | 否 | - | 状态: ONLINE, OFFLINE | ONLINE |
| └ lssId | String | 否 | - | 绑定的 LSS 节点 ID | lss_001 |
| └ model | String | 否 | - | 摄像头型号 | DS-2CD2T47G2-LSU/SL |
| └ rtspUrl | String | 否 | - | RTSP 推流地址 | rtsp://admin:password@192.168.1.100:554/stream1 |
| └ channelNo | String | 否 | - | 通道号 | 1 |
| └ remark | String | 否 | - | 备注 | |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"cameraId": "cam_001",
"name": "主摄像头",
"ip": "192.168.1.100",
"port": 80,
"username": "admin",
"brand": "hikvision",
"capability": "ptz_enabled",
"status": "ONLINE",
"lssId": "lss_001",
"model": "DS-2CD2T47G2-LSU/SL",
"rtspUrl": "rtsp://admin:password@192.168.1.100:554/stream1",
"channelNo": "1",
"remark": "string",
"enabled": true,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/cameras/deletePOST https://tg-live-game.pwtk.cc/api/admin/cameras/delete描述:删除摄像头
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 摄像头主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/cameras/checkPOST https://tg-live-game.pwtk.cc/api/admin/cameras/check描述:检测摄像头连通性
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 摄像头主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | boolean | 否 | - | 响应数据 (ActualType: Boolean) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": false
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/cameras/snapshotGET https://tg-live-game.pwtk.cc/api/admin/cameras/snapshot描述:获取摄像头快照
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 摄像头主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: byte) | ||
| └ - | array[byte[]] | 否 | - | array of byte[] |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
" -": ""
}
]
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/cameras/ptzPOST https://tg-live-game.pwtk.cc/api/admin/cameras/ptz描述:PTZ 控制
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | Long | 否 | - | 摄像头 ID | 1 |
| action | String | 否 | - | PTZ 动作 | UP |
| speed | Float | 否 | - | 速度 (0.0 - 1.0) | 0.5 |
{
"id": 1,
"action": "UP",
"speed": 0.5
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | boolean | 否 | - | 响应数据 (ActualType: Boolean) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": false
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/machines/listPOST https://tg-live-game.pwtk.cc/api/admin/machines/list描述:获取机器列表(分页)
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| page | Integer | 否 | - | 页码 (从 1 开始) | 1 |
| size | Integer | 否 | - | 每页条数 | 10 |
| keyword | String | 否 | - | 搜索关键词 (模糊匹配名称、ID 等) | 摄像头 |
| enabled | Boolean | 否 | - | 启用状态过滤 (null=全部, true=启用, false=禁用) | true |
| sortBy | String | 否 | - | 排序字段 | createdAt |
| sortDir | String | 否 | - | 排序方向 (ASC/DESC) | DESC |
{
"page": 1,
"size": 10,
"keyword": "摄像头",
"enabled": true,
"sortBy": "createdAt",
"sortDir": "DESC"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: PageResponse) | ||
| └ list | List | 否 | 数据列表 (ActualType: T) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ machineId | String | 否 | - | 机器 ID | machine_001 |
| └ name | String | 否 | - | 名称 | 1 号机 |
| └ location | String | 否 | - | 位置 | A 区 1 楼 |
| └ description | String | 否 | - | 描述 | 主力机器 |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ cameraCount | Integer | 否 | - | 摄像头数量 | 3 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
| └ page | Integer | 否 | - | 当前页码 (从 1 开始) | 1 |
| └ size | Integer | 否 | - | 每页条数 | 10 |
| └ total | Long | 否 | - | 总记录数 | 100 |
| └ totalPages | Integer | 否 | - | 总页数 | 10 |
| └ hasNext | Boolean | 否 | - | 是否有下一页 | true |
| └ hasPrevious | Boolean | 否 | - | 是否有上一页 | false |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ machineId | String | 否 | - | 机器 ID | machine_001 |
| └ name | String | 否 | - | 名称 | 1 号机 |
| └ location | String | 否 | - | 位置 | A 区 1 楼 |
| └ description | String | 否 | - | 描述 | 主力机器 |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ cameraCount | Integer | 否 | - | 摄像头数量 | 3 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"id": 1,
"machineId": "machine_001",
"name": "1号机",
"location": "A区1楼",
"description": "主力机器",
"enabled": true,
"cameraCount": 3,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/machines/detailGET https://tg-live-game.pwtk.cc/api/admin/machines/detail描述:获取机器详情
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 机器主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: MachineDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ machineId | String | 否 | - | 机器 ID | machine_001 |
| └ name | String | 否 | - | 名称 | 1 号机 |
| └ location | String | 否 | - | 位置 | A 区 1 楼 |
| └ description | String | 否 | - | 描述 | 主力机器 |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ cameraCount | Integer | 否 | - | 摄像头数量 | 3 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"machineId": "machine_001",
"name": "1号机",
"location": "A区1楼",
"description": "主力机器",
"enabled": true,
"cameraCount": 3,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/machines/addPOST https://tg-live-game.pwtk.cc/api/admin/machines/add描述:添加机器
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| machineId | String | 是 | 50 | 机器 ID(唯一标识) Validate[max: 50; ] |
machine_001 |
| name | String | 是 | 100 | 名称 Validate[max: 100; ] |
1 号机 |
| location | String | 否 | 200 | 位置 Validate[max: 200; ] |
A 区 1 楼 |
| description | String | 否 | 500 | 描述 Validate[max: 500; ] |
主力机器 |
{
"machineId": "machine_001",
"name": "1号机",
"location": "A区1楼",
"description": "主力机器"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: MachineDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ machineId | String | 否 | - | 机器 ID | machine_001 |
| └ name | String | 否 | - | 名称 | 1 号机 |
| └ location | String | 否 | - | 位置 | A 区 1 楼 |
| └ description | String | 否 | - | 描述 | 主力机器 |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ cameraCount | Integer | 否 | - | 摄像头数量 | 3 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"machineId": "machine_001",
"name": "1号机",
"location": "A区1楼",
"description": "主力机器",
"enabled": true,
"cameraCount": 3,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/machines/updatePOST https://tg-live-game.pwtk.cc/api/admin/machines/update描述:更新机器
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | Long | 否 | - | 机器数据库 ID | 1 |
| name | String | 否 | - | 名称 | 1 号机 |
| location | String | 否 | - | 位置 | A 区 1 楼 |
| description | String | 否 | - | 描述 | 主力机器 |
| enabled | Boolean | 否 | - | 启用状态 | true |
{
"id": 1,
"name": "1号机",
"location": "A区1楼",
"description": "主力机器",
"enabled": true
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: MachineDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ machineId | String | 否 | - | 机器 ID | machine_001 |
| └ name | String | 否 | - | 名称 | 1 号机 |
| └ location | String | 否 | - | 位置 | A 区 1 楼 |
| └ description | String | 否 | - | 描述 | 主力机器 |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ cameraCount | Integer | 否 | - | 摄像头数量 | 3 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2026-01-07T10:00:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"machineId": "machine_001",
"name": "1号机",
"location": "A区1楼",
"description": "主力机器",
"enabled": true,
"cameraCount": 3,
"createdAt": "2026-01-07T10:00:00",
"updatedAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/machines/deletePOST https://tg-live-game.pwtk.cc/api/admin/machines/delete描述:删除机器
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 机器主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/stream-channels/listPOST https://tg-live-game.pwtk.cc/api/admin/stream-channels/list描述:获取推流通道列表(分页)
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| page | Integer | 否 | - | 页码 (从 1 开始) | 1 |
| size | Integer | 否 | - | 每页条数 | 10 |
| keyword | String | 否 | - | 搜索关键词 (模糊匹配名称、ID 等) | 摄像头 |
| enabled | Boolean | 否 | - | 启用状态过滤 (null=全部, true=启用, false=禁用) | true |
| sortBy | String | 否 | - | 排序字段 | createdAt |
| sortDir | String | 否 | - | 排序方向 (ASC/DESC) | DESC |
{
"page": 1,
"size": 10,
"keyword": "摄像头",
"enabled": true,
"sortBy": "createdAt",
"sortDir": "DESC"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: PageResponse) | ||
| └ list | List | 否 | 数据列表 (ActualType: T) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ channelId | String | 否 | - | 通道 ID | cf_channel_001 |
| └ name | String | 否 | - | 通道名称 | 主推流通道 |
| └ accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| └ liveInputId | String | 否 | - | Cloudflare Live Input ID | b51e49994b |
| └ customerSubdomain | String | 否 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| └ mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish |
| └ rtmpsUrl | String | 否 | - | RTMPS 推流地址 | rtmps://live.cloudflare.com:443/live/xxx |
| └ hlsPlaybackUrl | String | 否 | - | HLS 播放地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8 |
| └ whepPlaybackUrl | String | 否 | - | WHEP 播放地址 (WebRTC) | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play |
| └ recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2024-01-15T10:30:00 |
| └ page | Integer | 否 | - | 当前页码 (从 1 开始) | 1 |
| └ size | Integer | 否 | - | 每页条数 | 10 |
| └ total | Long | 否 | - | 总记录数 | 100 |
| └ totalPages | Integer | 否 | - | 总页数 | 10 |
| └ hasNext | Boolean | 否 | - | 是否有下一页 | true |
| └ hasPrevious | Boolean | 否 | - | 是否有上一页 | false |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ channelId | String | 否 | - | 通道 ID | cf_channel_001 |
| └ name | String | 否 | - | 通道名称 | 主推流通道 |
| └ accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| └ liveInputId | String | 否 | - | Cloudflare Live Input ID | b51e49994b |
| └ customerSubdomain | String | 否 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| └ mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish |
| └ rtmpsUrl | String | 否 | - | RTMPS 推流地址 | rtmps://live.cloudflare.com:443/live/xxx |
| └ hlsPlaybackUrl | String | 否 | - | HLS 播放地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8 |
| └ whepPlaybackUrl | String | 否 | - | WHEP 播放地址 (WebRTC) | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play |
| └ recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2024-01-15T10:30:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"id": 1,
"channelId": "cf_channel_001",
"name": "主推流通道",
"accountId": "5544eac7cfb260d4fec9467d49513cea",
"liveInputId": "b51e49994b6fd9e56b6f1fdfcd339fe6",
"customerSubdomain": "customer-pj89kn2ke2tcuh19",
"mode": "WHIP",
"whipUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish",
"rtmpsUrl": "rtmps://live.cloudflare.com:443/live/xxx",
"hlsPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8",
"whepPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play",
"recordingEnabled": false,
"enabled": true,
"createdAt": "2024-01-15T10:30:00",
"updatedAt": "2024-01-15T10:30:00"
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/stream-channels/detailGET https://tg-live-game.pwtk.cc/api/admin/stream-channels/detail描述:获取推流通道详情
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 推流通道主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: StreamChannelInfoDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ channelId | String | 否 | - | 通道 ID | cf_channel_001 |
| └ name | String | 否 | - | 通道名称 | 主推流通道 |
| └ accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| └ liveInputId | String | 否 | - | Cloudflare Live Input ID | b51e49994b |
| └ customerSubdomain | String | 否 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| └ mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish |
| └ rtmpsUrl | String | 否 | - | RTMPS 推流地址 | rtmps://live.cloudflare.com:443/live/xxx |
| └ hlsPlaybackUrl | String | 否 | - | HLS 播放地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8 |
| └ whepPlaybackUrl | String | 否 | - | WHEP 播放地址 (WebRTC) | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play |
| └ recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2024-01-15T10:30:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"channelId": "cf_channel_001",
"name": "主推流通道",
"accountId": "5544eac7cfb260d4fec9467d49513cea",
"liveInputId": "b51e49994b6fd9e56b6f1fdfcd339fe6",
"customerSubdomain": "customer-pj89kn2ke2tcuh19",
"mode": "WHIP",
"whipUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish",
"rtmpsUrl": "rtmps://live.cloudflare.com:443/live/xxx",
"hlsPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8",
"whepPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play",
"recordingEnabled": false,
"enabled": true,
"createdAt": "2024-01-15T10:30:00",
"updatedAt": "2024-01-15T10:30:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/stream-channels/addPOST https://tg-live-game.pwtk.cc/api/admin/stream-channels/add描述:添加推流通道
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| channelId | String | 是 | - | 通道 ID | cf_channel_001 |
| name | String | 是 | - | 通道名称 | 主推流通道 |
| accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| apiToken | String | 否 | - | Cloudflare API Token | d_f4nGUKFlB66MMMIS3NfVlUbn0A0p4jlrW5BbZW |
| liveInputId | String | 是 | - | Cloudflare Live Input ID | b51e49994b |
| streamKey | String | 否 | - | 流密钥 (用于 RTMPS) | 8c108b4025d3278b188b443e8a6c5503kb51e49994b6fd9e56b6f1fdfcd339fe6 |
| customerSubdomain | String | 是 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
{
"channelId": "cf_channel_001",
"name": "主推流通道",
"accountId": "5544eac7cfb260d4fec9467d49513cea",
"apiToken": "d_f4nGUKFlB66MMMIS3NfVlUbn0A0p4jlrW5BbZW",
"liveInputId": "b51e49994b6fd9e56b6f1fdfcd339fe6",
"streamKey": "8c108b4025d3278b188b443e8a6c5503kb51e49994b6fd9e56b6f1fdfcd339fe6",
"customerSubdomain": "customer-pj89kn2ke2tcuh19",
"mode": "WHIP",
"recordingEnabled": false
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: StreamChannelInfoDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ channelId | String | 否 | - | 通道 ID | cf_channel_001 |
| └ name | String | 否 | - | 通道名称 | 主推流通道 |
| └ accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| └ liveInputId | String | 否 | - | Cloudflare Live Input ID | b51e49994b |
| └ customerSubdomain | String | 否 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| └ mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish |
| └ rtmpsUrl | String | 否 | - | RTMPS 推流地址 | rtmps://live.cloudflare.com:443/live/xxx |
| └ hlsPlaybackUrl | String | 否 | - | HLS 播放地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8 |
| └ whepPlaybackUrl | String | 否 | - | WHEP 播放地址 (WebRTC) | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play |
| └ recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2024-01-15T10:30:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"channelId": "cf_channel_001",
"name": "主推流通道",
"accountId": "5544eac7cfb260d4fec9467d49513cea",
"liveInputId": "b51e49994b6fd9e56b6f1fdfcd339fe6",
"customerSubdomain": "customer-pj89kn2ke2tcuh19",
"mode": "WHIP",
"whipUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish",
"rtmpsUrl": "rtmps://live.cloudflare.com:443/live/xxx",
"hlsPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8",
"whepPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play",
"recordingEnabled": false,
"enabled": true,
"createdAt": "2024-01-15T10:30:00",
"updatedAt": "2024-01-15T10:30:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/stream-channels/updatePOST https://tg-live-game.pwtk.cc/api/admin/stream-channels/update描述:更新推流通道
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | Long | 是 | - | 主键 ID | 1 |
| name | String | 否 | - | 通道名称 | 主推流通道 |
| accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| apiToken | String | 否 | - | Cloudflare API Token | d_f4nGUKFlB66MMMIS3NfVlUbn0A0p4jlrW5BbZW |
| liveInputId | String | 否 | - | Cloudflare Live Input ID | b51e49994b |
| streamKey | String | 否 | - | 流密钥 (用于 RTMPS) | 8c108b4025d3278b188b443e8a6c5503kb51e49994b6fd9e56b6f1fdfcd339fe6 |
| customerSubdomain | String | 否 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
| enabled | Boolean | 否 | - | 是否启用 | true |
{
"id": 1,
"name": "主推流通道",
"accountId": "5544eac7cfb260d4fec9467d49513cea",
"apiToken": "d_f4nGUKFlB66MMMIS3NfVlUbn0A0p4jlrW5BbZW",
"liveInputId": "b51e49994b6fd9e56b6f1fdfcd339fe6",
"streamKey": "8c108b4025d3278b188b443e8a6c5503kb51e49994b6fd9e56b6f1fdfcd339fe6",
"customerSubdomain": "customer-pj89kn2ke2tcuh19",
"mode": "WHIP",
"recordingEnabled": false,
"enabled": true
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: StreamChannelInfoDTO) | ||
| └ id | Long | 否 | - | 主键 ID | 1 |
| └ channelId | String | 否 | - | 通道 ID | cf_channel_001 |
| └ name | String | 否 | - | 通道名称 | 主推流通道 |
| └ accountId | String | 否 | - | Cloudflare 账户 ID | 5544eac7cf |
| └ liveInputId | String | 否 | - | Cloudflare Live Input ID | b51e49994b |
| └ customerSubdomain | String | 否 | - | 客户子域名 | customer-pj89kn2ke2tcuh19 |
| └ mode | String | 否 | - | 推流模式: WHIP / RTMPS / SRT | WHIP |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish |
| └ rtmpsUrl | String | 否 | - | RTMPS 推流地址 | rtmps://live.cloudflare.com:443/live/xxx |
| └ hlsPlaybackUrl | String | 否 | - | HLS 播放地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8 |
| └ whepPlaybackUrl | String | 否 | - | WHEP 播放地址 (WebRTC) | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play |
| └ recordingEnabled | Boolean | 否 | - | 是否启用录制 | false |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | 2024-01-15T10:30:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"channelId": "cf_channel_001",
"name": "主推流通道",
"accountId": "5544eac7cfb260d4fec9467d49513cea",
"liveInputId": "b51e49994b6fd9e56b6f1fdfcd339fe6",
"customerSubdomain": "customer-pj89kn2ke2tcuh19",
"mode": "WHIP",
"whipUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/publish",
"rtmpsUrl": "rtmps://live.cloudflare.com:443/live/xxx",
"hlsPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/manifest/video.m3u8",
"whepPlaybackUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/b51e49994b6fd9e56b6f1fdfcd339fe6/webRTC/play",
"recordingEnabled": false,
"enabled": true,
"createdAt": "2024-01-15T10:30:00",
"updatedAt": "2024-01-15T10:30:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/stream-channels/deletePOST https://tg-live-game.pwtk.cc/api/admin/stream-channels/delete描述:删除推流通道
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| id | int64 | 是 | - | 推流通道主键 ID | 1 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/auth/loginPOST https://tg-live-game.pwtk.cc/api/admin/auth/login描述:登录
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| username | String | 是 | 50 | 用户名 Validate[max: 50; ] |
admin |
| password | String | 是 | 100 | 密码 Validate[max: 100; ] |
123456 |
{
"username": "admin",
"password": "123456"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: LoginResponse) | ||
| └ token | String | 否 | - | JWT Token | eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiJ9.xxx |
| └ tokenType | String | 否 | - | Token 类型 | Bearer |
| └ expiresIn | Long | 否 | - | 过期时间(秒) | 86400 |
| └ admin | AdminInfoDTO | 否 | 用户信息 | ||
| └ id | Long | 否 | - | 用户 ID | 1 |
| └ username | String | 否 | - | 用户名 | admin |
| └ nickname | String | 否 | - | 昵称 | 管理员 |
| └ role | String | 否 | - | 角色 | ADMIN |
| └ lastLoginAt | LocalDateTime | 否 | - | 最后登录时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiJ9.xxx",
"tokenType": "Bearer",
"expiresIn": 86400,
"admin": {
"id": 1,
"username": "admin",
"nickname": "管理员",
"role": "ADMIN",
"lastLoginAt": "2026-01-07T10:00:00"
}
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/auth/logoutPOST https://tg-live-game.pwtk.cc/api/admin/auth/logout描述:登出
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/auth/infoGET https://tg-live-game.pwtk.cc/api/admin/auth/info描述:获取当前用户信息(直接从 Token 解析,不查询数据库)
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: AdminInfoDTO) | ||
| └ id | Long | 否 | - | 用户 ID | 1 |
| └ username | String | 否 | - | 用户名 | admin |
| └ nickname | String | 否 | - | 昵称 | 管理员 |
| └ role | String | 否 | - | 角色 | ADMIN |
| └ lastLoginAt | LocalDateTime | 否 | - | 最后登录时间 | 2026-01-07T10:00:00 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 1,
"username": "admin",
"nickname": "管理员",
"role": "ADMIN",
"lastLoginAt": "2026-01-07T10:00:00"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/auth/passwordPOST https://tg-live-game.pwtk.cc/api/admin/auth/password描述:修改密码
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| oldPassword | String | 是 | - | 旧密码 | oldpassword |
| newPassword | String | 是 | 100 | 新密码(6-100 字符) Validate[max: 100; ] |
newpassword |
{
"oldPassword": "oldpassword",
"newPassword": "newpassword"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/stats/dashboardGET https://tg-live-game.pwtk.cc/api/admin/stats/dashboard描述:获取仪表盘统计数据
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: DashboardStatsDTO) | ||
| └ machineTotal | Long | 否 | - | 机器总数 | 10 |
| └ machineEnabled | Long | 否 | - | 启用的机器数 | 8 |
| └ cameraTotal | Long | 否 | - | 摄像头总数 | 20 |
| └ cameraOnline | Long | 否 | - | 在线摄像头数 | 15 |
| └ cameraOffline | Long | 否 | - | 离线摄像头数 | 5 |
| └ channelTotal | Long | 否 | - | 通道总数 | 40 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"machineTotal": 10,
"machineEnabled": 8,
"cameraTotal": 20,
"cameraOnline": 15,
"cameraOffline": 5,
"channelTotal": 40
}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/lss-nodes/listPOST https://tg-live-game.pwtk.cc/api/admin/lss-nodes/list描述:获取 LSS 节点列表(分页)
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| page | Integer | 否 | - | 页码 (从 1 开始) | 1 |
| size | Integer | 否 | - | 每页条数 | 10 |
| keyword | String | 否 | - | 搜索关键词 (模糊匹配名称、ID 等) | 摄像头 |
| enabled | Boolean | 否 | - | 启用状态过滤 (null=全部, true=启用, false=禁用) | true |
| sortBy | String | 否 | - | 排序字段 | createdAt |
| sortDir | String | 否 | - | 排序方向 (ASC/DESC) | DESC |
{
"page": 1,
"size": 10,
"keyword": "摄像头",
"enabled": true,
"sortBy": "createdAt",
"sortDir": "DESC"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: PageResponse) | ||
| └ list | List | 否 | 数据列表 (ActualType: T) | ||
| └ id | Long | 否 | - | 数据库主键 | 0 |
| └ lssId | String | 否 | - | LSS 节点 ID | |
| └ lssName | String | 否 | - | LSS 节点名称 | |
| └ machineId | String | 否 | - | 关联的机器 ID | |
| └ address | String | 否 | - | LSS 地址 (IP:Port) | |
| └ maxTasks | Integer | 否 | - | 最大并发任务数 | 0 |
| └ currentTasks | Integer | 否 | - | 当前任务数 | 0 |
| └ status | String | 否 | - | 节点状态: ONLINE, OFFLINE, BUSY, MAINTENANCE | |
| └ ffmpegVersion | String | 否 | - | FFmpeg 版本 | |
| └ systemInfo | String | 否 | - | 系统信息 (JSON) | |
| └ lastHeartbeatAt | LocalDateTime | 否 | - | 最后心跳时间 | yyyy-MM-dd HH:mm:ss |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ loadRate | Double | 否 | - | 负载率 (0.0 - 1.0) | 0.0 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | yyyy-MM-dd HH:mm:ss |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | yyyy-MM-dd HH:mm:ss |
| └ page | Integer | 否 | - | 当前页码 (从 1 开始) | 1 |
| └ size | Integer | 否 | - | 每页条数 | 10 |
| └ total | Long | 否 | - | 总记录数 | 100 |
| └ totalPages | Integer | 否 | - | 总页数 | 10 |
| └ hasNext | Boolean | 否 | - | 是否有下一页 | true |
| └ hasPrevious | Boolean | 否 | - | 是否有上一页 | false |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ id | Long | 否 | - | 数据库主键 | 0 |
| └ lssId | String | 否 | - | LSS 节点 ID | |
| └ lssName | String | 否 | - | LSS 节点名称 | |
| └ machineId | String | 否 | - | 关联的机器 ID | |
| └ address | String | 否 | - | LSS 地址 (IP:Port) | |
| └ maxTasks | Integer | 否 | - | 最大并发任务数 | 0 |
| └ currentTasks | Integer | 否 | - | 当前任务数 | 0 |
| └ status | String | 否 | - | 节点状态: ONLINE, OFFLINE, BUSY, MAINTENANCE | |
| └ ffmpegVersion | String | 否 | - | FFmpeg 版本 | |
| └ systemInfo | String | 否 | - | 系统信息 (JSON) | |
| └ lastHeartbeatAt | LocalDateTime | 否 | - | 最后心跳时间 | yyyy-MM-dd HH:mm:ss |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ loadRate | Double | 否 | - | 负载率 (0.0 - 1.0) | 0.0 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | yyyy-MM-dd HH:mm:ss |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"id": 0,
"lssId": "string",
"lssName": "string",
"machineId": "string",
"address": "string",
"maxTasks": 0,
"currentTasks": 0,
"status": "string",
"ffmpegVersion": "string",
"systemInfo": "string",
"lastHeartbeatAt": "yyyy-MM-dd HH:mm:ss",
"enabled": true,
"loadRate": 0,
"createdAt": "yyyy-MM-dd HH:mm:ss",
"updatedAt": "yyyy-MM-dd HH:mm:ss"
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/lss-nodes/detailGET https://tg-live-game.pwtk.cc/api/admin/lss-nodes/detail描述:获取 LSS 节点详情
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| lssId | string | 是 | - | LSS 节点 ID |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: LssNodeDTO) | ||
| └ id | Long | 否 | - | 数据库主键 | 0 |
| └ lssId | String | 否 | - | LSS 节点 ID | |
| └ lssName | String | 否 | - | LSS 节点名称 | |
| └ machineId | String | 否 | - | 关联的机器 ID | |
| └ address | String | 否 | - | LSS 地址 (IP:Port) | |
| └ maxTasks | Integer | 否 | - | 最大并发任务数 | 0 |
| └ currentTasks | Integer | 否 | - | 当前任务数 | 0 |
| └ status | String | 否 | - | 节点状态: ONLINE, OFFLINE, BUSY, MAINTENANCE | |
| └ ffmpegVersion | String | 否 | - | FFmpeg 版本 | |
| └ systemInfo | String | 否 | - | 系统信息 (JSON) | |
| └ lastHeartbeatAt | LocalDateTime | 否 | - | 最后心跳时间 | yyyy-MM-dd HH:mm:ss |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ loadRate | Double | 否 | - | 负载率 (0.0 - 1.0) | 0.0 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | yyyy-MM-dd HH:mm:ss |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"id": 0,
"lssId": "string",
"lssName": "string",
"machineId": "string",
"address": "string",
"maxTasks": 0,
"currentTasks": 0,
"status": "string",
"ffmpegVersion": "string",
"systemInfo": "string",
"lastHeartbeatAt": "yyyy-MM-dd HH:mm:ss",
"enabled": true,
"loadRate": 0,
"createdAt": "yyyy-MM-dd HH:mm:ss",
"updatedAt": "yyyy-MM-dd HH:mm:ss"
}
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/lss-nodes/byMachineGET https://tg-live-game.pwtk.cc/api/admin/lss-nodes/byMachine描述:根据机器 ID 获取关联的 LSS 节点
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| machineId | string | 是 | - | 机器 ID |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ id | Long | 否 | - | 数据库主键 | 0 |
| └ lssId | String | 否 | - | LSS 节点 ID | |
| └ lssName | String | 否 | - | LSS 节点名称 | |
| └ machineId | String | 否 | - | 关联的机器 ID | |
| └ address | String | 否 | - | LSS 地址 (IP:Port) | |
| └ maxTasks | Integer | 否 | - | 最大并发任务数 | 0 |
| └ currentTasks | Integer | 否 | - | 当前任务数 | 0 |
| └ status | String | 否 | - | 节点状态: ONLINE, OFFLINE, BUSY, MAINTENANCE | |
| └ ffmpegVersion | String | 否 | - | FFmpeg 版本 | |
| └ systemInfo | String | 否 | - | 系统信息 (JSON) | |
| └ lastHeartbeatAt | LocalDateTime | 否 | - | 最后心跳时间 | yyyy-MM-dd HH:mm:ss |
| └ enabled | Boolean | 否 | - | 是否启用 | true |
| └ loadRate | Double | 否 | - | 负载率 (0.0 - 1.0) | 0.0 |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | yyyy-MM-dd HH:mm:ss |
| └ updatedAt | LocalDateTime | 否 | - | 更新时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"id": 0,
"lssId": "string",
"lssName": "string",
"machineId": "string",
"address": "string",
"maxTasks": 0,
"currentTasks": 0,
"status": "string",
"ffmpegVersion": "string",
"systemInfo": "string",
"lastHeartbeatAt": "yyyy-MM-dd HH:mm:ss",
"enabled": true,
"loadRate": 0,
"createdAt": "yyyy-MM-dd HH:mm:ss",
"updatedAt": "yyyy-MM-dd HH:mm:ss"
}
]
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/lss-nodes/setEnabledPOST https://tg-live-game.pwtk.cc/api/admin/lss-nodes/setEnabled描述:启用/禁用 LSS 节点
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| lssId | string | 是 | - | LSS 节点 ID | |
| enabled | boolean | 是 | - | 是否启用 | true |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/admin/lss-nodes/deletePOST https://tg-live-game.pwtk.cc/api/admin/lss-nodes/delete描述:删除 LSS 节点
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| lssId | string | 是 | - | LSS 节点 ID |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
GET http://localhost:10050/api/admin/lss-nodes/statsGET https://tg-live-game.pwtk.cc/api/admin/lss-nodes/stats描述:获取 LSS 节点统计信息
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: LssNodeStats) | ||
| └ total | long | 否 | - | No comments found. | 0 |
| └ online | long | 否 | - | No comments found. | 0 |
| └ offline | long | 否 | - | No comments found. | 0 |
| └ busy | long | 否 | - | No comments found. | 0 |
| └ maintenance | long | 否 | - | No comments found. | 0 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"total": 0,
"online": 0,
"offline": 0,
"busy": 0,
"maintenance": 0
}
}
无
本地视频直接推送到 Cloudflare WHIP:
维护人:TG Live
POST http://localhost:10050/api/stream/local/startPOST https://tg-live-game.pwtk.cc/api/stream/local/start描述:启动本地视频推流
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| streamName | String | 否 | - | 流名称(唯一标识) | |
| videoPath | String | 否 | - | 视频文件路径 | |
| loop | Boolean | 否 | - | 是否循环播放 | true |
| targetChannelId | String | 否 | - | 目标推流通道 ID(可选,不传则使用默认通道) |
{
"streamName": "string",
"videoPath": "string",
"loop": true,
"targetChannelId": "string"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: LocalVideoStreamDTO) | ||
| └ streamName | String | 否 | - | 流名称 | |
| └ sourceType | String | 否 | - | 源类型:local_video 或 rtsp_camera | |
| └ sourcePath | String | 否 | - | 源路径(视频文件路径或 RTSP URL) | |
| └ rtspUrl | String | 否 | - | MediaMTX 提供的 RTSP URL | |
| └ loop | Boolean | 否 | - | 是否循环播放 | true |
| └ streamTaskId | String | 否 | - | 推流任务 ID(如果已推送到 Cloudflare) | |
| └ playbackUrl | String | 否 | - | 播放地址(Cloudflare HLS/WHEP) | |
| └ status | String | 否 | - | 状态 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"streamName": "string",
"sourceType": "string",
"sourcePath": "string",
"rtspUrl": "string",
"loop": true,
"streamTaskId": "string",
"playbackUrl": "string",
"status": "string"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/stream/local/stopPOST https://tg-live-game.pwtk.cc/api/stream/local/stop描述:停止本地视频推流
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| streamName | string | 是 | - | No comments found. |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
GET http://localhost:10050/api/stream/local/{streamName}GET https://tg-live-game.pwtk.cc/api/stream/local/{streamName}描述:获取本地视频推流状态
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| streamName | 是 | No comments found. |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: LocalVideoStreamDTO) | ||
| └ streamName | String | 否 | - | 流名称 | |
| └ sourceType | String | 否 | - | 源类型:local_video 或 rtsp_camera | |
| └ sourcePath | String | 否 | - | 源路径(视频文件路径或 RTSP URL) | |
| └ rtspUrl | String | 否 | - | MediaMTX 提供的 RTSP URL | |
| └ loop | Boolean | 否 | - | 是否循环播放 | true |
| └ streamTaskId | String | 否 | - | 推流任务 ID(如果已推送到 Cloudflare) | |
| └ playbackUrl | String | 否 | - | 播放地址(Cloudflare HLS/WHEP) | |
| └ status | String | 否 | - | 状态 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"streamName": "string",
"sourceType": "string",
"sourcePath": "string",
"rtspUrl": "string",
"loop": true,
"streamTaskId": "string",
"playbackUrl": "string",
"status": "string"
}
}
无
维护人:TG Live
GET http://localhost:10050/api/stream/local/listGET https://tg-live-game.pwtk.cc/api/stream/local/list描述:获取所有本地视频推流
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ streamName | String | 否 | - | 流名称 | |
| └ sourceType | String | 否 | - | 源类型:local_video 或 rtsp_camera | |
| └ sourcePath | String | 否 | - | 源路径(视频文件路径或 RTSP URL) | |
| └ rtspUrl | String | 否 | - | MediaMTX 提供的 RTSP URL | |
| └ loop | Boolean | 否 | - | 是否循环播放 | true |
| └ streamTaskId | String | 否 | - | 推流任务 ID(如果已推送到 Cloudflare) | |
| └ playbackUrl | String | 否 | - | 播放地址(Cloudflare HLS/WHEP) | |
| └ status | String | 否 | - | 状态 |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"streamName": "string",
"sourceType": "string",
"sourcePath": "string",
"rtspUrl": "string",
"loop": true,
"streamTaskId": "string",
"playbackUrl": "string",
"status": "string"
}
]
}
无
推流管理 API 接口:
维护人:TG Live
POST http://localhost:10050/api/stream/startPOST https://tg-live-game.pwtk.cc/api/stream/start描述:启动推流任务
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
| lssId | String | 否 | - | LSS 节点 ID(可选,不传则自动选择) | lss_001 |
| cameraId | String | 否 | - | 摄像头 ID(必填) | cam_001 |
| sourceRtspUrl | String | 否 | - | 源 RTSP 地址(可选,如不传则从摄像头服务获取) | rtsp://admin:password@192.168.1.101:554/stream1 |
| profile | String | 否 | - | 推流配置档位: low_latency / standard / file_loop | low_latency |
| whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish |
| playbackUrl | String | 否 | - | WebRTC 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/play |
| remark | String | 否 | - | 备注 |
{
"name": "投币机1号直播",
"lssId": "lss_001",
"cameraId": "cam_001",
"sourceRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1",
"profile": "low_latency",
"whipUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish",
"playbackUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/play",
"remark": "string"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: StreamTaskDTO) | ||
| └ streamSn | String | 否 | - | 推流任务流水号 | stream_abc123def456 |
| └ name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
| └ lssId | String | 否 | - | LSS 节点 ID | lss_001 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ sourceRtspUrl | String | 否 | - | 源 RTSP 地址 | rtsp://admin:password@192.168.1.101:554/stream1 |
| └ profile | String | 否 | - | 推流配置档位: low_latency / standard / file_loop | low_latency |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish |
| └ playbackUrl | String | 否 | - | WebRTC 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/play |
| └ status | String | 否 | - | 推流状态: IDLE, STARTING, STREAMING, STOPPED, ERROR | STREAMING |
| └ statusDescription | String | 否 | - | 状态描述 | 推流中 |
| └ errorMessage | String | 否 | - | 错误信息 | |
| └ retryCount | int | 否 | - | 重试次数 | 0 |
| └ remark | String | 否 | - | 备注 | |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ startedAt | LocalDateTime | 否 | - | 开始推流时间 | 2024-01-15T10:30:05 |
| └ stoppedAt | LocalDateTime | 否 | - | 停止推流时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"streamSn": "stream_abc123def456",
"name": "投币机1号直播",
"lssId": "lss_001",
"cameraId": "cam_001",
"sourceRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1",
"profile": "low_latency",
"whipUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish",
"playbackUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/play",
"status": "STREAMING",
"statusDescription": "推流中",
"errorMessage": "string",
"retryCount": 0,
"remark": "string",
"createdAt": "2024-01-15T10:30:00",
"startedAt": "2024-01-15T10:30:05",
"stoppedAt": "yyyy-MM-dd HH:mm:ss"
}
}
无
维护人:TG Live
POST http://localhost:10050/api/stream/stopPOST https://tg-live-game.pwtk.cc/api/stream/stop描述:停止推流任务
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| taskId | String | 否 | - | 推流任务流水号(与 lssId 二选一) | stream_abc123def456 |
| lssId | String | 否 | - | LSS 节点 ID(与 taskId 二选一,停止该 LSS 所有推流) | lss_001 |
{
"taskId": "stream_abc123def456",
"lssId": "lss_001"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
GET http://localhost:10050/api/stream/task/{streamSn}GET https://tg-live-game.pwtk.cc/api/stream/task/{streamSn}描述:获取任务状态
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| streamSn | 是 | 推流任务流水号 | stream_abc123def456 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: StreamTaskDTO) | ||
| └ streamSn | String | 否 | - | 推流任务流水号 | stream_abc123def456 |
| └ name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
| └ lssId | String | 否 | - | LSS 节点 ID | lss_001 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ sourceRtspUrl | String | 否 | - | 源 RTSP 地址 | rtsp://admin:password@192.168.1.101:554/stream1 |
| └ profile | String | 否 | - | 推流配置档位: low_latency / standard / file_loop | low_latency |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish |
| └ playbackUrl | String | 否 | - | WebRTC 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/play |
| └ status | String | 否 | - | 推流状态: IDLE, STARTING, STREAMING, STOPPED, ERROR | STREAMING |
| └ statusDescription | String | 否 | - | 状态描述 | 推流中 |
| └ errorMessage | String | 否 | - | 错误信息 | |
| └ retryCount | int | 否 | - | 重试次数 | 0 |
| └ remark | String | 否 | - | 备注 | |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ startedAt | LocalDateTime | 否 | - | 开始推流时间 | 2024-01-15T10:30:05 |
| └ stoppedAt | LocalDateTime | 否 | - | 停止推流时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"streamSn": "stream_abc123def456",
"name": "投币机1号直播",
"lssId": "lss_001",
"cameraId": "cam_001",
"sourceRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1",
"profile": "low_latency",
"whipUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish",
"playbackUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/play",
"status": "STREAMING",
"statusDescription": "推流中",
"errorMessage": "string",
"retryCount": 0,
"remark": "string",
"createdAt": "2024-01-15T10:30:00",
"startedAt": "2024-01-15T10:30:05",
"stoppedAt": "yyyy-MM-dd HH:mm:ss"
}
}
无
维护人:TG Live
GET http://localhost:10050/api/stream/tasksGET https://tg-live-game.pwtk.cc/api/stream/tasks描述:获取 LSS 推流任务列表
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| lssId | string | 是 | - | LSS 节点 ID | lss_001 |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ streamSn | String | 否 | - | 推流任务流水号 | stream_abc123def456 |
| └ name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
| └ lssId | String | 否 | - | LSS 节点 ID | lss_001 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ sourceRtspUrl | String | 否 | - | 源 RTSP 地址 | rtsp://admin:password@192.168.1.101:554/stream1 |
| └ profile | String | 否 | - | 推流配置档位: low_latency / standard / file_loop | low_latency |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish |
| └ playbackUrl | String | 否 | - | WebRTC 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/play |
| └ status | String | 否 | - | 推流状态: IDLE, STARTING, STREAMING, STOPPED, ERROR | STREAMING |
| └ statusDescription | String | 否 | - | 状态描述 | 推流中 |
| └ errorMessage | String | 否 | - | 错误信息 | |
| └ retryCount | int | 否 | - | 重试次数 | 0 |
| └ remark | String | 否 | - | 备注 | |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ startedAt | LocalDateTime | 否 | - | 开始推流时间 | 2024-01-15T10:30:05 |
| └ stoppedAt | LocalDateTime | 否 | - | 停止推流时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"streamSn": "stream_abc123def456",
"name": "投币机1号直播",
"lssId": "lss_001",
"cameraId": "cam_001",
"sourceRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1",
"profile": "low_latency",
"whipUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish",
"playbackUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/play",
"status": "STREAMING",
"statusDescription": "推流中",
"errorMessage": "string",
"retryCount": 0,
"remark": "string",
"createdAt": "2024-01-15T10:30:00",
"startedAt": "2024-01-15T10:30:05",
"stoppedAt": "yyyy-MM-dd HH:mm:ss"
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/stream/tasks/activeGET https://tg-live-game.pwtk.cc/api/stream/tasks/active描述:获取所有活动任务
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ streamSn | String | 否 | - | 推流任务流水号 | stream_abc123def456 |
| └ name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
| └ lssId | String | 否 | - | LSS 节点 ID | lss_001 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ sourceRtspUrl | String | 否 | - | 源 RTSP 地址 | rtsp://admin:password@192.168.1.101:554/stream1 |
| └ profile | String | 否 | - | 推流配置档位: low_latency / standard / file_loop | low_latency |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish |
| └ playbackUrl | String | 否 | - | WebRTC 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/play |
| └ status | String | 否 | - | 推流状态: IDLE, STARTING, STREAMING, STOPPED, ERROR | STREAMING |
| └ statusDescription | String | 否 | - | 状态描述 | 推流中 |
| └ errorMessage | String | 否 | - | 错误信息 | |
| └ retryCount | int | 否 | - | 重试次数 | 0 |
| └ remark | String | 否 | - | 备注 | |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ startedAt | LocalDateTime | 否 | - | 开始推流时间 | 2024-01-15T10:30:05 |
| └ stoppedAt | LocalDateTime | 否 | - | 停止推流时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"streamSn": "stream_abc123def456",
"name": "投币机1号直播",
"lssId": "lss_001",
"cameraId": "cam_001",
"sourceRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1",
"profile": "low_latency",
"whipUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish",
"playbackUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/play",
"status": "STREAMING",
"statusDescription": "推流中",
"errorMessage": "string",
"retryCount": 0,
"remark": "string",
"createdAt": "2024-01-15T10:30:00",
"startedAt": "2024-01-15T10:30:05",
"stoppedAt": "yyyy-MM-dd HH:mm:ss"
}
]
}
无
维护人:TG Live
GET http://localhost:10050/api/stream/channelsGET https://tg-live-game.pwtk.cc/api/stream/channels描述:获取推流通道列表
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | array | 否 | 响应数据 (ActualType: List) | ||
| └ channelId | String | 否 | - | 通道 ID | cf_channel_001 |
| └ name | String | 否 | - | 通道名称 | 主推流通道 |
| └ mode | String | 否 | - | 推流模式: WHIP, RTMPS | WHIP |
| └ hlsPlaybackUrl | String | 否 | - | HLS 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/manifest/video.m3u8 |
| └ recordingEnabled | boolean | 否 | - | 是否启用录制 | false |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": [
{
"channelId": "cf_channel_001",
"name": "主推流通道",
"mode": "WHIP",
"hlsPlaybackUrl": "https://customer-xxx.cloudflarestream.com/xxx/manifest/video.m3u8",
"recordingEnabled": false
}
]
}
无
维护人:TG Live
POST http://localhost:10050/api/stream/switchPOST https://tg-live-game.pwtk.cc/api/stream/switch描述:切换推流源
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| streamSn | String | 是 | - | 推流任务流水号 | stream_abc123def456 |
| newCameraId | String | 是 | - | 新的摄像头 ID | cam_001 |
| newRtspUrl | String | 是 | - | 新的 RTSP 地址 | rtsp://admin:password@192.168.1.101:554/stream1 |
{
"streamSn": "stream_abc123def456",
"newCameraId": "cam_001",
"newRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: StreamTaskDTO) | ||
| └ streamSn | String | 否 | - | 推流任务流水号 | stream_abc123def456 |
| └ name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
| └ lssId | String | 否 | - | LSS 节点 ID | lss_001 |
| └ cameraId | String | 否 | - | 摄像头 ID | cam_001 |
| └ sourceRtspUrl | String | 否 | - | 源 RTSP 地址 | rtsp://admin:password@192.168.1.101:554/stream1 |
| └ profile | String | 否 | - | 推流配置档位: low_latency / standard / file_loop | low_latency |
| └ whipUrl | String | 否 | - | WHIP 推流地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish |
| └ playbackUrl | String | 否 | - | WebRTC 播放地址 | https://customer-xxx.cloudflarestream.com/xxx/webRTC/play |
| └ status | String | 否 | - | 推流状态: IDLE, STARTING, STREAMING, STOPPED, ERROR | STREAMING |
| └ statusDescription | String | 否 | - | 状态描述 | 推流中 |
| └ errorMessage | String | 否 | - | 错误信息 | |
| └ retryCount | int | 否 | - | 重试次数 | 0 |
| └ remark | String | 否 | - | 备注 | |
| └ createdAt | LocalDateTime | 否 | - | 创建时间 | 2024-01-15T10:30:00 |
| └ startedAt | LocalDateTime | 否 | - | 开始推流时间 | 2024-01-15T10:30:05 |
| └ stoppedAt | LocalDateTime | 否 | - | 停止推流时间 | yyyy-MM-dd HH:mm:ss |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"streamSn": "stream_abc123def456",
"name": "投币机1号直播",
"lssId": "lss_001",
"cameraId": "cam_001",
"sourceRtspUrl": "rtsp://admin:password@192.168.1.101:554/stream1",
"profile": "low_latency",
"whipUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/publish",
"playbackUrl": "https://customer-xxx.cloudflarestream.com/xxx/webRTC/play",
"status": "STREAMING",
"statusDescription": "推流中",
"errorMessage": "string",
"retryCount": 0,
"remark": "string",
"createdAt": "2024-01-15T10:30:00",
"startedAt": "2024-01-15T10:30:05",
"stoppedAt": "yyyy-MM-dd HH:mm:ss"
}
}
无
房间播放 API 接口:
按需启动推流:
维护人:TG Live
GET http://localhost:10050/api/room/{roomId}/playGET https://tg-live-game.pwtk.cc/api/room/{roomId}/play描述:获取房间播放信息
按需启动推流:
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| roomId | 是 | 房间 ID |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: RoomPlayResponse) | ||
| └ roomId | String | 否 | - | 房间 ID | |
| └ taskId | String | 否 | - | 推流任务 ID | |
| └ whepUrl | String | 否 | - | WHEP 播放地址 (WebRTC) | |
| └ status | String | 否 | - | 推流状态 | |
| └ newlyStarted | boolean | 否 | - | 是否为新启动的推流 | true |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"roomId": "string",
"taskId": "string",
"whepUrl": "string",
"status": "string",
"newlyStarted": true
}
}
无
维护人:TG Live
POST http://localhost:10050/api/room/{roomId}/stopPOST https://tg-live-game.pwtk.cc/api/room/{roomId}/stop描述:停止房间推流
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 必填 | 描述 | 示例值 |
|---|---|---|---|
| roomId | 是 | 房间 ID |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
前端通过此接口获取 Ably Token,用于连接 Ably 实时通信
前端使用此 Token 连接 Ably,只授予订阅权限(不能发布)
GET http://localhost:10050/api/ably/tokenGET https://tg-live-game.pwtk.cc/api/ably/token描述:获取 Ably Token
前端使用此 Token 连接 Ably,只授予订阅权限(不能发布)
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| clientId | string | 否 | - | 客户端标识(如用户 ID 或会话 ID) | web-client |
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: Map) | ||
| └ mapKey | Object | 否 | A map key. | ||
| └ any object | object | 否 | - | any object. |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"mapKey": {
"any object": {}
}
}
}
无
返回前端连接 Ably 所需的配置信息(不包含 API Key)
GET http://localhost:10050/api/ably/configGET https://tg-live-game.pwtk.cc/api/ably/config描述:获取 Ably 连接信息
返回前端连接 Ably 所需的配置信息(不包含 API Key)
ContentType:application/x-www-form-urlencoded;charset=UTF-8
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | 响应数据 (ActualType: Map) | ||
| └ mapKey | Object | 否 | A map key. | ||
| └ any object | object | 否 | - | any object. |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {
"mapKey": {
"any object": {}
}
}
}
无
接收来自 LSS (Local Sender Service) 的回调请求:
维护人:TG Live
POST http://localhost:10050/api/lss/registerPOST https://tg-live-game.pwtk.cc/api/lss/register描述:LSS 节点注册
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| nodeId | String | 否 | - | No comments found. | |
| nodeName | String | 否 | - | No comments found. | |
| nodeIp | String | 否 | - | No comments found. | |
| nodePort | Integer | 否 | - | No comments found. | 0 |
| machineId | String | 否 | - | No comments found. | |
| maxTasks | int | 否 | - | No comments found. | 0 |
| ffmpegPath | String | 否 | - | No comments found. | |
| systemInfo | SystemInfo | 否 | No comments found. | ||
| └ os | String | 否 | - | No comments found. | |
| └ cpuCores | int | 否 | - | No comments found. | 0 |
| └ totalMemory | long | 否 | - | No comments found. | 0 |
| └ availableMemory | long | 否 | - | No comments found. | 0 |
| └ ffmpegVersion | String | 否 | - | No comments found. |
{
"nodeId": "string",
"nodeName": "string",
"nodeIp": "string",
"nodePort": 0,
"machineId": "string",
"maxTasks": 0,
"ffmpegPath": "string",
"systemInfo": {
"os": "string",
"cpuCores": 0,
"totalMemory": 0,
"availableMemory": 0,
"ffmpegVersion": "string"
}
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/lss/heartbeatPOST https://tg-live-game.pwtk.cc/api/lss/heartbeat描述:LSS 心跳上报
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| nodeId | String | 否 | - | No comments found. | |
| activeTaskCount | int | 否 | - | No comments found. | 0 |
| cpuUsage | Double | 否 | - | No comments found. | 0.0 |
| memoryUsage | Double | 否 | - | No comments found. | 0.0 |
{
"nodeId": "string",
"activeTaskCount": 0,
"cpuUsage": 0,
"memoryUsage": 0
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无
维护人:TG Live
POST http://localhost:10050/api/lss/task/callbackPOST https://tg-live-game.pwtk.cc/api/lss/task/callback描述:LSS 任务状态回调
ContentType:application/json
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| taskId | String | 否 | - | No comments found. | |
| nodeId | String | 否 | - | No comments found. | |
| callbackType | enum | 否 | - | No comments found. [Enum values: STARTED() STOPPED() ERROR() STATUS_UPDATE() ] |
STARTED |
| status | String | 否 | - | No comments found. | |
| processId | Long | 否 | - | No comments found. | 0 |
| hlsPlaybackUrl | String | 否 | - | No comments found. | |
| errorMessage | String | 否 | - | No comments found. |
{
"taskId": "string",
"nodeId": "string",
"callbackType": "STARTED",
"status": "string",
"processId": 0,
"hlsPlaybackUrl": "string",
"errorMessage": "string"
}
| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|---|---|---|---|---|---|
| success | Boolean | 否 | - | 请求是否成功 | true |
| errCode | String | 否 | - | 错误码(失败时返回) | |
| errMessage | String | 否 | - | 错误信息(失败时返回) | |
| data | object | 否 | - | 响应数据 (ActualType: Void) |
{
"success": true,
"errCode": "string",
"errMessage": "string",
"data": {}
}
无