npx remotion cloudrun render
Cloud Run is in Alpha, which means APIs may change in any version and documentation is not yet finished. See the changelog to stay up to date with breaking changes.
Using the npx remotion cloudrun render
command, you can render a video on GCP.
The structure of a command is as follows:
npx remotion cloudrun render <serve-url> [<composition-id>] [<output-location>]
npx remotion cloudrun render <serve-url> [<composition-id>] [<output-location>]
- The serve URL is obtained by deploying a Remotion project to a GCP Storage Bucket using the
sites create
command or callingdeployService()
. - The composition ID. If not specified, the list of compositions will be fetched and you can choose a composition.
- The
output-location
parameter is optional. If you don't specify it, the video is stored in your Cloud Storage bucket. If you specify a location, it gets downloaded to your device in an additional step.
Example commands
Rendering a video, passing the service name:
npx remotion cloudrun render https://storage.googleapis.com/remotioncloudrun-123asd321/sites/abcdefgh/index.html tiles --service-name=remotion--3-3-82--mem512mi--cpu1-0--t-800
npx remotion cloudrun render https://storage.googleapis.com/remotioncloudrun-123asd321/sites/abcdefgh/index.html tiles --service-name=remotion--3-3-82--mem512mi--cpu1-0--t-800
Using the site name as opposed to the full serve-url:
npx remotion cloudrun render test-site tiles --service-name=remotion--3-3-82--mem512mi--cpu1-0--t-800
npx remotion cloudrun render test-site tiles --service-name=remotion--3-3-82--mem512mi--cpu1-0--t-800
Passing in input props:
npx remotion cloudrun render test-site tiles --service-name=remotion--3-3-82--mem512mi--cpu1-0--t-800 --props='{"hi": "there"}'
npx remotion cloudrun render test-site tiles --service-name=remotion--3-3-82--mem512mi--cpu1-0--t-800 --props='{"hi": "there"}'
Flags
--region
The GCP region to select. For lowest latency, the service, site and output bucket should be in the same region.
--props
Input Props to pass to the selected composition of your video..
Must be a serialized JSON string (--props='{"hello": "world"}'
) or a path to a JSON file (./path/to/props.json
).
From the root component the props can be read using getInputProps()
.
You may transform input props using calculateMetadata()
.
Inline JSON string isn't supported on Windows shells because it removes the "
character, use a file name instead.
--privacy
One of:
"public"
(default): The rendered media is publicly accessible under the Cloud Storage URL."private"
: The rendered media is not publicly available, but is available within the GCP project to those with the correct permissions.
--force-bucket-name
Specify a specific bucket name to be used for the output. The resulting Google Cloud Storage URL will be in the format gs://{bucket-name}/renders/{render-id}/{file-name}
. If not set, Remotion will choose the right bucket to use based on the region.
--concurrency
A number or a string describing how many browser tabs should be opened. Default "50%".
Before v4.0.76, this was "100%" by default. It is now aligned to the other server-side rendering APIs.
--jpeg-quality
Value between 0 and 100 for JPEG rendering quality. Doesn't work when PNG frames are rendered.
--image-format
jpeg
or png
- JPEG is faster, but doesn't support transparency. The default image format is jpeg
.
--scale
Scales the output frames by the factor you pass in. For example, a 1280x720px frame will become a 1920x1080px frame with a scale factor of 1.5
. Vector elements like fonts and HTML markups will be rendered with extra details.
--env-file
Specify a location for a dotenv file - Default .env
. Read about how environment variables work in Remotion.
--out-name
The file name of the media output as stored in the Cloud Storage bucket. By default, it is out
plus the appropriate file extension, for example: out.mp4
. Must match /([0-9a-zA-Z-!_.*'()/]+)/g
.
--cloud-run-url
Specify the url of the service which should be used to perform the render. You must set either cloud-run-url
or service-name
, but not both
--service-name
Specify the name of the service which should be used to perform the render. This is used in conjunction with the region to determine the service endpoint, as the same service name can exist across multiple regions. You must set either cloud-run-url
or service-name
, but not both
--codec
h264
or h265
or png
or vp8
or mp3
or aac
or wav
or prores
. If you don't supply --codec
, it will use h264
.
--audio-codec
Set the format of the audio that is embedded in the video. Not all codec and audio codec combinations are supported and certain combinations require a certain file extension and container format. See the table in the docs to see possible combinations.--audio-bitrate
Specify the target bitrate for the generated video. The syntax for FFmpeg's -b:a
parameter should be used. FFmpeg may encode the video in a way that will not result in the exact audio bitrate specified. Example values: 512K
for 512 kbps, 1M
for 1 Mbps. Default: 320k
--video-bitrate
Specify the target bitrate for the generated video. The syntax for FFmpeg's-b:v
parameter should be used. FFmpeg may encode the video in a way that will not result in the exact video bitrate specified. Example values: 512K
for 512 kbps, 1M
for 1 Mbps.--prores-profile
Set the ProRes profile. This option is only valid if the codec
has been set to prores
. Possible values: 4444-xq
, 4444
, hq
, standard
, light
, proxy
. See here for explanation of possible values. Default: hq
.
--x264-preset
Sets a x264 preset profile. Only applies to videos rendered with h264
codec.Possible values:
superfast
, veryfast
, faster
, fast
, medium
, slow
, slower
, veryslow
, placebo
.Default:
medium
--crf
To set Constant Rate Factor (CRF) of the output. Minimum 0. Use this rate control mode if you want to keep the best quality and care less about the file size.
--pixel-format
Set a custom pixel format. See here for available values.
--every-nth-frame
Render only every nth frame. This option may only be set when rendering GIFs. This allows you to lower the FPS of the GIF.
For example only every second frame, every third frame and so on. Only works for rendering GIFs. See here for more details.
--number-of-gif-loops
Allows you to set the number of loops as follows:null
(or omitting in the CLI) plays the GIF indefinitely.0
disables looping1
loops the GIF once (plays twice in total)2
loops the GIF twice (plays three times in total) and so on.
--frames
Render a subset of a video. Example: --frames=0-9
to select the first 10 frames.
--offthreadvideo-cache-size-in-bytes
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
--color-space
v4.0.28
Color space to use for the video. Acceptable values: "default"
(default since 5.0), "bt709"
(since v4.0.28), "bt2020-ncl"
(since v4.0.88), "bt2020-cl"
(since v4.0.88), .For best color accuracy, it is recommended to also use
"png"
as the image format to have accurate color transformations throughout.Only since v4.0.83, colorspace conversion is actually performed, previously it would only tag the metadata of the video.