Class: CutCut::Timelapse

Inherits:
Base
  • Object
show all
Defined in:
lib/cutcut/timelapse.rb

Overview

Media

Instance Attribute Summary

Attributes inherited from Base

#input, #output

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from CutCut::Base

Instance Method Details

#basenamesObject



8
9
10
# File 'lib/cutcut/timelapse.rb', line 8

def basenames
  files.map { |e| File.basename(e, '.JPG').to_s }
end

#common_substringObject



12
13
14
# File 'lib/cutcut/timelapse.rb', line 12

def common_substring
  Helpers.longest_common_substring(*basenames)
end

#convert(options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/cutcut/timelapse.rb', line 29

def convert(options = {})
  fps = options[:fps] || 30
  execute_ffmpeg_command(
    input: File.join(@input, input_basename), output: @output,
    raw_options: {
      input: "-f image2  -start_number #{start_number} -framerate #{fps}",
      output: '-c:v libx264 -r 30 -vf scale=-1:1080 -crf 23 -preset ultrafast -pix_fmt yuv420p'
    }
  )

  Helpers.(files.first, @output)
  @output
end

#filesObject



4
5
6
# File 'lib/cutcut/timelapse.rb', line 4

def files
  Dir.glob(File.join(input, '*.JPG'))
end

#input_basenameObject



20
21
22
# File 'lib/cutcut/timelapse.rb', line 20

def input_basename
  common_substring + "%#{start_number.chars.count}d.JPG"
end

#original_date_timeObject



24
25
26
27
# File 'lib/cutcut/timelapse.rb', line 24

def original_date_time
  exif = MiniExiftool.new(files.first)
  exif.date_time_original || exif.create_date || exif.modify_date
end

#start_numberObject



16
17
18
# File 'lib/cutcut/timelapse.rb', line 16

def start_number
  basenames.first.gsub(common_substring, '')
end