我正在尝试从windows中的ruby脚本运行ffmpeg。
def execute_ffmpeg(command)
IO.popen(command){|io|
io.each{|line|
# Show Progress
}
}
end
command_ffmpeg = "ffmpeg -y -i input.avi -vb 1000k -ab 96k output.mp4 2>&1"
execute_ffmpeg(command_ffmpeg)
如果我等到编码完成,它工作正常。 但是如果我终止ruby脚本,ffmpeg的过程仍然是后台。
当父ruby进程终止时,如何终止ffmpeg进程?
我在Windows 7中使用ruby 1.9.3。
答案 0 :(得分:0)
让子进程与父进程共享管道。让子进程中的一个线程调用IO.select就可以了。如果管道关闭,您就知道父进程已经死亡。有关实施,请参阅https://github.com/vaneyckt/Adeona/blob/master/lib/adeona.rb。
编辑:刚刚注意到你在Windows 7上。不确定我的方法是否适用于Windows。