Skip to main content
Remotion 是一个很棒的项目,我们在 HeyGen 的生产流程中使用 Remotion 已有好几个月了。 Remotion 提倡使用代码来编排和动画视频制作的想法,并证明无头 Chrome 可以成为可靠的、确定性的视频渲染器。 Hyperframes 源代码中的几种模式直接来自 Remotion 团队首创的模式 — Chrome 启动标志、端口选择、image2pipe 流式传输到 FFmpeg、按顺序帧缓冲。我们特意在代码中保留了归属注释,以便任何阅读源代码的人都可以看到谱系。 本指南是由构建 Hyperframes 的团队编写的,对 Hyperframes 和 Remotion 的不同之处进行了诚实的细分。我们选择了不同的赌注;每个人都有对方没有的优点,本文档将介绍两者。

我们为何构建超框架

当我们在 HeyGen 扩展代码到视频的管道时,我们在 React 优先的创作模型中不断遇到同样的限制。我们在内部争论是否继续构建 Remotion 还是从头开始编写渲染器。有两个因素促使我们构建超框架。

1. 代理原生工作流程

在我们的评估中,与直接编写 HTML + GSAP 作品的相同法学硕士相比,编写 Remotion 作品的法学硕士产生的创造性视觉输出较少,并且需要更多的护栏和提示。 两个相关的问题使情况变得更加复杂:
  • 具有自己内部时钟的动画库(GSAP、Anime.js、Motion One)无法与 React 的每帧渲染完美地组合。
  • 不是用 React 编写的任意 HTML 或 CSS 没有进入 React 组合的干净路径 - 你必须重写它。

2. 人工编辑工作流程

我们希望渲染层和数据层使用相同的代码,因为我们需要在代理体验之上为人类提供 UI。 HTML 既是渲染层,又是可编辑的事实来源——相同的 DOM 是您所看到和编辑的内容。这使得真正的可视化编辑器(选择、拖放、属性面板、时间轴)的构建更加自然,与 Paper.Design 的方式相同。对于 Remotion,事实来源是代码加上构建步骤,因此通过可视化编辑器进行往返是痛苦且脆弱的。 Remotion 团队在这方面取得了进展,但是在 React 之上构建实时编辑器比在 HTML 之上构建实时编辑器要困难得多。 我们将超框架构建为最适合代理的原生框架,同时可以轻松地在其上构建人机界面。

一目了然

HyperFrames远程
创作HTML + CSS + GSAP反应组件 (TSX)
运行时浏览器 DOM,无框架每帧反应协调
构建步骤没有任何; index.html 按原样播放必需(webpack、捆绑器)
库时钟动画(GSAP、Anime.js、Motion One)可寻找;帧精确渲染期间按挂钟播放
任意 HTML/CSS 传递粘贴并设置动画重写为 JSX
分布式渲染AWS Lambda 支持Remotion Lambda,成熟并经过生产测试
HDR 输出支持记录为不受支持
渲染源上的可视化编辑器本国的;相同的 DOM 是可编辑的源代码是代码加上构建步骤
执照阿帕奇2.0商业
本指南的其余部分将介绍每一行的含义以及每个工具的实际优势。

核心区别:React 与 HTML

Hyperframes 和 Remotion 都驱动无头 Chrome。两者都是确定性的。兼有船舶代理技能。他们在一个决定上存在分歧:主要作者写了什么。 Remotion 的赌注是 React。视频合成是 React 组件。您将获得类型化 JSX、React 生态系统、组件重用以及整个 React 工具。 Remotion 的优势来自于对这一表面的承诺:多年的生产使用、超大规模的 Lambda、大型社区、谨慎的类型安全 API。 Hyperframes 的赌注是 HTML。视频作品是 HTML 页面。您可以粘贴登陆页面、设计系统组件或 CodePen 演示并为其设置动画。我们认为这对于两个特定用例来说是正确的界面:编写视频的 AI 代理,以及直接在渲染器使用的 DOM 上构建的可视化编辑器。 不同的赌注,不同的实力。本文档的其余部分对每个内容出现的位置进行了细分。

差异在实践中意味着什么

代理在 HTML 中比在 React 中更好地表达视觉效果

