Ffmpeg 运行时错误:中止(OOM)。有关详细信息,请使用-s断言=1构建
我使用的是ffmpeg.wasm 0.9.7(在回答这个问题时)。 浏览器是勇敢的(版本1.23.71:90.0.4430.72(官方版本)(64位)) 我在浏览器中运行overlay ffmpeg命令时遇到了这个错误,在大小接近40兆字节的hevc mp4 4K视频上猛击pngFfmpeg 运行时错误:中止(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())
运行时错误:中止(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
确定根本原因,请参阅