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