我创建了一个带有视频附件的 rails 类,我想知道如何获取上传到我的应用程序的视频的长度。我怎样才能做到这一点?
问问题
2911 次
3 回答
6
我没有让 Rvideo 完全工作,这个 gem 已经四年没有更新了。但是,这有效:
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
使用ffmpeg
和RVideo
gem,它是围绕它的一个薄 Ruby 包装器。该项目有很多分支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 回答
2
我最近不得不这样做,这是我的方法:
before_post_process do
file = data.queued_for_write[:original].path
self.duration = Paperclip.run("ffprobe", '-i %s -show_entries format=duration -v quiet -of csv="p=0"' % file).to_f
end
ffprobe
由ffmpeg安装,所以如果你已经安装了,你可能很高兴。
于 2015-04-22T09:35:51.227 回答