2015年
12月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2015-12-27 rubyでwebcamera

_ Debianのhornetseye

webカメラの画像をrubyから扱う必要があり、どのようにすれば良いかを調べていたら、hornetseyeというものを使うと比較的簡単にできそうなので、やってみた。スズメバチの目か。まず、webカメラを扱うためのhornetseye-v4l2と、画面に表示するためのhornetseye-xorgをインストールする。
sudo aptitude install ruby ruby-dev g++
sudo aptitude install linux-libc-dev libswscale-dev libboost-dev
sudo gem install hornetseye-v4l2
sudo aptitude install xserver-xorg-dev libxv-dev libxpm-dev libgl1-mesa-dev libglu1-mesa-dev libswscale-dev libboost-dev
sudo gem install hornetseye-xorg
ここまではすんなり行って、こんな感じでカメラの画像を表示することができるようになる。
require 'rubygems'
require 'hornetseye_v4l2'
require 'hornetseye_xorg'
camera = Hornetseye::V4L2Input.new('/dev/video0'){|modes|
  modes.each_with_index { |mode,i| puts "#{i + 1}: #{mode}" }
  modes[ STDIN.readline.to_i - 1 ]
}
Hornetseye::X11Display.show { camera.read }
次は、それをファイルに保存するために、hornetseye-ffmpegをインストールする。これには、ffmpegを予め入れておく必要があり、そのためにdeb-multimediaをaptに加える。/etc/apt/source.listに
deb http://www.deb-multimedia.org jessie main non-free
deb-src http://www.deb-multimedia.org jessie main non-free
を加えて、
sudo aptitude update
sudo aptitude install deb-multimedia-keyring
sudo aptitude update
sudo aptitude install ffmpeg
とする。そして、いよいよhornetseye-ffmpegのインストールである。
sudo aptitude install libavformat-dev libswscale-dev libboost-dev
sudo gem install hornetseye-ffmpeg
これで、動画の保存もできるようになった。
require 'rubygems'
require 'hornetseye_v4l2'
require 'hornetseye_xorg'
require 'hornetseye_ffmpeg'
width,height=100,50
framerate=8
camera = Hornetseye::V4L2Input.new('/dev/video0'){|modes|
  modes.each_with_index { |mode,i| puts "#{i + 1}: #{mode}" }
  modes[ STDIN.readline.to_i - 1 ]
}
output = Hornetseye::AVOutput.new 'test.avi',
  4000000, width, height, framerate, 1, Hornetseye::AVOutput::CODEC_ID_MPEG4,false
Hornetseye::X11Display.show {
 img=camera.read 
 a=img.to_ubytergb
 b=a[0 ...  width, 0 ... height]
 output.write_video img
 b
}
何か、エラーが出ているけど、動くからいいか。