渲染、导出、修复
在 projects/<name>/ 目录内运行。最终批准的文件也会被复制到工作区根目录的 exports/ 文件夹。
速查表
npx hyperframes render . -o renders/video.mp4 # 默认
npx hyperframes render . --fps 60 -o renders/video-60fps.mp4
npx hyperframes render . --resolution 4k -o renders/video-4k.mp4 # 宽高比必须匹配;竖屏 → portrait-4k
npx hyperframes render . --resolution 4k --fps 120 -o renders/video-4k-120.mp4
npx hyperframes render . --fps 24 -o renders/video-24fps.mp4
npx hyperframes render . --format mov -o renders/video.mov # ProRes
npx hyperframes render . --format png-sequence -o renders/frames
npx hyperframes render . --crf 23 -o renders/smaller.mp4 # 更小的文件
- 当图形叠加在用户的视频素材上时,除非用户另有要求,否则保持素材的帧率。
- 参考时间(基于约 12 GB RAM 的 4 核 i3 笔记本;更快的 PC 会更快):6 秒简单的 1080p 图形 ≈ 24 秒;3:20 的 1080x1920 素材 + Paper Cut 效果 ≈ 1.5 小时(约 1.1 fps:
filter: drop-shadow强制使用截图捕获,而快速捕获仅适用于 macOS)。在长渲染前警告用户,并在最后一次性渲染。 - 加速手段:
--workers 3(每个 Chrome 约 256 MB;默认auto此处选择了 1——先在一个短视频上测试),用于预览渲染的--quality draft,或更短的剪辑。如果渲染时内存不足或超时,添加--low-memory-mode和/或--protocol-timeout 600000。 - 纯音频修改无需重新渲染:
node tools/sfx.mjs projects/<n> --mix in.mp4 out.mp4(视频流直接复制)。 - 使用
npx hyperframes snapshot迭代(快速),只有在画面正确时才进行渲染。
透明导出(PROMPT 14)
MOV/PNG 仅在背景透明时才透明。
- 移除背景和任何素材,仅保留卡片;卡片周围全部透明。
- 磨砂卡片在没有背景时会丢失模糊效果 → 对于叠加层,切换到实色卡片。
- 导出
renders/card.mov(带 Alpha 的 ProRes 4444,--format mov)和renders/card-png中的 PNG 序列(--format png-sequence)。 - 在棋盘格背景上快照,以确认只有卡片可见。(
--format webm是另一种透明选项。)
当出现问题时
| 症状 | 修复方法 |
|---|---|
| 字体错误 / 回退到默认字体 | 使用 fonts/ 中的文件,通过 @font-face 引入;绝不使用网页字体 URL。lint 会标记 font_family_without_font_face。 |
| 手机上文字被截断 | 将所有文字保持在宽度的中间 80% 以内。 |
| 卡片遮挡了字幕 | 将所有卡片移动到下半部分的上方。 |
| 卡片出现时间略微提前 / 滞后 | 语音转文字可能会有约 1 秒的误差。根据精确说出的字词重新调整时间(检查周围的音频)。 |
| 文件体积过大 | 使用 --crf 23 重新渲染(尤其是粒状样式)。 |
| 渲染无声 | 每个 <audio> 都需要一个 id;<video> 不能是 muted 且需要 data-has-audio="true"。 |
如果用户用简单的语言描述了问题,将其翻译为上述症状之一或 mg-styles 中的某个参数。