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.

Methods

Class Public methods

accept?(blob)

📝 Source code
# File activestorage/lib/active_storage/analyzer/video_analyzer.rb, line 25
    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 29
    def metadata
      { width: width, height: height, duration: duration, angle: angle, display_aspect_ratio: display_aspect_ratio, audio: audio?, video: video? }.compact
    end
🔎 See on GitHub