
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
ffmpeg-video-composer
Advanced tools
Template-driven video composition: one JSON spec renders on Node, in the browser via WebAssembly, and fully on-device on React Native — powered by FFmpeg.
One JSON spec renders on Node, in the browser via WebAssembly, and fully on-device on React Native — no upload, no server required.
Template-driven video composition over FFmpeg. A single JSON template describes a video's structure — sections, filters, music, text overlays — and the library renders it into a finished video. The same engine runs in Node.js, in the browser (WebAssembly), and in React Native.
Upgrading from v1? The package name is unchanged — see the migration guide.
pnpm add ffmpeg-video-composer # uses your system FFmpeg
pnpm add ffmpeg-video-composer ffmpeg-static # static binary fallback
pnpm add ffmpeg-video-composer @ffmpeg/ffmpeg @ffmpeg/util # browser (WASM)
import { compile, loadConfig } from 'ffmpeg-video-composer';
const projectConfig = {
buildDir: './build',
assetsDir: './assets',
currentLocale: 'en',
fields: { form_1_firstname: 'Firstname', form_1_lastname: 'Lastname' },
};
const template = await loadConfig('./my-template.json');
const result = await compile(projectConfig, template);
Prefer the command line? Use @leclap/cli:
npx @leclap/cli init my-video # scaffold a starter project
npx @leclap/cli render my-template.json # compile a template
npx @leclap/cli diagnose # check your FFmpeg setup
| Import | Target | Notes |
|---|---|---|
ffmpeg-video-composer | Node.js | ESM + CJS, system/static FFmpeg |
ffmpeg-video-composer/browser | Browser | WASM via @ffmpeg/ffmpeg (install it yourself) |
ffmpeg-video-composer/reactnative | React Native | Pre-compiled JS; expects expo-file-system |
The library picks the best available FFmpeg automatically:
ffmpeg-static package.@ffmpeg/ffmpeg in the browser (2 GB input limit).Run npx @leclap/cli diagnose to see what your environment provides.
Templates are Zod-validated JSON descriptors: global options (size, music, locale) plus an ordered list of sections, each with inputs → maps → filters. See the template configuration reference and the ready-made catalog — templates, partials, and bundled fonts — in @leclap/creative-kit.
MIT.
This package does not bundle FFmpeg. It drives an FFmpeg you provide: your system binary, the optional ffmpeg-static package, or @ffmpeg/ffmpeg (WASM) in the browser — each under its own license.
The optional on-device mobile engine (Android/iOS) lives in the monorepo, not in this package, and statically links an LGPLv3 FFmpeg built from source — see the on-device compilation docs.
FAQs
Template-driven video composition: one JSON spec renders on Node, in the browser via WebAssembly, and fully on-device on React Native — powered by FFmpeg.
The npm package ffmpeg-video-composer receives a total of 0 weekly downloads. As such, ffmpeg-video-composer popularity was classified as not popular.
We found that ffmpeg-video-composer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.