跳至内容 跳至搜索

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