class Lolcommits::CaptureLinux

Public Instance Methods

capture() click to toggle source
# File lib/lolcommits/capture_linux.rb, line 7
def capture
  debug "LinuxCapturer: making tmp directory"
  tmpdir = Dir.mktmpdir

  # Default delay is 1s
  delay = if capture_delay != 0 then capture_delay else 1 end

  # There's no way to give a capture delay in mpv, but a number of frame
  # mpv's "delay" is actually a number of frames at 25fps
  # multiply the set value (in seconds) by 25
  frames = delay.to_i * 25

  debug "LinuxCapturer: calling out to mpv to capture image"
  # mpv's output is ugly and useless, let's throw it away
  _, r, _ = Open3.popen3("mpv -vo=image:format=jpg:outdir=#{tmpdir} #{capture_device_string} -frames #{frames} tv://")
  # looks like we still need to read the output for something to happen
  r.read

  # the below SHOULD tell FileUtils actions to post their output if we are in debug mode
  include FileUtils::Verbose if logger.level == 0

  debug "LinuxCapturer: calling out to mpv to capture image"
  FileUtils.mv(tmpdir + "/%08d.jpg" % frames, snapshot_location)
  debug "LinuxCapturer: cleaning up"
  FileUtils.rm_rf( tmpdir )
end
capture_device_string() click to toggle source
# File lib/lolcommits/capture_linux.rb, line 3
def capture_device_string
  @capture_device.nil? ? nil : "-tv device=\"#{@capture_device}\""
end