Concatenates videos with customizable OpenGL transitions using ffmpeg and GLSL shaders.
ffmpeg-concat is a Node.js library and command-line tool that concatenates multiple video files together using stylish OpenGL transitions. It solves the problem of creating smooth, non-trivial transitions between videos—which is notoriously difficult with raw FFmpeg commands—by leveraging the open-source GL Transitions library of GLSL shaders.
Developers, video editors, and content creators who need to programmatically combine videos with custom transitions, especially those working in Node.js environments or automation pipelines.
It provides a simple, high-level abstraction over FFmpeg's complex filter graphs, offering a wide variety of pre-built, GPU-accelerated transitions that are easy to customize and sequence, saving significant time and effort compared to manual FFmpeg scripting.
Concats a list of videos together using ffmpeg with sexy OpenGL transitions.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Abstracts away FFmpeg's notoriously complex filter graphs into a clean, promise-based JavaScript API, making it easy to apply transitions like 'directionalWipe' or 'circleOpen' with just a few lines of code.
Leverages the open-source GL Transitions library, providing access to hundreds of high-quality, customizable GLSL shader effects such as fades, warps, and wipes, which are visually superior to basic FFmpeg filters.
Supports configurable concurrency for frame extraction and processing, allowing multiple videos to be handled simultaneously, which speeds up batch workflows as noted in the 'concurrency' option.
Enables fine-grained control over each transition's duration, parameters, and sequencing, allowing unique effects between clips, as demonstrated in the examples with custom 'params' like direction arrays.
Only outputs to MP4, as explicitly admitted in the API documentation ('we currently only support outputting to mp4'), which restricts use cases requiring other formats like WebM for web or MOV for professional editing.
Requires FFmpeg to be installed separately, adding setup complexity and potential version compatibility issues across different operating systems, which can hinder quick deployment.
OpenGL is unsupported on certain Node.js versions for macOS (e.g., 12.13.1 to 13.6.0), limiting usability without workarounds, as highlighted in the install notes, making it unreliable in some environments.
Relies on writing temporary frame images to disk (e.g., in '/tmp'), which can consume significant storage and I/O resources for large or high-resolution videos, though this is configurable with 'frameFormat'.