Ruby on Rails: гем Voyeur никогда не завершает команду из-за зависания ffmpeg - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь разрешить пользователям загружать видео в мое приложение 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")

Каждый раз, когда любая команда отправляется в voyeur, она зависает на длительное время и по существу блокирует программу. Я вошел в Activity Monitor (используя OSX Lion) и обнаружил, что процесс ffmpeg все еще работает, но с 0% CPU. Когда я завершаю процесс, команда завершается, и видео работает нормально.

В любом случае в моем коде можно проверить процесс ffmpeg на 0% ЦП или есть другой способ исправить это?

1 Ответ

0 голосов
/ 01 августа 2012

Для тех, у кого есть такая же проблема, первое, что нужно сделать, это убедиться, что вы используете правильный драгоценный камень, включив в свой Gemfile

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'

Эти изменения должны решить проблему. По крайней мере, для меня это помогло.

...