分镜生成(Generate)
本页聚焦于 GenerateStoryBoard.vue 的“分镜生成”链路,包括从提示词输入到生成记录、素材保存与直传的整体流程、时序图与接口字段说明。
流程概览
- 输入提示词与参数,选择生成平台与方式
- 拉取历史生成记录并展示
- 发起生成任务并轮询结果
- 选择是否保存为素材:下载视频 Blob,直传到 OSS,记录入库
时序图(Sequence Diagram)
mermaid
sequenceDiagram
participant U as User
participant G as GenerateStoryBoard.vue
participant P as Gen Platform
participant OSS as Aliyun OSS
participant API as Backend API
U->>G: 输入提示词/参数,选择平台
G->>P: 发起生成任务(平台API)
loop 轮询
G->>P: 查询生成状态
P-->>G: 返回视频结果/预览URL
end
alt 保存为素材
G->>G: downloadVideoBlob(url)
G->>API: fetchGetDirectUploadUrl(bucket,key,expires)
API-->>G: 返回 uploadUrl
G->>OSS: PUT Blob 到 uploadUrl
G->>API: materialCreationSave/materialImageGenerateRecordSave
API-->>G: 返回素材记录与 key
else 不保存
G->>G: 结束并返回预览
end主要方法与字段说明
buildPromptFromDescEffect(description, effect)
- 输入:
description,effect - 输出:拼接后的提示词字符串,用于生成请求
- 输入:
downloadVideoBlob(url)
- 输入:
url(生成平台返回的视频下载地址) - 输出:
Blob对象,用于直传到 OSS
- 输入:
fetchGetDirectUploadUrl
- 描述:获取 OSS 直传的临时
uploadUrl - 请求字段:
bucket:OSS 桶名(如aigc-sz-linkt)key:对象键名(如ai/temp/video/task-12345.mp4)expires:URL有效期(秒,默认3600)region:cn-shenzhen(后端默认,可缺省)
- 响应字段:
uploadUrl:PUT上传地址key:对象键名
- 描述:获取 OSS 直传的临时
materialCreationSave(image-api.js)
- 描述:保存素材 creation 记录
- 请求字段:
title,description,key,type等 - 响应字段:
id,createdAt,key
materialImageGenerateRecordSave(image-api.js)
- 描述:保存生成记录(API端),用于生成历史展示
- 请求字段:
prompt,platform,videoUrl/key等 - 响应字段:
id,timestamp
示例
请求示例:获取直传URL
json
{
"bucket": "aigc-sz-linkt",
"key": "ai/temp/video/task-12345.mp4",
"expires": 3600
}响应示例:直传URL
json
{
"uploadUrl": "https://aigc-sz-linkt.oss-cn-shenzhen.aliyuncs.com/ai/temp/video/task-12345.mp4?x-oss-...",
"key": "ai/temp/video/task-12345.mp4"
}保存生成记录示例
json
{
"prompt": "未来城市空中交通,数字艺术风格",
"platform": "即梦",
"videoUrl": "https://example.com/generated.mp4",
"key": "ai/temp/video/task-12345.mp4"
}注意事项
- 优先用
key管理OSS对象,避免使用长URL作为唯一标识。 - Blob直传前务必确定
contentType正确(如video/mp4)。 - 生成平台的预览URL与最终下载URL可能不同,保存素材请使用自有OSS
key。