reference-video-rebuild:实践指南

作者:袖梨 2026-10-03

如果把reference-video-rebuild放进候选清单,不能只看热度;它的定位是使用您自己的角色将参考视频的镜头结构、动作和布局 1:1 重建为可编辑的 Remotion 项目。这类视频制作工具真正难在素材、节奏、编码和最终画面容易不一致,仓库说明只能作为第一层证据。我建议拿一组已有素材完成一段短样片,重点记录素材路径、渲染结果、音画同步和导出格式,再与现有方案比较。如果团队属于有真实素材并需要稳定视频产出的创作者,它有继续测试的理由;否则先看替代方案会更省时间。

saikizhou-cyber/reference-video-rebuild 项目截图 1

name: reference-video-rebuild description: Rebuild a reference video (game PV, trailer, motion-graphics piece) shot-for-shot as an editable Remotion project with ORIGINAL characters, copy and art, then deliver a 1080p film. Covers shot breakdown and measuring against the reference, per-act parallel builds with sub-agents, per-shot character art/video s, AI-generated props and poses (Jimeng/即梦 canvas CLI or any image/video generator) plus cutout and keying tools, side-by-side QA, chunked 1080p rendering, music swap without re-rendering, delivery bundle and a measured retrospective. Use for "复刻PV", "1比1复刻原片", "换成我自己的角色", "做成可换角色的模板", "按原视频做动效和排版", "recreate this trailer with my own characters", or any request to recreate a video's structure, motion and layout while swapping the content. license: MIT

Reference Video Rebuild (Remotion + AI assets)

在一次真实运行中测得(36 秒游戏 PV、57 个镜头、8 个动作、1080p 交付):约 66.7 小时挂钟、约 18.8 小时活动、113 条用户消息、11,467 次模型转动、1340 万个输出令牌、130 个 AI 代(1,184 个 Jimeng)学分)。全文:references/case-study-gamepv.md。命令:references/pipeline-recipes.md。工具:scripts/(下表)。

Non-negotiables

  1. 根据 ORIGINAL 参考进行判断,切勿与之前的版本进行对比。 “1:1”表示姿势、构图、位置、大小、视角、颜色和时间匹配。测量(全分辨率帧,scripts/frame_measure.py,单应性拟合);不要盯着“相似”。
  2. 仅限原创内容。 切勿生成、剪切、追踪或模仿特许经营角色、徽标、字标或标题锁定、UI 皮肤、签名道具或徽章、自定义刻字、歌词或音乐,即使在被要求时也是如此;提供相同风格的原创设计。 “1:1”适用于测量的布局、大小、时间和调色板,绝不适用于复制的轮廓或字形结构。参考系永远不会输入生成器:用文本描述运动或上传自绘的姿势指南。参考的音乐仅用于本地计时检查。在发布任何内容之前,请根据相似的参考检查每个锁定、徽章和效果形状。
  3. 先静态,后运动。 将每个镜头的静止图像与参考并排锁定;仅针对用户接受的姿势生成视频(案例研究中的 9 个剪辑中的 5 个从未使用过)。
  4. 子代理在中间层模型上运行(Claude Code 工作流程中的每个 agent() 调用上的 model: 'sonnet')。将根本原因、设计和接受结果保留在主模型中。在案例研究中,默默继承 Opus 的子代理产生了 84% 的子代理输出代币,并达到了使用限制 5 次。
  5. 在支出之前明确预算生成积分(当时在 Jimeng Seedream 5.0 Pro / Seedance 2.0 mini 上的图像 8、4 s 视频 24)并以文件形式报告支出,而不是作为帐户分类账。
  6. 序列中每个人物一个位置。 当同一角色出现在连续镜头中时,从一个共享常量(脸部点、脸部高度、倾斜)驱动所有角色(包括 1-2 帧闪光和过渡轮廓)。每次射击的单独数字会发生漂移,并且数字会明显跳跃。
  7. 显示结果,而不是过程,除非用户要求过程。在说“完成”之前先进行验证,并说出未验证的内容。

