Javascript fluent ffmpeg:创建后无法删除视频屏幕截图
我有以下代码为我上传的视频创建一个屏幕截图Javascript fluent ffmpeg:创建后无法删除视频屏幕截图,javascript,node.js,ffmpeg,fluent-ffmpeg,Javascript,Node.js,Ffmpeg,Fluent Ffmpeg,我有以下代码为我上传的视频创建一个屏幕截图 var thumbFileName = 'tmp_file.jpg'; ffmpegCommand = ffmpeg(videoFile) .on('end', function() { callback(null, tempUploadDir + thumbFileName) }) .on('error', function(err) { callback(err); }) .screenshots({
var thumbFileName = 'tmp_file.jpg';
ffmpegCommand = ffmpeg(videoFile)
.on('end', function() {
callback(null, tempUploadDir + thumbFileName)
})
.on('error', function(err) {
callback(err);
})
.screenshots({
timestamps: ['50%'],
filename: thumbFileName,
folder: tempUploadDir
});
代码运行得很好,并且创建了屏幕截图。回调读取文件流并将其存储到数据库中,最后尝试从文件系统中删除thumbFileName
这里是我遇到的问题,基本上我无法删除该文件,即使我手动尝试,也会说该文件被另一个进程(NodeJS)锁定,在停止应用程序之前我无法下载
在回调中,我还尝试在删除屏幕截图之前使用
ffmpegCommand.kill()
终止命令,但仍然存在相同的问题。当为图像生成缩略图时(即使使用效果进行后处理,使用sharp实现),但不使用ffmpeg,将使用fs.unlink
及其工作方式删除文件。显然,ffmpeg仍在运行,这就是我无法删除thumb的原因。您应该能够获得f-f创建的文件的权限。。。如果等待ffmpeg引发“onend”事件,则其进程可能已释放正在使用的fs资源。。因此,如果您的节点用户具有W权限,那么遵循“onend”应该可以执行删除操作。它具有写入权限,可以创建拇指,但不能删除。用普通拇指创建的尖锐文件可以删除,代码相同