2014-03-31 69 views
2

這裏是我的問題是涉及到同樣的問題:記錄桌面節省每30分鐘

better way to record desktop via ffmpeg

我有這樣的命令:ffmpeg -f dshow -i video="screen-capture-recorder" -r 30 -t 10 E:\test01.flv

,我很喜歡它,但我不知道我可以讓它每30分鐘保存一次,所以如果斷電,我只會輸掉最後的30分鐘。

我使用C#來啓動和隱藏ffmpeg cmd,所以我不知道如何使它每隔30分鐘保存到相同的test01.flv

回答

2
ffmpeg -f dshow -framerate 30 -i video="screen-capture-recorder" -t 1800 output 

ffmpeg -f dshow -framerate 30 -i video="screen-capture-recorder" -t 00:30:00 output 

在C#檢查,如果進程仍在運行,如果它不那麼再這樣就開始記錄了接下來的30分鐘啓動它。這取決於你如何啓動子進程,所以我不能提供任何代碼。

+2

實際上,如果您製作Windows服務,您可以啓動ffmpeg作爲子進程,並且 - 一旦完成 - 對此做出反應並立即啓動一個新進程。 – TomTom

+0

我不確定是否Windows服務可以通過屏幕快照... – rogerdpack

+0

爲什麼它在video =「screen-capture-recorder」中顯示錯誤。在我的代碼中請提出任何建議或如何將其添加到項目中?我真的很困惑它 – Ahmad

2

一種方法是使用segment muxer

ffmpeg -f dshow -framerate 30 -i video="screen-capture-recorder" -f segment \ 
-segment_time 1800 out%03d.flv 
  • docs

    請注意,如果你想爲一個視頻文件的精確分割,你需要輸入關鍵幀對應於分段器預期的精確分割時間,或者分段複用器將在指定開始時間之後接下來找到的關鍵幀開始新分段。

  • 這將導致命名輸出文件:out001.flvout002.flvout003.flv

  • 的一個問題是,如果重新調用命令,它會嘗試使用相同的輸出文件名。

  • 我從您的命令中刪除了-r 30,並將其更改爲-framerate 30作爲dshow input device選項。否則,由於默認輸入幀速率爲25,因此ffmpeg將複製幀以達到您想要的輸出幀速率30.如果您僅提供輸入幀速率,則輸出將使用相同的幀速率並避免丟棄或複製幀補償。

+0

爲什麼它在視頻=「屏幕捕獲記錄器」顯示錯誤。在我的代碼中。 – Ahmad

+0

@Ahmad我猜你的代碼是錯誤的。如果沒有看到您的實際代碼和實際錯誤,則無法說出其他任何內容。 – LordNeckbeard