跳到內容 跳到搜尋

Active Storage 視訊分析器

從視訊 blob 中萃取下列資訊

  • 寬度 (像素)

  • 高度 (像素)

  • 長度 (秒)

  • 角度 (度)

  • 顯示的長寬比

  • 音訊 (若檔案有音訊頻道,則為 true;若沒有,則為 false)

  • 視訊 (若檔案有視訊頻道,則為 true;若沒有,則為 false)

範例

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 }

若視訊的角度為 90、-90、270 或 -270 度,其寬度及高度會自動互換以方便使用。

此分析器需要 FFmpeg 系統圖書館,而 Rails 並未提供它。

方式
A
M

類別公開方式

accept?(blob)

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

執行個體公開方式

metadata()

# 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