Workflow

  1. 分解参考。 这些工具假定 16:9、30 fps;首先符合其他来源(ffmpeg -i in.mp4 -vf fps=30,scale=1280:720 -an reference.mp4)。剪切列表(帧精确)、每个镜头的布局、平面颜色、类型、运动和节奏到 docs/shot-breakdown.md 中;缓存 640x360 参考帧(out/review/ref360/r_%04d.jpg,文件索引 = 帧 + 1)。将镜头组合成动作。
  2. 选择堆栈。 Remotion + zod(React,TypeScript):组合PV,1280x720,30 fps(或通过--comp / PV_COMP);每幕一个文件夹和一个架构,全部默认为原始,一个 defaultConfig,因此交换就是一次编辑。将剪切列表保存在 src/core/timeline.ts 中,每行一次拍摄,以秒为单位,e.g。 {id: 'S01', start: 0.0, end: 0.933, act: 'act1', kind: 'digital clock'},(最后可以用end: DURATION_S),加上export const DURATION_FRAMES = <n>;。 QA 脚本解析它。
  3. 并行构建每个行为。每个行为一个代理仅拥有其文件; npx tsc --noEmit 绿色之前和之后。将大型构建分成多个批次,每个批次都保存到磁盘(14 个代理的构建曾经因使用限制而全部丢失)。
  4. 每镜头艺术插槽。 characters.*.shots[]:src,模式剪切|Frame、focus、flip、overlays、alt、front、video、videoStart、videoRate、key、hair、skin,所有可选,因此默认渲染不变;行为读取插槽自己的焦点,因此交换的角色不需要每行为代码。
  5. 静态设计板。 在参考旁边渲染每个镜头的关键帧(compare.py、shotsheet.py),并在制作动画之前获得每个镜头的批准。
  6. AI 资源针对代码绘制不好的内容(道具、概念卡、桌板、角色姿势、短片):生成、剪切(cutout.py + cleanedge.py)、关键平面背景(bluekey.py),然后在代码中进行风格化(镜头调色板的渐变图)。慢动作 = 光流插值,绝不是简单的慢速播放。
  7. QA 循环 = 管道(实施→批评→完善) 每个任务,每个代理拥有的文件。评论家从不编辑;他们建立参考|我们的表格(grid.py、shotsheet.py、strip.py)并列出混凝土缺陷;主模型验证后接受。
  8. 将屏幕截图中的反馈分类到每个镜头跟踪器中(镜头、注释、所有者、状态)。反馈在中途到达:告诉代理忽略不是他们任务的中继消息。在真实帧上采样颜色和形状,而不是在用户的屏幕截图上(查看器伽马将黑色提升为灰色)。
  9. 分块渲染 (render-chunks.mjs):单个长渲染在第 725 帧附近停止。1.5 倍比例重新栅格化每一层 (1280x720 → 1920x1080)。验证大小、帧数、持续时间、音频同步(audio_offset.py,预计 0 毫秒)和接缝帧。片段是无声的,因此音乐是通过重新连接来交换的,而不是通过重新渲染来交换的。
  10. 交付并回顾。 捆绑影片、无声片段、项目(无 node_modules,无 venvs)、AI 原件及其提示和简短回顾;排除 login/credential 文件。参考|我们的工作表、out/review/ref360、out/cmp 和并排视频嵌入参考帧:仅将它们保存在私人捆绑包中,绝不公开共享任何内容,也绝不发布参考或其音乐。共享之前编辑生成 state/run 文件(项目、节点和资源 ID)。使用 transcript_stats.py 来衡量回顾而不是估计。

型号及成本正策

工作 型号
按行为实施、批评、完善、批量修复、事实收集、文件草稿 中层(十四行诗)
根本原因、设计决策、测量参考、接受结果、最终 QA 主要型号

