0

我有以下代码为我上传的视频创建屏幕截图;

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()之前杀死命令来删除屏幕截图,但我仍然遇到同样的问题。fs.unlink当为图像生成缩略图时(甚至使用效果进行后处理,使用锐利实现),但不会使用 ffmpeg,该文件将被删除并使用它的工作。显然 ffmpeg 仍在运行,这就是我无法删除拇指的原因。

4

0 回答 0