
Security News
GitHub to Block pull_request_target Workflows by Default Starting December 2
GitHub is tightening GitHub Actions security with new restrictions on privileged pull request workflows. Here's what changes and how maintainers are affected.
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.

Security News
GitHub is tightening GitHub Actions security with new restrictions on privileged pull request workflows. Here's what changes and how maintainers are affected.

Security News
/Application Security
A practical guide to securing GitHub Actions against supply chain attacks, covering malicious pull requests, credential theft, dependency risks, and release pipelines.

Security News
Composer 2.11 adds dependency cooldowns, joining package managers that delay new releases to reduce supply chain risks while allowing urgent security updates.