3

ビデオアタッチメントを使用してRailsクラスを作成しましたが、アプリケーションにアップロードされるビデオの長さを取得する方法を知りたいです。どうすればそれを達成できますか?

4

3 に答える 3

6

私は Rvideo を完全に動作させることができませんでした。gem は 4 年間更新されていません。ただし、これは機能します。

  before_post_process :get_video_duration

  def get_video_duration
    result = `ffmpeg -i #{self.video.to_file.path} 2>&1`
    r = result.match("Duration: ([0-9]+):([0-9]+):([0-9]+).([0-9]+)")
    if r
      self.duration = r[1].to_i*3600+r[2].to_i*60+r[3].to_i
    end
  end
于 2012-04-14T09:02:40.697 に答える
2

ffmpegRVideo、それを囲む薄い Ruby ラッパーである gemを使用します。RVideoこのプロジェクトには多くのフォークがあります。個人的にはhttp://github.com/greatseth/rvideo、ビデオからのフレームのキャプチャと画像としての保存をサポートしているため、私が使用しています。すべての設定が完了したら、次の操作を実行できます。

# For Paperclip 2
video_attributes = RVideo::Inspector.new(:file => self.upload.to_file.path, :ffmpeg_binary => "/usr/local/bin/ffmpeg" )
video_attributes.duration # duration in milliseconds

# For Paperclip 3
video_attributes = RVideo::Inspector.new(:file => self.upload.queued_for_write[:original].path)
video_attributes.duration # duration in milliseconds
于 2009-12-08T04:23:43.640 に答える