JavaScript Railsで使えるGem

Railsで動画を管理する2 動画のサムネイルを作成する~CarrierWave + Flowplayer

投稿日:

 

*とりあえず動いているけど、もっとましな方法があるとおもいます

前提

Railsで動画ファイルを管理する~CarrierWave Flowplayer

参考

Rubyでffmpegのラッパーを使う~streamio-ffmpeg

www.freezzo.com/2010/12/23/create-ffmpeg-processor-for-carrierwave-in-rails-3/

*ここのコメント欄でサムネイルの作成が議論されてる

 

やることの解説

CarrierWaveでは保存する前にファイルの内容が確認できるようにするために、ファイルはいったん別の場所に保存される(public/uploads/item/tmp)

そして、CarrierWaveではオリジナルファイルの他に別バージョンのファイルを作成して同時に保存する機能がある

この別バージョンのファイルもtmpディレクトリで作業するけど、そのときファイル名が’バージョンシンボル_’+オリジナルファイル名でないと、一緒に保存されず、tmpディレクトリに残ってしまう

CarrierWaveのソースを読んでも何をやっているのか全く理解できなかったので、いろいろ試行錯誤した結果、’バージョンシンボル_’+オリジナルファイル名(mp4とかavi)というファイル名のjpgファイルを作成すれば、うまく一緒に保存されることがわかった 工エエェェ(´д`)ェェエエ工

*その後、ここをみてfull_filenameをオーバーライドすればいいことがわかった(以下は修正済み)

versionファイルの作成を指定する

video_uploader.rb

encodingの次の行あたりに

includeが並んでる辺りに

 

:ssというバージョンの作成を指定する

これからscreenshotというprocessを作っていく

*full_filenameのオーバーライドについては上のリンク先を参照

lib/carrierwave/ffmpeg.rb

こんなファイルを作成してmoduleを作成する

Gemfileにはstreamio-ffmpegを足しておくこと

たぶんapllication.rbとかをいじれば色々省略できそうだけどまた今度

やっていることは、

  1. current_pathはtmpディレクトリにコピーされたファイルへのパス
  2. 参照元のとおりtmpfileを作成して、スクリーンショットを作成(ffmpegのscreenshotメソッドはパスに.jpgをつけないとエラーが出てしまう)
  3. そして、その後、できたjpgファイルの拡張子を削除している

試したこと

  • jpg拡張子を削除した後、conver: ‘jpg’してもエラー(ファイルタイプがあわないとか)
  • jpg拡張子を削除した後、別にjpg拡張子をつけるメソッドを書いても、今度はtmpファイルにjpgファイルが残ってしまって移動されない

試してないこと

  • 参照先の最後のコメントにopenCVを使う方法へのリンクがあったけどやってない

理屈としては、tmpから保存先のフォルダにファイルを判定して移動する処理がどこかにあるはずで、それをオーバーライドするなりすれば、こんなことしなくて済むんだけど、versions.rbやprocess.rbをちらっと読んで諦めた

 

image_tagで呼び出す

うん、うまく表示できた!拡張子はmp4だけど jpgになりました!

flowplayerの初期画面をスクリーンショットにしておく

 

*課題

取ってきたスクリーンショットをRMagickに渡せない orz

やっぱりソースをよく読まないとダメぽい

-JavaScript, Railsで使えるGem
-, ,

執筆者:

関連記事

Rails3.2とBackbone.jsでGoogle CalendarライクなカレンダーにCRUD~fullcalendar-rails

目次1 前回2 READ ~データベースからイベントを読み込んでカレンダーに表示する3 CREATE~カレンダーからイベントを登録する4 UPDATE1~カレンダーのイベントをクリックしてイベントを編 …

Rails4とD3.jsでローソク足グラフを描く〜Rails準備編

By: Manuel Calavera – CC BY 2.0 前回 Rails4で複雑な検索〜Ransack こちらのサンプルを使用させてもらいました。 datawarehouse.we …

no image

kaminari + Twitter Bootstrap2テーマでFirst,Prev,Next,Lastだけおかしい場合

前につくったTwitter Bootstrap2用のkaminariテーマをコピーして使おうとしたら表題の通り、First,Prev,Next,Lastがおかしい あと…も表示されない G …

RailsでECサイトを構築3 日本にあわせる~spree

  前提 RailsでECサイト構築~spree RailsでECサイト構築2 注文してみる~spree 目次1 テンプレートをダウンロード2 テンプレートを改造する3 デフォルトの国を変更 …

RailsでECサイト構築2 注文してみる~spree

  前提 RailsでECサイト構築~spree さっきは日本に発送できなかったので、最小限の設定をして注文から入金・発送までの一連の流れをみてみる 目次1 設定2 注文してみる3 入金・発 …