You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中使用fluent-ffmpeg触发SIGSEGV错误求助

解决fluent-ffmpeg执行时SIGSEGV崩溃问题

排查步骤与解决方案

  • 移除冗余的ffmpeg npm包
    你同时安装了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:46:43