|
|
6 years ago | |
|---|---|---|
| examples | 6 years ago | |
| shaders | 6 years ago | |
| sources | 6 years ago | |
| .eslintrc | 6 years ago | |
| .gitignore | 6 years ago | |
| LICENSE | 6 years ago | |
| README.md | 6 years ago | |
| cli.js | 6 years ago | |
| colors.js | 6 years ago | |
| glTransitions.js | 6 years ago | |
| index.js | 6 years ago | |
| package.json | 6 years ago | |
| transitions.js | 6 years ago | |
| util.js | 6 years ago | |
README.md
editly
Editly is a framework for declarative NLE (non-linear video editing) using Node.js and ffmpeg. It allows you to easily and programmatically create a video from set of videos, images and titles, with smooth transitions between.
Also provides a simple command line for quickly assembling a video.
Inspired by ffmpeg-concat. The problem with that project is that it uses an extreme amount of disk space, especially for HD/4K videos. This projects solves that by doing streaming editing, so it doesn't store any temporary files.
Requirements
- Node.js installed (Recommended to use newest stable version)
- Should work on Windows, MacOS and Linux. The command line utility needs at least Node.js v12.16.2 (see issue). See also https://github.com/stackgl/headless-gl#system-dependencies
Make sure you have ffmpeg and ffprobe installed and available in PATH
Installing
npm i -g editly
CLI video editor
Run editly --help for usage
Create a simple randomized video edit from videos, images and text
editly \
title:'My video' \
clip1.mov \
clip2.mov \
title:'My slideshow' \
img1.jpg \
img2.jpg \
title:'THE END' \
--audio-file-path /path/to/music.mp3 \
--font-path /path/to/my-favorite-font.ttf
Or create a GIF (or MP4) from a JSON edit spec
editly --json my-editly.json --out output.gif
For examples of how to make an JSON edit spec, see https://github.com/mifi/editly/tree/master/examples
By default it will use the width, height and frame rate from the first input video. all other clips will be converted to these dimensions You can override these parameters however.
TIP: Run with --fast or fast: true first to improve speed while testing
Javascript library
const editly = require('editly');
// See editSpec documentation
await editly(editSpec)
.catch(console.error);
Features
- Custom Canvas/Fabric.js rendering
- Can output the same video to multiple sizes, like Instagram post, Instagram story 9:16, YouTube 16:9, or any dimensions you like
- TODO add more
TODO
- Implement audio from source files
- Allow specifying path to ffmpeg and ffprobe
- Full power of the HTML to create visuals and animations (maybe puppeteer)
- three.js