并发性
Remotion Lambda 是一个高度并发的分布式视频渲染系统。这意味着视频渲染工作被分配到许多 Lambda 函数中。您可以自行定义 Lambda 函数的数量,或者让 Remotion 的默认设置决定。
设置并发性
您可以通过 framesPerLambda
选项(或通过 CLI 的 --frames-per-lambda
)来设置并发性。
并发性定义为 frameCount / framesPerLambda
。这意味着您设置的 framesPerLambda
越高,并发性就越低。
note
示例:您渲染一个具有 durationInFrames
为 300
的视频,设置 framePerLambda
为 15
。并发性为 300 / 15 = 20
。
默认值
默认情况下,Remotion 会选择一个介于 20 和 ∞ 之间的值作为 framesPerLambda
。视频越长,并发性越高。作为基准,无论视频有多短,始终至少会有 20 帧被渲染到每个 Lambda 中。
下图显示了如何基于帧数选择 framesPerLambda
和隐含的并发性:
确定 framesPerLambda
参数的代码为:
tsx
import {interpolate } from "remotion";constbestFramesPerLambdaParam = (frameCount : number) => {// Between 0 and 10 minutes (at 30fps), interpolate the concurrency from 75 to 150constconcurrency =interpolate (frameCount , [0, 18000], [75, 150], {extrapolateRight : "clamp",});// At least have 20 as a `framesPerLambda` valueconstframesPerLambda =Math .max (frameCount /concurrency , 20);// Evenly distribute: For 21 frames over 2 lambda functions, distribute as 11 + 10 ==> framesPerLambda = 11constlambdasNeeded =Math .ceil (frameCount /framesPerLambda );returnMath .ceil (frameCount /lambdasNeeded );};
tsx
import {interpolate } from "remotion";constbestFramesPerLambdaParam = (frameCount : number) => {// Between 0 and 10 minutes (at 30fps), interpolate the concurrency from 75 to 150constconcurrency =interpolate (frameCount , [0, 18000], [75, 150], {extrapolateRight : "clamp",});// At least have 20 as a `framesPerLambda` valueconstframesPerLambda =Math .max (frameCount /concurrency , 20);// Evenly distribute: For 21 frames over 2 lambda functions, distribute as 11 + 10 ==> framesPerLambda = 11constlambdasNeeded =Math .ceil (frameCount /framesPerLambda );returnMath .ceil (frameCount /lambdasNeeded );};
Enter number of frames:
The default
The default
framesPerLambda
is 20并发性限制
请确保您仅在以下限制范围内设置参数,以确保渲染不会引发任何错误:
- 最小
framesPerLambda
:4 - 最大并发性:200
Remotion Lambda 的默认设置永远不会超出这些限制。
"函数过多"
如果您收到以下错误:
函数过多:此渲染将导致 [X] 个函数被生成。我们将此数量限制为 200 个函数,因为更多的函数会导致收益递减。
这意味着您设置的 framesPerLambda
值非常低,会导致生成许多函数。根据我们的经验,如果并发性超过此点,渲染速度不会变快。
- 我们建议将
framesPerLambda
的值设置为null
。Remotion 将选择一个合理的值,保持在范围内。 - 如果您不想使用默认值,请确保不设置超出上述定义范围的值。