Ffmpeg 运行时错误:中止(OOM)。有关详细信息,请使用-s断言=1构建

Ffmpeg 运行时错误:中止(OOM)。有关详细信息,请使用-s断言=1构建,ffmpeg,webassembly,Ffmpeg,Webassembly,我使用的是ffmpeg.wasm 0.9.7(在回答这个问题时)。 浏览器是勇敢的(版本1.23.71:90.0.4430.72(官方版本)(64位)) 我在浏览器中运行overlay ffmpeg命令时遇到了这个错误,在大小接近40兆字节的hevc mp4 4K视频上猛击png 运行时错误:中止(OOM)。使用-s断言=1构建以获取更多信息。 这是我的代码。精简 async generatePreviews(event: any) { if (!ffmpeg.isLoaded())

我使用的是ffmpeg.wasm 0.9.7(在回答这个问题时)。 浏览器是勇敢的(版本1.23.71:90.0.4430.72(官方版本)(64位))

我在浏览器中运行overlay ffmpeg命令时遇到了这个错误,在大小接近40兆字节的hevc mp4 4K视频上猛击png

运行时错误:中止(OOM)。使用-s断言=1构建以获取更多信息。

这是我的代码。精简

async generatePreviews(event: any) {

    if (!ffmpeg.isLoaded()) {
      await ffmpeg.load();
    }

    for (let index = 0; index < this.files.length; index++) {

      this.video = this.files[index];
      const file_name = this.video.name.split('.')[0] + '-preview.mp4';

      ffmpeg.FS('writeFile', 'tempLogo.png', await fetchFile(this.watermark));
      ffmpeg.FS('writeFile', 'tempVideo.mp4', await fetchFile(this.video));


      // working command in normal terminal
      // ffmpeg -i tempVideo.mp4 -i tempLogo.png -filter_complex "overlay=(W-w)/2:(H-h)/2" temp.mp4

      await ffmpeg.run(
        '-i',
        'tempVideo.mp4',
        '-i',
        'tempLogo.png',
        '-filter_complex',
        'overlay=(W-w)/2:(H-h)/2',
        'temp.mp4'
      );

      const data = ffmpeg.FS('readFile', 'temp.mp4');

      var blob = new Blob([data.buffer], { type: 'video/mp4' });
      saveAs(blob, file_name); // using filesaver.js to save the blob

    }
  }
}

async generatePreviews(事件:任意){
如果(!ffmpeg.isLoaded()){
等待ffmpeg.load();
}
for(让index=0;index
在chrome中,我可以读取高达2Gb的文件进行转换。不知道为什么OOM会出现问题。我需要设置什么设置或做什么更改

更新(4/26/2021)


这是通过对ffmpeg wasm进行一些调整来实现的。我能够构建,但使用构建的文件甚至会导致OOM比从ffmpeg wasm repo构建的npm更快。

在您提到的线程中,它从2GB内存限制更改为200MB(在上一个条目建议中,恢复为2GB)。目前Chrome最多支持4GB(但您可能只支持2GB)-尝试添加
-s ALLOW_MEMORY_GROWTH=1
。如果上述方法无效-尝试使用
--memoryprofiler
确定根本原因,请参阅