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
-, ,

執筆者:

関連記事

Railsでdocxをフォーマット指定でダウンロードできるようにする

タイトルだけだと何のことだかわからない railsでdocuments/2とかをGETメソッドで呼び出すとdocumentsコントローラーのshowメソッドを呼び出すようになってるんだけど、docum …

no image

MongoidでMapReduceに挑戦中

MongoDBの薄い本の素材をMongoidでやろうとしたけど途中経過 MapReduceをやることの利点は、並列処理ができるということとSQLより柔軟な処理なできるということらしい(MongoDBに …

no image

Rubyからdocxを生成する

    前提 Rubyでdocxをいろいろ分析してみた 変数の仕様~正規表現 いろいろなパターンで試してみた 例えば、こんな文 [crayon-58b24aef5ed3228988 …

Rails3.2でFacebook風インターフェイスでタグづけ〜acts-as-taggable-on+jquery.tokenInput

By: Mauquoy Token Company – CC BY 2.0 railscasts.com/episodes/258-token-fields?language=ja&#03

no image

Rubyでエクセル帳票印刷(.xls)~spreadsheet

  pdfとdocxとxlsが作成できれば帳票印刷で困ることはなさそう spreadsheetというgemを使ってみた 参考 dragonstar.asablo.jp/blog/2009/0 …