轻剪云 · 短视频内容生产平台 / 混剪视频

批量混剪功能重构 · 产品需求文档

把三条出片路径合并为唯一流程,并把出片能力从单条升级为批量
产品轻剪云 · 短视频内容生产平台
模块混剪视频(本次为功能重构)
版本V1.0(重构版)
文档类型产品需求文档(PRD)
撰写角色负责该模块的产品方案设计、版本拆分与线上验收
关联文档《老链路兼容与灰度回退》(配套篇,本模块改造的安全边界)
本文档基于真实项目脱敏重写:产品名与素材场景为虚构,业务流程、字段规则、状态机、异常判定与兼容口径均来自真实交付。可独立阅读,不依赖其他材料。

目录

  1. 背景
  2. 需求范围
  3. 业务流程
  4. 详细需求
  5. 数据模型
  6. 状态与异常
  7. 兼容性摘要
  8. 关键决策与推翻记录

关键参数速查

取值说明
一次生成数量 N1~100必填,无默认值
每组素材≥ 3 段不足禁止生成(红禁)
每组口播≥ 1 条建议 3 条,不足仅黄提示
成片时长T ± 20%档位 15 / 30 / 45 / 60s

一、背景

平台原有三条出片路径:「经典混剪」(填参数表单直接出片)、「分镜剪辑」(导入脚本 → 手工给每个镜头配素材 → 出片)、「脚本生成」(AI 出镜头组脚本)。三条都能出片,但存在两类根本问题。

一是功能互相矛盾、配置过多。脚本与素材强绑定,一个脚本只能配一套素材、出一版成片;出片配置把大量引擎参数直接暴露给用户(镜头数、单镜秒数、去头去尾、变速倍率、三路音量、亮度对比度饱和度、滤镜枚举、转场枚举、字幕字号等),用户既看不懂,也不该由用户决定。这与"AI 混剪提效"的定位相悖。

二是无法批量。出片是单线程的,一次请求只能出一版;要 N 条成片只能人工重复 N 次操作,且 N 条之间没有差异来源,出来的是同一条片。

本次重构要解决什么:把三条路径合并为唯一流程,让「生成几条 + 每条多长 + 内容 + 素材 + 策略」成为用户唯一需要决定的事,其余全部由系统推导;同时把出片能力从单条升级为批量,并保证批内每条互不相同。

这是一份重构类 PRD,不是从零定义新产品。改造对象是一条已在生产环境出片的核心链路——真正的难点不是新流程好不好用,而是老数据不丢、老行为不漂移、出问题随时能退回。


二、需求范围

需求项本次范围预期结果
统一入口与流程三条路径合并为唯一「混剪视频」五步流程;旧入口保留但置灰,作为回退开关用户只走一条路;新流程出问题时放开置灰即切回经典链路
数量与时长前置生成数量 N(1~100,必填无默认)+ 每条目标时长 T(15/30/45/60s,默认 30s)镜头拆分、配音、时长全部由 N + T 自动推导,用户不再配镜头数
脚本与口播池每个镜头组自带 1 条主口播,可对任意一条仿写扩充变体;每组 ≥1 条硬性、建议 ≥3 条文案变体与生成条数解耦,不再为凑批量条数生成废文案
按镜头组素材槽每组一个素材槽,≥3 段达标、不足禁止生成;支持整池上传后一键自动分配素材按情节段落归属,不跨组挪用;情节拼得成形
出片配置收敛主流程一行(N|策略|比例);高级配置折叠为 4 项,音色/BGM/字体支持多选成池,改动回存个人偏好用户可见参数从几十个收敛到 4 个,且只作用于整批
批量生成内核一次请求拆成 N 个渲染任务,逐条随机实例化并固化到任务快照N 条成片互不相同,且可复现、可重试
批次与作品管理新增批次聚合视图与「未分组」收纳;支持单条重试与整批重生成批量产物可管理、可断点、可重来
老链路兼容与回退老脚本只读映射、老请求等价翻译、数据只加不改、置灰即开关改造期内老链路行为零漂移,随时可回退(详见配套文档)
内容安全兜底口播完整收尾、禁用静止帧硬撑、结尾定格淡出、字幕与配音对齐批量出片不出现"话没说完就切走""画面卡住""声音突然断"

