Использование Paperclip с FFmpeg и несколькими выходными форматами: как сохранить в базе данных и показать в представлении определенный выходной формат? - PullRequest
1 голос
/ 20 февраля 2011

Поскольку я хочу использовать HTML5-видео , мне нужно преобразовать загруженные пользователем видео в несколько кодеков .Я следую этому уроку: http://jimneath.org/2008/06/03/converting-videos-with-rails-converting-the-video/, но он выводит только FLV, формат, который мне даже не нужен.

Я знаю, что могу добавить больше команд FFmpeg и конвертировать несколько раз, ноПроблема заключается в базе данных и представлении.Как я могу определить несколько source_file_name s в БД и как указать в @video.source.url какой формат мне нужен?Должен ли я подкласс модели Video, добавить больше столбцов таблицы для каждого типа или что-то еще?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Скрепка позволяет вам указать несколько стилей.Как правило, это используется для указания нескольких размеров для загружаемых изображений;Скрепка обрабатывает изображение один раз для каждого стиля и соответственно помещает их в файловую систему.Указав различные форматы видео для ваших стилей и подклассы Paperclip::Processor, вы можете создавать свои собственные форматы видео.В вашей модели вы должны сделать что-то вроде этого:

has_attached_file :video, :styles => { :mpeg, :ogg, :wmv }, :processors => [:my_custom_processor]

, а затем создать собственный процессор, который будет запускать правильную команду FFmpeg на основе каждого стиля.См. документацию для получения дополнительной информации, но здесь есть фрагмент:

Процессоры Paperclip позволяют вам изменять прикрепленные файлы, когда они прикрепляются любым удобным для вас способом.Сам Paperclip использует программы командной строки для своего включенного процессора миниатюр, но пользовательские процессоры не обязаны следовать его примеру.

Процессоры должны быть определены внутри модуля Paperclip и также должны быть подклассом Paperclip:: Процессор.Существует только один метод, который вы должны реализовать, чтобы должным образом быть подклассом: #make, но также может быть полезен #initialize.Оба метода принимают 3 аргумента: файл, с которым будет работать (который является экземпляром File), хэш опций, определенных в хэше стиля has_attached_file, и сам Paperclip :: Attachment.

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

См. Paperclip.run для получения дополнительной информации об использовании утилит командной строки из процессора.

Когда вы создаете ссылку на вложение Paperclip, вы передаете стиль, чтобы определить, на какой ссылаться:

<%= link_to "mpeg video", @model.video.url(:mpeg) %>
<%= link_to "ogg video", @model.video.url(:ogg) %>
1 голос
/ 13 июня 2011

Я предлагаю вам попробовать paperclip-ffmpeg gem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...