У меня есть следующий код, который создает скриншот для загруженного видео:
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 все еще работает, и поэтому я не могу удалить большой палец.