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

Chrome浏览器用ffmpeg.wasm渲染视频频繁出现SBOX_FATAL_MEMORY_EXCEEDED错误求助

解决ffmpeg.wasm在Chrome中报SBOX_FATAL_MEMORY_EXCEEDED的问题

1. 修复代码中的文件操作逻辑错误

你的代码存在明显的顺序错误:先删除了输出文件,之后又尝试读取该文件,这不仅会导致读取失败,还可能引发ffmpeg内部内存异常。调整操作顺序并补充资源清理:

const videoGenerate = async (project) => {
  const ffmpeg = createFFmpeg({
      corePath: 'ffmpeg/ffmpeg-core.js',
      workerPath: 'ffmpeg/ffmpeg-core.worker.js'
  });
  await loadFfmpeg(ffmpeg);
  project.projectName = "Default";
  project.fileType = "video/mp4";

  const resultVideo = {
    title: `${project.projectName}ConcatenatedVideo.mp4`,
  };
  await uploadObjects(project.projectName, ffmpeg);
  
  // 执行ffmpeg命令
  const command = ['-i', project.video, '-c', 'copy', resultVideo.title];
  await ffmpeg.run(...command);
  
  // 先读取文件再删除
  resultVideo["blob"] = ffmpeg.FS('readFile', resultVideo.title);
  await ffmpeg.FS("unlink", resultVideo.title);
  
  // 退出实例释放资源
  await ffmpeg.exit();
  
  return resultVideo.blob;
};

2. 显式分配足够内存

ffmpeg.wasm默认内存分配可能不足以支撑视频处理,创建实例时指定更大的mem参数(单位为MB):

const ffmpeg = createFFmpeg({
    corePath: 'ffmpeg/ffmpeg-core.js',
    workerPath: 'ffmpeg/ffmpeg-core.worker.js',
    mem: 2048 // 分配2GB内存,可根据实际需求调整
});

3. 跳过不必要的视频编码

原始命令未指定编码参数,ffmpeg会自动重新编码视频,大幅增加内存占用。添加-c copy参数直接复制流,跳过编码过程:

const command = ['-i', project.video, '-c', 'copy', resultVideo.title];

4. 复用ffmpeg实例避免内存泄漏

如果需要多次调用视频处理函数,建议复用同一个ffmpeg实例,而不是每次创建新实例,减少内存累积。

5. 调整Chrome的WebAssembly内存限制(用户端操作)

若代码优化后仍无效,可让用户调整Chrome设置:

  • 打开chrome://flags
  • 找到WebAssembly Maximum Memory选项,设置更大的值(如4GB)
  • 重启Chrome生效

内容的提问来源于stack exchange,提问作者James Bor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:55:29