class Ffprober::Wrapper

Attributes

format[R]
json[R]

Public Class Methods

new(json) click to toggle source
# File lib/ffprober/wrapper.rb, line 15
def initialize(json)
  raise FfprobeError, json[:error] if json[:error]

  @json = json
  @format = T.let(Format.new(json[:format]), Ffprober::Format)
  @video_streams = T.let(nil, T.nilable(T::Array[Ffprober::VideoStream]))
  @audio_streams = T.let(nil, T.nilable(T::Array[Ffprober::AudioStream]))
  @data_streams = T.let(nil, T.nilable(T::Array[Ffprober::DataStream]))
  @subtitle_streams = T.let(nil, T.nilable(T::Array[Ffprober::SubtitleStream]))
  @chapters = T.let(nil, T.nilable(T::Array[Ffprober::Chapter]))
end

Public Instance Methods

audio_streams() click to toggle source
# File lib/ffprober/wrapper.rb, line 36
def audio_streams
  @audio_streams ||= stream_by_codec('audio').map do |data|
    AudioStream.new(data)
  end
end
chapters() click to toggle source
# File lib/ffprober/wrapper.rb, line 50
def chapters
  @chapters ||= json[:chapters].map { |chapter| Chapter.new(chapter) }
end
data_streams() click to toggle source
# File lib/ffprober/wrapper.rb, line 43
def data_streams
  @data_streams ||= stream_by_codec('data').map do |data|
    DataStream.new(data)
  end
end
subtitle_streams() click to toggle source
# File lib/ffprober/wrapper.rb, line 55
def subtitle_streams
  @subtitle_streams ||= stream_by_codec('subtitle').map do |stream|
    SubtitleStream.new(stream)
  end
end
video_streams() click to toggle source
# File lib/ffprober/wrapper.rb, line 29
def video_streams
  @video_streams ||= stream_by_codec('video').map do |data|
    VideoStream.new(data)
  end
end

Private Instance Methods

stream_by_codec(codec_type) click to toggle source
# File lib/ffprober/wrapper.rb, line 63
def stream_by_codec(codec_type)
  streams.select { |stream| stream[:codec_type] == codec_type }
end
streams() click to toggle source
# File lib/ffprober/wrapper.rb, line 67
def streams
  json[:streams]
end