renderMediaOnLambda()
Triggers a render on a lambda given a composition and a lambda function.
Example
tsx
const {bucketName ,renderId } = awaitrenderMediaOnLambda ({region : "us-east-1",functionName : "remotion-render-bds9aab",composition : "MyVideo",framesPerLambda : 20,serveUrl :"https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw",inputProps : {},codec : "h264",imageFormat : "jpeg",maxRetries : 1,privacy : "public",});
tsx
const {bucketName ,renderId } = awaitrenderMediaOnLambda ({region : "us-east-1",functionName : "remotion-render-bds9aab",composition : "MyVideo",framesPerLambda : 20,serveUrl :"https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw",inputProps : {},codec : "h264",imageFormat : "jpeg",maxRetries : 1,privacy : "public",});
Arguments
An object with the following properties:
region
In which region your Lambda function is deployed. It's highly recommended that your Remotion site is also in the same region.
privacy
One of:
"public"
(default): The rendered media is publicly accessible under the S3 URL."private"
: The rendered media is not publicly available, but signed links can be created using presignUrl()."no-acl"
(available from v.3.1.7): The ACL option is not being set at all, this option is useful if you are writing to another bucket that does not support ACL usingoutName
.
functionName
The name of the deployed Lambda function.
Use deployFunction()
to create a new function and getFunctions()
to obtain currently deployed Lambdas.
framesPerLambda
optional
The video rendering process gets distributed across multiple Lambda functions. This setting controls how many frames are rendered per Lambda invocation. The lower the number you pass, the more Lambdas get spawned.
Default value: Dependant on video length
Minimum value: 4
note
The framesPerLambda
parameter cannot result in more than 200 functions being spawned. See: Concurrency
serveUrl
A URL pointing to a Remotion project. Use deploySite()
to deploy a Remotion project.
composition
The id
of the composition you want to render.
inputProps
React props that are passed to your composition. You define the shape of the props that the component accepts.
codec
Which codec should be used to encode the video.
Video codecs h264
and vp8
are supported, prores
is supported since v3.2.0
.
Audio codecs mp3
, aac
and wav
are also supported.
See also renderMedia() -> codec
.
muted
Disables audio output. See also renderMedia() -> muted
.
imageFormat
See renderMedia() -> imageFormat
.
crf
See renderMedia() -> crf
.
envVariables
See renderMedia() -> envVariables
.
pixelFormat
See renderMedia() -> pixelFormat
.
proResProfile
See renderMedia() -> proResProfile
.
quality
maxRetries
optional, default 1
How often a chunk may be retried to render in case the render fails.
If a rendering of a chunk is failed, the error will be reported in the getRenderProgress()
object and retried up to as many times as you specify using this option.
outName
optional
The file name of the media output.
It can either be:
undefined
- it will default toout
plus the appropriate file extension, for example:renders/${renderId}/out.mp4
. The outName must match/^([0-9a-zA-Z-!_.*'()/]+)$/g
.- A
string
- it will get saved to the same S3 bucket as your site under the keyrenders/{renderId}/{outName}
. - An object of shape
{ key: string; bucketName: string }
. This will save the render to an arbitrary bucket with an arbitrary key. Note the following restrictions:- You must extend the default Remotion policy to allow read and write access to that bucket.
- The bucket must be in the same region.
- When calling APIs such as
downloadMedia()
orgetRenderProgress()
, you must pass the bucket name where the site resides in, not the bucket where the video gets saved. - The
key
must match/^([0-9a-zA-Z-!_.*'()]+)$/g
and the bucketName must match/^(?=^.{3,63}$)(?!^(\d+\.)+\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])\.)*([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])$)/
.
timeoutInMilliseconds?
optional
A number describing how long the render may take to resolve all delayRender()
calls before it times out. Default: 30000
chromiumOptions?
optional, available from v2.6.5
Allows you to set certain Chromium / Google Chrome flags. See: Chromium flags.
concurrencyPerLambda?
optional, available from v3.0.30
By default, each Lambda function renders with concurrency 1 (one open browser tab). You may use the option to customize this value.
everyNthFrame?
optional, available from v3.1
Renders only every nth frame. For example only every second frame, every third frame and so on. Only works for rendering GIFs. See here for more details.
numberOfGifLoops?
optional, available since v3.1
Set the looping behavior. This option may only be set when rendering GIFs. See here for more details.
downloadBehavior?
optional, available since v3.1.5
How the output file should behave when accessed through the S3 output link in the browser.
Either:
{"type": "play-in-browser"}
- the default. The video will play in the browser.{"type": "download", fileName: null}
or{"type": "download", fileName: "download.mp4"}
- aContent-Disposition
header will be added which makes the browser download the file. You can optionally override the filename.
disableWebSecurity
boolean - default false
This will most notably disable CORS among other security features.
ignoreCertificateErrors
boolean - default false
Results in invalid SSL certificates, such as self-signed ones, being ignored.
gl
string
Select the OpenGL renderer backend for Chromium. Accepted values:
"angle"
,"egl"
,"swiftshader"
"swangle"
null
- Chromiums default
note
The default for Lambda is swangle
, but null
elsewhere.
Return value
Returns a promise resolving to an object containing two properties: renderId
and bucketName
. Those are useful for passing to getRenderProgress()
renderId
A unique alphanumeric identifier for this render. Useful for obtaining status and finding the relevant files in the S3 bucket.
bucketName
The S3 bucket name in which all files are being saved.