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

執筆者:

関連記事

SimpleCovのカバレッジをvimに表示させる~simplecov-vim

      github.com/nyarly/Simplecov-Vim 参照 Rails3でテストカバレッジを計測する~simplecov,thin 自分のgem上の …

no image

CarrierWaveのファイルをpublic以外に移す

  参照 How To: Secure Upload 現状でCarrierWaveのファイルがpublicという公開フォルダに置かれるのが気になったので調べてみた 違ってるかもしれないので自 …

Rails3.2で位置情報を日本語表示の住所に変換する~geocoder

ついにブログ記事が100件突破した! そのうちメニュー項目などをわかりやすく構成し直したいと思う いまはRailsのプログラムが楽しくて仕方ない時期なので色々と試して書き溜めたいと思う EverNot …

no image

Rails4とPostreSQL9.3で全文検索〜pg_bigm

目次1 準備2 migration3  使い方 準備 エクステンションを導入しておく Ubuntu Server12.04でPostgreSQL9.3をつかう〜pg_bigmで全文検索 migrati …

Rails4.1に対応したRefinery CMS 3.0を試してみた

By: Alexis Madrigal – CC BY 2.0 目次1 Refinery CMS2 Gemfile3 generate4 configファイル5 起動6 管理画面7 トラブ …