【问题标题】:Time restraints with Ffmpeg [closed]Ffmpeg 的时间限制 [关闭]
【发布时间】:2017-03-18 00:12:09
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby ffmpeg paperclip paperclip-validation


    【解决方案1】:

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

    -t 120
    

    -t 00:02:00
    

    FFmpeg Documentation

    【讨论】:

      【解决方案2】:

      这有点超出了 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        • 2020-04-24
        • 1970-01-01
        • 2019-10-20
        • 1970-01-01
        • 2014-06-26
        • 1970-01-01
        相关资源
        最近更新 更多