Skip to main content

在 Lambda 上渲染

如果您想更快地渲染长视频,或者想同时渲染您视频的不同版本,您可以利用 @remotion/lambda

设置 Lambda

首先,您需要设置 Remotion Lambda
请按照这里显示的指示的步骤 1-7 进行操作。

部署和渲染

note

您的站点将获得一个公开访问的 URL。请确保将其保密,不要与任何人分享。

将以下函数和站点部署命令以及渲染命令添加到一个 shell 脚本中,每次您想要渲染视频时都可以执行:

shell
bunx remotion lambda functions deploy --memory=3009
bunx remotion lambda sites create --site-name=remotion-recorder --enable-folder-expiry
bunx remotion lambda render remotion-recorder <composition-id> --delete-after="7-days"
shell
bunx remotion lambda functions deploy --memory=3009
bunx remotion lambda sites create --site-name=remotion-recorder --enable-folder-expiry
bunx remotion lambda render remotion-recorder <composition-id> --delete-after="7-days"

解释:

  1. 部署 一个 Lambda 函数。将内存设置为 3009MB 将为您提供 3 个 vCPU。如果函数已经存在,则不会发生任何事情,因此每次运行该命令都是安全的。
  2. 上传 Recorder 和您的 Recordings 到 S3。为站点命名为 remotion-recorder,如果您愿意,也可以选择其他名称。--enable-folder-expiry 标志将使自动删除视频的渲染成为可能。如果已经存在具有此名称的站点,则会对其进行更新。
  3. 渲染 视频。将站点名称和composition ID传递给命令。--delete-after 标志将在指定时间后删除视频,如果您希望保留视频,则可以删除此标志。

为特定平台渲染

您可以使用 --props 来覆盖您在合成中设置的默认 props。
以下是一个为所有平台渲染视频的脚本:

shell
bunx remotion lambda render --props='{"platform": "youtube", "layout": "landscape"}' remotion-recorder <composition-id>
bunx remotion lambda render --props='{"platform": "x", "layout": "square"}' remotion-recorder <composition-id>
bunx remotion lambda render --props='{"platform": "linkedin", "layout": "square"}' remotion-recorder <composition-id>
shell
bunx remotion lambda render --props='{"platform": "youtube", "layout": "landscape"}' remotion-recorder <composition-id>
bunx remotion lambda render --props='{"platform": "x", "layout": "square"}' remotion-recorder <composition-id>
bunx remotion lambda render --props='{"platform": "linkedin", "layout": "square"}' remotion-recorder <composition-id>

我们的脚本

为了渲染我们的视频,我们创建一个 TypeScript 文件,并使用 bun lambda.ts 运行它。

lambda.ts
tsx
import { $ } from "bun";
const siteName = "our-recorder";
const compositionId = "installwhispercpp";
const configs = [
{
canvasLayout: "square",
platform: "linkedin",
},
{
canvasLayout: "square",
platform: "x",
},
{
canvasLayout: "landscape",
platform: "youtube",
},
];
await $`bunx remotion lambda sites create --site-name=${siteName}`;
for (const config of configs) {
await $`bunx remotion lambda render ${siteName} ${compositionId} --props='${JSON.stringify(config)}'`;
}
lambda.ts
tsx
import { $ } from "bun";
const siteName = "our-recorder";
const compositionId = "installwhispercpp";
const configs = [
{
canvasLayout: "square",
platform: "linkedin",
},
{
canvasLayout: "square",
platform: "x",
},
{
canvasLayout: "landscape",
platform: "youtube",
},
];
await $`bunx remotion lambda sites create --site-name=${siteName}`;
for (const config of configs) {
await $`bunx remotion lambda render ${siteName} ${compositionId} --props='${JSON.stringify(config)}'`;
}