本次不包含:生成策略的参数数值调优;描述式 AI 生成的文案质量打磨;节奏常量校准;单镜头组级覆盖(V1 只做整批级)。


三、业务流程

用户从进入「混剪视频」到拿到成片,共五步,逐步解锁,前一步未完成不显示下一步。

① 定数量与时长        ② 写内容              ③ 放素材             ④ 出片配置          ⑤ 生成
生成数量 N(必填)  →  描述式 / 自建式    →  每组一个素材槽    →  N|策略|比例     →  达标校验
每条时长 T(默认30)    导入旧脚本            ≥3 段达标          高级配置(折叠4项)    建批次 → 异步渲染
默认组数 B = T÷5        产物 = 完整脚本       整池上传一键分配    改动回存个人偏好       批次进度 → 作品管理
步骤角色/系统操作或判断输出/状态
用户填 N(1~100)、选 T(15/30/45/60s);系统按 T 实时显示"约 B = T÷5 个镜头组"缺 N 不可进入下一步;B 为该次生成的初始预估
用户 / AI描述式:一句话 → AI 出 B 组脚本(每组画面描述 + 1 条主口播);自建式:手动建组;导入旧脚本:只读映射后补齐口播产物 = 完整脚本,随生成请求一起提交,不存中间态
用户 / 系统每组放入素材;系统实时校验组内段数≥3 段绿(可生成);0~2 段红禁(拦截)
用户一行内确认 N、策略、比例;高级配置可展开编辑改动即时回存个人默认偏好;N、T 不回存
系统契约校验 → 达标校验 → 建批次 → 拆 N 个任务异步渲染 → 进度回写批次状态:进行中 x/y → 成功 / 部分失败;完成后进作品管理批次视图

四、详细需求

4.1 入口与菜单

场景需求说明结果与提示
新入口新增一级菜单「混剪视频」,无子菜单,即本流程全部内容全平台唯一出片主入口
旧入口「经典混剪」「分镜剪辑」两项置灰不可进入,代码与路由不删置灰即回退开关:新流程出问题,放开置灰即切回经典链路
脚本生成入口保留可进,其 AI 生成能力内嵌为本流程步骤二的组件(同源同数据,不重复实现)老用户可继续使用,不引导来回切换

4.2 步骤一 · 数量与时长

字段控件必填格式/枚举校验与联动
生成数量 N数字输入整数 1~100,无默认值越界或为空阻止进入下一步;不写入个人偏好。每次生成显式确认,防止误用上次批量数
每条目标时长 T下拉15 / 30 / 45 / 60(秒),默认 30变更后实时刷新默认组数 B;档位制,不开放自定义秒数
默认镜头组数 B只读提示B = T ÷ 5(常量每镜净长 5s)用户在步骤二增删组后,以实际组数为准并明示差额。T=15→3 组;30→6;45→9;60→12

B 只是初始预估。描述式由 AI 实际返回组数为准,页面明示"预估 6 组,实际返回 4 组",用户可增删组对齐;成片实际时长以口播与素材推导为准,落在 T ±20% 内即达标,先不锁死秒数。

4.3 步骤二 · 写内容(脚本与口播池)

脚本在本页内完成,不跳转到独立脚本页。产物 = B 个镜头组,每组含名称、画面描述、口播池、素材池。

场景触发条件需求说明结果与提示
描述式生成用户输入一句话调 AI 生成 B 组脚本,每组自带画面描述 + 1 条主口播;结果可改组名/描述、可增删组以实际组数为准,与预估不符时明示差额
自建式用户手动新建手动建组、命名、写画面描述;口播至少手填 1 条与描述式产物结构完全一致
导入旧脚本用户选择历史脚本走只读映射:一个段落 → 一个镜头组;已有台词进入该组口播池第 1 条;无法归类到新结构的字段原样保留映射只产生新脚本记录,绝不修改老数据
口播仿写扩充用户对池内任意一条点「仿写」输入想生成的变体条数(1~50,默认 3),追加进本组口播池末尾;可继续对任一条再仿写追加即时生效,达标校验同步刷新;失败重试幂等,不重复追加

口播池规则

