# HyperFrames 口播包装：保留整段原视频，按讲解内容插入信息卡

示例工程由本站编写，并用HyperFrames 0.8.159实际本地渲染。未调用Claude Code或远端文本/视频模型；读者可用随包提示词在自己的代理会话重做。输入为原创二维角色与本机语音，不是真人拍摄或克隆。

## 快速开始

在project目录先运行：

```bash
npx hyperframes@0.8.159 check --json
npx hyperframes@0.8.159 preview --background --no-open
```

Studio可编辑预览。检查本题事实与画面后按正文命令导出；可先播放随包output.mp4。

## 1. 先区分原片、原声和信息卡

本例input.mp4由本站原创二维成年角色与本机Tingting语音制作，简单嘴部启闭不代表数字人口型模型。下载speech.txt、speech-timing.json与cards.json；真实拍摄口播也可以用同样的包装步骤。

## 2. 逐句确定图卡的出场时点

三条卡分别在2.5、7、11.5秒出现，对应书店集合、小径慢行和雨天室内阅读。先听原片再查时间文本；图卡只能补充说话内容，不能把未提及的承诺写进去。

## 3. 把原视频放在主根节点

在project/index.html检查presenter-video直接位于composition root，并保留data-has-audio=true。不要先静音再用另一段语音替代；本题目标是在整段18秒原片上叠信息卡。

## 4. 给每条信息卡单独设开始与时长

每张卡保留4秒，放在左下可读区域。按实际视频调整位置，避免挡嘴、字幕或重要动作。本题三张卡是独立timed clip，不能用一个始终占满屏幕的大标题代替。

## 5. 在Studio核对原片与卡片

运行检查后看3.5、8.2、12.5秒，分别核对画面与对应信息卡，试听原声。若换自己的长口播，先重建真实时间表，不能直接套这三个时间点。

```bash
npx hyperframes@0.8.159 check --json
npx hyperframes@0.8.159 preview --background --no-open
```

## 6. 导出并核对音轨与时长

导出后用ffprobe确认18秒、24fps且存在音轨。与input.mp4逐段对听，确认没有删掉原句、换声或重排；容器或编码重写不等于文件字节相同。

```bash
npx hyperframes@0.8.159 render --output ../my-output.mp4 --fps 24 --quality high --workers 2 --strict
```

## 7. 比较同一时刻的前后画面

看本题实际输出与input.mp4同一帧：说话主体仍在原位置，只有信息卡增加。正文展示的角色是原创动画输入，读者可替换为自己有权使用的真人口播。

## 8. 保留可编辑时间表与整段原片

下载包中同时保留input.mp4、speech-timing.json、cards.json、工程与实际输出。后续修改文案先改图卡，再回听原句，不能让宣传文字偏离口播事实。

```bash
python3 verify.py
```

## 素材来源与许可

见THIRD-PARTY-NOTICES.md。project/assets含本地字体与GSAP，保留许可证；模型/代理调用与本地渲染分开计费。

## 官方资料

- https://hyperframes.heygen.com/guides/captions-and-recuts
