# 本地视频换脸工作流

本次成片：`final-faceswap.mp4`。使用本地 ComfyUI ReActor 换脸，再由 Hypit 本地 provider 导出，最后复封装源视频 AAC 音轨。未使用云端推理。

## 本次结果

720×1280、24fps、241 帧；视频流 10.041667 秒，容器与原音轨 10.080000 秒。完整解码通过，压缩音轨 SHA-256 与源视频一致。质量检查范围和限制见 QA.md。

## 文件与运行顺序

1. `render_comfy.py` 提供 graph/execute，等待现有队列空闲，先处理 10 张跨时段测试帧。
2. 人工查看样帧后，`render_full.py` 按 24 帧分批处理，最后一批 1 帧。每批保留 workflow、submitting、receipt、history。
3. 将 frames/%05d.png 按 24fps 合成 local-swapped.mp4，并复制 source.mp4 原音轨。
4. 使用 local.svml、local.svrun 和 hypit.runtime.json 本地构建：

```powershell
hypit.cmd build local.svrun --runtime ./hypit.runtime.json --follow --json
hypit.cmd get <build-id> --output final.video --to ./hypit-export.mp4
ffmpeg -hide_banner -loglevel error -n -i hypit-export.mp4 -i source.mp4 -map 0:v:0 -map 1:a:0 -c copy -map_metadata 1 -movflags +faststart final-faceswap.mp4
```

最后一步恢复原始 44.1kHz AAC，避免 Hypit 规范化改变音轨；不使用 shortest 截短音轨。

## 复用边界

这是本机已运行的参考工作流，并非通用一键工具。脚本含本机 ComfyUI 绝对路径、固定照片输入名、TOTAL=241 和固定时间范围。复用前需按新素材修改这些参数、帧率、时长与本地资源路径。必须另建项目与回执命名空间；不要删除旧回执或 submitting 标记来强制重复提交。未知提交结果应先核对 ComfyUI history 和进程。

本次 ComfyUI API 为 http://127.0.0.1:8190，节点为 VHS_LoadVideoPath、ReActorFaceSwap、SaveImage；模型为本地 inswapper_128.onnx，检测器 retinaface_resnet50，关闭面部修复。保留现有队列，不中断、不清空。

ZIP 包含脚本、配置、批次证据及 QA，不含源视频、照片、成片、逐帧图片或模型权重。重用需要自行准备本地素材及已安装节点模型。本次 Hypit 构建 ID：bld_20260921T080715033Z_453B92FA00；构建证据保留在 .hypit/results 下。
