P1: 支持生成多个预览视频 — 用户选择数量,每个可播放 #1281

Closed
opened 2026-08-07 20:46:26 +08:00 by xiaoxia · 0 comments
Owner

需求

用户可以主动选择生成预览视频的数量(如1-5个),每个预览视频都能可视化播放。预览视频必须包含用户选择的配音音频。

步骤顺序调整

当前步骤:模板(1) → 素材(2) → 预览(3) → 标题(4) → 配音(5) → 封面(6) → 确认(7)

问题: 配音在预览之后选择,导致预览视频没有音频

新步骤: 模板(1) → 素材(2) → 配音(3)预览(4) → 标题(5) → 封面(6) → 确认(7)

  • 配音选择移到预览生成之前
  • 预览生成时将 voice_ids 传给后端,确保预览视频包含配音

交互设计

新 Step 3 配音选择:

  • 从原 Step 5 移至此处
  • 选择配音后,进入预览生成步骤

新 Step 4 生成预览:

  • 新增「预览数量」选择器(如 1/2/3/4/5 个)
  • 点击「生成预览」后,后端批量创建对应数量的预览任务
  • 每个预览视频必须包含用户选择的配音
  • 每个预览视频使用不同的随机素材组合/截取方式
  • 预览结果区域改为网格/列表展示,每个视频独立可播放(含音频)
  • 用户可以点击某个预览视频选中它,进入下一步

当前代码现状

  • 后端API CreatePreviewRequest 已支持 voice_ids 字段
  • 前端类型定义已支持 voice_ids
  • 但前端 useStep3Preview.ts 调用时未传递 voice_ids
  • 步骤顺序:预览(3) → 标题(4) → 配音(5),配音在预览之后

需要改动

后端

  • 新增批量预览API 或 扩展现有API支持 count 参数
  • 批量创建多个独立的 GenerationTask(is_preview=True)
  • 每个任务使用不同的随机种子/素材选取方式
  • 确保 voice_ids 被正确传入渲染流程

前端

  • 调整步骤顺序:配音移到预览之前
  • 修改 constants.ts 中的 STEPS 定义
  • useStep3Preview.ts 改为支持多个预览任务(数组)+ 传递 voice_ids
  • PreviewVideoPanel.tsx 改为网格/列表布局,支持多视频展示
  • 新增「预览数量」选择器组件
  • 每个视频卡片支持点击选中

依赖

  • #1280(预览加速)— 多预览叠加后总耗时会增加,需要先确保单个预览足够快

验收标准

  • 用户可选择生成1-5个预览视频
  • 每个预览视频都能独立播放,且包含配音音频
  • 多个预览视频的内容应有差异(不同素材组合/截取)
  • 所有预览视频并行生成,总耗时 ≈ 单个预览耗时(不是线性叠加)
  • 步骤顺序正确:配音在预览之前

相关代码

  • 后端:apps/api/app/api/routes/generation_preview.py
  • 前端 Hook:apps/web/src/pages/generate/hooks/useStep3Preview.ts
  • 前端组件:apps/web/src/pages/generate/components/PreviewVideoPanel.tsx
  • 前端 API:apps/web/src/api/generation/preview.ts
  • 步骤定义:apps/web/src/pages/generate/constants.ts(STEPS 数组)
## 需求 用户可以主动选择生成预览视频的数量(如1-5个),每个预览视频都能可视化播放。**预览视频必须包含用户选择的配音音频。** ## 步骤顺序调整 当前步骤:模板(1) → 素材(2) → 预览(3) → 标题(4) → **配音(5)** → 封面(6) → 确认(7) **问题:** 配音在预览之后选择,导致预览视频没有音频 **新步骤:** 模板(1) → 素材(2) → **配音(3)** → **预览(4)** → 标题(5) → 封面(6) → 确认(7) - 配音选择移到预览生成之前 - 预览生成时将 `voice_ids` 传给后端,确保预览视频包含配音 ## 交互设计 **新 Step 3 配音选择:** - 从原 Step 5 移至此处 - 选择配音后,进入预览生成步骤 **新 Step 4 生成预览:** - 新增「预览数量」选择器(如 1/2/3/4/5 个) - 点击「生成预览」后,后端批量创建对应数量的预览任务 - **每个预览视频必须包含用户选择的配音** - 每个预览视频使用不同的随机素材组合/截取方式 - 预览结果区域改为网格/列表展示,每个视频独立可播放(含音频) - 用户可以点击某个预览视频选中它,进入下一步 ## 当前代码现状 - 后端API `CreatePreviewRequest` **已支持** `voice_ids` 字段 - 前端类型定义**已支持** `voice_ids` - 但前端 `useStep3Preview.ts` 调用时**未传递** `voice_ids` - 步骤顺序:预览(3) → 标题(4) → 配音(5),配音在预览之后 ## 需要改动 ### 后端 - 新增批量预览API 或 扩展现有API支持 count 参数 - 批量创建多个独立的 GenerationTask(is_preview=True) - 每个任务使用不同的随机种子/素材选取方式 - 确保 voice_ids 被正确传入渲染流程 ### 前端 - **调整步骤顺序**:配音移到预览之前 - 修改 `constants.ts` 中的 STEPS 定义 - `useStep3Preview.ts` 改为支持多个预览任务(数组)+ 传递 voice_ids - `PreviewVideoPanel.tsx` 改为网格/列表布局,支持多视频展示 - 新增「预览数量」选择器组件 - 每个视频卡片支持点击选中 ## 依赖 - **#1280**(预览加速)— 多预览叠加后总耗时会增加,需要先确保单个预览足够快 ## 验收标准 - 用户可选择生成1-5个预览视频 - 每个预览视频都能独立播放,**且包含配音音频** - 多个预览视频的内容应有差异(不同素材组合/截取) - 所有预览视频并行生成,总耗时 ≈ 单个预览耗时(不是线性叠加) - 步骤顺序正确:配音在预览之前 ## 相关代码 - 后端:`apps/api/app/api/routes/generation_preview.py` - 前端 Hook:`apps/web/src/pages/generate/hooks/useStep3Preview.ts` - 前端组件:`apps/web/src/pages/generate/components/PreviewVideoPanel.tsx` - 前端 API:`apps/web/src/api/generation/preview.ts` - 步骤定义:`apps/web/src/pages/generate/constants.ts`(STEPS 数组)
xiaoxia added the devops label 2026-08-07 20:46:26 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: xiaoxia/xiaoxia-saas#1281