class Renchin::CLI
Public Instance Methods
cgraph()
click to toggle source
# File lib/renchin/cli.rb, line 94 def cgraph gif_file = options[:input] result_file = options[:output] gif_configs = (`identify ~/Downloads/notch_belt.gif`).split("\n") pingpong = 0 # comment this if you dont want a pingpong loop frame_start = options[:frame_start] frame_stop = options[:frame_end] frame_bg = options[:frame_bg] overlay_x = options[:overlay_x] overlay_y = options[:overlay_y] overlay_w = options[:overlay_w] overlay_h = options[:overlay_h] viewport_x = options[:viewport_x] viewport_y = options[:viewport_y] viewport_w = options[:viewport_w] || gif_configs[0].split(" ")[2].split("x")[0] viewport_h = options[:viewport_h] || gif_configs[0].split(" ")[2].split("x")[1] speed_current = options[:duration] frames = "" offset = 0 image_directory_path = image_directory(__method__) # movie_to_frame system("convert #{gif_file}[#{frame_bg}] #{image_directory_path}/bg.png") system("convert #{gif_file} -repage 0x0 -crop #{overlay_w}x#{overlay_h}+#{overlay_x}+#{overlay_y} +repage #{image_directory_path}/frame.png") # frames_to_gif && iterate_frames frame_stop = (`identify #{gif_file} | wc -l`).chomp.gsub(/\s/,'').to_i for i in frame_start...frame_stop do frames = "#{frames} -delay #{speed_current} #{image_directory_path}/frame-out-#{offset}.png" system("convert #{image_directory_path}/bg.png #{image_directory_path}/frame-#{i}.png -geometry +#{overlay_x}+#{overlay_y} -compose over -composite #{image_directory_path}/frame-out-#{offset}.png") offset += 1 end system("convert #{frames} -loop 0 -crop #{viewport_w}x#{viewport_h}+#{viewport_x}+#{viewport_y} -layers Optimize #{result_file}") delete_directory(image_directory_path, "\.(jpg|png)") say("Renchin generated sprite file! ~> #{result_file}", :green) end
reverse()
click to toggle source
# File lib/renchin/cli.rb, line 66 def reverse movie_file = options[:input] result_file = options[:output] start_sec = options[:start] end_sec = options[:end] image_directory_path = image_directory(__method__) system("ffmpeg -i #{movie_file} -vf trim=#{start_sec}:#{end_sec},reverse,setpts=PTS-STARTPTS -an #{result_file}") say("Renchin generated reverse movie! ~> #{result_file}", :green) end
sprite()
click to toggle source
# File lib/renchin/cli.rb, line 46 def sprite movie_file = options[:input] result_file = options[:output] captured_frame_per_sec = options[:cfps] image_directory_path = image_directory(__method__) system("ffmpeg -i #{movie_file} -r #{captured_frame_per_sec} -s qvga -f image2 #{image_directory_path}/renchin-original-%3d.png") system("convert #{image_directory_path}/renchin-original-*.png -quality 30 #{image_directory_path}/renchin-converted-%03d.jpg") system("convert #{image_directory_path}/renchin-converted-*.jpg -append #{result_file}") delete_directory(image_directory_path, "\.(jpg|png)") say("Renchin generated sprite file! ~> #{result_file}", :green) end
tlapse()
click to toggle source
# File lib/renchin/cli.rb, line 17 def tlapse movie_file = options[:input] result_file = options[:output] output_fps = options[:ofps] || frame_per_second(60) ext = options[:iex] debug = options[:debug].to_i overwrite = options[:overwrite].to_i == 1 ? '-y' : '' image_directory_path = image_directory(__method__) Dir.chdir("#{image_directory_path}") # Split a movie to png images. o1, e1, i1 = Open3.capture3("ffmpeg -i #{movie_file} -f image2 #{image_directory_path}/%7d.#{ext}") # Generate timelapse movie from frame images. o2, e2, i2 = Open3.capture3("ffmpeg #{overwrite} -f image2 -r #{output_fps} -i #{image_directory_path}/%7d.#{ext} -r #{output_fps} -an -vcodec libx264 -pix_fmt yuv420p #{result_file}") if debug == 1 puts e1 puts e2 end delete_directory(image_directory_path, "\.#{ext}") say("Renchin generated timelapse! ~> #{result_file}", :green) end
Private Instance Methods
frame_count(expr)
click to toggle source
# File lib/renchin/cli.rb, line 135 def frame_count(expr) Dir.glob(expr).count end
frame_per_second(ext)
click to toggle source
# File lib/renchin/cli.rb, line 139 def frame_per_second(ext) frame_count("*\.#{ext}") > 10 ? frame_count("*\.#{ext}") / 10 : 1 end