使用fluent-ffmpeg调用ultrafast预设报错:无法找到对应模块
解决fluent-ffmpeg中preset('ultrafast')找不到模块的问题
问题原因
fluent-ffmpeg的.preset()方法并非用来直接调用ffmpeg内置的x264预设(比如ultrafast),它的作用是加载自定义的预设配置文件。直接传入'ultrafast'会让程序尝试寻找对应的模块文件,从而触发找不到模块的错误。
解决方法
方法一:使用outputOptions直接指定内置预设(推荐)
将代码中的.preset('ultrafast')替换为.outputOptions('-preset ultrafast'),直接通过ffmpeg的原生参数设置预设。修改后的完整代码:
import ffmpegPath = require('@ffmpeg-installer/ffmpeg'); import ffmpeg = require('fluent-ffmpeg'); // 配置ffmpeg的路径 ffmpeg.setFfmpegPath(ffmpegPath.path); await new Promise((resolve, reject) => { ffmpeg(tempFilePath) .videoCodec('libx264') .audioCodec('copy') .outputOptions('-preset ultrafast') .output(outputFilePath) .on('end', resolve) .on('error', reject) .run(); });
方法二:自定义预设文件(不推荐,仅作补充)
如果一定要使用.preset()方法,需手动创建预设文件:
- 在项目根目录下创建
presets文件夹,新建ultrafast.js文件,内容如下:
module.exports = { output: ['-preset ultrafast'] };
- 修改代码中的
.preset('ultrafast')为.preset('./presets/ultrafast')(确保路径正确)。
内容的提问来源于stack exchange,提问作者coure2011
相关产品推荐
相关产品推荐

