Sha256: f536a3fc233ac70792f0cf16d4fb4ed3193b5fc598d773aa715f0a3ca07b5653

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

module Abrizer
  class PackageDashShaka

    include FilepathHelpers

    def initialize(filename, output_dir=nil)
      @filename = filename
      @adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
    end

    def package
      make_directory
      Dir.chdir output_directory
      `#{shaka_cmd}`
    end

    def video_inputs
      @adaptations.map do |adaptation|
        filepath = adaptation.filepath(@filename)
        adaptation_basename = File.basename filepath, '.mp4'
        output_filename = File.join 'dash', "#{adaptation_basename}-dash.mp4"
        %Q|"input=#{filepath},stream=video,output=#{output_filename}"|
      end
    end

    def audio_input
      dash_audio_filename = File.join 'dash', "#{basename}-audio-dash.m4a"
      "input=#{audio_filepath},stream=audio,output=#{dash_audio_filename}"
    end

    def mpd_filename
      File.join 'dash', "#{basename}.mpd"
    end

    def shaka_cmd
      %Q|shaka-packager #{video_inputs.join(' ')} #{audio_input} --profile on-demand --mpd_output #{mpd_filename}|
    end

    def make_directory
      FileUtils.mkdir_p dash_directory unless File.exist? dash_directory
    end

    def dash_directory
      File.join output_directory, 'dash'
    end


  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
abrizer-0.4.0 lib/abrizer/package_dash_shaka.rb