class StackEncode::Cli

Public Class Methods

exit_on_failure?() click to toggle source
# File lib/stack-encode/cli.rb, line 9
def self.exit_on_failure?
  true
end

Public Instance Methods

encode(*files) click to toggle source
# File lib/stack-encode/cli.rb, line 55
def encode(*files)
  FFMPEG.logger = Logger.new(options[:log_file])
  profile = Profile.new(
    profile_path: options[:profile],
    custom_options: options[:ffmpeg_options]
  )
  files.each do |source|
    unless File.file?(source)
      puts "#{source} is not a valid file"
      next
    end
    file = FFMPEG::Movie.new(source)
    dest_format = file.video_stream ? options[:video_format] : options[:audio_format]
    dest_dir = options[:destination] || File.dirname(source)
    filename = File.basename(source, File.extname(source)) + ".#{dest_format}"
    banner = "Encoding #{File.basename(source)} to #{dest_format.upcase} ==> #{filename}"
    say banner unless options[:progress]
    transcoded_file = file.transcode(
      File.expand_path(File.join(dest_dir, filename)),
      file.video_stream ? profile.video_options : profile.audio_options,
      profile.transcoder_options
    ) do |progress|
      if options[:progress]
        print_progress(progress * 100, banner)
      end
    end
    say if options[:progress]
    transcoded_file
  end
end
info(*files) click to toggle source
# File lib/stack-encode/cli.rb, line 87
def info(*files)
  files.each do |source|
    unless File.file?(source)
      puts "#{source} is not a valid file"
      next
    end
    file = FFMPEG::Movie.new(source)
    if file.valid?
      say source, :green
      table = [
        ["file type", file.video_stream ? "video" : "audio"],
        ["duration", file.duration.to_s + " sec"],
        ["bitrate", file.bitrate.to_s + " kb/s"],
        ["size", file.size.to_s + " bytes"]
      ]
      table += if file.video_stream
        [
          ["video_codec", file.video_codec],
          ["colorspace", file.colorspace],
          ["resolution", file.resolution],
          ["frame_rate", file.frame_rate.to_s + " fps"],
          ["audio_codec", file.audio_codec],
          ["audio_sample_rate", file.audio_sample_rate.to_s],
          ["audio_channels", file.audio_channels.to_s]
        ]
      else
        [
          ["audio_codec", file.audio_codec],
          ["audio_sample_rate", file.audio_sample_rate.to_s],
          ["audio_channels", file.audio_channels.to_s]
        ]
      end
      print_table table
      puts
    else
      puts "Invalid source file"
    end
  end
end
print_progress(progress, banner) click to toggle source

Helper function to print a progress bar in the console

version() click to toggle source
# File lib/stack-encode/cli.rb, line 23
def version
  say "stack-encode v#{StackEncode::VERSION}"
end