我正在尝试允许用户将视频上传到我的RoR应用,然后将其转换为HTML5视频所需的所有格式。我找到了一个使用Voyeur gem的解决方案,它在很大程度上起作用。但是,当我运行命令将视频转换为html5格式时:
videos = Voyeur::Video.new(filename: file_path).convert_to_html5(output_path: "#{Rails.root.to_s}/tmp")
或者即使我尝试单独进行此操作:
mp4_vid = Voyeur::Video.new(filename: file_path).convert(to: :mp4, output_path: "#{Rails.root.to_s}/tmp/processed_videos")
ogv_vid = Voyeur::Video.new(filename: file_path).convert(to: :ogv, output_path: "#{Rails.root.to_s}/tmp/processed_videos")
webm_vid = Voyeur::Video.new(filename: file_path).convert(to: :webm, output_path: "#{Rails.root.to_s}/tmp/processed_videos")
任何时候任何命令都发送到偷窥者,它会挂起很长一段时间并基本上锁定程序。我进入了Activity Monitor(使用OSX Lion),发现ffmpeg进程仍然在运行,但CPU为0%。当我终止进程时,命令完成,视频工作正常。
我的代码中是否存在检查0%CPU ffmpeg进程的问题,还是有其他方法可以解决这个问题?
答案 0 :(得分:0)
对于有同样问题的人,首先要做的是确保通过包含在Gemfile中来使用正确的gem
gem 'voyeur', :git => 'git://github.com/devthenet/voyeur.git'
使用偷窥如下:
Voyeur::Media.new(...)
接下来,如果您使用的是delayed_job_active_record
,请务必同时添加delayed_job
gem 'delayed_job'
gem 'delayed_job_active_record'
这些变化必须解决问题。至少在我看来它有所帮助。