Skip to main content

Remotion 3.0

· 7 min read
Jonny Burger
Remotion首席黑客

经过超过10个月的开发和1400次提交,很高兴地宣布Remotion 3.0!

我相信Remotion Lambda是我编写过的最好的软件。这是完成我们愿景所需的最后一块拼图:用于开发视频应用程序的全栈!享受更新日志,如果还没有,请查看Remotion 3.0预告片

宣布Remotion Lambda

Remotion Lambda是基于AWS Lambda的分布式视频渲染器。它适用于自托管,因此您可以将其部署到您的AWS帐户中。一旦您的Lambda函数启动,您可以为其提供渲染任务,它将将其拆分为许多小工作单元,并通过多次生成自身并行处理这些任务。

Lambda是所有世界的最佳选择:

  • 快速:Lambda可以比最快的消费者计算机快多次渲染视频。视频越长,速度增益越高。Remotion Lambda预告片的渲染时间从60秒缩短到15秒,一部2小时的视频仅需12分钟[1]

  • 便宜:您只在渲染时支付费用。Lambda函数使用ARM架构,具有最佳的价格性能效率。

  • 可扩展:您可以同时渲染多个视频。Lambda的并发限制适用,但可以增加。

  • 简单:Chromium和FFMPEG已经预安装,我们处理了所有边缘情况。您只需要编写您的视频,按照部署函数和调用渲染的步骤即可。

所有功能均可通过CLI命令和Node.JS函数使用。我们编写了45页的文档,向测试人员发布了50多个alpha版本,并编写了许多从单元测试到端到端测试的测试。Lambda已经成熟,并且被像ComboJupitrr这样的公司用于生产。

并行渲染和编码

以前,渲染帧并将它们拼接成视频是一个顺序过程,其中一个步骤只能在另一个步骤完成后开始。在 Remotion 3.0 中,拼接可以在渲染仍在进行中时开始!这将平均加快速度10-15%。

此外,现在下载音频资产的时间点提前到了渲染管道中,如果您依赖远程音频,您也应该看到一个明显的加速。

新的 renderMedia() API

@remotion/renderer 中添加了一个新函数叫做 renderMedia()。它结合了已经存在的函数 renderFrames()stitchFramesToVideo(),并利用了新的并行渲染管道。它可以渲染视频和音频,并且需要更少的参数,因此在速度和易用性上都是一个胜利!

新的 openBrowser() API

由于打开和关闭浏览器实例可能需要时间,我们引入了一个名为 openBrowser() 的新 API,用于打开一个 Puppeteer 实例,您可以在 SSR API 中使用:renderMedia()renderStill()getCompositions()renderFrames()

更好的错误报告

我们正在采取措施使错误更易于理解。尽管到目前为止,大部分错误处理都是由第三方库处理的,但我们已经内联了逻辑,使我们能够简化它。缩小的错误正在被符号化,我们实现了一个新的错误叠加层,超时错误更具描述性。请告诉我们您的想法!

在远程 Lambda 函数内部的 Chrome 浏览器中发生的缩小错误显示了正确的堆栈跟踪!

我们的自定义错误叠加层可以打开有问题的文件,查找类似的 GitHub 问题。

配置文件现在可以导入其他文件。

remotion.config.ts 文件中,您现在可以导入其他文件。在底层,我们使用 ESBuild 而不是 Typescript 来读取文件。这是一个痛点:Node.JS API 不会从配置文件中读取,并要求您明确指定选项。迄今为止,CLI 和 Node.JS 渲染之间无法以良好的方式共享配置,例如 Webpack 配置覆盖,我们通过这个更改来解决这个问题。

支持 React 18

现在支持 React 18,并建议您升级到它。请查看我们的 React 18 升级指南 以了解如何进行升级!

Node 14,ESLint 8

保持我们的堆栈现代化可以让我们更快地前进,同时也消除依赖关系。

在 Remotion 3.0 中,不再支持 Node 12,并且我们正式支持 Node 18。 我们的 ESLint 配置已更新以利用 ESLint 8,这也是官方支持的。

如何更新

阅读 迁移指南 以更新到 Remotion 3.0。最严重的破坏性更改围绕着服务器端渲染,旨在使其更快速和更简单。除了 SSR 更改和 Node 14 要求之外,不应该出现其他破坏性更改。


[1] 请查看 预告片存储库 以获取如何复制的说明。

[2] 在 us-east-1 地区的温暖 Lambda 上,使用 --frames-per-lambda=1080 在 Remotion 存储库的 example 文件夹中渲染 2hrvideo 组合,Lambda 函数在 arm64 架构上运行,内存为 2048MB。