3

我正在尝试从 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。

4

1 回答 1

0

让子进程与父进程共享管道。在子进程中有一个线程调用 IO.select 。如果管道关闭,您就知道父进程已死。有关实施,请参阅https://github.com/vaneyckt/Adeona/blob/master/lib/adeona.rb

编辑:刚刚注意到您使用的是 Windows 7。不确定我的方法是否适用于 Windows。

于 2013-04-09T16:10:31.720 回答