2011-12-10 101 views
1

應用程序將其狀態存儲在服務器/temp/status.txt上的文件中。有4種狀態可能:wait,ready,recording, finished。有了一個cronjob我想啓動一個shell腳本來檢查這個文件,如下采取行動:bash腳本啓動/停止ffmpeg x11grab

  • 等待 - >無能爲力
  • 就緒 - >執行ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg。現在雖然ffmpeg捕獲,status.txt文件仍然需要檢查的改變狀態,
  • 記錄 - >無能爲力
  • 成品 - >發送q命令ffmpeg進程退出拍攝過程和結束腳本。

我試圖用expectxdotool來解決它,意識到這絕對是錯誤的方式。我的問題是,我在bash和處理進程,子進程等方面沒有任何經驗。

+1

那你試試?更新帖子並告訴我們您遇到問題的位置。 – jman

+0

根據他對以下答案的評論,他想發送適當的'q'命令給ffmpeg。我來到這裏是因爲這是我想要做的。沒有人回答如何做到這一點,如果它甚至可能,或者如果ffmpeg有另一種退出bash腳本的方法,比如ffmpeg -q或者其他的東西(但我只是檢查了一下,而-q做了一些複雜的事情,而不是用於退出) 。 –

回答

0

我不太明白你的問題是你不知道如何開始寫腳本或者如果你只是有一個單一的點你的問題 你能澄清你的問題嗎?

我打算假設你的問題是你不知道如何在運行時停止ffmpeg,通常用於停止進程的骯髒方法是pkill,如pkill ffmpeg,這應該適用於大多數目的。

+0

很明顯,我是bash腳本中的新手。我已經閱讀了很多關於管道,流程,後臺進程和子進程的內容,但我仍然很不確定。我知道如何編寫一個腳本,我知道使用ffmpeg命令我會啓動一個子進程,並且我知道如何編寫while語句來檢查狀態文件。我不知道的是如何控制ffmpeg子進程,我想發送正確的q命令來退出它,或者只是正確解決ffmpeg問題?如果有2個ffmpeg進程在運行? – lunacafu

+0

是的,lunacafu,我現在和你3年前在同一個位置。我也希望能夠將正確的'q'命令發送到與bash腳本啓動相同的ffmpeg進程,並且我希望能夠在退出其中一個進程時運行2個或更多ffmpeg進程。你找到解決方案嗎?任何人都可以回答這個問題嗎? –

-1

得到的ProcessID和使用,

C#

 Process p=Process.GetProcessByID(int); 
    p.Close(); 
    p.Dispose(); 
+0

有沒有辦法不需要C#的呢? –