Как обновить местоположение скрепки видео после обработки в рельсах - PullRequest
0 голосов
/ 15 октября 2011

Я использую Paperclip для обработки загруженного пользователем видео с помощью ffmpeg.Я хочу создать уменьшенное изображение, а также преобразовать видео в стандартный формат по своему выбору.У меня работает обработка ffmpeg, однако я не могу понять, как обновить запись после ее завершения.Я использовал несколько ссылок rails - paperclip - ffmpeg, но не видел, чтобы кто-нибудь конвертировал видео, а затем использовал конвертированное видео в rails db, так как он создает новое видео, мне нужно будет обновить запись свнутри процессора скрепки, но как это сделать ??

Спасибо

  • с использованием Rails 3
  • с использованием процессора скрепки с ffmpeg

1 Ответ

0 голосов
/ 15 октября 2011

Согласно документации для Скрепка :: Процессор :

Существует только один метод, который вы должны реализовать, чтобы правильно быть подклассом [из Paperclip::Processor]: #make ...

Все, что нужно #make вернуть - это экземпляр File (Tempfile приемлемо) который содержит результаты обработки.

Итак, ваш процессор будет выглядеть примерно так:

module Paperclip
  class MyProcessor
    # ...

    def make file, options = {}, attachment = nil
      in_filename = File.absolute_path file.path  # probably just a good idea

      out_filename = 'output_filename.mp4' # doesn't matter, maybe you use
                                           # Tempfile--just need to know
                                           # the path of ffmpeg's output file
      # run ffmpeg
      self.class.run 'ffmpeg',
        "-i #{in_filename}", /* more params..., */ out_filename

      File.open out_filename, 'r'  # then just return a File object pointing to
    end                            # the output file; Paperclip does the rest
  end
end
...