我使用以下系統命令調用ffmpeg的即時通訊我的C程序:使用系統命令
system("ffmpeg -t 10 -f video4linux2 -s 640x480 -r 30 -i /dev/video0 -f mp4 /home/somepath/webcam.mp4");
system("ffmpeg -i /home/somepath/webcam.mp4 -r 1 -s 640x480 -f image2 foo-%03d.jpeg");
的問題是我需要調用的第一個10秒後只完成後的第二個系統。我能想到的唯一方法是使用thread.sleep()然後調用它。有沒有其他更優雅的方法來實現這一點?
不是系統()阻塞函數調用嗎?在我看來,你有一個非常好的解決方案。到目前爲止的另一個想法 - 使用bat文件意味着另一種可能需要調試的代碼。 – chronodekar 2012-07-28 07:10:44
系統是一個阻塞呼叫,因此您所做的這兩個呼叫都很好。但是如果你實際上需要兩次調用之間的間隔爲'10'秒,那麼'睡眠'將是最簡單的。 – 2012-07-28 07:13:27
'系統'不是一個命令(像'ls'或'sh'),而是一個建立在系統調用之上的函數,請參閱我的答案。像你一樣在'system'中使用'%d'是錯誤的。 – 2012-07-28 07:28:56