package video import "github.com/gogf/gf/v2/frame/g" // ---------- 提交视频分析任务 ---------- // AnalysisReq 提交视频分析任务请求 type AnalysisReq struct { g.Meta `path:"/video/analysis" method:"post" tags:"视频分析" summary:"提交视频分析任务" dc:"接收视频链接数组,后台异步串行分析,立即返回taskId"` VideoURLs []string `json:"video_urls" v:"required#视频URL列表不能为空" dc:"视频URL列表"` CallbackURL string `json:"callback_url" v:"required#回调地址不能为空" dc:"回调地址,分析完成后POST结果到该地址"` } // CreateAnalysisTaskRes 创建视频分析任务响应 type CreateAnalysisTaskRes struct { TaskID string `json:"taskId" dc:"任务ID"` } // ---------- 查询任务进度/结果 ---------- // GetAnalysisTaskReq 查询视频分析任务请求 type GetAnalysisTaskReq struct { g.Meta `path:"/video/analysis/task/{taskId}" method:"get" tags:"视频分析" summary:"查询分析任务结果" dc:"根据taskId查询视频分析任务的进度和结果"` TaskID string `json:"taskId" dc:"任务ID"` } // AnalysisDetailItem 单个视频分析结果项 type AnalysisDetailItem struct { VideoURL string `json:"video_url" dc:"原始视频URL"` VideoSavePath string `json:"video_save_path" dc:"视频本地保存路径"` Status string `json:"status" dc:"状态: pending/success/failed"` CaptionResult interface{} `json:"caption_result,omitempty" dc:"Caption接口返回结果"` FailReason string `json:"fail_reason,omitempty" dc:"失败原因"` } // GetAnalysisTaskRes 查询视频分析任务响应 type GetAnalysisTaskRes struct { TaskID string `json:"taskId" dc:"任务ID"` Status string `json:"status" dc:"状态: pending/processing/success/failed"` Total int `json:"total" dc:"视频总数"` Processed int `json:"processed" dc:"已处理数"` SuccessCount int `json:"successCount" dc:"成功数"` FailedCount int `json:"failedCount" dc:"失败数"` List []AnalysisDetailItem `json:"list" dc:"视频详情列表"` ErrorMessage string `json:"errorMessage,omitempty" dc:"错误信息"` CreatedAt int64 `json:"createdAt" dc:"创建时间戳"` }