class DuoSplitter::Encoders::BaseEncoder
Attributes
commands[R]
Public Class Methods
known_encoders()
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 7 def known_encoders @known_encoders ||= {} end
new(context:)
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 18 def initialize(context:) @context = context @commands = build_commands end
register_encoder(encoder_name, encoder_class)
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 11 def register_encoder(encoder_name, encoder_class) known_encoders[encoder_name.to_sym] = encoder_class end
Public Instance Methods
run()
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 23 def run return if @commands.empty? @context.output_dir.mkpath BatchProcessor.new(message: 'encoding...', show_progress: @context.show_progress).run(@commands) end
Private Instance Methods
build_commands()
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 33 def build_commands sentences = @context.album.sentences(intro: @context.output_intro).select(&:source_audio_path) sentences.map do |sentence| output_basename = sentence.output_basename(prefix_section_number: @context.prefix_section_number, ext: ext) command = [@context.ffmpeg_path, '-y'] command += ['-i', sentence.source_audio_path.to_s] command += encoding_options command += [@context.output_dir.join(output_basename).to_s] command end end
encoding_options()
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 48 def encoding_options raise Error, '#encoding_options must be defined in sub classes' end
ext()
click to toggle source
# File lib/duo_splitter/encoders/base_encoder.rb, line 52 def ext raise Error, '#ext must be defined in sub classes' end