ruby-on-rails - 如何监控 ffmpeg 的进度?

标签 ruby-on-rails ffmpeg

我有一个使用 Rails 的 ffmpeg 视频编码器,我需要向用户报告 ffmpeg 进度。 如果我使用 Linux,该怎么做?

最佳答案

这是我达到的解决方案:

def execute_ffmpeg(cmd, progress)
  logger.debug "Running command #{cmd}"
  command = "#{cmd} 2>&1"
  progress = nil
  frames = nil
  fps = 25
  ffmpeg = IO.popen(command)
  ffmpeg.each("\r") do |line|
    if frames.nil? && line =~ /Duration:(\s.?(\d*):(\d*):(\d*\.\d*))/
      duration = $2.to_s + ":" + $3.to_s + ":" + $4.to_s
      frames = ($4.to_i + ($3.to_i * 60) + ($2.to_i * 60 * 60)) * fps
    end
    if line =~ /frame=(\s.?(\d*))/
      progress = $1.to_i / frames.to_i
      print "Progress: #{progress}"
    end
  end
end

关于ruby-on-rails - 如何监控 ffmpeg 的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3551984/

相关文章:

ruby-on-rails - RVM 不识别系统的 ruby​​ 版本

javascript - 如何在不刷新页面的情况下格式化模态内容

ruby-on-rails - ruby on rails + best_in_place + 数据表 + haml

python - 写入同一视频后,视频的 NumPy 数组从原始数组发生变化

ffmpeg imlib2.so 加水印的烦恼

video - 通过降低质量来提高 ffmpeg CPU 使用率

ruby-on-rails - 我是否需要在我的 Rails 应用目录中为 SSL 保留 server.key 和 server.csr?

ruby-on-rails - ApplicationController如何在每个页面执行代码

ffmpeg - 在 iPhone 中使用 FFmpeg 合并两个或多个任意格式的视频文件

html5 视频在 Chrome 和 Opera 中崩溃但在 Firefox 中工作正常