|
|
@@ -0,0 +1,854 @@
|
|
|
+# 文档
|
|
|
+
|
|
|
+## 推流服务
|
|
|
+
|
|
|
+## 本地视频推流 Controller
|
|
|
+
|
|
|
+本地视频直接推送到 Cloudflare WHIP:
|
|
|
+
|
|
|
+- POST /stream/local/start 启动本地视频推流
|
|
|
+- POST /stream/local/stop 停止本地视频推流
|
|
|
+- GET /stream/local/{name} 获取推流状态
|
|
|
+- GET /stream/local/list 获取所有本地视频推流
|
|
|
+
|
|
|
+### 启动本地视频推流
|
|
|
+
|
|
|
+维护人:TG Live
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `POST` http://localhost:10050/api/stream/local/start
|
|
|
+- 开发环境: `POST` https://tg-live-game.pwtk.cc/api/stream/local/start
|
|
|
+
|
|
|
+描述:启动本地视频推流
|
|
|
+
|
|
|
+ContentType:`application/json`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+##### Body Parameter
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| --------------- | ------- | ---- | -------- | ------------------------------------------- | ------ |
|
|
|
+| 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `POST` http://localhost:10050/api/stream/local/stop
|
|
|
+- 开发环境: `POST` https://tg-live-game.pwtk.cc/api/stream/local/stop
|
|
|
+
|
|
|
+描述:停止本地视频推流
|
|
|
+
|
|
|
+ContentType:`application/x-www-form-urlencoded;charset=UTF-8`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+##### Query Parameter
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| ---------- | ------ | ---- | -------- | ------------------ | ------ |
|
|
|
+| 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `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`
|
|
|
+
|
|
|
+#### Path 参数
|
|
|
+
|
|
|
+| 名称 | 必填 | 描述 | 示例值 |
|
|
|
+| ---------- | ---- | ------------------ | ------ |
|
|
|
+| 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `GET` http://localhost:10050/api/stream/local/list
|
|
|
+- 开发环境: `GET` 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"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 错误码
|
|
|
+
|
|
|
+无
|
|
|
+
|
|
|
+## 推流服务 Controller
|
|
|
+
|
|
|
+推流管理 API 接口:
|
|
|
+
|
|
|
+- POST /stream/start 启动推流任务
|
|
|
+- POST /stream/stop 停止推流任务
|
|
|
+- GET /stream/task/{streamSn} 获取任务状态
|
|
|
+- GET /stream/tasks 获取 LSS 推流任务列表
|
|
|
+- GET /stream/tasks/active 获取所有活动任务
|
|
|
+- GET /stream/channels 获取推流通道列表
|
|
|
+- POST /stream/switch 切换推流源
|
|
|
+
|
|
|
+### 启动推流任务
|
|
|
+
|
|
|
+维护人:TG Live
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `POST` http://localhost:10050/api/stream/start
|
|
|
+- 开发环境: `POST` https://tg-live-game.pwtk.cc/api/stream/start
|
|
|
+
|
|
|
+描述:启动推流任务
|
|
|
+
|
|
|
+ContentType:`application/json`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+##### Body Parameter
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| --- | --- | --- | --- | --- | --- |
|
|
|
+| 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `POST` http://localhost:10050/api/stream/stop
|
|
|
+- 开发环境: `POST` https://tg-live-game.pwtk.cc/api/stream/stop
|
|
|
+
|
|
|
+描述:停止推流任务
|
|
|
+
|
|
|
+ContentType:`application/json`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+##### Body Parameter
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| ------ | ------ | ---- | -------- | ---------------------------------------------------- | ------------------- |
|
|
|
+| 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `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`
|
|
|
+
|
|
|
+#### Path 参数
|
|
|
+
|
|
|
+| 名称 | 必填 | 描述 | 示例值 |
|
|
|
+| -------- | ---- | -------------- | ------------------- |
|
|
|
+| 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"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 错误码
|
|
|
+
|
|
|
+无
|
|
|
+
|
|
|
+### 获取 LSS 推流任务列表
|
|
|
+
|
|
|
+维护人:TG Live
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `GET` http://localhost:10050/api/stream/tasks
|
|
|
+- 开发环境: `GET` https://tg-live-game.pwtk.cc/api/stream/tasks
|
|
|
+
|
|
|
+描述:获取 LSS 推流任务列表
|
|
|
+
|
|
|
+ContentType:`application/x-www-form-urlencoded;charset=UTF-8`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+##### Query Parameter
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| ----- | ------ | ---- | -------- | ----------- | ------- |
|
|
|
+| 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `GET` http://localhost:10050/api/stream/tasks/active
|
|
|
+- 开发环境: `GET` 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `GET` http://localhost:10050/api/stream/channels
|
|
|
+- 开发环境: `GET` 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
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `GET` http://localhost:10050/api/stream/playback/{streamSn}
|
|
|
+- 开发环境: `GET` https://tg-live-game.pwtk.cc/api/stream/playback/{streamSn}
|
|
|
+
|
|
|
+描述:获取播放信息
|
|
|
+
|
|
|
+ContentType:`application/x-www-form-urlencoded;charset=UTF-8`
|
|
|
+
|
|
|
+#### Path 参数
|
|
|
+
|
|
|
+| 名称 | 必填 | 描述 | 示例值 |
|
|
|
+| -------- | ---- | -------------- | ------------------- |
|
|
|
+| streamSn | 是 | 推流任务流水号 | stream_abc123def456 |
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+#### 响应参数
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| --- | --- | --- | --- | --- | --- |
|
|
|
+| success | Boolean | 否 | - | 请求是否成功 | true |
|
|
|
+| errCode | String | 否 | - | 错误码(失败时返回) | |
|
|
|
+| errMessage | String | 否 | - | 错误信息(失败时返回) | |
|
|
|
+| data | object | 否 | | 响应数据 (ActualType: PlaybackInfoDTO) | |
|
|
|
+| └ streamSn | String | 否 | - | 推流任务流水号 | stream_abc123def456 |
|
|
|
+| └ name | String | 否 | - | 任务名称 | 投币机 1 号直播 |
|
|
|
+| └ status | String | 否 | - | 推流状态 | STREAMING |
|
|
|
+| └ whepUrl | String | 否 | - | WHEP 播放地址(WebRTC 低延迟) | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/xxx/webRTC/play |
|
|
|
+| └ hlsUrl | String | 否 | - | HLS 播放地址 | https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/xxx/manifest/video.m3u8 |
|
|
|
+| └ iframeCode | String | 否 | - | iframe 嵌入代码 | <iframe src=... allow=accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture; allowfullscreen=true></iframe> |
|
|
|
+| └ isLive | Boolean | 否 | - | 是否正在推流 | true |
|
|
|
+
|
|
|
+#### 响应示例
|
|
|
+
|
|
|
+```
|
|
|
+{
|
|
|
+ "success": true,
|
|
|
+ "errCode": "string",
|
|
|
+ "errMessage": "string",
|
|
|
+ "data": {
|
|
|
+ "streamSn": "stream_abc123def456",
|
|
|
+ "name": "投币机1号直播",
|
|
|
+ "status": "STREAMING",
|
|
|
+ "whepUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/xxx/webRTC/play",
|
|
|
+ "hlsUrl": "https://customer-pj89kn2ke2tcuh19.cloudflarestream.com/xxx/manifest/video.m3u8",
|
|
|
+ "iframeCode": "<iframe src=... allow=accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture; allowfullscreen=true></iframe>",
|
|
|
+ "isLive": true
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 错误码
|
|
|
+
|
|
|
+无
|
|
|
+
|
|
|
+### 切换推流源
|
|
|
+
|
|
|
+维护人:TG Live
|
|
|
+
|
|
|
+#### URL
|
|
|
+
|
|
|
+- 本地开发环境: `POST` http://localhost:10050/api/stream/switch
|
|
|
+- 开发环境: `POST` https://tg-live-game.pwtk.cc/api/stream/switch
|
|
|
+
|
|
|
+描述:切换推流源
|
|
|
+
|
|
|
+ContentType:`application/json`
|
|
|
+
|
|
|
+#### 请求参数
|
|
|
+
|
|
|
+##### Body Parameter
|
|
|
+
|
|
|
+| 名称 | 类型 | 必填 | 最大长度 | 描述 | 示例值 |
|
|
|
+| ----------- | ------ | ---- | -------- | -------------- | ----------------------------------------------- |
|
|
|
+| 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"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+#### 错误码
|
|
|
+
|
|
|
+无
|