Skip to main content

并发性

Remotion Lambda 是一个高度并发的分布式视频渲染系统。这意味着视频渲染工作被分配到许多 Lambda 函数中。您可以自行定义 Lambda 函数的数量,或者让 Remotion 的默认设置决定。

设置并发性

您可以通过 framesPerLambda 选项(或通过 CLI 的 --frames-per-lambda)来设置并发性。

并发性定义为 frameCount / framesPerLambda。这意味着您设置的 framesPerLambda 越高,并发性就越低。

note

示例:您渲染一个具有 durationInFrames300 的视频,设置 framePerLambda15。并发性为 300 / 15 = 20

默认值

默认情况下,Remotion 会选择一个介于 20 和 ∞ 之间的值作为 framesPerLambda。视频越长,并发性越高。作为基准,无论视频有多短,始终至少会有 20 帧被渲染到每个 Lambda 中。

下图显示了如何基于帧数选择 framesPerLambda 和隐含的并发性:

确定 framesPerLambda 参数的代码为:

tsx
import { interpolate } from "remotion";
 
const bestFramesPerLambdaParam = (frameCount: number) => {
// Between 0 and 10 minutes (at 30fps), interpolate the concurrency from 75 to 150
const concurrency = interpolate(frameCount, [0, 18000], [75, 150], {
extrapolateRight: "clamp",
});
 
// At least have 20 as a `framesPerLambda` value
const framesPerLambda = Math.max(frameCount / concurrency, 20);
 
// Evenly distribute: For 21 frames over 2 lambda functions, distribute as 11 + 10 ==> framesPerLambda = 11
const lambdasNeeded = Math.ceil(frameCount / framesPerLambda);
 
return Math.ceil(frameCount / lambdasNeeded);
};
tsx
import { interpolate } from "remotion";
 
const bestFramesPerLambdaParam = (frameCount: number) => {
// Between 0 and 10 minutes (at 30fps), interpolate the concurrency from 75 to 150
const concurrency = interpolate(frameCount, [0, 18000], [75, 150], {
extrapolateRight: "clamp",
});
 
// At least have 20 as a `framesPerLambda` value
const framesPerLambda = Math.max(frameCount / concurrency, 20);
 
// Evenly distribute: For 21 frames over 2 lambda functions, distribute as 11 + 10 ==> framesPerLambda = 11
const lambdasNeeded = Math.ceil(frameCount / framesPerLambda);
 
return Math.ceil(frameCount / lambdasNeeded);
};
Enter number of frames:
The default framesPerLambda is 20

并发性限制

请确保您仅在以下限制范围内设置参数,以确保渲染不会引发任何错误:

  • 最小 framesPerLambda:4
  • 最大并发性:200

Remotion Lambda 的默认设置永远不会超出这些限制。

"函数过多"

如果您收到以下错误:

函数过多:此渲染将导致 [X] 个函数被生成。我们将此数量限制为 200 个函数,因为更多的函数会导致收益递减。

这意味着您设置的 framesPerLambda 值非常低,会导致生成许多函数。根据我们的经验,如果并发性超过此点,渲染速度不会变快。

  • 我们建议将 framesPerLambda 的值设置为 null。Remotion 将选择一个合理的值,保持在范围内。
  • 如果您不想使用默认值,请确保不设置超出上述定义范围的值。