一、用途 本技能只执行 Agent 已做出的剪辑决定,不做语义理解、不写旁白、不替 Agent 选片段。它读取 work_dir/clip_plan.json 与源视频,输出 edited_source.mp4 与 clip_plan_validated.json,随后由 Agent 按真实输出时间线写 narration.json。相同输入得到相同输出。
二、主要能力
- 校验并补全剪辑计划,写出含 clip_id、原片/输出时间与时长的 clip_plan_validated.json。
- 边界处理:先避开原片硬切附近闪帧风险,再把边界吸附到可靠句末/自然停顿,声音完整性优先;入点对齐源视频帧网格,每段时长对齐整数输出帧。
- 拼接选定区间,输出恒定帧率 edited_source.mp4,帧数与计划记录一致;支持单视频与多视频(sources manifest)拼剪。
- 缓存复用:edited_source.mp4.meta.json 记录标准化片段、渲染设置及每个源文件 size/mtime_ns,三者与当前一致且媒体文件存在非空才复用,只有 sidecar 不复用。
- 可选 --review-shots 在成片或复用文件上召回短镜与密集切点候选,只报告不修复。
三、使用方式 命令:python3 scripts/cut.py <video> --work-dir <work_dir> [--clip-plan <clip_plan.json>] [--sources-manifest <sources.json>] [--target-duration 10m] [--allow-overlap] [--allow-duration-drift] [--normalize-only] [--review-shots [--shot-scene-threshold 0.35] [--shot-roi X Y W H]] clip_plan.json 可为数组或 {"clips": [...]};区间可用 start/end、source_start/source_end 或 in/out,多视频须填 source_id 并传 --sources-manifest。来源清单只接受 {"sources": [{"source_id", "source_path"(, "duration", "source_work_dir")}]} 一种形状。可用 required_evidence 登记必保时刻及先后关系,缺失、错序或源无音轨会阻断。
四、适用场景与限制 适用于已有剪辑决定、需要技术化剪切拼接并防止半句原声、丢帧与坏接点的流程。限制:不作语义理解与旁白生成;不做字幕包装或最终交付压缩;默认禁止重叠,需 --allow-overlap;时长偏差在目标 0.85–1.15 记 warning、0.60–1.40 阻断,--allow-duration-drift 仅放行时长阻断;句界或必保证据阻断不可跳过;源帧率未知时入点不动。边界修改与取景复核流程详见 references/shot-review.md,具体细节以资料所述为准。