规则
硬性门槛每组 ≥1 条,为 0 时禁止生成(契约层拦截)
建议线每组 ≥3 条,不足只给黄提示,不阻断
与 N 的关系完全解耦。一个镜头组在成片里就是一段情节、只讲 1 条口播;口播池是该情节的多条文案变体,不是为 N 凑数
批量差异来源N 条成片在 B 个组各随机抽 1 条,组合空间 = 各组池条数之积(例:每组 3 条 × 6 组 = 729 种)
池小复用每组只有 1 条时该组口播必然复用,属用户刻意选择,黄提示不阻断

校验提示(可直接使用)

4.4 步骤三 · 按镜头组放素材

认知前提:镜头组 = 成片中的一段情节段落,由组内多段素材的画面拼接表达(例:甜品组 = 切水果 → 搅拌 → 入模)。素材段数下限是镜头组的固有属性,不随生成条数 N 变化。

场景触发条件需求说明结果与提示
组素材槽进入步骤三每组一个槽,显示组名、画面描述、已放入素材(缩略图 + 时长)与状态条状态由服务端达标校验统一返回,前端不自拼文案
逐库选择加入用户从素材库选支持单选/多选加入,可从槽内移除,可在组之间拖拽移动未点确认不写入脚本,无脏数据
整池上传用户批量上传先进「待分配池」,不归属任何组池内素材可预览
一键自动分配用户点击后端按每组画面描述/组名与素材标题做弱匹配打分,总量按组数均分、先保每组 ≥3,无匹配随机补位返回建议分配清单 + 依据说明(如"按'搅拌'匹配到 3 段"),不直接落库
确认与手调用户确认或拖拽调整后写入各组素材池,重新跑达标校验,逐组刷新状态确认前的一切调整不落库

达标规则与文案(可直接使用)

状态条件用户看到的提示
红禁(不能生成)组内 0 段"镜头组 3 还没有素材,至少传 3 段(0/3)才能生成"
红禁(不能生成)组内 1~2 段"镜头组 2 素材只有 1 段(1/3),再补 2 段才能生成"
绿(达标)组内 ≥3 段可生成;段数越多,画面挑得越好,无上限提示
[原型占位] 步骤三 · 按镜头组放素材
──────────────────────────────────────────────────────
镜头组 1 · 备料      已放 1 段      状态:红禁
  提示:镜头组 1 素材只有 1 段(1/3),再补 2 段才能生成

镜头组 2 · 制作      已放 4 段      状态:达标
  提示:可生成,段数越多画面挑得越好

待分配池              整池上传的中转区,未归属任何组
  操作:一键自动分配 → 返回建议清单 + 依据说明,确认后才落库

计段口径:1 段素材计 1 段,不按时长折算。长素材也只算 1 段。

绑定与复用约束

4.5 步骤四 · 出片配置

主流程一行常驻:生成数量 N(可回看微调)| 生成策略 ▾ | 比例 ▾

比例放在主流程而不进高级配置——它决定"剪给哪个平台用",是每单都该看见的目标项。

配置项控件默认值规则
配音音色多选(成池)随策略勾选 ≥1 项即成池;不展开/不勾 = 用策略默认单值
BGM 风格多选(成池)随策略同上
字幕字体多选(成池)随策略同上
素材原音开关(开/关)随策略布尔,非池

多选池的随机规则

覆盖优先级:用户高级配置 > 策略字段 > 系统默认。用户不填即完全按策略。

不开放项(引擎与策略内部,防矛盾):镜头数、单镜头秒数、字幕逐条时间轴、去头去尾、变速倍率、三路音量细调、亮度/对比度/饱和度、滤镜枚举、转场枚举、字幕字号。全部由脚本内容或策略推导。

个人默认偏好回存:音色池 / BGM 池 / 字体池 / 素材原音开关 + 主流程的比例与上次使用的策略,改动即时回存(防抖写),下次进入自动带出,提供「恢复默认」一键清空。N 与 T 不回存。

策略可用性(V1):唯一可用策略为「标准解说」。下拉同时展示「快闪卡点」但置灰标注"打磨中",点击给提示,不产生该策略的生成请求。

4.6 步骤五 · 校验与生成

契约校验(结构非法直接拒,不建批次)
  → 达标校验(素材红禁拒;口播黄提示与成本提醒随响应带回,不阻断)
  → 建批次 → 拆 N 个渲染任务 → 异步渲染 → 进度回写
