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
# File lib/stack-encode/cli.rb, line 129 def print_progress(progress, banner) print "\r#{banner}:\t[" + ('#' * (progress.round / 3)) + (' ' * (100/3 - progress.round / 3)) + ']' printf (progress < 100 ? " %02d\%" : " %3d\%"), progress $stdout.flush end
version()
click to toggle source
# File lib/stack-encode/cli.rb, line 23 def version say "stack-encode v#{StackEncode::VERSION}" end