renderStillOnLambda()
Renders a still image inside a lambda function and writes it to the specified output location.
If you want to render a video or audio instead, use renderMediaOnLambda()
instead.
If you want to render a still locally instead, use renderStill()
instead.
Example
tsx
import {renderStillOnLambda } from "@remotion/lambda/client";const {estimatedPrice ,url ,sizeInBytes } = awaitrenderStillOnLambda ({region : "us-east-1",functionName : "remotion-render-bds9aab",serveUrl :"https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw",composition : "MyVideo",inputProps : {},imageFormat : "png",maxRetries : 1,privacy : "public",envVariables : {},frame : 10,});
tsx
import {renderStillOnLambda } from "@remotion/lambda/client";const {estimatedPrice ,url ,sizeInBytes } = awaitrenderStillOnLambda ({region : "us-east-1",functionName : "remotion-render-bds9aab",serveUrl :"https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw",composition : "MyVideo",inputProps : {},imageFormat : "png",maxRetries : 1,privacy : "public",envVariables : {},frame : 10,});
Preferrably import this function from @remotion/lambda/client
to avoid problems inside serverless functions.
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.
functionName
The name of the deployed Lambda function.
Use deployFunction()
to create a new function and getFunctions()
to obtain currently deployed Lambdas.
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
Input Props to pass to the selected composition of your video..
Must be a JSON object.
From the root component the props can be read using getInputProps()
.
You may transform input props using calculateMetadata()
.
privacy
One of:
"public"
(default): The rendered still is publicly accessible under the S3 URL."private"
: The rendered still 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
.
frame?
optional - default 0
Which frame of the composition should be rendered. Frames are zero-indexed.
From v3.2.27, negative values are allowed, with -1
being the last frame.
imageFormat?
optional - default "png"
See renderStill() -> imageFormat
.
onInit?
v4.0.6
A callback function that gets called when the render starts, useful to obtain the link to the logs even if the render fails.
It receives an object with the following properties:
renderId
: The ID of the render.cloudWatchLogs
: A link to the CloudWatch logs of the Lambda function, if you did not disable it.lambdaInsightsUrl
v4.0.61: A link to the Lambda insights, if you enabled it.
Example usage:
tsx
import {renderStillOnLambda ,RenderStillOnLambdaInput ,} from "@remotion/lambda/client";constotherParameters :RenderStillOnLambdaInput = {region : "us-east-1",functionName : "remotion-render-bds9aab",serveUrl :"https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw",composition : "MyVideo",inputProps : {},imageFormat : "png",maxRetries : 1,privacy : "public",envVariables : {},frame : 10,};awaitrenderStillOnLambda ({...otherParameters ,onInit : ({cloudWatchLogs ,renderId ,lambdaInsightsUrl }) => {console .log (console .log (`Render invoked with ID = ${renderId }`));console .log (`CloudWatch logs (if enabled): ${cloudWatchLogs }`);console .log (`Lambda Insights (if enabled): ${lambdaInsightsUrl }`);},});
tsx
import {renderStillOnLambda ,RenderStillOnLambdaInput ,} from "@remotion/lambda/client";constotherParameters :RenderStillOnLambdaInput = {region : "us-east-1",functionName : "remotion-render-bds9aab",serveUrl :"https://remotionlambda-qg35eyp1s1.s3.eu-central-1.amazonaws.com/sites/bf2jrbfkw",composition : "MyVideo",inputProps : {},imageFormat : "png",maxRetries : 1,privacy : "public",envVariables : {},frame : 10,};awaitrenderStillOnLambda ({...otherParameters ,onInit : ({cloudWatchLogs ,renderId ,lambdaInsightsUrl }) => {console .log (console .log (`Render invoked with ID = ${renderId }`));console .log (`CloudWatch logs (if enabled): ${cloudWatchLogs }`);console .log (`Lambda Insights (if enabled): ${lambdaInsightsUrl }`);},});
jpegQuality?
optional
Sets the quality of the generated JPEG images. Must be an integer between 0 and 100. Default is to leave it up to the browser, current default is 80.
Only applies if imageFormat
is "jpeg"
, otherwise this option is invalid.
quality?
quality?
Renamed to jpegQuality
in v4.0.0
.
maxRetries?
optional - default 1
How often a frame render may be retried until it fails.
A retry only gets executed if a the error is in the list of flaky errors.
envVariables?
optional - default {}
See renderStill() -> envVariables
.
forceHeight?
optional, available from v3.2.40
Overrides the default composition height.
forceWidth?
optional, available from v3.2.40
Overrides the default composition width.
scale?
optional
Scales the output dimensions by a factor. See Scaling to learn more about this feature.
outName?
optional
It can either be:
undefined
- it will default toout
plus the appropriate file extension, for example:renders/${renderId}/out.mp4
.- A
string
- it will get saved to the same S3 bucket as your site under the keyrenders/{renderId}/{outName}
. Make sure to include the file extension at the end of the string. - An object if you want to render to a different bucket or cloud provider - see here for detailed instructions.
timeoutInMilliseconds?
optional
A number describing how long the render may take to resolve all delayRender()
calls before it times out. Default: 30000
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.
offthreadVideoCacheSizeInBytes?
v4.0.23
From v4.0, Remotion has a cache for <OffthreadVideo>
frames. The default is null
, corresponding to half of the system memory available when the render starts.This option allows to override the size of the cache. The higher it is, the faster the render will be, but the more memory will be used.
The used value will be printed when running in verbose mode.
Default:
null
deleteAfter?
v4.0.32
Automatically delete the render after a certain period. Accepted values are 1-day
, 3-days
, 7-days
and 30-days
.For this to work, your bucket needs to have lifecycles enabled.
chromiumOptions?
optional
Allows you to set certain Chromium / Google Chrome flags. See: Chromium flags.
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
Changelog
- From Remotion v2.6.7 until v3.0.7, the default for Remotion Lambda was
swiftshader
, but from v3.0.8 the default isswangle
(Swiftshader on Angle) since Chrome 101 added support for it. - From Remotion v2.4.3 until v2.6.6, the default was
angle
, however it turns out to have a small memory leak that could crash long Remotion renders.
Select the OpenGL renderer backend for Chromium.
Accepted values:
"angle"
"egl"
"swiftshader"
"swangle"
"vulkan"
(from Remotion v4.0.41)"angle-egl"
(from Remotion v4.0.51)
The default is null
, letting Chrome decide, except on Lambda where the default is "swangle"
userAgent
v3.3.83
Lets you set a custom user agent that the headless Chrome browser assumes.
forceBucketName?
optional
Specify a specific bucket name to be used. This is not recommended, instead let Remotion discover the right bucket automatically.
logLevel?
optional
One ofverbose
, info
, warn
, error
.Determines how much is being logged to the console.
verbose
will also log console.log
's from the browser.Default
info
.
Logs can be read through the CloudWatch URL that this function returns.
forcePathStyle?
v4.0.202
Passes forcePathStyle
to the AWS S3 client. If you don't know what this is, you probably don't need it.
dumpBrowserLogs?
dumpBrowserLogs?
optional - default false
, deprecated in v4.0
Deprecated in favor of logLevel
.
Return value
Returns a promise resolving to an object with the following properties:
bucketName
The S3 bucket in which the video was saved.
url
An AWS S3 URL where the output is available.
outKey
v4.0.141
The S3 key where the output is saved.
estimatedPrice
Object containing roughly estimated information about how expensive this operation was.
sizeInBytes
The size of the output image in bytes.
renderId
A unique alphanumeric identifier for this render. Useful for obtaining status and finding the relevant files in the S3 bucket.
cloudWatchLogs
Available from v3.2.10
A link to CloudWatch (if you haven't disabled it) that you can visit to see the logs for the render.
artifacts
v4.0.176
Artifacts that were created so far during the render. See here for an example of dealing with field.