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

執筆者:

関連記事

Rubyでデータクリーニング~mechanize & active_support

  オライリー・ジャパンから「d3をはじめよう」という本が発売されたので読んだ 棒グラフ、折れ線グラフ、インタラクション(マウスオーバーで丸が大きくなるとかラベル表示とか、横のリストからグラ …

Ruby+guardでSass+Compass+CoffeeScriptの自動コンパイル環境を整える

    Ubuntu12.04.1でCoffeeScriptの自動makeとブラウザの自動リロード~guard-coffeescript すでにCoffeeScriptを自動Mak …

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

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

RailsでECサイト構築5 プロモーションを試す~spree

  spreeをインストールするとspree-promoというエクステンションが含まれている これを使うといろいろな販売企画をすることができる 管理画面から適当に作成してみる 今回は特定の商 …

Rails4.0で添付したpdfファイルの中身を全文検索の対象にする〜carrierwave、pdftotext、pg_bigm

By: Uncalno Tekno – CC BY 2.0 環境 Ubuntu server 12.04 sunspot_cellにしようとおもってたけど、ライブラリとか勉強することが多く …