UNPKG

ffcreator

Version:

FFCreator is a lightweight and flexible short video production library

96 lines (81 loc) 3.07 kB
import { FFAlbum, FFCreator, FFImage, FFScene, FFText } from "ffcreator" const path = require('path'); const colors = require('colors') const createFFTask = () => { const logo2 = path.join(__dirname, '../../examples/assets/imgs/logo/logo2.png'); const img1 = path.join(__dirname, '../../examples/assets/imgs/album/01.jpeg'); const img2 = path.join(__dirname, '../../examples/assets/imgs/album/02.jpeg'); const img3 = path.join(__dirname, '../../examples/assets/imgs/album/03.jpeg'); const img4 = path.join(__dirname, '../../examples/assets/imgs/album/04.jpeg'); const img5 = path.join(__dirname, '../../examples/assets/imgs/album/05.jpeg'); const audio = path.join(__dirname, '../../examples/assets/audio/03.wav'); const outputDir = path.join(__dirname, './output/'); const cacheDir = path.join(__dirname, './cache/'); // create creator instance const width = 576; const height = 1024; const creator = new FFCreator({ cacheDir, outputDir, width, height, debug: false, //threads: 4, audio, }); // add custom effect creator.createEffect('customEffect1', { from: { alpha: 0, y: 350, rotate: Math.PI / 2, scale: 0.3 }, to: { alpha: 1, y: 200, rotate: 0, scale: 1 }, ease: 'Back.Out', }); creator.createEffect('customEffect2', { from: { alpha: 0, x: -300, scale: 0.2, rotate: Math.PI }, to: { alpha: 1, x: 0, scale: 1, rotate: 0 }, ease: 'Back.Out', }); // create FFScene const scene1 = new FFScene(); scene1.setBgColor('#3b3a98'); // add new album const album = new FFAlbum({ list: [img1, img2, img3, img4, img5], x: width / 2, y: height / 2, width: width, height: 384, }); album.setTransition('customEffect2'); album.setDuration(2); scene1.addChild(album); // add title const text = new FFText({ text: '多图相册DEMO', x: width / 2, y: 150, fontSize: 40 }); text.setColor('#ffffff'); text.setBackgroundColor('#01003c'); text.addEffect('customEffect1', 1.8, 1); text.alignCenter(); text.setStyle({ padding: [4, 20, 6, 20] }); scene1.addChild(text); // add logo const flogo2 = new FFImage({ path: logo2, x: width / 2, y: 60 }); flogo2.setScale(0.6); flogo2.addEffect('backInDown', 1, 3); scene1.addChild(flogo2); scene1.setDuration(album.getTotalDuration() + 2); creator.addChild(scene1); //////////////////////////////////////////////////////////////// creator.start(); creator.on('error', e => { console.log(`FFCreator error: ${e.error}`); }); creator.on('progress', e => { console.log(colors.yellow(`FFCreator progress: ${(e.percent * 100) >> 0}%`)); }); creator.on('complete', e => { console.log( colors.magenta(`FFCreator completed: \n USEAGE: ${e.useage} \n PATH: ${e.output} `), ); console.log(colors.green(`\n --- You can press the s key or the w key to restart! --- \n`)); }); return creator; };