Class: ActiveStorage::Analyzer::VideoAnalyzer

Inherits:
ActiveStorage::Analyzer show all
Defined in:
activestorage/lib/active_storage/analyzer/video_analyzer.rb

Overview

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).
# => { 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 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.

Instance Attribute Summary

Attributes inherited from ActiveStorage::Analyzer

#blob

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ActiveStorage::Analyzer

analyze_later?, #initialize

Constructor Details

This class inherits a constructor from ActiveStorage::Analyzer

Class Method Details

.accept?(blob) ⇒ Boolean

Returns:

  • (Boolean)

23
24
25
# File 'activestorage/lib/active_storage/analyzer/video_analyzer.rb', line 23

def self.accept?(blob)
  blob.video?
end

Instance Method Details

#metadataObject


27
28
29
# File 'activestorage/lib/active_storage/analyzer/video_analyzer.rb', line 27

def 
  { width: width, height: height, duration: duration, angle: angle, display_aspect_ratio: display_aspect_ratio, audio: audio?, video: video? }.compact
end