Rails 3: Как я могу заставить Paperclip-FFMPEG работать? - PullRequest
4 голосов
/ 08 ноября 2011

У меня есть Rails 3.0.3 с этими драгоценными камнями:

  • delayed_job 2.1.4
  • delayed_paperclip 0.7.1
  • скрепка 2.3.16
  • paperclip-ffmpeg 0.7.0

(Эта комбинация очень специфическая. Некоторые более новые драгоценные камни не будут работать с другими.)

Вот моя модель видео:

class Video < Upload
  has_attached_file :file, :default_style => :view, :processors => [:ffmpeg],
    :url => '/system/:class/:attachment/:id/:style/:basename.:extension',
    :path => ':rails_root/public/system/:class/:attachment/:id/:style' \
      + '/:basename.:extension',
    :default_url => '/images/en/processing.png',
    :styles => {
      :mp4video => { :geometry => '520x390', :format => 'mp4',
        :convert_options => { :output => { :vcodec => 'libx264',
          :vpre => 'ipod640', :b => '250k', :bt => '50k',
          :acodec => 'libfaac', :ab => '56k', :ac => 2 } } },
      :oggvideo => { :geometry => '520x390', :format => 'ogg',
        :convert_options => { :output => { :vcodec => 'libtheora',
          :b => '250k', :bt => '50k', :acodec => 'libvorbis',
          :ab => '56k', :ac => 2 } } },
      :view => { :geometry => '520x390', :format => 'jpg', :time => 1 },
      :preview => { :geometry => '160x120', :format => 'jpg', :time => 1 }
    }
  validates_attachment_content_type :file, :content_type => VIDEOTYPES,
    :if => Proc.new { |upload| upload.file.file? }
  process_in_background :file
end

При создании нового объекта Video с вложением оригинал сохраняется, но преобразование не будет выполнено.Даже звонить по номеру Video.last.file.reprocess! не будет, кроме как вернуть true.(Не уверен, что означает «true» в данном случае, поскольку он не работал.)

Я попытался жестко запрограммировать путь к ffmpeg в Paperclip::options[:command_path].Я даже попытался удалить файл paperclip-ffmpeg.rb и заменить его пустым файлом.Действительно думая, что получу исключение, сделав позже, вместо этого я просто снова получил «true».

Такое ощущение, что загружается paperclip-ffmpeg.rb, потому что это требуется config/application.rb, но ничего не вызывается при попытке создать миниатюру или конвертировать видео.

Может кто-нибудь помочь мне с этим?Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

Похоже, я решил эту проблему сам, и это было вызвано чем-то, что я сделал.

Я написал свой собственный скрипт для импорта файлов и базы данных из старого приложения в Rails. Файлы были на месте, но кто-то, кого я обновил базу данных с неправильными расширениями файлов (в данном случае, «.jpg» вместо «.MOV»).

Скрепка сначала проверит, существует ли исходный файл, прежде чем вызывать какой-либо процессор, на основании имени файла, хранящегося в базе данных. Поскольку это не так, Paperclip просто ничего не делал. Как только я исправил данные, все заработало как ожидалось. (У меня были проблемы с FFMPEG, но это другая проблема.)

Приношу свои извинения, если я впустую потратил время. Надеюсь, это кому-нибудь пригодится.

1 голос
/ 08 ноября 2011

Я использую аналогичную конфигурацию для одного из моих проектов (но Rails 3.1.1), и все работает отлично. Я добавил paperclip-ffmpeg в мой Gemfile, а не в config / application.rb. Может быть, это поможет!?

...