0

我正在使用 Ffmpeg 在 Rails 应用程序中录制视频。我想给用户一个最小和最大的时间限制。用于设置此限制的最佳标志是什么?

4

2 回答 2

1

ffmpeg使用-t(或-to)选项来设置持续时间。120 秒的示例:

-t 120

或者

-t 00:02:00

请参阅FFmpeg 文档

于 2017-03-18T00:53:37.897 回答
1

这有点超出了 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
于 2017-03-18T02:41:45.910 回答