我有一个使用 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/