『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

相關文章
相關標籤/搜索