Skip to Content Skip to Search

class ActiveStorage::Analyzer::VideoAnalyzer

Active Storage Video Analyzer

Extracts the following from a video blob:

  • Width (pixels)

  • Height (pixels)

  • Duration (seconds)

  • Angle (degrees)

  • Display aspect ratio

  • Audio (true if file has an audio channel, false if not)

  • Video (true if file has an video channel, false if not)

Example:

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

When a video’s angle is 90, -90, 270 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.

Inherits From

Public class methods

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

Public instance methods

Source code GitHub
# File activestorage/lib/active_storage/analyzer/video_analyzer.rb, line 29
def metadata
  { width: width, height: height, duration: duration, angle: angle, display_aspect_ratio: display_aspect_ratio, audio: audio?, video: video? }.compact
end

Definition files