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
A
M
Class Public methods
accept?(blob)
# File activestorage/lib/active_storage/analyzer/video_analyzer.rb, line 21
def self.accept?(blob)
  blob.video?
end
Instance Public methods
metadata()
# 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