Files
media/model/dto/video/scene_split_dto.go
T
2026-06-22 09:18:45 +08:00

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:"创建时间戳"`
}