class M3u8::Playlist

Playlist represents an m3u8 playlist, it can be a master playlist or a set of media segments

Attributes

cache[RW]
discontinuity_sequence[RW]
iframes_only[RW]
independent_segments[RW]
items[RW]
live[RW]
sequence[RW]
target[RW]
type[RW]
version[RW]

Public Class Methods

codecs(options = {}) click to toggle source
# File lib/m3u8/playlist.rb, line 15
def self.codecs(options = {})
  item = PlaylistItem.new(options)
  item.codecs
end
new(options = {}) click to toggle source
# File lib/m3u8/playlist.rb, line 10
def initialize(options = {})
  assign_options(options)
  @items = []
end
read(input) click to toggle source
# File lib/m3u8/playlist.rb, line 20
def self.read(input)
  reader = Reader.new
  reader.read(input)
end

Public Instance Methods

duration() click to toggle source
# File lib/m3u8/playlist.rb, line 52
def duration
  duration = 0.0
  items.each do |item|
    duration += item.duration if item.is_a?(M3u8::SegmentItem)
  end
  duration
end
live?() click to toggle source
# File lib/m3u8/playlist.rb, line 30
def live?
  return false if master?
  @live
end
master?() click to toggle source
# File lib/m3u8/playlist.rb, line 35
def master?
  return @master unless @master.nil?
  return false if playlist_size.zero? && segment_size.zero?
  playlist_size > 0
end
to_s() click to toggle source
# File lib/m3u8/playlist.rb, line 41
def to_s
  output = StringIO.open
  write(output)
  output.string
end
valid?() click to toggle source
# File lib/m3u8/playlist.rb, line 47
def valid?
  return false if playlist_size > 0 && segment_size > 0
  true
end
write(output) click to toggle source
# File lib/m3u8/playlist.rb, line 25
def write(output)
  writer = Writer.new(output)
  writer.write(self)
end

Private Instance Methods

assign_options(options) click to toggle source
# File lib/m3u8/playlist.rb, line 62
def assign_options(options)
  options = defaults.merge(options)

  @version = options[:version]
  @sequence = options[:sequence]
  @discontinuity_sequence = options[:discontinuity_sequence]
  @cache = options[:cache]
  @target = options[:target]
  @type = options[:type]
  @iframes_only = options[:iframes_only]
  @independent_segments = options[:independent_segments]
  @master = options[:master]
  @live = options[:live]
end
defaults() click to toggle source
# File lib/m3u8/playlist.rb, line 77
def defaults
  {
    sequence: 0,
    target: 10,
    iframes_only: false,
    independent_segments: false,
    live: false
  }
end
playlist_size() click to toggle source
# File lib/m3u8/playlist.rb, line 87
def playlist_size
  items.count { |item| item.is_a?(PlaylistItem) }
end
segment_size() click to toggle source
# File lib/m3u8/playlist.rb, line 91
def segment_size
  items.count { |item| item.is_a?(SegmentItem) }
end