Node.js中使用fluent-ffmpeg触发SIGSEGV错误求助
解决fluent-ffmpeg执行时SIGSEGV崩溃问题
排查步骤与解决方案
移除冗余的
ffmpegnpm包
你同时安装了ffmpeg和fluent-ffmpeg,但fluent-ffmpeg是调用系统级FFmpeg,而非依赖npm的ffmpeg包,两者可能产生冲突。执行命令卸载冗余包:npm uninstall ffmpeg升级系统FFmpeg版本
apt默认源的FFmpeg版本通常较旧,可能存在导致崩溃的已知bug。执行以下命令升级到稳定新版本:sudo apt remove --purge ffmpeg sudo add-apt-repository ppa:jonathonf/ffmpeg-5 sudo apt update && sudo apt install ffmpeg升级后验证版本:
ffmpeg -version调整FFmpeg参数降低内存占用
给FFmpeg添加内存友好的参数,避免因内存过载触发崩溃。修改你的代码:ffmpeg("./uploads/video.mp4") .output("./uploads/small-video.mp4") .noAudio() .size('320x?') .videoCodec('libx264') // 指定稳定的H.264编码器 .outputOptions('-threads', '2') // 限制线程数减少内存消耗 .outputOptions('-crf', '23') // 平衡画质与码率,降低内存压力 .on('error', (err, stdout, stderr) => { console.error('FFmpeg原生错误输出:', stderr); // 捕获更详细的崩溃原因 }) .on('end', function() { extractVideoFrames("./uploads/small-video.mp4") }) .run()测试系统FFmpeg直接处理视频
跳过Node.js层,用系统命令直接测试FFmpeg是否能正常处理视频,排除代码逻辑问题:ffmpeg -i ./uploads/video.mp4 -an -vf scale=320:-1 ./uploads/test-output.mp4如果此命令也崩溃,说明问题出在视频文件或FFmpeg本身:
- 更换一个正常的测试视频验证;
- 若仍崩溃,尝试手动编译最新版FFmpeg而非通过ppa安装。
检查视频文件完整性
损坏的视频文件可能导致FFmpeg解析时崩溃,用ffprobe检查视频元信息:ffprobe ./uploads/video.mp4若输出异常或报错,说明视频文件存在损坏,需重新获取或修复。
内容的提问来源于stack exchange,提问作者C G
相关产品推荐
相关产品推荐

