Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript fluent ffmpeg:创建后无法删除视频屏幕截图_Javascript_Node.js_Ffmpeg_Fluent Ffmpeg - Fatal编程技术网

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”应该可以执行删除操作。它具有写入权限,可以创建拇指,但不能删除。用普通拇指创建的尖锐文件可以删除,代码相同