1

Because I want to use HTML5 video I need to convert videos uploaded by the user into multiple codecs. I am following this tutorial: http://jimneath.org/2008/06/03/converting-videos-with-rails-converting-the-video/ but it only outputs FLV, a format I don't even want at all.

I know I can add more FFmpeg commands and convert multiple times, but the problem lies in the database and the view. How can I define multiple source_file_names in the DB, and how can I specify in @video.source.url which format I want? Should I subclass the Video model, add more table columns for each type or something else?

4

2 に答える 2

3

Paperclip では、複数のスタイルを指定できます。通常、これはアップロードされた画像の複数のサイズを指定するために使用されます。Paperclip は、スタイルごとに 1 回画像を処理し、それに応じてファイル システムに配置します。スタイルとサブクラス化に異なるビデオ形式を指定するPaperclip::Processorことで、独自のビデオ形式を作成できます。モデルでは、次のようにします。

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

そして、各スタイルに基づいて正しい FFmpeg コマンドを実行するカスタム プロセッサを作成します。詳細についてはドキュメントを参照してください。ただし、ここにスニペットがあります。

ペーパークリップ プロセッサを使用すると、添付ファイルが添付されているときに、可能な方法でファイルを変更できます。Paperclip 自体は、付属の Thumbnail プロセッサにコマンドライン プログラムを使用しますが、カスタム プロセッサはこれに従う必要はありません。

プロセッサは、Paperclip モジュール内で定義する必要があり、Paperclip::Processor のサブクラスである必要もあります。適切にサブクラスにするために実装する必要があるメソッドは 1 つだけです: #make ですが、#initialize も使用できます。どちらのメソッドも 3 つの引数を受け入れます: 操作対象のファイル (File のインスタンス)、has_attached_file のスタイル ハッシュで定義されたオプションのハッシュ、および Paperclip::Attachment 自体です。

#make が返す必要があるのは、処理の結果を含む File (Tempfile を使用できます) のインスタンスだけです。

プロセッサ内からコマンド ライン ユーティリティを使用する方法の詳細については、Paperclip.run を参照してください。

ペーパークリップの添付ファイルへのリンクを作成するときは、スタイルを渡してリンク先を決定します。

<%= link_to "mpeg video", @model.video.url(:mpeg) %>
<%= link_to "ogg video", @model.video.url(:ogg) %>
于 2011-02-21T02:58:05.190 に答える
1

paperclip-ffmpeg gemを試してみることをお勧めします。

于 2011-06-13T09:37:48.810 に答える