Skip to content

分镜生成(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)

    • 输入:descriptioneffect
    • 输出:拼接后的提示词字符串,用于生成请求
  • downloadVideoBlob(url)

    • 输入:url(生成平台返回的视频下载地址)
    • 输出:Blob 对象,用于直传到 OSS
  • fetchGetDirectUploadUrl

    • 描述:获取 OSS 直传的临时 uploadUrl
    • 请求字段:
      • bucket:OSS 桶名(如 aigc-sz-linkt
      • key:对象键名(如 ai/temp/video/task-12345.mp4
      • expires:URL有效期(秒,默认 3600
      • regioncn-shenzhen(后端默认,可缺省)
    • 响应字段:
      • uploadUrl:PUT上传地址
      • key:对象键名
  • materialCreationSave(image-api.js)

    • 描述:保存素材 creation 记录
    • 请求字段:titledescriptionkeytype
    • 响应字段:idcreatedAtkey
  • materialImageGenerateRecordSave(image-api.js)

    • 描述:保存生成记录(API端),用于生成历史展示
    • 请求字段:promptplatformvideoUrl/key
    • 响应字段:idtimestamp

示例

请求示例:获取直传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