【发布时间】:2017-03-18 00:12:09
【问题描述】:
我正在使用 Ffmpeg 在 Rails 应用程序中录制视频。我想给用户一个最小和最大的时间限制。用于设置此限制的最佳标志是什么?
【问题讨论】:
标签: ruby-on-rails ruby ffmpeg paperclip paperclip-validation
我正在使用 Ffmpeg 在 Rails 应用程序中录制视频。我想给用户一个最小和最大的时间限制。用于设置此限制的最佳标志是什么?
【问题讨论】:
标签: ruby-on-rails ruby ffmpeg paperclip paperclip-validation
【讨论】:
这有点超出了 Paperclip 所做的基本验证的范围。 Paperclip 试图为您提供足够的验证来覆盖 95% 的用例,但对于任何不典型的情况,您必须编写自己的逻辑。我不相信有内置的自定义验证来检查视频的长度。 (但是,您可以使用validates_attachment_size 验证方法来验证资产的文件大小。在紧要关头,这可能就足够了。)
如果您想对回形针附件进行更深入的验证,您应该研究一些不同的工具来编写您自己的验证方法。如果您正在处理视频,我会看看streamio-ffmpeg。
使用该 gem,您可以编写类似这样的自定义验证:
class YourModel < ActiveRecord::Base
has_attached_file :your_media
validate :duration_in_range
private
def duration_in_range
# See https://github.com/streamio/streamio-ffmpeg#usage
unless FFMPEG::Movie.new(your_media.path).duration.in?(MIN_TIME..MAX_TIME)
errors.add(:your_media, "Video duration must be within #{MIN_TIME} and #{MAX_TIME} seconds")
end
end
end
【讨论】: