class ActiveStorage::Analyzer::QiniuVideoAnalyzer
Extracts the following from a video blob:
-
Width (pixels)
-
Height (pixels)
-
Duration (seconds)
-
Aspect ratio
Example:
ActiveStorage::Analyzer::QiniuVideoAnalyzer.new(blob).metadata # => {:width=>240, :height=>240, :duration=>"2.000000", :aspect_ratio=>"1:1"}
Public Class Methods
accept?(blob)
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 15 def self.accept?(blob) blob.video? end
Public Instance Methods
metadata()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 19 def metadata {width: width, height: height, duration: duration, aspect_ratio: aspect_ratio}.compact rescue {} end
Private Instance Methods
aspect_ratio()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 39 def aspect_ratio video_stream['display_aspect_ratio'] end
duration()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 35 def duration video_stream['duration'] end
height()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 31 def height video_stream['height'] end
streams()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 43 def streams @streams ||= begin code, result, res = Qiniu::HTTP.api_get(blob.service.url(blob.key, fop: 'avinfo')) result['streams'] end end
video_stream()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 50 def video_stream @video_stream ||= streams.detect { |stream| stream["codec_type"] == "video" } || {} end
width()
click to toggle source
# File lib/active_storage/analyzer/qiniu_video_analyzer.rb, line 27 def width video_stream['width'] end