アップロードしたビデオのスクリーンショットを作成する次のコードがあります。
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 がまだ実行されているため、サムを削除できません。