当法学硕士编写HyperFrames时,它正在编写接受最严格培训的媒体。浏览器所见的网络——来自 CodePen 的 HTML、CSS、JavaScript、GSAP 习惯用法、25 年以上积累的网络动画内容——是模型训练数据中最深的井。 React 特定的源代码所占的份额要小得多。 从在生产环境中运行两个系统开始:要求编写 Remotion 组合的代理需要花费代币来学习框架规则(允许使用哪些钩子、禁止哪些 API、如何构建项目),然后才能发挥创意。输出往往集中在狭窄的视觉词汇上——居中的标题、库存转换、传统的排版。使用 GSAP 编写 HTML 的同一个代理可以达到更广泛的创意范围,因为这就是它的训练数据的样子。

拥有自己的时钟的动画库

要求代理将 GSAP 动画或现有网页移植到 Remotion 中,第一次尝试就会丢失详细信息:时间细微差别、音频电平关系、文本大小。 HTML 优先路径完全避免了翻译步骤。 我们为这两个工具提供了相同的 4 秒 GSAP 时间轴:“HYPERFRAMES”的 11 个字母以轻松退出的方式交错输入,保持 1.5 秒,然后每个字母旋转并落出框架。相同的动画代码,相同的缓动,相同的交错。我们唯一改变的是渲染器。 HyperFrames输出 - 动画的样子: HyperFrames GSAP 渲染 — 字母进入、保持,然后在整整 4 秒内消失 全部四秒均已使用。字母一个接一个地飞进来,整个单词在中心停留大约一秒半,然后字母旋转并掉落。 远程输出 - 相同的时间线,相同的代码: 远程 GSAP 渲染 — GSAP 在第一秒内播放整个时间线,将大部分渲染保留为空舞台 GSAP 大约在渲染挂钟时间的第一秒内播放整个 4 秒动画。当 Remotion 捕获后面的帧时,GSAP 的时间线已经完成并且每个字母都已退出 - 渲染的其余部分捕获一个空的阶段。 原因: GSAP 通过 performance.now() 驱动自己的时间线,该时间线在渲染过程中以实时速度滴答作响。 Hyperframes 会暂停 GSAP,并在捕获每个帧之前将其查找到 frame / fps,因此该库与输出同步运行。 Remotion 没有等效的原语,因此 GSAP 的内部行情以挂钟速度在时间线上运行,而 Remotion 在入口期间捕获少量帧,之后捕获大部分空帧。 GSAP 支持的一切——SplitText、ScrollTrigger、MotionPath、物理、CodePen 上 15 年的片段——在HyperFrames中的工作方式相同。该模式可以推广到 Anime.js、Motion One 以及任何其他拥有自己时钟的库;任何没有自己时钟的 JS 库都可以工作。将库时钟包装在 Remotion 组件中是可能的,但很笨拙,并且您放弃了库所擅长的大部分功能。 请参阅 GSAP 动画指南 了解其集成方式,并参阅 确定性渲染 了解搜索驱动捕获在幕后的工作原理。

任意 HTML、CSS、JavaScript

每个网页都是一个潜在的超框架组合。登陆页面。克劳德设计的文物。设计系统文档。 CodePen 嵌入。您粘贴 HTML 并渲染。 Remotion 要求您首先进行翻译:将 HTML 重写为 JSX,将 CSS 转换为 React,使用引用和效果将命令式代码(Canvas、WebGL、GSAP)包装在 React 组件中。每个翻译步骤对于代理或人类来说都有可能失去保真度或引入错误。无论如何,翻译都是往返工作——两个框架最终都将 HTML 提供给浏览器进行渲染。 网站到视频指南 逐步介绍 HTML 优先模型支持的完整捕获到渲染管道。

边缘基元的自动回退

HyperFrames有两种捕获模式。
  • BeginFrame 模式 (Linux + chrome-headless-shell) 通过 HeadlessExperimental.beginFrame 以原子方式驱动 Chrome 的合成器,在机器上生成逐字节的可再现帧。
  • 屏幕截图模式(macOS、Windows,并作为自动后备)实时运行 Chrome 并拍摄普通屏幕截图 - 与 Remotion 使用的方法相同。
渲染器在编译时检查每个合成,并在发现 BeginFrame 无法处理的基元时返回到屏幕截图模式:内联 <iframe>、原始 requestAnimationFrame帧适配器 外部循环。它注入了虚拟时间 shim,因此 rAF 和 iframe 内容保持帧驱动而不是挂钟驱动。您会得到一个解释回退的诊断信息,并且渲染会产生明显正确的输出。当合成可以在 BeginFrame 模式下运行时,您可以免费获得确定性。 实践中:GSAP 时间轴、CSS @keyframes(通过 Web 动画 API 适配器)、Lottie、Three.js 和 Web 动画 API 都在 BeginFrame 模式下确定性渲染。原始画布循环和实时网络嵌入会自动获取屏幕截图模式。

