Sha256: 3d15bb216082d72b5405f1194e2fb5c90b87550ceb61cf8f334176572de3af1c

Contents?: true

Size: 911 Bytes

Versions: 5

Compression:

Stored size: 911 Bytes

Contents

require_relative 'box_path'
require_relative 'box_parsers/meta_box'
require_relative 'box_parsers/mvhd_box'

module FileData
  # Parses and returns metadata from an Mpeg4 file
  class Mpeg4
    class << self
      ['.mp4', '.mpeg4', '.m4v', '.mov'].each { |e| FileInfo.info_maps[e] = Mpeg4 }

      values = [['origin_date', MetaBoxParser,
                 'creation_date', 'moov', 'meta'],
                ['creation_date', MvhdBoxParser,
                 'creation_time', 'moov', 'mvhd']]

      values.each do |v|
        define_method(v[0]) do |stream|
          get_value(*v.drop(1).unshift(stream))
        end
      end
    end

    def self.get_value(stream, parser, method, *box_path)
      box = BoxPath.get_root_path(stream, *box_path)
      parser.parse(box.content_stream).send(method) unless box.nil?
    end
  end

  Mpeg4ValueInfo = Struct.new(:name, :parser_class, :method_name, :box_path)
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
file_data-6.0.0 lib/file_data/formats/mpeg4/mpeg4.rb
file_data-5.2.3 lib/file_data/formats/mpeg4/mpeg4.rb
file_data-5.2.2 lib/file_data/formats/mpeg4/mpeg4.rb
file_data-5.2.1 lib/file_data/formats/mpeg4/mpeg4.rb
file_data-5.2.0 lib/file_data/formats/mpeg4/mpeg4.rb