背景

最近自己在学习一些视频剪辑相关的工具,像爱剪辑,剪映这些软件。然后就想自己是不是也可以实现一个类似的,轻量级的在线剪辑工具。最后发现这个款node端的工具库FFCreator,接下来简单介绍一下如何来搭建开发环境,和基本的使用

什么是FFCreator

FFCreator是一个基于node.js的轻量、灵活的短视频加工库。您只需要添加几张图片或视频片段再加一段背景音乐,就可以快速生成一个很酷的视频短片。

FFCreator是一种轻量又简单的解决方案,只需要很少的依赖和较低的机器配置就可以快速开始工作。并且它模拟实现了animate.css90%的动画效果,您可以轻松地把 web 页面端的动画效果转为视频。

FFCreator特性

  • 完全基于node.js开发,非常易于使用,并且易于扩展和开发。
  • 依赖很少、易安装、跨平台,对机器配置要求较低。
  • 视频制作速度极快,一个 5 分钟的视频只需要 1-2 分钟。
  • 支持近百种场景炫酷过渡动画效果。
  • 支持图片、声音、视频剪辑、文本等元素。
  • 支持字幕组件、可以将字幕与语音 tts 结合合成音频新闻。
  • 支持图表组件,可以制作数据可视化类视频。
  • 支持简单(可扩展)的虚拟主播,您可以制作自己的虚拟主播。
  • 包含animate.css90%的动画效果,可以将 css 动画转换为视频。

原理简介

大多数视频处理通常离不开FFmpeg这个库,虽然FFmpeg在视频处理方面具有十分强大的功能。 但是在处理精细的动画效果方面FFmpeg就显得力不从心,并且它的使用也很不方便,需要开发去拼接大段的命令行参数。

对于处理更强的动画效果,业内有一种比价流行的方案就是基于After Effectsaerender.exe)的模板方案。但是这种方案也有不少问题(后续会有详细的比较说明) FFCreator使用opengl来处理图形渲染并使用shader后处理来生成转场效果,最后使用FFmpeg合成视频,基于opengl既十分高效又可以支持各种丰富的图形动画。

环境搭建

这里简单记录了我在mackbook和conetos8中搭建的过程和碰到的问题

由于FFCreator依赖ffmpeg,所有需要再先安装ffmpeg

1.macbook安装过程

brew install ffmpeg

在安装过程碰到一个报错Error: ffmpeg: Failed to download resource "rav1e"

只需要重新执行brew install ffmpeg即可

2.centos8安装过程 由于FFmpeg在centos8中没有对应的存储库,所以需要通过其他的方式来安装,我这边找到一种安装方式,亲测可用

dnf install epel-release dnf-utilsyum-config-manager --set-enabled PowerToolsyum-config-manager --add-repo=<https://negativo17.org/repos/epel-multimedia.repo>dnf install ffmpeg

查看安装是否成功

ffmpeg -version

如何使用

1.安装ffcreator包

npm install ffcreator

如果安装过程中碰到 ode-pre-gyp install --fallback-to-build --update-binary 卡住不动。 可以使用 cnpm来安装。

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install

2.创建creator入口

const creator = new FFCreator({width: 500,height: 680
});

3.创建场景

const scene = new FFScene();
scene.setBgColor("#ffcc22");
scene.setDuration(6);
scene.setTransition("GridFlip", 2);
creator.addChild(scene);

4.创建图片元素

const image = new FFImage({ path: path.join(__dirname, "./test222.png") });
image.setXY(250, 340);
image.setScale(2);
image.setWH(500, 680);
image.addEffect('fadeInDown', 1, 1);
scene.addChild(image);

5.创建文字

const text = new FFText({text: '欢迎来到天鹅到家',x: 250,y: 80});text.setColor('#ffffff');text.setBackgroundColor('#b33771');text.addEffect('fadeInDown', 1, 1);text.alignCenter();text.setStyle({padding: [4, 12, 6, 12]});scene.addChild(text);

6.添加事件监听

creator.on('start', () => {console.log(`FFCreator start`);
});
creator.on('error', e => {console.log(`FFCreator error: ${JSON.stringify(e)}`);
});
creator.on('progress', e => {console.log(`FFCreator progress: ${e.state} ${(e.percent * 100) >> 0}%`);
});
creator.on('complete', e => {console.log(`FFCreator completed: \n USEAGE: ${e.useage} \n PATH: ${e.output} `);
});

7.添加执行和输出目录

creator.output(path.join(__dirname, "./output/example.mp4"));
creator.start();// 开始加工

8.通过执行node index.js即可输出视频 测试代码已经提交到github,可以下载来测试。

地址:github.com/lcl-101/ffc…

最后

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享

部分文档展示:



文章篇幅有限,后面的内容就不一一展示了

有需要的小伙伴,可以点下方卡片免费领取

走近前端工程化-WebPack之loader的入门级知识相关推荐

  1. 前端工程化 webpack

    webpack webpack 是前端项目工程化的具体解决方案 主要功能:他提供了友好的前端模块化的支持,代码压缩,处理浏览器兼容性,性能优化等功能 npm init -y npm install j ...

  2. vue全套笔记,前端工程化+vue指令+脚手架

    文章目录 一. 前端工程化 webpack 的基本使用 webpack 中的插件 webpack 中的 loader 打包发布 Source Map的使用 注意,实际开发不需要自己配置webpack ...

  3. 仿掘金社区全栈项目开发(二)-前端工程化

    前端工程化 webpack 核心概念 看官方文档:https://webpack.docschina.org/concepts/ 小demo 参考博客:https://juejin.cn/post/6 ...

  4. 前端工程化系列好文摘要

    前端工程化遇到的好文在这里简要摘记一下核心要点和主要概念,这里核心是指针对本人而言不代表原文核心阐述,方便快速查阅,详细解释还是要看原文 对于前端工程化我自己还没形成知识体系,先简单罗列知识点,如果哪 ...

  5. 透视前端工程化之 Webpack 基本介绍【文末有彩蛋~】

    1 Webpack 的特点 图片来源于网络 Webpack 是一款强大的打包工具.在 Webpack 中一切皆模块.Webpack 官网的 Banner 图完美地诠释了这一理念.Webpack 从一个 ...

  6. 江在川上曰:webpack前端工程化

    前端工程化 1.模块化相关规范 1.1浏览器端模块化规范 名称 文件 AMD Require.js CMD Sea.js 1.2 服务器端模块规范 common.js 1.3 大一统的模块化规范(ES ...

  7. 前端工程化与WebPack

    前端工程化 前端开发: 模块化:js的模块化.css的模块化.其他资源的模块化 组件化:复用现有UI结构.样式.行为 规范化:目录结构划分.编码规范化.接口规范化.文档规范化.Git分支管理 自动化: ...

  8. (一)前端工程化与Webpack

    Vue2.0之前端工程化与Webpack 1. 前端工程化 1.1 小白眼中的前端开发 会写HTML+ CSS +JavaScript就会前端开发 需要美化页面样式,就拽一个bootstrap过来 需 ...

  9. 关于Webpack前端工程化构建,你必须要掌握这些核心知识点

    引言 在很久之前,模块化管理还没有出现,如果我们开发一个页面想要引入一些依赖的话,最常见的做法就是将依赖文件引入到.html文件中.比如,我们要使用JS的一些依赖库,就要在.html文件中使用< ...

最新文章

  1. 2.常用的实现多线程的两种方式
  2. web应用如何确定能同时允许多少用户连接?_Web测试环境搭建+测试要点汇总
  3. Java的poi的excel导入怎么判断日期格式的单元格
  4. jQuery——给元素添加父级的方法
  5. Java布局怎么加图片组件_java – 将图像缩略图添加到网格中的布局...
  6. 前端开发工程化探讨--基础篇(长文)
  7. NeHe OpenGL教程 第三十七课:卡通映射
  8. python list tuple 消耗_Python内存消耗:dict VS元组列表
  9. 车联网发展对汽车经销商的影响
  10. python怎样创建桌面快捷方式_python创建桌面快捷方式的代码
  11. python怎么打开程序管理器_python进程管理工具supervisor的安装与使用教程
  12. 蓝桥杯 ALGO-75 算法训练 筛选号码
  13. html网页设计优秀作品和代码,优秀的网页设计作品(一)
  14. 台式计算机识别不了u盘启动,台式机进入不到U盘启动怎么办
  15. magic API构建和基础实现
  16. am调制解调仿真matlab,AM调制与解调仿真matlab
  17. 青海湖:月光尽情倾洒惹人念
  18. 聊聊Uber公司迁移数据库这件事
  19. Ubuntu查看主机名和修改主机名
  20. SpringBoot集成Redis

热门文章

  1. Oracle Workflow Demo 1 - 一个简单的请假申请工作流
  2. c语言先序遍历递归算法
  3. 长虹z1Android2.0,长虹z1怎么样?简单刷机教程介绍
  4. 第16届智能车智能视觉组-上海交通大学AuTop战队算法分享
  5. 自动控制原理的100+道简答题
  6. 5G手机普及进程加快,年内出现千元5G手机已是必然
  7. WPS-脚注文本不对,脚注不分栏,脚注调节,特殊符号脚注。
  8. 呼叫中心如何培养新员工
  9. 并联串联混合的电压和电流_图文详解:电流互感器的接线方法及相关注意事项!还不收藏?...
  10. 云计算的视频会议系统特点与价值