根据模版渲染视频

This commit is contained in:
lmk
2026-07-07 16:02:31 +08:00
parent b740e400c9
commit ecb41269cd
7 changed files with 901 additions and 10 deletions
+50
View File
@@ -0,0 +1,50 @@
package video
import "github.com/gogf/gf/v2/frame/g"
// ---------- HTML 模板定义 ----------
// HtmlTemplate 单段HTML模板
type HtmlTemplate struct {
URL string `json:"url" v:"required#模板URL不能为空" dc:"模板HTML文件URL,HyperFrames格式,元素使用data-key做占位符"`
Start float64 `json:"start" d:"0" dc:"模板开始时间(秒)"`
End float64 `json:"end" dc:"模板结束时间(秒),不传=持续到视频结束"`
Data map[string]string `json:"data" dc:"模板数据,key对应HTML中元素的data-key属性,value为替换内容。图片URL自动下载"`
}
// ---------- 创建模板任务 ----------
// CreateTemplateTaskReq 创建模板视频任务请求
type CreateTemplateTaskReq struct {
g.Meta `path:"/template" method:"post" tags:"模板视频" summary:"创建模板视频任务(异步)" dc:"使用HTML模板+数据创建营销视频,支持多段模板不同时间区间,返回taskId"`
VideoURLs []string `json:"video_urls" v:"required#视频URL列表不能为空" dc:"背景视频URL列表"`
AudioURL string `json:"audio_url" dc:"背景音频URL(可选)"`
Templates []HtmlTemplate `json:"templates" v:"required#模板列表不能为空" dc:"HTML模板列表,每段可指定时间范围和填充数据"`
Subtitles []SubtitleSegment `json:"subtitles" dc:"字幕时间线列表(可选)"`
SubtitleStyle *SubtitleStyle `json:"subtitle_style" dc:"字幕样式配置(可选)"`
CallbackURL string `json:"callback_url" dc:"任务完成后的回调地址(可选)"`
}
// CreateTemplateTaskRes 创建模板任务响应
type CreateTemplateTaskRes struct {
TaskID string `json:"taskId" dc:"任务ID"`
}
// ---------- 查询模板任务 ----------
// GetTemplateTaskReq 查询模板任务请求
type GetTemplateTaskReq struct {
g.Meta `path:"/template/{taskId}" method:"get" tags:"模板视频" summary:"查询模板视频任务结果" dc:"根据taskId查询模板视频任务详情"`
TaskID string `json:"taskId" dc:"任务ID"`
}
// GetTemplateTaskRes 查询模板任务响应
type GetTemplateTaskRes struct {
TaskID string `json:"taskId" dc:"任务ID"`
Status string `json:"status" dc:"任务状态"`
FileURL string `json:"fileUrl,omitempty" dc:"输出文件URL"`
FileSize int64 `json:"fileSize,omitempty" dc:"输出文件大小"`
FileName string `json:"fileName,omitempty" dc:"输出文件名"`
DurationStr string `json:"durationStr,omitempty" dc:"视频时长"`
ErrorMessage string `json:"errorMessage,omitempty" dc:"错误信息"`
}