A declarative, high-performance Node.js & FFmpeg video rendering engine. Takes structured JSON timelines and programmatically renders multi-track video compositions with transitions, audio balancing, overlays, and queue concurrency.
- 📜 Declarative JSON Timelines: Define complex video edits, cut points, asset offsets, and volume parameters as simple, portable JSON schemas.
- 🔀 Complex Filtergraph Generation: Automatically builds optimized FFmpeg complex filtergraphs (
-filter_complex) on the fly, handling framerate normalization, scaling, padding, crossfades, and audio mixing. - ⚡ REST API & CLI Interfaces: Run ad-hoc render jobs straight from your terminal via
src/cli.ts, or deploy as a Fastify HTTP rendering microservice. - 🚦 Embedded Task Queue: Built-in SQLite job ledger and concurrency management via
p-queue— prevents CPU/GPU throttling and ensures rock-solid execution under load. - 🎵 Multi-Track Audio & Transitions: Supports independent video and audio tracks, speed manipulation, in/out cross-dissolves, and ducking.
- Node.js >= 20
- FFmpeg and FFprobe installed and accessible in your
PATH
npm install
npm run build# Render example composition
npm run rendernpm start