1 changed files with 76 additions and 0 deletions
-
76README.md
@ -0,0 +1,76 @@ |
|||||
|
# 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](https://github.com/transitive-bullshit/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](https://nodejs.org/en/) (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](https://github.com/sindresorhus/meow/issues/144)). 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 |
||||
|
```sh |
||||
|
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 |
||||
|
|
||||
|
```js |
||||
|
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 |
||||
|
|
||||
|
## See also |
||||
|
|
||||
|
- [LosslessCut](https://github.com/mifi/lossless-cut) |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue