『Node.js』FFmpeg与Node.js (2) Node.js 操做 FFmpeg 工具选择

咱们先来看看node如何操做ffmpeg?一种是使用node C++插件操做,另一种是使用命令组合方式操做。
在GitHub中搜索了两种实现方式:node

  1. 使用C++插件实现的有ffmpeg.js
  2. 使用命令组合方式的是node-fluent-ffmpeg

由于命令组合方式能快速理解使用方式,为了快速完成需求,选择了后者node-fluent-ffmpeggit

node-fluent-ffmpeg

This library abstracts the complex command-line usage of ffmpeg into a fluent, easy to use node.js module.

这个库将ffmpeg的复杂命令行用法抽象为一个流,使得它是一个易于使用的node.js模块。github

node-fluent-ffmpeg能够操做ffmpeg 和 ffprobeide

为了更深刻了解这个库和优化视频加载速度,简单阅读了一下该库的源码。该库总体围绕着Node.js的子进程知识点。工具

image.png

文件与文件夹 解析
options 命令
preset 预设
capabilities.js 检查是否有ffmpeg
ffprobe.js fprobe方法封装
fluent-ffmpeg.js 主体
processor.js 进程封装
recipes.js 经常使用方法
utils.js 工具

其中最重要的知识点是子进程child_process操做。优化

node-fluent-ffmpeg库的使用

node-fluent-ffmpeg使用简便。引入后能够直接使用。而且总体是链式操做,使用对象上的方法很是方便。ui

const ffmpeg = require('fluent-ffmpeg');
const command = ffmpeg('/path/to/file.avi')
    .videoBitrate('1024k')
    .videoCodec('mpeg4')
    .size('720x?')
    .audioBitrate('128k')
    .audioChannels(2)
    .audioCodec('libmp3lame')
    .outputOptions(['-vtag DIVX']);

为了能高效的实现需求,最终选择使用node-fluent-ffmpeg。spa

相关文章
相关标签/搜索