Deploy Remotion Studio as static site
available from v4.0.97
You can deploy the Remotion Studio as a static site, for example to Vercel or Netlify.
While the Render button will be disabled, it may be used as a Serve URL to pass to rendering APIs.
Make sure you are on at least v4.0.97 to use this feature - use npx remotion upgrade
to upgrade.
Export the Remotion Studio as a static site
To export the Remotion Studio as a static site, run the remotion bundle
command:
bash
npx remotion bundle
bash
npx remotion bundle
The output will be in the build
folder.
We recommend to add build
to your .gitignore
file. The command will offer to do it for you when you run it.
Deploy to Vercel
To deploy to Vercel, connect your repository to Vercel.
In the "Build and Output" settings, enable "OVERRIDE" and set the following:
- Build Command:
bunx remotion bundle
- Output Directory:
build
- Installation Command: Leave default
Using bunx as a script runner is slightly faster than using npx
.
Deploy to Netlify
Connect your repository to Netlify.
- Base directory: Leave default
- Build command:
npx remotion bundle
- Publish directory:
build
- Functions directory: Leave default
Deploy to GitHub Pages
.github/workflows/deploy-studio.ymlyaml
name: Deploy Remotion studioon:workflow_dispatch:push:branches:- "main"permissions:contents: writejobs:render:name: Render videoruns-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@main- name: install packagesrun: npm i- name: Bundle Studiorun: npx remotion bundle --public-path="./"- name: Deploy Studiouses: JamesIves/github-pages-deploy-action@v4with:folder: build
.github/workflows/deploy-studio.ymlyaml
name: Deploy Remotion studioon:workflow_dispatch:push:branches:- "main"permissions:contents: writejobs:render:name: Render videoruns-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@main- name: install packagesrun: npm i- name: Bundle Studiorun: npx remotion bundle --public-path="./"- name: Deploy Studiouses: JamesIves/github-pages-deploy-action@v4with:folder: build
The above code will deploy the bundled Remotion Studio to a branch gh-pages
.
The --public-path flag for npx remotion bundle
is available only from remotion version 4.0.127
gh-pages
branch and click save.Rendering from a URL
The deployed URL is a Serve URL can also be used to render a video:
- CLI
- Node.js/Bun
- Lambda
- Cloud Run
Minimal example:
bash
npx remotion render https://remotion-helloworld.vercel.app
bash
npx remotion render https://remotion-helloworld.vercel.app
Specify "HelloWorld" composition ID and input props:
bash
npx remotion render https://remotion-helloworld.vercel.app HelloWorld --props '{"titleText":"Hello World"}'
bash
npx remotion render https://remotion-helloworld.vercel.app HelloWorld --props '{"titleText":"Hello World"}'
render.mjstsx
constinputProps = {titleText : "Hello World",};constserveUrl = "https://remotion-helloworld.vercel.app";constcomposition = awaitselectComposition ({serveUrl ,id : "HelloWorld",inputProps ,});awaitrenderMedia ({composition ,serveUrl ,codec : "h264",inputProps ,});
render.mjstsx
constinputProps = {titleText : "Hello World",};constserveUrl = "https://remotion-helloworld.vercel.app";constcomposition = awaitselectComposition ({serveUrl ,id : "HelloWorld",inputProps ,});awaitrenderMedia ({composition ,serveUrl ,codec : "h264",inputProps ,});
Refer to renderMedia()
to see all available options.
CLIbash
npx remotion lambda render https://remotion-helloworld.vercel.app HelloWorld --props '{"titleText":"Hello World"}'
CLIbash
npx remotion lambda render https://remotion-helloworld.vercel.app HelloWorld --props '{"titleText":"Hello World"}'
Node.js/Buntsx
import {renderMediaOnLambda } from "@remotion/lambda/client";const {bucketName ,renderId } = awaitrenderMediaOnLambda ({region : "us-east-1",functionName : "remotion-render-bds9aab",composition : "HelloWorld",serveUrl : "https://remotion-helloworld.vercel.app",codec : "h264",inputProps : {titleText : "Hello World",},});
Node.js/Buntsx
import {renderMediaOnLambda } from "@remotion/lambda/client";const {bucketName ,renderId } = awaitrenderMediaOnLambda ({region : "us-east-1",functionName : "remotion-render-bds9aab",composition : "HelloWorld",serveUrl : "https://remotion-helloworld.vercel.app",codec : "h264",inputProps : {titleText : "Hello World",},});
You need to complete the Remotion Lambda Setup first.
CLIbash
npx remotion cloudrun render https://remotion-helloworld.vercel.app HelloWorld --props '{"titleText":"Hello World"}'
CLIbash
npx remotion cloudrun render https://remotion-helloworld.vercel.app HelloWorld --props '{"titleText":"Hello World"}'
Node.js/Buntsx
import {renderMediaOnCloudrun } from "@remotion/cloudrun/client";constresult = awaitrenderMediaOnCloudrun ({region : "us-east1",serviceName : "remotion-render-bds9aab",composition : "HelloWorld",serveUrl : "https://remotion-helloworld.vercel.app",codec : "h264",inputProps : {titleText : "Hello World",},});if (result .type === "success") {console .log (result .bucketName );console .log (result .renderId );}
Node.js/Buntsx
import {renderMediaOnCloudrun } from "@remotion/cloudrun/client";constresult = awaitrenderMediaOnCloudrun ({region : "us-east1",serviceName : "remotion-render-bds9aab",composition : "HelloWorld",serveUrl : "https://remotion-helloworld.vercel.app",codec : "h264",inputProps : {titleText : "Hello World",},});if (result .type === "success") {console .log (result .bucketName );console .log (result .renderId );}
You need to complete the Remotion Cloud Run Setup first.