我想在for循环中启动多个FFmpeg会话。这是我的剧本:
# start recording for all cams
for i in `seq 1 ${CAM_NO}`
do
/home/aydu/bin/ffmpeg -f video4linux2 -i /dev/video${i} -y -c:v libx264 -r 5 -s 320x240 -vf format=gray $DIR/CAM${i}_${DTIME}.avi -r 1/5 -vf format=gray -f image2 -updatefirst 1 $DIR/webcam${i}.jpeg
done
问题是会话不按顺序启动。例如,当且仅当第一个进程停止,关闭,结束或终止时,第二个进程才会启动。
如何开始多个会话?
答案 0 :(得分:2)
如果要并行运行进程,则需要在进程执行行的末尾放置一个&符号&
,以通知shell它希望它在后台运行。
例如,此命令按顺序运行五个进程(大约十秒):
$ date;for i in 1 2 3 4 5;do sleep 2;done;date
Tue, Sep 10, 2013 4:05:32 PM
Tue, Sep 10, 2013 4:05:43 PM
然而这个只需要两秒钟,因为它们并行运行:
$ date;for i in 1 2 3 4 5;do sleep 2 & done;wait;wait;wait;wait;wait;date
Tue, Sep 10, 2013 4:05:45 PM
[1] 6116
[2] 4940
[3] 7040
[4] 6944
[5] 3592
[1] Done sleep 2
[2] Done sleep 2
[3] Done sleep 2
[4]- Done sleep 2
[5]+ Done sleep 2
Tue, Sep 10, 2013 4:05:47 PM