44 lines
2.2 KiB
Go
44 lines
2.2 KiB
Go
package video
|
|
|
|
import "github.com/gogf/gf/v2/frame/g"
|
|
|
|
// ---------- 场景检测+视频分割(异步)----------
|
|
|
|
// SceneSplitReq 场景检测+视频分割请求
|
|
type SceneSplitReq struct {
|
|
g.Meta `path:"/scene-split" method:"post" tags:"场景分割" summary:"场景检测并分割视频(异步)" dc:"下载视频,基于PySceneDetect检测场景变化并分割成多个视频片段,同时提取音频,全部上传到MinIO后回调通知"`
|
|
VideoURL string `json:"videoUrl" v:"required#视频URL不能为空" dc:"视频URL地址"`
|
|
Threshold float64 `json:"threshold" dc:"场景检测阈值(默认27),越小越敏感、场景切割越多" d:"27.0"`
|
|
CallbackURL string `json:"callbackUrl" dc:"回调地址,处理完成后POST结果到该地址(可选)"`
|
|
}
|
|
|
|
// CreateSceneSplitTaskRes 创建场景分割任务响应
|
|
type CreateSceneSplitTaskRes struct {
|
|
TaskID string `json:"taskId" dc:"任务ID"`
|
|
}
|
|
|
|
// GetSceneSplitTaskReq 查询场景分割任务请求
|
|
type GetSceneSplitTaskReq struct {
|
|
g.Meta `path:"/scene-split/task/{taskId}" method:"get" tags:"场景分割" summary:"查询场景分割任务结果" dc:"根据taskId查询异步场景分割任务结果"`
|
|
TaskID string `json:"taskId" dc:"任务ID"`
|
|
}
|
|
|
|
// SegmentEntry 单个分片信息(按时间线排列)
|
|
type SegmentEntry struct {
|
|
Timeline string `json:"timeline" dc:"时间线标识,如 0.0-7.2"`
|
|
URL string `json:"url" dc:"分片MinIO地址"`
|
|
}
|
|
|
|
// GetSceneSplitTaskRes 查询场景分割任务响应
|
|
type GetSceneSplitTaskRes struct {
|
|
TaskID string `json:"taskId" dc:"任务ID"`
|
|
Status string `json:"status" dc:"状态: pending/running/success/failed"`
|
|
AudioURL string `json:"audioUrl,omitempty" dc:"提取的音频MinIO地址"`
|
|
Segments []SegmentEntry `json:"segments,omitempty" dc:"按时间线排列的视频分片列表"`
|
|
SceneCount int `json:"sceneCount" dc:"检测到的场景数/分片数"`
|
|
AudioDuration float64 `json:"audioDuration,omitempty" dc:"音频时长(秒)"`
|
|
VideoDuration float64 `json:"videoDuration,omitempty" dc:"视频总时长(秒)"`
|
|
ErrorMessage string `json:"errorMessage,omitempty" dc:"错误信息"`
|
|
CreatedAt int64 `json:"createdAt" dc:"创建时间戳"`
|
|
}
|