Sha256: fa1bab2db939dd5500e261a510c8d55528740a4723819e81695c028297303c9a

Contents?: true

Size: 1.02 KB

Versions: 23

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'ehbrs_ruby_utils/executables'
require 'ehbrs_ruby_utils/videos/stream'
require 'json'

module EhbrsRubyUtils
  module Videos
    class Container
      enable_simple_cache
      common_constructor :path do
        self.path = path.to_pathname
      end

      ::EhbrsRubyUtils::Videos::Stream.lists.codec_type.each_value do |stream_type|
        define_method stream_type.to_s.pluralize do
          streams.select { |stream| stream.codec_type == stream_type }
        end
      end

      private

      def probe_data_uncached
        ::JSON.parse(
          ::EhbrsRubyUtils::Executables.ffprobe.command(
            '-hide_banner', '-print_format', 'json', '-show_format', '-show_streams', path
          ).execute!
        ).deep_symbolize_keys.freeze
      end

      def streams_uncached
        probe_data.fetch(:streams).map do |stream_ffprobe_data|
          ::EhbrsRubyUtils::Videos::Stream.new(stream_ffprobe_data)
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
ehbrs_ruby_utils-0.9.0 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs_ruby_utils-0.8.1 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.25.1 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs_ruby_utils-0.8.0 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.25.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs_ruby_utils-0.7.0 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.24.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs_ruby_utils-0.6.1 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs_ruby_utils-0.6.0 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.23.1 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.23.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.22.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.21.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.20.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.19.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.18.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.17.0 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs_ruby_utils-0.5.1 lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.16.5 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
ehbrs-tools-0.16.4 vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb