class Abrizer::PackageHlsShaka

Public Class Methods

new(filename, output_dir=nil) click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 6
def initialize(filename, output_dir=nil)
  @filename = filename
  @adaptations = Abrizer::AdaptationFinder.new(filepath: @filename).adaptations
end

Public Instance Methods

audio_input() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 27
def audio_input
  hls_audio_filename = "#{basename}-audio-$Number$.ts"
  hls_audio_playlist = "#{basename}-audio.m3u8"
  %Q| 'input=#{audio_filepath},stream=audio,segment_template=#{hls_audio_filename},playlist_name=#{hls_audio_playlist},hls_group_id=AUDIO,hls_name=ENGLISH' |
end
hls_directory() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 45
def hls_directory
  File.join output_directory, 'hls'
end
make_directory() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 41
def make_directory
  FileUtils.mkdir_p hls_directory unless File.exist? hls_directory
end
mpd_filename() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 33
def mpd_filename
  File.join 'dash', "#{basename}.mpd"
end
package() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 11
def package
  make_directory
  Dir.chdir hls_directory
  `#{shaka_cmd}`
end
shaka_cmd() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 37
def shaka_cmd
  %Q|shaka-packager #{video_inputs.join(' ')} #{audio_input} --single_segment=false --hls_master_playlist_output=#{basename}.m3u8|
end
video_inputs() click to toggle source
# File lib/abrizer/package_hls_shaka.rb, line 17
def video_inputs
  @adaptations.map do |adaptation|
    filepath = adaptation.filepath(@filename)
    adaptation_basename = File.basename filepath, '.mp4'
    segment_template = "#{adaptation_basename}-$Number$.ts"
    adaptation_hls_playlist = "#{adaptation_basename}.m3u8"
    %Q|'input=#{filepath},stream=video,segment_template=#{segment_template},playlist_name=#{adaptation_hls_playlist}'|
  end
end