Node.js 调用 fluent-ffmpeg

最近开发H5资源在线裁剪,最终在资源合成的步骤,选择 ffmpeg 作为合成的插件,记录下使用方式。

一、介绍

ffmpeg 一款跨平台多媒体处理工具,可以进行视频转码、裁剪、合成、音视频提取、推流等操作。

二、安装

Node js 可以利用 child_process 子进程调用 ffmpeg ,同时也可以利用 fluent-ffmpeg 插件来调用。

首先下载安装 ffmpeg, 选择 windows 环境,下载后解压到C盘,接着配置环境变量。

命令行执行 ffmpeg -version,走到这里说明安装成功

三、使用

我们这里就演示下基本功能,更多功能到 ffmpeg 官网尝试,下面是一段视频格式转换的逻辑,并伴随进度打印以及任务执行钩子函数

index.js

javascript 复制代码
let express = require('express') // 引入express
let app = express() // 相当于 http.createServer(app)
let ffmpeg = require('fluent-ffmpeg') // ffmpeg
let { exceSync } = require('child_process')

let command = ffmpeg('http://10.0.129.157:8000/2023_09_11_17_28_08_智慧教室A_默认授课_admin_/学生全景.mp4')
  .on('start', function(commandLine) {
    console.log('Spawned Ffmpeg with command: ' + commandLine);
  }).on('progress', function(progress) {
    console.log('Processing: ' + progress.percent + '% done');
  }).on('end', function(stdout, stderr) {
    console.log('Transcoding succeeded !');
  }).on('error', function(err) {
    console.log('An error occurred: ' + err.message);
  }).save('test.avi')

/**
 * @description create screenshots
 */
function createScreenshots(command) {
  command.screenshots({
      folder: './',
      filename: 'test.png',
      count: 1,
      timemarks: [1],
      size: '50%'
  })
}

运行成功

预览转换格式后的视频:

相关推荐
Flynt10 小时前
Deno 官宣一年后停更:我把它的招牌特性在 Node 26 和 Bun 里挨个找了一遍
node.js·deno·bun
孟陬16 小时前
Node.js 中 `\b` 的作用
node.js·bun
小小荧21 小时前
🚀 Node.js 之父离开 Deno,带着整个团队加入了 Cloudflare
前端·node.js
damoluomu21 小时前
Directus 换掉 GPL 之后,Node.js CMS 到底怎么选?(四)
node.js
ofoxcoding1 天前
Gemini TTS 与 ElevenLabs 语音合成实测:同一段视频旁白效果对比
ai·ffmpeg·音视频
前端一小卒1 天前
搜索 API 额度用完返回空数组,Agent 就开始一本正经地胡说
前端·javascript·node.js
濮水大叔1 天前
Cabloy 双引擎架构详解:Vona 与 Zova 是如何协作的
typescript·node.js·全栈
LRL_1 天前
跨平台 Node 模块安装指南:如何利用 pnpm/npm 配置`supportedArchitectures` 锁定平台依赖
前端·npm·node.js
_大峰_2 天前
索尼 A7M4 误删视频恢复实战:基于原始卡镜像重建 MP4 数据
ffmpeg·数据恢复·音视频·mp4·exfat
逍遥5966070102 天前
网络设备交换机路由器 AI 配置助手
node.js·硬件工程