You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

NodeJS提取视频缩略图时遭遇ffprobe未找到错误求助

解决fluent-ffmpeg中"Cannot find ffprobe"的错误

这个问题我之前也碰到过,本质就是fluent-ffmpeg找不到它依赖的ffprobe工具——要么是你没安装ffmpeg套件,要么是它们不在系统的环境变量PATH里,或者你没在代码里明确指定工具路径。下面给你几个实用的解决办法:

方法1:全局安装ffmpeg并配置系统PATH

这是最通用的方案,配置后所有项目都能直接调用ffmpeg:

  • 先下载对应Windows系统的ffmpeg构建包,解压到电脑的固定目录(比如C:\ffmpeg
  • 找到解压文件夹里的bin目录(路径类似C:\ffmpeg\bin),把这个路径添加到系统的PATH环境变量中
  • 重启你的终端或IDE,让环境变量生效,之后fluent-ffmpeg就能自动定位到ffprobe和ffmpeg了

方法2:使用本地ffmpeg包(无需系统PATH配置)

如果不想折腾系统环境变量,可以用ffmpeg-static这个npm包,它会把ffmpeg的二进制文件直接打包到你的项目里:

  1. 先安装依赖:
npm install ffmpeg-static
  1. 修改你的代码,手动指定ffmpeg和ffprobe的路径:
const ffmpeg = require('fluent-ffmpeg');
const ffmpegPath = require('ffmpeg-static');
const path = require('path');

// 配置ffmpeg和ffprobe的路径
ffmpeg.setFfmpegPath(ffmpegPath);
ffmpeg.setFfprobePath(path.join(path.dirname(ffmpegPath), 'ffprobe.exe'));

// 你的原有缩略图生成代码
let thumbnail = `${req.file.filename.split('.')[0]}.png`;
await ffmpeg(path.join(__dirname, `../../public/uploads/posts/${req.file.filename}`))
  .screenshots({ 
    filename: thumbnail, 
    folder: path.join(__dirname, `../../public/uploads/posts`), 
    count: 1, 
    size: '320x240' 
  });

方法3:手动指定ffprobe路径(适合已安装但未配置PATH的情况)

如果你已经在本地安装了ffmpeg,但不想修改系统PATH,可以直接在代码里硬编码ffprobe的绝对路径:

const ffmpeg = require('fluent-ffmpeg');

// 替换成你实际的ffprobe.exe路径,Windows路径要使用双反斜杠
ffmpeg.setFfprobePath('C:\\Users\\user\\Documents\\ffmpeg\\bin\\ffprobe.exe');

// 你的原有代码...

内容的提问来源于stack exchange,提问作者Abhishek Bansal

火山引擎 最新活动