Extracts the following from a video blob:

  • Width (pixels)

  • Height (pixels)

  • Duration (seconds)

  • Angle (degrees)

  • Display aspect ratio

Example:

ActiveStorage::Analyzer::VideoAnalyzer.new(blob).metadata
# => { width: 640.0, height: 480.0, duration: 5.0, angle: 0, display_aspect_ratio: [4, 3] }

When a video's angle is 90 or 270 degrees, its width and height are automatically swapped for convenience.

This analyzer requires the FFmpeg system library, which is not provided by Rails.

Methods

Class Public methods

accept?(blob)

📝 Source code
# File activestorage/lib/active_storage/analyzer/video_analyzer.rb, line 21
    def self.accept?(blob)
      blob.video?
    end
🔎 See on GitHub

Instance Public methods

metadata()

📝 Source code
# File activestorage/lib/active_storage/analyzer/video_analyzer.rb, line 25
    def metadata
      { width: width, height: height, duration: duration, angle: angle, display_aspect_ratio: display_aspect_ratio }.compact
    end
🔎 See on GitHub