视频拆解标准包 Reel,报告重写,音效单独分离
这一版定下了视频拆解的标准包格式:拆片包(Reel)。拆一条视频现在得到两样东西:给人看的报告(HTML / PDF),和给模型、下游项目读的拆片包。格式介绍和规范见 docs/reel.md。
拆片包 Reel
- 四层逐级展开:卡片 → 概览和地图 → 时间线(一行一镜)→ 单镜文件,最后才是完整数据。一条 3 分钟口播读到概览约 2k token,完整数据约 19 万 token。
- 每个文件开头写着自己的 token 数;看到的和推断的分开写,时间线里推断的键名带
~。 - 字段有 JSON Schema(
rea_video/reel.schema.json)。rea-video reel out/ref --check检查一个目录是否合格,reel.read()读出结构化数据。 - 拆解时自动生成;旧的输出目录用
rea-video reel out/ref补出来。
给人看的报告
- 从上往下:一句话结论 → 核心看点(开头怎么抓人、能火的几处做法,写明第几秒)→ 画面 / 包装 / 声音三层 → 叙事线 → 分镜表 → 照着复刻的步骤和每步细节 → 参考细节。每样信息只出现一次。
- 分镜表每镜分「画面里看得到的」和「工具推断的制作方式」。
- 判断依据写明是谁看的:工具测量、看图模型、AI 助手看图复核、用户纠正。
rea-video pdf out/ref用本机 Chrome 打印成 PDF;正文折叠内容展开,时间轴、逐镜取证这类查阅数据保持折叠。
复刻方案
- 每个 AI 生成单元写明要喂什么:首帧、尾帧、参考图、参考视频,各自从哪来、为什么要。首尾帧和参考素材不能放进同一个请求的模型(如 Seedance 2.x),每个单元只选一种:要保住商品和人物长相时用参考图,只锁构图时用首尾帧。
- Seedance 2.0 的能力补全:一次能出多个镜头,参考图 9 张、参考视频和音频各 3 段,时长 4–15 秒。默认按它规划,不再换成 2.5。能力地图新增
exclusive_inputs字段。 - 同一段成片在片中用了两次(开头先放预告、结尾完整放)时,只生成一次,剪辑时放到两处。
- 拍摄场次和生成单元优先按看图认出的场景分组,特写和中景不会因为颜色不同被拆开。
声音
- 音效单独分离:新增对白 / 音乐 / 音效三轨分离(BandIt v2),音效从音效轨上找,不再在混音里找突然变响的点,人声的爆破音和配乐的鼓点不会再算成音效。在混了 12 个已知音效的 60 秒口播上,找到的从 1 个变成 8 个。
- 听起来一样的音效合并成一种,写明用了几次、在哪几秒;每种能直接试听,试听片段听不到人声和配乐。
- 只列卡在字幕、贴纸、切镜上的后期音效;画面自带的环境声、动作声不算。
判断
- 只有 AI 助手看图复核、没有看图模型时,复核的判断可以跳出工具的前两名(融合结果要正是复核选的类别,且这一镜没有 24→30 这类帧率证据)。相机拍真实手机屏幕的画面不会再停在「3D / 代码渲染」。
- 30fps 文件里每隔一帧重复,不再当成 24fps 素材的证据(那是画面几乎不动)。
- 复核时列出每镜后期加的字幕,画面里拍到的手机界面、包装上的字不再算成字幕和标注。
- 看图复核新增三项:核心看点(
story)、每镜后期文字(overlay_text)、重复使用的成片(same_clip_as)。
评测
- 评测摘要新增
by_resolution/by_camera,按分辨率和运镜拆开准确率和误判方向。 eval/RESULTS.md新增「只用 agent 复核」一栏、误判分布,以及全部评测集从头解码重测的结果。只用工具时,文章视频 88.6% → 96.5%,带货 46.4% → 63.2%,口播 75.5% → 93.3%,没有一组下降。
剪辑包装跟着台词走
口播、带货这类片子,画面里的字幕、花字、贴纸大多跟着说的话出现。这一版把包装层和台词对上,复刻时生成模型只出干净的画面,包装层后叠。
拆解
- 按台词定位:花字、标题、贴纸落在哪句字幕上,句中第几秒,有没有重复句里的词(「五折」花字落在「全场五折」这句上)。换文案时按句子放,不按原秒数。只认说话那一条字幕;画面里的字、OCR 杂讯不参与。
- 常驻图层:跨切镜不变的免责声明、标题栏、角标单独列出,同一段文字多次出现合成一个,复刻时整段叠一次。
- 竖排小字导出 ASS 时按竖排输出,字号不超过测得的文字框。
复刻
remake-plan:首尾帧上带着原片字幕、花字或贴纸的镜头,任务里标出overlays_in_frames并提醒先擦掉再生成,--dry-run会打印出来。- 复刻方案里,生成单元镜头上有包装层时多一条说明:包装层不写进提示词,生成后叠回。
assemble --overlays:把测得的字幕、花字、标题按原样式叠到换掉的镜头上,原片占位的镜头不重复叠;贴纸列在assemble_log.json里。
切点检测
剪辑节奏复刻靠切点。切点漏了,镜头时长、卡点、复刻时间轴都会跟着偏。这一版重写了切点判断,复刻时生成片段按整段变速对齐原镜头。
切点
- 跳剪 / 推近切:同机位、同背景,人物位置或景别在一帧内跳变,变化面积小,以前抓不到。现在看这一帧的变化是否远高于前后几帧,并确认前后都平稳、画面没有回到切之前。口播和手持开箱里大量这种切点。
- 闪光、枪口火光、频闪:一两帧内变亮又恢复原样,不算切点。闪白转场褪去后露出新画面,仍算切点。
- 挨得很近的几处边界(闪光紧挨着真切点、一帧残影、甩镜)只保留最强的一处,不再只认第一处。
- 两刀干净硬切之间画面稳定的短镜头,最短保留 0.12 秒(快剪里的插入镜头、开头封面帧),以前不到 0.35 秒都会被并掉。
- 短镜头里只出现一帧重复,不再当作 24fps 转制的证据,短实拍镜头不会因此被判成 AI。
复刻
assemble把生成片段整段变速塞进原镜头时长(最多快 3 倍、慢 1.25 倍,超出部分再裁)。生成模型有最短时长,以前只截前几秒,动作做一半就切走,节奏偏慢。
评测
eval/koubo.yaml、daihuo.yaml、film.yaml、articles.yaml给 9 条片子加了逐帧人工标注的切点真值(cuts),看不准的位置放在cuts_uncertain,检测到也不算错。评测输出新增切点汇总(找到 / 漏掉 / 误报)。
| 评测集 | 切点召回 | 切点精确率 |
|---|---|---|
| 口播(2 条) | 71% → 91% | 89% → 90% |
| 带货(2 条) | 44% → 94% | 79% → 87% |
| 影视混剪(4 条) | 93% → 98% | 93% → 98% |
| 手机实拍带货(1 条) | 83% → 92% | 100% → 100% |
| 合计 | 79% → 95% | 91% → 94% |
制作方式准确率在本地还找得到的部分样本上(不是全集):labels / holdout / holdout2 为 100% → 99.2% / 99.5% → 99.7% / 100% → 100%。全集的数字见 eval/RESULTS.md。
速度和消耗
切得更细以后镜头变多(评测集整体 +14%),这一版同时把逐镜的开销压下来,拆解时间和 VLM 调用次数都没有因此上涨:
- 镜头上的文字直接取剪辑包装层整片 OCR 那一遍的结果,不再每个镜头另读 4 帧;整片 OCR 太稀(长视频)或关掉包装层时,按镜头时长读 1–4 帧。
- 全分辨率首尾帧(复刻的首帧参考)在后台抽取,和下一个镜头的计算并行。
- 跳剪连起来的几段是同一条素材剪开的,报告里标为「跳剪」。开 VLM 时合成一个片段问一次(最长 12 秒、最多 8 段):制作方式和拍法整段给一次,每段的内容描述和复刻提示词分开给。复刻计划里这几段照常合成同一个生成单元。
- VLM 调用次数到上限(60 次)时,优先给工具最拿不准、时长最长的镜头,不再只取前 60 个。
| 片子(不开 VLM) | 切点优化前 | 切点优化后 | 提速后 |
|---|---|---|---|
| 72 秒开箱 | 29 镜 100 秒 | 68 镜 173 秒 | 68 镜 104 秒 |
| 166 秒口播 | 62 镜 224 秒 | 69 镜 229 秒 | 69 镜 206 秒 |
镜头的制作方式判断、真实素材判断和字幕时间轴与提速前一致(全部评测集逐条对比)。开 VLM 时:开箱片 68 个镜头只需 24 次调用(按镜头调要到 60 次上限,最后 8 个镜头拿不到 VLM);夜景口播 69 个镜头 57 次,全部镜头都有 VLM 结果。
已知局限
- 手机录屏里的界面滑动、翻页动画仍会被当成切点。
- 切得更细后,暗光口播叠截图、3D 毛绒角色的短镜头有时会判错制作方式。