校验判定处理
契约校验脚本结构、N 范围、T 枚举、策略枚举、每组口播 ≥1不通过直接拒绝并返回明确错误,不落任何数据
素材达标每组素材 ≥3 段不通过拦截,逐组列出原因
口播达标每组 ≥3 条为建议线不足仅提示,不阻断
成本提醒镜头组数 × N 超过阈值(V1 取 600 条配音与渲染任务,阈值按线上实测确定)提示"预计耗时长、进队列排队",不阻断

4.7 批量生成与随机实例化

一次请求拆成 N 个渲染任务,每个任务独立随机,跨批次与同批次内都如此。差异来自四个互不冲突的维度:

内容优先与安全兜底(每条成片都必须满足)

规则处理
镜长推导(标准解说)该组口播语音合成试算时长 + 0.3s 余量,下限 2s
素材不够长时先降速,变速下限 0.5x;仍不足则缩短该镜并在任务详情注明("素材不足,该镜取实际 x.xx s");禁止用静止帧硬撑,禁止无限拉长单段
口播完整性任何兜底下,台词必须说完才允许切走或收尾;字幕时间点与配音对齐,容差 ±0.3s
结尾末镜口播说完后定格 1s,背景乐淡出收束,不硬切截断
时长达标预估按每镜净长 5s,实际以推导为准,成片落在 T ±20% 即达标;预估与实际在任务详情可见

失败与中断语义

场景处理
单条任务失败标记失败原因,不产出残片,不把残片计为成功作品
批次中断进行中的任务落到终态,排队中的任务标记中断
批次整体含失败任务时批次状态为「部分失败」,失败原因汇总在批次上可读
单条重试复用该失败任务的原随机种子与抽定值做确定性重渲染;瞬时型失败可复原成功,确定性根因(如素材缺失)仍在时如实再败并标因
整批重生成复用批次快照(脚本/素材/策略/配置不变)+新随机种子建新批次,旧批次保留可查

4.8 作品管理 · 批次视图

场景需求说明
默认主界面批次卡片列表,按创建时间倒序;一个批次 = 一张卡片,显示创建时间、成片缩略图排布、整体状态(生成中 x/y/成功/部分失败)、失败原因摘要
展开展开为该批 N 个成片列表,每片可播放 / 下载 / 删除;失败单条标红给原因并提供重试入口
未分组历史老作品(无批次归属)收纳于「未分组」,播放 / 下载 / 删除 / 详情行为与改造前完全一致,不写老数据,防老用户困惑
成片详情保留现有详情能力,新增「所属批次」入口可跳回卡片
删除边界删除只作用于单条成片,不整批级联删;未分组老作品永不被批次操作触碰

五、数据模型

输入 = 生成数量 N(1~100 必填)+ 每条目标时长 T(15/30/45/60s)
    ▼
脚本 Script
  └─ 镜头组 Block × B { 名称, 画面描述,
                         口播池 voiceovers(≥1 硬性、建议 ≥3),
                         素材池 materials(≥3 段硬性、上限不限)}
生成请求 Req = 脚本 + 策略 id + N + T + overrides{ 音色池 / BGM 池 / 字体池 / 素材原音 }
    ▼
生成批次 Batch { id, 用户, 快照(脚本/策略/N/T/配置), 状态, 进度, 创建时间, 失败汇总 }
  └─ 渲染任务 Task × N { 序号, 实例快照(抽定的音色/BGM/字体 + 每组口播索引 + 抽段方案),
                          状态, 错误原因, 产出作品, 起止时间 }
    ▼
成片 Work { …, 批次 id }

存储改动原则:只加不改。新增三张表(批次表、任务表、个人默认偏好表);现有作品表新增一列「批次 id」(可空 + 索引),历史记录保持空 = 未分组;迁移脚本幂等执行,老数据零改动;批次 id 仅由批量渲染产物回填,脚本类/草稿类记录不挂。个人偏好表的存盘字段名与生成请求中的配置字段完全对齐,避免两套命名。


六、状态与异常

6.1 批次状态

状态进入条件退出条件允许操作
排队中批次创建,任务未开始首个任务开始渲染查看
进行中 x/y有任务在渲染全部任务落终态查看进度、取消
成功N 个任务全部成功展开、播放/下载/删除、整批重生成
部分失败至少一个任务失败失败任务重试成功且其余成功展开、单条重试、整批重生成
失败全部任务失败整批重生成