案例研究的基准:主循环 1,102 转/113 M 输出令牌;子代理 10,365 次/12.3 M 输出代币; ~2.56 B 缓存读取令牌。 720p 完整渲染大约需要 1.5 分钟,1080p 分块渲染大约需要 4-5 分钟;吉盟图像 60–100 秒,4 秒剪辑 ~110 秒。

审查清单(每个镜头)

  • 几何:姿态、大小、位置、裁剪与全分辨率参考;相同的数字 = 镜头中相同的数字。
  • 颜色:背景、皮肤、阴影的模态平面颜色(frame_measure.py colors);一个主题的改变可以改变20多个镜头,每幕都需要重新测量。
  • 类型:相同的面和重量,方形标点(如果参考文献有),透视平面,没有轮廓,除非参考文献有轮廓。
  • 效果形状(条纹、斜线、碎片):从参考框架 (frame_measure.py components/bbox) 测量足迹、角度、时间和调色板,然后在该足迹中绘制 OWN 形状;使用 iou 检查大小和位置,而不是克隆轮廓。
  • 运动: 步进节奏(参考通常保持在 2 秒),角色艺术上没有发明抖动,光流慢动作。
  • 边缘:键控剪辑需要修剪其边框;皮肤平整必须以算术方式合成;在框架边缘查找 1 像素的线条。

已知的故障模式

症状 原因 修复
整个构建返回空 工作流程中的使用限制 批处理工作,坚持每批,恢复
用户不断拒绝“相似”的镜头 目视 测量;与参考覆盖或 IoU
人物在连续镜头之间跳跃 每个镜头的放置数量 一个共享布局常数
代理重做过时的请求 中途转发反馈 每个代理范围; “忽略不相关的中继消息”
AI 剪辑姿势错误,人物被剪裁 已批准的静态图片之前的视频 批准蒸馏器;缩小静止;姿势指导图像
半透明边缘显示背景 merge 复合材料在皮肤过滤器中 算术复合
键控剪辑上的 1 像素暗线 缩放时边缘像素与关键点混合 剪裁边框 (clip-path: inset(0.6%))
渲染在接近一帧时冻结/write EOF 长无头渲染,重 WebGL 场景 大块;并发量较低;范围较小
回顾性低估了用户消息 存储为阻止列表的屏幕截图消息 transcript_stats.py(读取所有三个记录形状)
参考文献中没有的图案(e.g.时钟) 建造者自己的主题泄露了 根据参考检查每个图案
自有品牌锁定读作原始徽标 “1:1”应用于字形构造(像素字母、模板线、斜面板) 仅匹配位置、大小和时间;从头开始设计字体

脚本

脚本 目的
compare.py 渲染选定的帧并将其与参考配对:out/cmp/&lt;tag&gt;/compare.jpg
shotsheet.py, grid.py, strip.py 参考 | 我们的表格:每个镜头一行,所有镜头一目了然,一个镜头的帧范围
side-by-side.mjs 参考 | 我们的计时视频(仅限本地)
frame_measure.py 帧抓取、模态颜色、斑点、边缘运行、图形 bbox、IoU
cutout.py, cleanedge.py, bluekey.py rembg 镂空、去光环、平面背景键
hairfix.py, irisglow.py AI 剪辑上的颜色修复(头发漂移、虹膜照明与眼睛张开同步)
jm.py, jimeng_batch_run.py, jimeng_video_run.py Jimeng canvas CLI:Unicode安全包装器,预算图像和视频批次
render-chunks.mjs 分块渲染并加入任何音乐 (PV_AUDIO)
audio_offset.py A/V 通过互相关进行同步检查
transcript_stats.py 克劳德·代码笔录的回顾性数字

Python 3.10+ 带枕头,NumPy,SciPy; cutout.py需要rembg(安装在自己的venv中)。 ffmpeg/ffprobe 上 PATH;用于远程的节点 18+。

相关文章

精彩推荐