





















今天在 GitHub Trending 上看到一个由 HeyGen 团队开源的项目:HyperFrames,它让你用纯 HTML、CSS 和动画就能"写"出确定性 MP4 视频,还能让 AI Agent 自主完成整个视频生产流程。
HyperFrames 是一个开源框架,核心能力是将 HTML、CSS、媒体资源和可寻址动画(seekable animation)转换为确定性 MP4 视频。所谓确定性,即相同输入永远产生相同帧、相同输出——这对 CI/CD 自动化渲染和回归测试至关重要。
data-* 属性控制时序和轨道,无需学习专有格式index.html 可直接在浏览器中预览播放HyperFrames 采用经典的"组合-渲染-编码"三层架构:
HTML Composition → Headless Chrome (Puppeteer) → FFmpeg 编码 → MP4
整个 Monorepo 包含以下核心包:
| 包名 | 职责 |
|---|---|
hyperframes (CLI) | 脚手架创建、预览、Lint、检查和渲染本地视频项目 |
@hyperframes/core | 类型定义、解析器、生成器、Linter、运行时和帧适配器 |
@hyperframes/engine | 基于 Puppeteer + FFmpeg 的可寻址页面到视频捕获引擎 |
@hyperframes/producer | 完整渲染管线:捕获、编码、音频混合 |
@hyperframes/studio | 基于浏览器的组合编辑器 UI |
@hyperframes/player | 可嵌入的 <hyperframes-player> Web Component |
从 package.json 可以看到,项目使用 Bun 作为运行时和包管理器(通过 workspace 协议管理 Monorepo),TypeScript 编写,代码质量工具链包括 oxlint(Lint)、oxfmt(格式化)、knip(无用代码检测)和 lefthook(Git hooks)。
选择 HTML 而非 React(如 Remotion)作为创作模型,是 HyperFrames 最关键的架构决策。这意味着:
index.html 直接可用,无需 Webpack/Vite 等打包工具HyperFrames 通过帧适配器(Frame Adapter)实现多动画引擎的统一寻址。核心思路是:每一段动画都暴露一个可暂停的时间线,渲染器通过 seek(time) 精确跳转到任意帧。
<script>
const tl = gsap.timeline({ paused: true });
tl.from("#title", { opacity: 0, y: 40, duration: 0.8 }, 1);
// 暴露给渲染器
window.__timelines = window.__timelines || {};
window.__timelines.launch = tl;
</script>
渲染器遍历每一帧时间戳,调用适配器的 seek() 方法,Puppeteer 截图,最终由 FFmpeg 编码为视频流。
HTML (data-start, data-duration, data-track-index)
→ @hyperframes/core 解析组合定义
→ @hyperframes/engine 在 Headless Chrome 中逐帧渲染
→ @hyperframes/producer 混合视频轨道 + 音频轨道
→ FFmpeg 输出 MP4
方式一:AI Agent(推荐)
npx skills add heygen-com/hyperframes
然后在对话中描述你想要的视频即可,Agent 会自动完成创作、Lint、预览和渲染全流程。
方式二:手动 CLI
npx hyperframes init my-video
cd my-video
npx hyperframes preview # 浏览器实时预览
npx hyperframes render # 渲染为 MP4
npx hyperframes add flash-through-white # 着色器转场
npx hyperframes add data-chart # 动态图表
npx hyperframes add instagram-follow # 社交 overlay
一个典型的视频组合文件结构:
<div id="stage"
data-composition-id="launch"
data-start="0"
data-width="1920"
data-height="1080">
<!-- 视频背景轨道 -->
<video class="clip"
data-start="0" data-duration="6" data-track-index="0"
src="intro.mp4" muted playsinline></video>
<!-- 标题文字轨道 -->
<h1 id="title" class="clip"
data-start="1" data-duration="4" data-track-index="1">
Launch day
</h1>
<!-- 背景音乐轨道 -->
<audio data-start="0" data-duration="6"
data-track-index="2" data-volume="0.5"
src="music.wav"></audio>
</div>
每个元素通过 data-start、data-duration、data-track-index 声明自己在时间线上的位置,实现多轨道叠加。
HyperFrames 独创了 Frame.md 概念——将设计系统逆向适配到视频帧语境。传统的 design.md 描述的是 Web 页面,而 frame.md 将同样的设计 Token 转化为 AI Agent 可理解的视频构图规范。
官方提供了 8+ 个设计模板(Biennale Yellow、Blue Professional、Bold Poster 等),可在 hyperframes.dev/design 浏览和复用。
项目使用 Git LFS 存储回归测试的 MP4 基线文件(约 240MB)。如果克隆速度慢,可以跳过 LFS 内容:
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/heygen-com/hyperframes.git
确保系统已安装 FFmpeg 并在 PATH 中:
# macOS
brew install ffmpeg
# Ubuntu
sudo apt install ffmpeg
关键点:动画时间线必须是 paused: true 的,且通过 window.__timelines 暴露给渲染器。GSAP 的 paused: true 配合 data-start 偏移确保帧精确。
| 维度 | HyperFrames | Remotion |
|---|---|---|
| 创作模型 | HTML + CSS | React 组件 |
| 构建步骤 | 无 | 需要打包器 |
| Agent 适配 | 原生 HTML | JSX/React 项目 |
| 许可证 | Apache 2.0 | Source-available |
如果你主要用 AI Agent 生成视频,HyperFrames 的 HTML 原生模型更合适。如果你是 React 生态的团队且需要成熟的云渲染方案,Remotion 的 Lambda 渲染更成熟。
HyperFrames 本质上是把"视频制作"这个高门槛的创意工作,降维成"写 HTML"这个每个前端开发者都擅长的事情。更关键的是,它让 AI Agent 也能参与视频生产——Agent 已经会写 HTML,现在它会写视频了。对于需要批量生成产品视频、自动化内容生产、或想用 AI 自动化视频创作的团队来说,这是一个值得认真关注的项目。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。