6.2 任务状态

排队中 → 渲染中 → 成功 / 失败 / 中断。中断指批次执行被停止时仍在排队中的任务,按中断标记,不计入失败原因汇总。

6.3 异常与用户可见处理

异常场景系统处理用户看到
未填生成数量 N阻止进入下一步"请先填写生成数量(1~100)"
某组素材不足 3 段拦截生成,逐组列出"镜头组 2 素材只有 1 段(1/3),再补 2 段才能生成"
某组无口播契约层拦截"镜头组 3 还没有口播,至少写 1 条才能生成"
描述式 AI 生成失败保留已填内容,提供重试可读错误文案 + 重试入口,不丢失脚本
一键分配无匹配素材随机补位并说明依据说明中标注哪些为随机补位
重复绑定同一素材到两组后端拦截提示该素材已在其他组,请另传
单条渲染失败标因不产残片,批次转部分失败卡片显示失败原因摘要,单条可重试
整批渲染中断排队任务标中断,进行中任务落终态卡片显示"已中断",可整批重生成
页面刷新或接口失败页内脚本状态保留至确认提交已填内容不丢,或给出明确提示
任意接口失败可读文案 + 可重试不丢已填内容,脚本保留在页内直至确认提交

七、兼容性摘要

本模块改造的安全边界单独成篇(配套文档《老链路兼容与灰度回退》),此处只列四条必须遵守的规则:


八、关键决策与推翻记录

改造过程中有若干条规则被自己推翻。下表保留推翻原因,便于后续追溯——一条从没被质疑过的规则,通常只是还没遇到真实数据。

议题当前结论曾经的方案推翻/保留原因
素材达标线固定硬门槛:每组 ≥3 段,与生成条数 N 无关;不足禁止生成,不降级硬撑按"画面单元口径"与 N 联动(组池容量 ≥ N 才达标、段数预估按 N 折算)镜头组是情节段落,段数下限是组的固有属性;与 N 联动会让用户为了多出几条片而被迫上传大量素材,且长素材被折算成多段,口径说不清
口播池规模每组 ≥1 条硬性、建议 ≥3 条;想要更多由用户主动仿写追加规定"每组口播池目标 = N 条,缺口自动补齐"一个镜头组只讲 1 条口播,池是文案变体不是凑数;按 N 补齐会产生大量废文案,且用户改一次 N,已生成的口播全部作废
批量差异来源口播 / 素材编排 / 音色 / BGM / 字体各自随机,池小复用属正常希望通过"素材段数 ≥ N"保证每条画面不重复与素材达标线同一次推翻——取段区间、顺序、变速与文案变体的组合空间已足够,不必靠堆素材
高级配置范围音色 / BGM 风格 / 字幕字体(前 3 项多选成池)+ 素材原音开关,改动回存个人偏好暴露几十个引擎参数这些参数要么由内容推导(镜头数、镜长),要么属策略内部(变速、滤镜、转场、音量),交给用户只会制造矛盾配置
覆盖粒度只支持整条 / 整批级覆盖考虑单镜头组级覆盖V1 不做的理由:属高阶个性化,等有真实需求再以"逐组覆盖"扩展
历史作品去向收纳于「未分组」,行为与现状完全一致;作品管理默认主页为批次卡片草案"全部作品为默认视图"批量场景下按批次管理才是主诉求,且老作品混入会引起老用户困惑
单条重试语义复用原随机种子与抽定值做确定性重渲染允许"重试 = 重抽换种子"语义会漂移成"生成新的一条",破坏同批次的一致性
比例的位置主流程一行常驻:N|策略|比例,比例默认 9:16比例决定"剪给哪个平台用",是每单都该看见的目标项,不是高级玩家的调参项
描述式组数B = T÷5 为初始预估,以 AI 实际返回组数为准并明示差额,用户可增删组对齐AI 的时长→组数映射与"每镜 5s"基准在长档位存在固有偏差;与其强行对齐数值,不如把差额如实告诉用户并给编辑能力
批量混剪功能重构 · 产品需求文档 V1.0 | 轻剪云 · 短视频内容生产平台
配套文档《老链路兼容与灰度回退》 | 真实项目脱敏重写