Skip to content

Repository files navigation


Revideo

npm versionMIT licensediscord


Revideo

Revideo is a rendering engine for creating videos in code. You describe a scene in TypeScript — shapes, text, media, and animation — and Revideo renders it to a video file. It ships a headless render API for generating videos programmatically and a React player for previewing scenes in the browser.

A scene is plain TypeScript, so Claude or Codex can produce one from a prompt.

Revideo borrows concepts from Remotion and Rive, but is, in its core, zero dep.

It's the engine behind Midrender.


Getting Started

Create a project:

npm init @revideo@latest

A scene is a generator function. The example below adds a <RubiksCube/> component and animates a scramble:

import{makeScene2D}from'@revideo/2d';import{createRef,waitFor}from'@revideo/core';import{RubiksCube}from'./rubiks-cube';exportdefaultmakeScene2D('scramble',function*(view){view.fill('#0d0d12');constcube=createRef<RubiksCube>();view.add(<RubiksCuberef={cube}size={620}/>);yield*waitFor(0.5);yield*cube().scramble(18);// 18 animated quarter-turns});

The cube is a single self-contained component (rubiks-cube.tsx): 54 stickers in 3D, orthographically projected in a custom draw(), with each quarter-turn animated by interpolating a rotation about the turning layer's axis.

A Rubik's cube scrambling itself

Render it from the command line with renderVideo().


Capabilities

  • Headless rendering — render a project to a file with renderVideo(), or expose a rendering endpoint from your project with the CLI. It runs anywhere Node and a headless browser run, including serverless platforms like Google Cloud Run (example).
  • Parallelized rendering — split a render across workers to cut wall-clock time (details).
  • Browser preview — the React <Player/> renders scenes in the browser and accepts dynamic inputs, so the same project drives both preview and final render.
  • Media and audio<Video/> and <Audio/> components with audio export and frame-accurate synchronization.

See the documentation for the full API.


Telemetry

Revideo anonymously counts how many videos are rendered, via PostHog. The implementation is in packages/telemetry. Disable it with an environment variable:

DISABLE_TELEMETRY=true

License

MIT — see LICENSE.

Links

Documentation · Midrender · Discord

About

Create Videos with Code

Resources

Code of conduct

Contributing

Security policy

Stars

4.0k stars

Watchers

17 watching

Forks

Releases

Packages

Used by

Contributors

Languages