2016-09-29 50 views
0

我使用通過ftp複製的服務器(Synology NAS),來自CCTV系統錄像機的視頻剪輯。當文件被複制,小腳本轉換它從DAV格式爲AVI,使用下面的語句:如何獲取該文件仍然對ftp打開的信息

find ./ -type f -name "*.dav" -exec ffmpeg -y -i {} -vcodec copy -movflags +faststart {}.avi \; 

的問題是,有來自CCTV錄像機至Synology不斷髮送大量的剪輯。這是許多剪輯同時從錄像機傳輸到Synology。所以上面的聲明將嘗試轉換即使傳輸尚未結束的剪輯。如何從轉換中排除此類非完整剪輯?我無法使用「inotify」或「lsof」功能,因爲Synology Linux中沒有這種設備(由於許多原因,我無法在Synology上安裝軟件)。我認爲有必要知道,特定的文件仍然可以寫入,並將其排除在外以供連續使用。任何想法該怎麼辦?

+0

您可能會檢查/ proc/PID/fd文件,您的進程已打開,請參閱http://unix.stackexchange.com/a/66273。另一種方法可能是使用'stat -c%y file'命令中的修改日期,並等待它停止更改。 –

回答

0

最後我解決了我的問題。單個視頻剪輯的大小小於10MB。因此,sigle文件的轉換時間最多不超過1分鐘。正因爲如此,我添加了find命令,修改時間作爲參數。它解決了我的問題。我遇到的所有問題都是因爲Synology Linux的功能有限。參見下面的新命令語法:

find ./ -type f -mmin +10 -name "*.dav" -exec ffmpeg -y -i {} -vcodec copy -movflags +faststart {}.avi \; 

注意,如果文件的最後10分鐘內沒有修改,這意味着傳輸過程結束,在我的應用程序的現實(CCTV視頻剪輯收集),這是沒有必要的檢查是該文件是否打開。

相關問題