最近在 GitHub Trending 上看到一个项目挺有意思——HyperFrames(heygen-com/hyperframes,Apache-2.0 协议,目前 21,219 Stars)。
简单说,它就是一个 HTML → 视频的渲染器。你用网页技术写动画,它给你输出 MP4。
听起来好像没什么特别的?但仔细想想,这个方向其实挺聪明的。
现在 AI 视频赛道很卷——Runway、Pika、Minimax、智谱清影……各家都在卷生成式视频,效果越来越惊艳。
但生成式视频有个问题:不可控。
你给它一段 prompt,它给你一段视频,但你想精准控制每一帧?门都没有。换个说法,AI 生成视频适合"探索创意",不适合"批量生产"。
HyperFrames 解决的是另一个问题:结构化内容的批量输出。
比如:
- 产品介绍视频(固定模板,换产品图和文案)
- 教程系列(固定片头片尾,中间内容参数化)
- 社交媒体广告(同一套设计,不同尺寸适配)
- 数据报告视频(图表+动画+配音,自动生成)
这类需求的核心是效率——模板固定,批量产出。HyperFrames 的思路是:用开发者熟悉的工具(HTML/CSS/JS)定义视频,用渲染引擎输出。
HyperFrames 的核心逻辑很简洁:
HTML 文件(定义时间线和动画)
↓
HyperFrames CLI(解析 + 渲染)
↓
MP4 / WebM 视频输出
时间线控制:用 data- 属性定义元素的出现时间和持续时长。
<div data-start="0" data-duration="3" data-track-index="1">
<!-- 这个元素从0秒开始,持续3秒 -->
</div>
动画引擎:内置 GSAP(GreenSock Animation Platform),支持复杂的时间线编排。
const tl = gsap.timeline({ paused: true });
tl.fromTo(".title",
{ y: 50, opacity: 0 },
{ y: 0, opacity: 1, duration: 0.8, ease: "power3.out" },
0
);
tl.to(".title", { opacity: 0 }, 2.5);
渲染输出:CLI 一条命令出视频,支持多种质量档位。
npx hyperframes render --output demo.mp4 --quality high --fps 60
| 方案 | 适用场景 | 上手难度 | 定制程度 |
|---|---|---|---|
| After Effects / Pr | 电影级特效、高端广告 | 高(专业软件) | 极高 |
| Runway / Pika | AI 生成、创意探索 | 低(输入 prompt) | 低(不可控) |
| Remotion | React 开发者、做代码驱动视频 | 中(React 生态) | 高 |
| HyperFrames | HTML/CSS 开发者、结构化批量生产 | 低(直接写 HTML) | 高 |
Remotion 和 HyperFrames 解决的问题类似,但定位不同:
HyperFrames 的学习曲线更平——你只要会写网页,就能做视频。
npx hyperframes init my-video --example blank --non-interactive
这条命令会创建项目结构,包含:
- index.html — 主时间线文件
- compositions/ — 各场景组件目录
- assets/ — 资源文件
每个场景是一个独立的 HTML 文件,放在 compositions/ 目录下。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>开场动画</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
body {
margin: 0;
width: 1920px;
height: 1080px;
overflow: hidden;
background: linear-gradient(135deg, #0a0a0f 0%, #1a1a2e 100%);
font-family: "Inter", sans-serif;
}
#scene1 {
width: 1920px;
height: 1080px;
display: flex;
align-items: center;
justify-content: center;
}
.title {
font-size: 120px;
font-weight: 700;
color: #fff;
}
</style>
</head>
<body>
<div id="scene1" data-composition-id="scene1" data-width="1920" data-height="1080">
<div class="title">Hello World</div>
</div>
<script>
(function () {
const tl = gsap.timeline({ paused: true });
tl.fromTo(".title",
{ scale: 0, opacity: 0 },
{ scale: 1, opacity: 1, duration: 0.8, ease: "back.out(1.7)" },
0.2
);
window.__timelines = window.__timelines || {};
window.__timelines["scene1"] = tl;
})();
</script>
</body>
</html>
主时间线文件负责把各个场景按顺序拼起来。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<title>我的视频</title>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
</head>
<body>
<div id="root" data-composition-id="main" data-start="0" data-duration="10" data-width="1920" data-height="1080">
<!-- 场景1:开场 (0-3秒) -->
<div data-composition-id="scene1"
data-composition-src="compositions/scene1.html"
data-start="0" data-duration="3"
data-track-index="1"></div>
<!-- 场景2:内容 (3-7秒) -->
<div data-composition-id="scene2"
data-composition-src="compositions/scene2.html"
data-start="3" data-duration="4"
data-track-index="1"></div>
<!-- 场景3:结尾 (7-10秒) -->
<div data-composition-id="scene3"
data-composition-src="compositions/scene3.html"
data-start="7" data-duration="3"
data-track-index="1"></div>
</div>
</body>
</html>
# 检查语法和结构
npx hyperframes lint
# 检查布局溢出
npx hyperframes inspect
# 预览(本地 Studio)
npx hyperframes preview --port 3002
# 渲染输出
npx hyperframes render --output my-video.mp4 --quality high
根据我的实测,这套方案在这些场景下很好用:
✅ 非常适合:
- 产品宣传视频(模板固定,批量换内容)
- 社交媒体广告(1920x1080 / 1080x1920 / 1080x1080 多尺寸)
- 数据报告视频(图表动画+配音,自动生成)
- 教学课程片头(固定风格,系列统一)
❌ 不适合:
- 复杂特效(用 After Effects)
- AI 生成创意内容(用 Runway/Pika)
- 需要逐帧精修的视频
一条命令检查环境:npx hyperframes doctor
HyperFrames 支持 Google Fonts,但渲染时需要捕获字体文件。推荐做法是把字体文件下载到本地,用 @font-face 引用:
@font-face {
font-family: 'Inter';
src: url('assets/fonts/Inter.woff2') format('woff2');
}
不要在 CSS 里设置初始动画状态,全部交给 GSAP 管理:
/* ❌ 错误:会和 GSAP 冲突 */
.title { transform: scale(0); }
/* ✅ 正确:初始状态由 GSAP 控制 */
用 fromTo 方法从初始值开始动画:
tl.fromTo(".title",
{ scale: 0, opacity: 0 }, // 初始状态
{ scale: 1, opacity: 1 }, // 目标状态
0 // 开始时间
);
HyperFrames 本身是渲染引擎,不生成内容,只负责把写好的 HTML 变成视频。
内容生成可以交给 AI:
- 写 HTML 代码:用 Claude Code / pi / Cursor 等 AI 编程工具
- 生成配音:用 TTS(文字转语音)工具
- 生成素材:用图片生成 AI(Midjourney、FLUX)
整个链路是:AI 生成代码/素材 → HyperFrames 渲染 → 视频输出。
最近在用 pi(earendil-works/pi,56,679 Stars)配合 HyperFrames——描述需求,AI 写 HTML,HyperFrames 出视频,流水线很顺。
HyperFrames 不是那种"震撼发布"的工具,它解决的是效率问题。
如果你有大量结构化视频要出(产品介绍、数据报告、教学系列),这套方案值得试试。
工具选对了,事半功倍。
比 AE 上手快多了
批量生产用这个确实方便
用 pi 写 HTML 再用它出视频,这条路通了
原来还能这样出视频,学到了
💬 评论区