Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/drawcall/FFCreatorLite

A lightweight and fast short video processing library based on node.js
https://github.com/drawcall/FFCreatorLite

ffmpeg ffmpeg-command ffmpeg-libraries node-video video video-processing

Last synced: 3 months ago
JSON representation

A lightweight and fast short video processing library based on node.js

Lists

README

        

[English](./README.md) | [简体中文](./README.zh-CN.md)




NPM Version
Package License
Travis CI
Code Style
PRs
Node Version

## Overview

FFCreatorLite is a lightweight and flexible short video processing library based on Node.js. You only need to add some pictures, music or video clips, you can use it to quickly create a very exciting video album.

Nowadays, short video is an increasingly popular form of media communication. Like [_weishi_](https://weishi.qq.com/) and _tiktok_ is full of all kinds of wonderful short videos. So how to make users visually create video clips on the web easily and quickly. Or based on pictures Text content, dynamic batch generation of short videos is a technical problem.

`FFCreatorLite` is developed based on the famous video processing library `FFmpeg`, and splicing the complicated and tedious command line parameters of `FFmpeg` (this is not so easy), using `FFmpeg` various filters and features to realize animation And video clips and generate the final movie. So its processing speed is beyond your imagination, even faster than [`FFCreator`](https://github.com/tnfe/FFCreator).

#### For more introduction, please see [here](https://tnfe.github.io/FFCreator/#/guide/lite)

### Features

- Based on node.js development, it is very simple to use and easy to expand and develop.
- Only rely on `FFmpeg`, easy to install, cross-platform, and low requirements for machine configuration.
- The video processing speed is extremely fast, a 5-7 minute video only takes 1 minute.
- Supports multiple elements such as pictures, sounds, video clips, and text.
- Support for adding music and animation to the live stream before launching.
- The latest version supports more than 30 scene transition animations.
- Contains 70% animation effects of `animate.css`, which can convert css animation to video.

## Demo





## Useage

### Install npm Package

```javascript
npm install ffcreatorlite --save
```

Note: To run the preceding commands, Node.js and npm must be installed.

#### Node.js

```javascript
const { FFCreatorCenter, FFScene, FFImage, FFText, FFCreator } = require('ffcreatorlite');

// create creator instance
const creator = new FFCreator({
cacheDir,
outputDir,
width: 600,
height: 400,
log: true,
});

// create FFScene
const scene1 = new FFScene();
const scene2 = new FFScene();
scene1.setBgColor('#ff0000');
scene2.setBgColor('#b33771');

// scene1
const fbg = new FFImage({ path: bg1 });
scene1.addChild(fbg);

const fimg1 = new FFImage({ path: img1, x: 300, y: 60 });
fimg1.addEffect('moveInRight', 1.5, 1.2);
scene1.addChild(fimg1);

const text = new FFText({ text: '这是第一屏', font, x: 100, y: 100 });
text.setColor('#ffffff');
text.setBackgroundColor('#000000');
text.addEffect('fadeIn', 1, 1);
scene1.addChild(text);

scene1.setDuration(8);
creator.addChild(scene1);

// scene2
const fbg2 = new FFImage({ path: bg2 });
scene2.addChild(fbg2);
// logo
const flogo = new FFImage({ path: logo, x: 100, y: 100 });
flogo.addEffect('moveInUpBack', 1.2, 0.3);
scene2.addChild(flogo);

scene2.setDuration(4);
creator.addChild(scene2);

creator.addAudio(audio);
creator.start();

creator.on('progress', e => {
console.log(colors.yellow(`FFCreatorLite progress: ${(e.percent * 100) >> 0}%`));
});

creator.on('complete', e => {
console.log(
colors.magenta(`FFCreatorLite completed: \n USEAGE: ${e.useage} \n PATH: ${e.output} `),
);
});
```

## About Transition

The latest version of ffcreatorlite already supports scene transition animation, which means you can use it to make cool effects like ffcreator.

Of course you need to install [4.3.0](https://stackoverflow.com/questions/60704545/xfade-filter-not-available-with-ffmpeg) above version of ffmpeg. Because here is the [Xfade](https://trac.ffmpeg.org/wiki/Xfade) filter to achieve Animation.

#### usage

```javascript
// https://trac.ffmpeg.org/wiki/Xfade
scene.setTransition('diagtl', 1.5);
```
















fade (default)
fadeblack
fadewhite
distance
















wipeleft
wiperight
wipeup
wipedown
















slideleft
slideright
slideup
slidedown
















smoothleft
smoothright
smoothup
smoothdown
















rectcrop
circlecrop
circleclose
circleopen
















horzclose
horzopen
vertclose
vertopen
















diagbl
diagbr
diagtl
diagtr
















hlslice
hrslice
vuslice
vdslice
















dissolve
pixelize
radial
hblur
















wipetl
wipetr
wipebl
wipebr














fadegrays
squeezev
squeezeh

## About `FFCreator`

[`FFCreator`](https://github.com/tnfe/FFCreator) is not an enhanced version of `FFCreatorLite`, in fact the two implementation principles are completely different. When you need to process a lot of video without special cool transition animation, `FFCreatorLite` may be a better choice.

#### Principle difference

- `FFCreator` uses `opengl` to process graphics rendering and `shader` post-processing to generate transition effects, and finally uses `FFmpeg` to synthesize the video.
- `FFCreatorLite` completely uses `FFmpeg` filters and other effects, splicing `FFmpeg` commands to generate animations and videos.

`FFCreatorLite` has 70% of the functions of [`FFCreator`](https://github.com/tnfe/FFCreator), but in some cases the processing speed is faster and the installation is extremely simple. So please choose which version of the library to use according to the actual usage.

#### The difference between registration points

The default registration point of `FFCreatorLite` is the upper left corner and cannot be modified, while the default registration point of `FFCreator` is the center and can be modified.

#### For a more detailed tutorial, please check [here](https://tnfe.github.io/FFCreator/#/guide/lite)

## Installation

### `FFCreatorLite` depends on `FFmpeg`, so you need to install `FFmpeg`

FFCreatorLite depends on `FFmpeg>=0.9` and above. Please set FFmpeg as a global variable, otherwise you need to use setFFmpegPath to add FFmpeg native path. (The ffmpeg for windows users is probably not in your `%PATH`, so you must set `%FFMPEG_PATH`)

```javascript
FFCreator.setFFmpegPath('...');
```

Of course, you can also compile ffmpeg on your machine, please see [https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu](https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu).

### `FFmpeg` Installation tutorial

> For more `FFmpeg` tutorials, please view [https://trac.ffmpeg.org/wiki](https://trac.ffmpeg.org/wiki)

- How to Install and Use FFmpeg on CentOS [https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/](https://linuxize.com/post/how-to-install-ffmpeg-on-centos-7/)
- How to Install FFmpeg on Debian [https://linuxize.com/post/how-to-install-ffmpeg-on-debian-9/](https://linuxize.com/post/how-to-install-ffmpeg-on-debian-9/)
- How to Install FFmpeg on Windows [http://blog.gregzaal.com/how-to-install-ffmpeg-on-windows/](http://blog.gregzaal.com/how-to-install-ffmpeg-on-windows/)
- How to Install FFmpeg on Mac OSX [https://trac.ffmpeg.org/wiki/CompilationGuide/macOS](https://trac.ffmpeg.org/wiki/CompilationGuide/macOS)

## Contribute

You are very welcome to join us in developing `FFCreatorLite`, if you want to contribute code, please read [here](./CONTRIBUTING.md).

## License

[MIT](./LICENSE)