Sha256: 9093906117109065bf8d13a5d36ab54291745c2af1cf0eee3bd4c8105ccb0cb5
Contents?: true
Size: 1.44 KB
Versions: 3
Compression:
Stored size: 1.44 KB
Contents
# -*- encoding : utf-8 -*- module Lolcommits class CaptureLinux < Capturer MPLAYER_FPS = 25 def capture_device_string @capture_device.nil? ? nil : "-tv device=\"#{@capture_device}\"" end 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 mplayer, but a number of frame # mplayer's "delay" is actually a number of frames at 25 fps # multiply the set value (in seconds) by 25 frames = delay.to_i * MPLAYER_FPS debug 'LinuxCapturer: calling out to mplayer to capture image' # mplayer's output is ugly and useless, let's throw it away _, r, _ = Open3.popen3("mplayer -vo jpeg:outdir=#{tmpdir} #{capture_device_string} -frames #{frames} -fps #{MPLAYER_FPS} tv://") # looks like we still need to read the output for something to happen r.read debug 'LinuxCapturer: calling out to mplayer to capture image' # get last frame from tmpdir (regardless of fps) all_frames = Dir.glob("#{tmpdir}/*.jpg").sort_by do |f| File.mtime(f) end if all_frames.empty? debug 'LinuxCapturer: failed to capture any image' else FileUtils.mv(all_frames.last, snapshot_location) debug 'LinuxCapturer: cleaning up' end FileUtils.rm_rf(tmpdir) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lolcommits-0.5.7 | lib/lolcommits/capturer/capture_linux.rb |
lolcommits-0.5.6 | lib/lolcommits/capturer/capture_linux.rb |
lolcommits-0.5.5 | lib/lolcommits/capturer/capture_linux.rb |