我有一个 Node.js 程序,它定期循环浏览目录中的视频文件。如果添加或删除文件,程序会更新数据库以反射(reflect)此更改。添加文件时,使用 FFmpeg 生成缩略图。
当我尝试在当前正在复制到目录的文件上运行 FFmpeg 时遇到问题。由于文件不完整,FFmpeg无法生成缩略图。如果我知道文件何时被复制,我可以忽略它,并且下次扫描目录时会拾取该文件。
如何确定当前是否正在复制文件,或者如何循环忽略当前复制文件的目录?
最佳答案
假设您有两个进程,一个用于写入文件,另一个对写入的文件进行操作:
- 将文件写入临时文件名 (/tmp/filename)
- 复制完成后,立即将其链接到您的目标目录。
使用此策略,您的缩略图进程会监视目标目录的更改,现在可以保证目标目录仅包含完整的文件。
参见fs.watch它允许您“观察”目录的更改。
关于javascript - 是否正在复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43306876/