HyperFrames 是一套 Web-native 视频生成框架:用 HTML 和 CSS 构建画面,用可暂停、可 Seek 的 JavaScript 时间轴描述动画,由无头浏览器在指定时间点渲染视频帧,最后通过 FFmpeg 编码和混合音频,生成 MP4 等视频文件。
先说结论:HyperFrames 不是视频大模型
简单来说,HyperFrames 的底层逻辑就是“用写网页的方式做视频,把浏览器变成渲染引擎”。
它和常见的文生视频模型不是同一种工具。文生视频模型尝试根据 Prompt 直接生成连续画面;HyperFrames 则让 AI Agent 编写一个结构明确、可以检查和修改的视频工程,再由浏览器和视频编码器把它变成最终视频。
可以把它理解成下面这条流水线:
自然语言需求
↓
视频 Brief / 脚本 / 分镜 / 设计规范
↓
HTML + CSS + SVG + JavaScript
↓
DOM 时间窗口 + 可 Seek 动画时间轴
↓
Headless Browser 在指定时间点渲染画面
↓
FFmpeg 编码视频、混合音频
↓
MP4 / WebM / GIF
因此,HyperFrames 更接近一套 Web-native 视频工程框架和生产系统,而不是“输入一句话,模型直接吐出像素”的生成模型。
理解这一点非常重要。因为它决定了我们应该怎样给 AI Agent 提需求、怎样组织素材、怎样检查结果,以及为什么模板和 Recipe 会显著提高生产效率。
HyperFrames 和传统视频工具有什么区别
传统视频制作通常依赖 After Effects、Premiere Pro、Final Cut Pro 等桌面软件。人在图形界面里拖动素材、建立图层、设置关键帧,再通过软件的渲染器输出视频。
HyperFrames 把这些概念转换成了 AI 和开发者更容易处理的代码结构:
| 传统剪辑或动效软件 | HyperFrames 中的对应概念 |
|---|---|
| Sequence / Composition | HTML Composition |
| 视频画布 | 带宽高和时长的根 DOM |
| 图层 | DOM 元素与 Track |
| 片段入点 | data-start |
| 片段长度 | data-duration |
| 视频轨道 | data-track-index |
| 预合成 | Sub-composition |
| 关键帧 | GSAP、WAAPI、Three.js 等时间轴 |
| 素材库 | 本地图片、视频、音频和字体 |
| 导出 | Headless Browser + FFmpeg |
这并不意味着 HyperFrames 比传统软件更适合所有视频。它的优势主要体现在:代码可生成、可复用、可检查、可批量修改,尤其适合 AI Agent 自动化生产。
一张图看懂 HyperFrames 的核心架构
一个完整的 HyperFrames 项目,可以拆成五个层次:
┌────────────────────────────────────────────┐
│ 1. 意图层:Prompt / BRIEF / STORYBOARD │
├────────────────────────────────────────────┤
│ 2. 画面层:HTML / CSS / SVG / Canvas │
├────────────────────────────────────────────┤
│ 3. 时间层:Clip / Track / GSAP Timeline │
├────────────────────────────────────────────┤
│ 4. 渲染层:Headless Chrome 精确 Seek │
├────────────────────────────────────────────┤
│ 5. 输出层:FFmpeg 编码、混音和封装 │
└────────────────────────────────────────────┘
这五层中,最容易被忽略的是第一层和第三层。
没有 Brief 和分镜,AI Agent 只能一边猜内容、一边猜风格;没有确定的时间模型,网页动画即使在浏览器里看起来正常,也不一定能稳定地渲染成视频。
下面分别拆解 HyperFrames 最重要的四个底层原理。
原理一:DOM 不只是页面结构,也是视频时间轴
普通网页里的 DOM 主要描述页面结构;在 HyperFrames 中,DOM 还同时描述视频的画布、片段、轨道和时间窗口。
一个简化后的 Composition 可能是这样:
<div
id="root"
data-composition-id="main"
data-width="1920"
data-height="1080"
data-duration="10"
style="position: relative; width: 1920px; height: 1080px; overflow: hidden;"
>
<section
class="clip"
data-start="0"
data-duration="3"
data-track-index="1"
>
<h1 class="hero-title">网页,也可以成为视频</h1>
</section>
<section
class="clip"
data-start="3"
data-duration="4"
data-track-index="1"
>
<div class="pipeline">HTML → Browser → MP4</div>
</section>
</div>
这里的关键不在具体标签,而在于它建立了一个声明式的视频模型:
data-composition-id:Composition 的唯一标识data-width、data-height:输出画幅- 根元素的
data-duration:整条 Composition 的时长 class="clip":交给框架控制显示时间的片段data-start:片段从第几秒开始data-duration:片段持续多久data-track-index:片段位于哪条轨道或图层
例如:
<div
class="clip"
data-start="4"
data-duration="2.5"
data-track-index="3"
>
这个元素从第 4 秒出现,到第 6.5 秒结束
</div>
渲染器不需要猜测这个元素什么时候出现。它读取 DOM 上的声明,就可以计算任意时间点应该显示哪些 Clip。
这种方式可以概括为:
DOM as Timeline:DOM 既是画面结构,也是可被机器读取的视频编辑数据。
为什么这对 AI Agent 很重要
AI Agent 很擅长修改结构化文本。
如果你说:
把第二幕提前 0.5 秒,并让它多停留 1 秒,不要修改其他场景。
Agent 只需要调整对应 Clip 的两个属性,而不必重新生成整条视频:
- data-start="3"
- data-duration="4"
+ data-start="2.5"
+ data-duration="5"
相比只能通过鼠标操作的二进制工程文件,这种代码化时间轴更容易被大语言模型理解、定位和修改。
原理二:视频不是“播放”出来的,而是“Seek”出来的
这是 HyperFrames 最关键的技术思想。
普通网页动画依赖现实时间
在普通网页中,动画通常会随着现实世界的时间自动运行:
页面加载
↓
动画开始播放
↓
浏览器每隔一段时间刷新画面
↓
机器卡顿时可能掉帧
如果直接对这种网页录屏,输出结果会受到很多因素影响:
- CPU 和 GPU 性能
- 浏览器是否卡顿
- 网络资源是否及时加载
- 页面是否在后台
- 视频素材是否完成解码
- 某一帧是否错过了刷新时机
同一个动画在两台机器上录制,可能出现不同的掉帧位置。
HyperFrames 使用暂停、Seek 和捕获
HyperFrames 的思路不是让动画自己跑,而是把时间主动权交给渲染器:
创建一个暂停的动画时间轴
↓
把时间轴定位到 t = 0.000 秒
↓
渲染并捕获画面
↓
定位到 t = 0.033 秒
↓
渲染并捕获下一帧
↓
重复直到视频结束
如果输出帧率是 30 FPS,第 n 帧对应的时间可以理解为:
t = n / 30
例如:
| 帧 | 时间点 |
|---|---|
| 0 | 0.000 秒 |
| 1 | 0.033 秒 |
| 2 | 0.067 秒 |
| 30 | 1.000 秒 |
| 300 | 10.000 秒 |
无论计算这一帧实际花了 5 毫秒还是 200 毫秒,渲染器要求浏览器呈现的仍然是同一个逻辑时间点。
GSAP 时间轴为什么要暂停
典型的 GSAP 写法是创建一条暂停时间轴,然后注册给框架:
window.__timelines = window.__timelines || {};
const timeline = gsap.timeline({ paused: true });
timeline
.from(".hero-title", {
opacity: 0,
y: 80,
duration: 0.8,
ease: "power3.out"
})
.to(".hero-title", {
scale: 1.06,
duration: 0.5,
ease: "power2.inOut"
});
window.__timelines["main"] = timeline;
这里有三个关键词:
- Paused:时间轴不会依赖真实时间自动播放
- Seekable:渲染器可以跳到任意时间点
- Synchronous:页面加载后就能找到完整时间轴,而不是等待异步逻辑临时创建
HyperFrames 不只能够使用 GSAP,但无论使用哪一种动画运行时,都需要满足一个共同条件:动画状态必须可以由指定时间唯一决定。
什么是确定性渲染
确定性渲染不是简单的“动画很流畅”,而是:
在输入、素材、依赖和运行环境固定的情况下,同一个时间点应得到同一个画面状态。
因此,下列写法会破坏确定性:
// 依赖当前系统时间
const value = Date.now();
// 每次运行结果都不同
const x = Math.random() * 100;
// 渲染期间依赖外部网络
const data = await fetch("https://example.com/api");
// 永远不会结束的循环
gsap.to(".dot", { rotation: 360, repeat: -1 });
更稳妥的做法包括:
- 提前下载并冻结远程素材
- 给随机数使用固定种子
- 把接口数据写入本地 JSON
- 使用有限次数的循环
- 固定字体、依赖和 CLI 版本
- 避免根据系统时间、窗口焦点或用户输入改变画面
因此,“逐帧 Seek”解决的是时间控制问题;要真正做到稳定可重复,还需要整个工程遵守确定性规则。
原理三:浏览器负责画面,HyperFrames 负责调度
HyperFrames 本身不是新的 CSS 引擎、3D 引擎或图片生成器。
它选择复用浏览器已经非常成熟的视觉能力。
浏览器负责什么
浏览器可以处理:
- HTML 布局
- CSS Grid 和 Flexbox
- 字体与文字排版
- SVG 图形和路径
- Canvas 绘制
- WebGL Shader
- 图片与视频解码
- 模糊、混合模式、遮罩和滤镜
- 通过 JavaScript 运行 GSAP、Three.js、Lottie 等库
这意味着,前端开发中成熟的视觉技术可以直接进入视频生产流程。
HyperFrames 负责什么
HyperFrames 位于这些技术之上,主要承担合成与调度工作:
- 识别 Composition、Clip 和 Track
- 读取每个片段的时间窗口
- 控制 Clip 在何时可见
- 驱动可 Seek 的动画时间轴
- 同步图片、视频、配音和音乐
- 在指定时间点让浏览器渲染画面
- 检查运行时、布局、动效和对比度问题
- 调度预览、渲染和最终输出
可以把两者的关系理解为:
浏览器 = 画面引擎
HyperFrames = 时间、媒体与生产流程的调度层
FFmpeg = 编码与封装引擎
多引擎不等于全部都要使用
HyperFrames 可以组合多种 Web 技术,但并不是用得越多,视频就越高级。
| 技术 | 更适合的任务 |
|---|---|
| HTML + CSS | 构图、排版、卡片、界面和信息层级 |
| SVG | 图标、折线、路径、Logo 和信息图 |
| GSAP | 标题、卡片、遮罩、补间和时间编排 |
| Lottie | 复用已有的 JSON 动画资产 |
| Three.js | 3D 模型、粒子、摄像机和空间场景 |
| Canvas | 定制绘制、数据可视化和特殊图形算法 |
<video> |
实拍、屏幕录像和背景素材 |
<audio> |
配音、BGM 和音效 |
多数产品介绍、教程和信息型短视频,使用 HTML + CSS + SVG + GSAP 就已经足够。只有场景真正需要 3D 空间、粒子或着色器效果时,才值得引入 Three.js 或更复杂的 WebGL 技术。
原理四:音视频同步和 FFmpeg 输出
当画面由浏览器控制后,还有两个问题需要解决:媒体同步和视频编码。
音频和视频素材不能各自自由播放
如果视觉时间轴被 Seek 到第 5 秒,而 <video> 元素仍按照真实时间播放到第 4.7 秒,捕获到的画面就会错位。
因此,在确定性渲染中,媒体元素也需要由框架管理:
- 视频素材要 Seek 到当前 Composition 时间
- 音频要按照时间线进行裁剪、定位和混合
- 画面捕获前要等待媒体完成解码
- 配音、BGM 和音效要使用统一时间基准
这也是为什么一个普通的“自动播放网页”不能直接等同于视频工程。
FFmpeg 负责最终编码
浏览器输出的是连续画面,最终还需要视频编码器把它们变成真正的视频文件。
FFmpeg 在这条流水线中主要负责:
- 接收浏览器渲染的视频帧
- 将视频帧编码为 H.264 等视频流
- 混合旁白、背景音乐和音效
- 处理音频采样率、音量与时间偏移
- 封装为 MP4、WebM 或 GIF 等格式
因此,更准确的技术链路是:
HTML 视频工程
↓
浏览器在指定时间点渲染帧
↓
帧进入编码管道
↓
FFmpeg 编码并混合音频
↓
最终视频文件
不必把它简单理解成“浏览器把所有画面保存成 PNG,再由 FFmpeg 合成”。具体实现可以使用中间图片,也可以直接把原始帧送入编码管道;核心都是浏览器负责画面、编码器负责视频流。
为什么 HyperFrames 特别适合 AI Agent
HyperFrames 的价值不只是“前端开发者也能做视频”,而是它把视频工程转换成了 AI Agent 擅长处理的形态。
1. 工程是文本原生的
HTML、CSS、JavaScript、Markdown 和 JSON 都是大语言模型非常熟悉的格式。
Agent 可以:
- 阅读现有 Composition
- 解释场景结构
- 修改一段文字
- 调整某个 Clip 的时长
- 替换一张图片
- 增加一条动画
- 检查多个文件之间的 ID 和时间关系
相比二进制工程文件,代码更容易生成和修改。
2. 修改可以局部进行
用户可以提出非常具体的修改:
保留第一幕和第三幕,只把第二幕改成三列数据卡片;总时长不变,最后给 CTA 留 1 秒停顿。
Agent 可以围绕对应场景修改,而不必把整条视频重新设计一遍。
3. 可以自动检查
AI 生成代码不可避免地会出错,但代码工程可以建立明确的质量门槛:
- HTML 结构是否有效
- Composition ID 是否一致
- Timeline 是否成功注册
- 元素是否超出画布
- 文字是否被裁切
- 动画是否使用了不允许的属性
- 媒体是否加载失败
- 关键时间点是否出现黑屏
- 输出文件是否存在且时长合理
“可验证”是 HyperFrames 适合 Agent 的重要原因。好的 AI 视频工作流不是生成完就结束,而是让 Agent 在检查结果和截图反馈中继续迭代。
4. 可以进入 Git 和自动化流水线
一次视频修改可以对应一次清晰的代码变更:
新增开场问题
缩短第二幕旁白
替换产品截图
调整 Logo 收尾时长
修复竖屏版文字溢出
这让视频工程也可以获得版本控制、代码评审、自动检查和持续集成能力。
5. 可以变量化和批量生产
只要把容易变化的内容抽成变量,同一套 Composition 就可以生成多个版本:
- 不同产品名称
- 不同价格和数据
- 不同语言
- 不同 Logo
- 不同配音
- 横屏、竖屏和方形画幅
- 面向不同渠道的 CTA
这类任务非常适合电商广告、产品更新、课程片段、数据周报和社交媒体内容。
HyperFrames Skills 分别负责什么
使用 HyperFrames Skills 时,不应该把所有能力都理解成一个单独命令。
hyperframes 是入口和路由层,具体工作会继续分配给不同领域的 Skill:
| Skill | 主要职责 |
|---|---|
hyperframes |
判断项目状态、理解需求、选择合适的生产工作流 |
hyperframes-core |
Composition、Clip、Track、媒体和确定性渲染规范 |
hyperframes-creative |
视觉风格、排版、配色、节奏、故事和设计规范 |
hyperframes-animation |
动效规则、场景转场和不同动画运行时 |
hyperframes-keyframes |
GSAP、SVG、路径、遮罩、FLIP 和 2D/3D 关键帧 |
media-use |
图片、视频、配音、音乐、字幕和媒体处理 |
hyperframes-cli |
初始化、检查、截图、预览、渲染、发布和诊断 |
hyperframes-registry |
查找、安装和复用现成的 Block 与组件 |
可以把它们理解成一个小型视频团队:
hyperframes = 制片与任务路由
hyperframes-core = 技术规范
hyperframes-creative = 创意与视觉导演
hyperframes-animation = 动效导演
media-use = 媒体与声音部门
hyperframes-cli = 工程、质检和交付
hyperframes-registry = 模板与组件库
对 Agent 来说,Skills 的价值不只是提供知识,而是把一个开放式的“帮我做视频”任务拆成可以执行和验证的生产阶段。
理解原理后,怎样更好地给 Agent 下任务
底层原理最终要转化成更好的需求表达。
一个过于模糊的需求
帮我做一个高级、震撼、有科技感的 HyperFrames 视频。
这个需求缺少:
- 视频用途
- 目标观众
- 画幅和时长
- 内容结构
- 品牌与视觉约束
- 现有素材
- 配音和音乐要求
- 交付格式
- 哪些内容必须保留
Agent 只能在每个环节自行猜测,最后很容易得到一个“会动的网页”,而不是目标明确的视频。
一个更适合 HyperFrames 的需求
使用 HyperFrames 制作一条 20 秒、1920×1080 的产品介绍视频。
用途:官网首页和社交媒体。
目标:解释产品如何把 HTML 页面渲染成 MP4。
观众:了解前端开发,但没有接触过代码视频框架的人。
内容结构:
1. 0–3 秒:提出“网页能不能直接变成视频?”
2. 3–8 秒:显示 HTML、CSS、GSAP 三层结构。
3. 8–14 秒:演示时间轴被逐帧 Seek。
4. 14–18 秒:展示 Headless Chrome → FFmpeg → MP4。
5. 18–20 秒:Logo 和 CTA 收尾。
视觉:
- 黑色背景,蓝绿色高亮
- 大字号无衬线字体
- 不使用通用 SaaS 卡片堆叠布局
- 每一幕只保留一个视觉中心
工程要求:
- 使用可 Seek 的暂停时间轴
- 关键素材保存为本地文件
- 先生成 Storyboard,确认后再完成 Composition
- 完成后运行 check 并抽取关键时间点截图
- 不要在最终预览确认前渲染高质量视频
这类 Prompt 并不是限制创意,而是把应该由人决定的目标与边界提前说清楚,让 Agent 把算力用在具体设计和实现上。
一条更可靠的 AI 视频生产流程
理解 HyperFrames 原理后,推荐采用下面的工作流:
需求和目标
↓
BRIEF.md
↓
SCRIPT.md / STORYBOARD.md
↓
frame.md / 设计规范
↓
媒体资产冻结
↓
Composition 编写
↓
动画时间轴与媒体同步
↓
lint:快速结构检查
↓
check:运行时、布局、动效和对比度检查
↓
snapshot:查看关键时间点
↓
preview:人工审阅完整时间轴
↓
render:正式输出
↓
ffprobe / 播放检查:验证文件和时长
典型的 CLI 检查与交付顺序是:
# 写作期间快速检查
npx hyperframes lint
# 最终检查门槛
npx hyperframes check
# 检查几个关键时间点
npx hyperframes snapshot --at 1,5,10,18
# 打开最终预览
npx hyperframes preview
# 人工确认后再进行高质量渲染
npx hyperframes render --quality high --output out.mp4
# 确认文件非空并查看媒体信息
test -s out.mp4
ffprobe -v error -show_format out.mp4
这里最重要的不是记住命令,而是理解顺序:
先建立可验证的工程,再预览;先确认预览,再花时间做高质量渲染。
常见误区
误区一:把 HyperFrames 当成文生视频模型
HyperFrames 不会自动解决脚本、分镜、设计和素材质量问题。它能让 Agent 更好地执行视频工程,但仍需要明确的内容目标和视觉方向。
误区二:普通网页加一点动画就是视频
网页强调滚动、点击和自适应布局;视频强调固定画幅、时间节奏、镜头中心和帧级稳定。两者使用相同技术,但设计目标不同。
误区三:只要浏览器预览正常,渲染就一定正常
预览是连续播放,正式渲染可能会直接跳到任意时间点。依赖上一帧状态、异步网络或自然播放时间的逻辑,可能只在渲染时暴露问题。
误区四:Timeline 的长度就是视频长度
Composition 的输出时长由根元素的 data-duration 决定,不应该只看 GSAP Timeline 自身长度。动画结束后保留静止画面,也是一种正常的视频节奏设计。
误区五:每条视频都让 Agent 从零开始
如果没有 Recipe、设计规范、场景 Block 和模板,Agent 每次都要重新决定:
- 页面结构
- 色彩和字体
- 场景节奏
- 动画语言
- 转场方式
- 媒体组织
- 检查策略
这会消耗更多推理时间,也容易产生风格不一致和重复错误。
更有效的路线是逐步沉淀:
一次性 Composition
↓
可复用场景
↓
设计与动画规则
↓
可变量化模板
↓
批量视频生产 Recipe
误区六:技术越复杂,画面越高级
堆叠 Three.js、粒子、Shader 和大量动画,可能只会增加渲染成本。视频是否高级,首先取决于信息层级、构图、节奏、字体、颜色和素材质量。
HyperFrames 更适合哪些视频
HyperFrames 特别适合:
- 产品功能介绍
- SaaS 发布视频
- 数据报告和信息图视频
- 教程、解释器和知识短片
- 带字幕的社交媒体内容
- 网站和产品界面演示
- 需要批量替换数据的广告
- 多语言、多画幅视频
- 品牌一致性要求高的系列内容
它不一定适合:
- 高度依赖演员表演和真实摄影的长片
- 需要复杂手工合成、抠像和逐帧修饰的影视项目
- 完全依赖生成式人物连续运动的视频
- 不准备维护代码、模板或生产规范的一次性简单剪辑
现实项目中也可以混合使用:让生成式模型提供素材,让 HyperFrames 负责排版、字幕、品牌包装、信息层和最终合成。
总结:HyperFrames 的核心是“网页即视频”
HyperFrames 可以用四句话概括:
- 画面由 HTML、CSS 和浏览器生成。
- 时间由可暂停、可 Seek 的动画时间轴控制。
- Composition、Clip、Track 和媒体通过声明式结构组织。
- 最终画面和音频由编码流程输出为视频文件。
对 AI Agent 来说,它的意义是把原本封闭、依赖 GUI 的视频工程,转换成了可以阅读、生成、修改、检查和复用的代码工程。
理解底层原理后,我们就不会只对 Agent 说“做一个高级视频”,而会开始明确:
- 视频讲什么
- 每一幕持续多久
- 什么元素应该进入时间轴
- 哪些素材必须提前固定
- 动画能否被任意 Seek
- 怎样检查关键帧
- 哪些场景值得沉淀成模板
这也是从“偶尔让 AI 生成一条视频”,走向“建立 AI 视频生产系统”的第一步。
下一篇,我们会从一个完整示例出发,使用 HyperFrames Skills 走完 Brief、Storyboard、Composition、检查、预览和 MP4 渲染流程。
系列导航
- HyperFrames 原理详解:AI Agent 如何把 HTML 渲染成视频
- HyperFrames Skills 实战:从 Brief 到 MP4 生成第一条视频
- HyperFrames 进阶:如何提高画面质量与生产效率
- 玩转 HyperFrames:从 AI Coder 到 AI Layout Driver
- HyperFrames 官方 Registry 指南:让 Agent 自动查、拉、挂、验
- HyperFrames Registry 实战:Block + JSON Schema 视频流水线
配套资源:
参考资料
RELATED / 相关推荐
接着读这些
按同一栏目、标签与技术栈为你挑选。
HyperFrames Skills 实战:从 Brief 到 MP4 生成第一条视频
跟随完整案例,使用 HyperFrames Skills 完成需求确认、分镜、HTML Composition、动画检查、关键帧预览和 MP4 渲染。
玩转 HyperFrames:从 AI Coder 到 AI Layout Driver
通过 Block Registry、Scene JSON、设计 token 和音频时间数据,把 HyperFrames 从每次现场写代码升级为可复用、可验证的视频生产系统。
HyperFrames 进阶:如何提高 AI 视频的画面质量与生产效率
解决 AI 视频像网页幻灯片、动画杂乱和每次从零生成的问题,建立可复用的设计规范、场景 Block、媒体与批量生产流程。