Module: M4S::M3U8::GeneralPlaylist

Extended by:
GeneralPlaylist
Included in:
GeneralPlaylist
Defined in:
lib/m4s/m3u8/general_playlist.rb

Constant Summary collapse

VIDEO_TRACK =
'video/mp4'.freeze
AUDIO_TRACK =
'audio/mp4'.freeze
TRACKS_PRIORITY =
{ VIDEO_TRACK => 0, AUDIO_TRACK => 1 }.freeze
AUDIO_GROUP_ID =
'audio'.freeze

Instance Method Summary collapse

Instance Method Details

#generate(mp4, base_path = nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/m4s/m3u8/general_playlist.rb', line 10

def generate(mp4, base_path = nil)
  video_tracks = mp4.tracks.select { |t| t['mime_type'] == VIDEO_TRACK }
  audio_tracks = mp4.tracks.select { |t| t['mime_type'] == AUDIO_TRACK }

  lines = ['#EXTM3U', '#EXT-X-VERSION:7', '#EXT-X-INDEPENDENT-SEGMENTS']

  audio_tracks.each do |track|
    lines << audio_media_line(track, base_path)
  end

  video_tracks.each do |track|
    lines << stream_inf_line(track, audio_tracks.any?)
    lines << playlist_uri(track, base_path)
  end

  "#{lines.join("\n")}\n"
end