const ffmpegPath = require('ffmpeg-static');
const spawn = require('child_process').spawn;
function extractFrames(inputFile, outputFile, fps = 0.1) {
return new Promise((resolve, reject) => {
const ffmpeg = spawn(ffmpegPath, [
'-i', inputFile,
'-vf', `fps=${fps}`,
outputFile
]);
ffmpeg.on('close', resolve);
ffmpeg.on('error', reject);
});
}
此代码给出错误“未捕获信号:11,pid=15,tid=15,fault_addr=99”。在 gcp 云功能上,我尝试将帧保存在“/tmp”文件夹中。但是,我收到此错误。
我的 ffmpeg-static 版本是:5.2.0
在本地主机上运行时,这工作得很好。但是,在 gcp 上,它给出了错误。
根据您收到的错误消息,这似乎是库版本的问题。
我建议您查看此GitHub Issue,其中建议使用旧版本的node.js。还要检查安装的版本是否与您正在使用的库版本兼容。这似乎也是一个悬而未决的问题,这不是一个完整的答案,而是一个解决方法。
在 Ubuntu 22.04 上使用 Node 20 的第二代 Google Cloud Functions 中遇到此问题。令人沮丧的是,这似乎已经成为人们的一个问题多久了。
鉴于人们报告这适用于旧版本的 Node 和/或 Ubuntu,我想知道这是否是 ffmpeg 或 Node(或两者)的问题。降级到旧版本并不是一个有吸引力的长期解决方案,因此我尝试进行更多挖掘,看看是否可以在这里找到问题根源的任何迹象。
也可以查看另一个Github链接来了解
ffmpeg-static
支持的版本环境。我可以看到您正在使用 ffmpeg-static
5.2.0 版本,但根据此 Github Link 最新使用的 ffmpeg-static
版本是 6.0。