React 组件重用(Remotion 的主场)

如果您的团队已经拥有 React 组件的设计系统,Remotion 可以让您根据应用程序中提供的相同基元来编写视频。类型安全、IDE 补全、跨文件重构——React 为开发人员人体工程学带来的一切。对于现有 React 投资的团队来说,这是 Hyperframes 无法比拟的真正优势。

分布式渲染

Remotion Lambda 将长视频拆分为数百个 AWS Lambda 函数。它是成熟的、经过生产测试且有详细记录的——团队已经在生产中使用了多年。 Hyperframes 现在提供了一个 AWS Lambda 部署路径:Step Functions 工作流程背后的一个 Lambda 函数,该函数在块工作线程之间进行渲染,将中间结果存储在 S3 中,并公开 lambda renderlambda render-batch、进度轮询和 SDK 使用情况。 Surface 比 Remotion Lambda 更新,因此实际的权衡是相对于 Hyperframes 的 HTML 原生组合模型的成熟度。

对渲染源进行可视化编辑(Hyperframes 的自然选择)

您渲染的 DOM 就是您编辑的 DOM。 Hyperframes Studio 在实时 iframe 中预览合成,并且由于渲染器和编辑器共享一个 DOM,因此直接操作会针对渲染管道消耗的相同事实来源进行操作。这种用户体验(单击选择、拖动重新定位、在面板中编辑属性)今天已经提供了标题,并且在相同的架构基础上构建了更广泛的元素覆盖范围。 在 React 之上构建相同的编辑器更加困难,因为事实来源是代码加上构建步骤。将可视化编辑往返回 JSX 意味着重新编译。这就是为什么像 Paper.Design 这样的工具首先选择 HTML 作为可编辑源。

HDR输出

这两种工具目前都通过无头 Chrome 进行渲染,该 Chrome 输出 sRGB。远程将此记录为不受支持。HyperFrames支持 HDR 输出 通过将 DOM 层与本机 HLG/PQ 视频相结合的两遍合成管道。

开源与源代码可用

这是两个项目之间最明显的差异之一,也是团队选择其中一个项目的最常见原因之一。
HyperFrames远程
分类开源(OSI 批准源码可用,非开源
执照阿帕奇2.0自定义远程许可证
商业用途任何规模免费需要高于小团队门槛的付费公司许可证
每次渲染费用没有任何是的,高于阈值
再分配Apache 2.0 允许受远程许可证限制
这两个项目都在 GitHub 上发布了源代码,但许可证的工作方式却截然不同。 Apache 2.0 是一个开源计划批准的许可证 — 您可以自行托管、修改、重新分发和以任何规模商业使用超框架,无需每次渲染费用,也没有席位上限。远程许可证是自定义商业许可证:您可以阅读代码并为小型团队自行托管,但超过其阈值的商业用途需要付费的公司许可证。 如果开源许可对您很重要(OSI 合规性、再分发权、无每次使用费用、长期独立于供应商的定价决策),那么这是首要决策点。如果您的用例适合 Remotion 的免费套餐,或者您的公司愿意使用商业许可证,那么这不是问题。请参阅远程许可证页面 了解其当前条款。 我们在 Apache 2.0 下开源了 Hyperframes,因此任何人都可以在其上进行构建(包括商业上的、任何规模的),因此该项目可以比任何一家公司的优先事项更长久。

回顾

Remotion 和 Hyperframes 之间的唯一区别是 React 与 HTML(+ CSS + JavaScript)的选择。这一决定导致了下游的许多分歧。对于我们的需求(大多数是代理的原生需求,其架构旨在支持人类的 UI 层),HTML + CSS + JavaScript 是显而易见的选择:
  1. 代理已经在 HTML 中“思考”。法学硕士见过大量的网络代码。
  2. 真正的“一个文件输入,视频输出”。没有 package.json,没有安装,没有捆绑器配置,没有组合设置。更少的移动部件=自动化和代理工作流程中随机故障的减少。
  3. 最高的创意上限——浏览器可以呈现的任何内容,HTML 都可以表示。
  4. HTML 既是渲染层,又是可编辑的事实来源。你看到的和你编辑的都是同一个 DOM。
我们 HeyGen 全力致力于HyperFrames,但我们无法单独做到这一点 - 这就是我们在 Apache 2.0 下开源它的原因,因此我们可以共同构建代理视频创建的基础。

进一步阅读