パソンコの画面の動画を取る

画面を撮るソフトを買うお金が無かったのでテキトウにjrubyで作った。音はいらないので無しで。


capture_screen_video.rb

#!/usr/bin/env jruby
require 'java'
import 'java.awt.Robot'
import 'java.awt.Rectangle'
import 'java.awt.Color'
import 'java.awt.geom.Line2D'
import 'java.lang.System'
import 'javax.imageio.ImageIO'
import 'java.awt.image.BufferedImage'
require 'rubygems'
require 'eventmachine'
require 'fileutils'

WIDTH = 800
HEIGHT = 600

out = ENV['HOME']+'/Desktop'
out = ARGV.first if ARGV.size > 0

FileUtils.mkdir_p(out) unless File.exists? out

r = Robot.new
i = 1
EM::run do
  EM::defer do
    loop do
      img = r.create_screen_capture Rectangle.new(0, 0, WIDTH, HEIGHT)
      puts fname = "#{out}/#{i}.png"
      ImageIO.write(img, 'png', java.io.File.new(fname))
      i+=1
    end
  end
end
jruby capture_screen_video.rb ~/tmp/capture_video

で撮影開始して、ctrl+cで止めて、

ffmpeg -i ~/tmp/capture_video/%d.png -r 10 -sameq capture.mov

とかでmovに変換するといい



音付けたかったらwavファイルとかを用意して

ffmpeg -i ~/tmp/capture_video/%d.png -i sound.wav -r 10 -sameq capture.mov


あと、いらない部分が写ってたら-cropなんとかで削れる。この処理は再エンコされずに走るので速い。

ffmpeg -i capture.mov -croptop 10 -cropbottom 220 -cropright 15 -cropleft 30 -sameq cropped.mov