gnu/linux で ウェブカメラ(web camera, webcam)を接続して使ってみるテスト。

  • このエントリーをはてなブックマークに追加
  • Pocket

先のエントリで書いたようにHDDが熱でぶっ飛んだので、どこかから代替HDDをぶっこぬいてきて、それにubuntu 10.04 LTSをクリーンインストールしました。
で、webcamを3台つないで、web serverにアップロードしたいわけです。

まず、ちょっと、動作確認したい。
cheeseというgnomeソフトがいい。チーズ!って遊べる。これで/dev/video0, /dev/video1, /dev/video2の写りを確認する。解像度を確認する。悪くない。
camoramaはダメ、古い。エラーがでて終わり。カメラ自体も古いんだけどねドライバがどうとかの問題らしい。
fswebcamはコンソールで走る静止画キャプチャソフトであるが、シンプルでよい。

次はwebcamというソフトをつかって、キャプチャ&FTPアップロードである。これはコンソールからごりごりやるソフトである。
man webcamをみて、そのままコピペしよう。
まずは一つのカメラだけで。


[grab]
       device = /dev/video0
       text = "webcam1 %Y-%m-%d %H:%M:%S"
       archive = webcam1.jpg
       #infofile = filename
       fg_red = 255
       fg_green = 255
       fg_blue = 255
       width = 640
       height = 480
       delay = 5
       wait = 1
       #input = TV
       #norm = pal
       rotate = 0
       top = 0
       left = 0
       bottom = -1
       right = -1
       quality = 75
       trigger = 0
       once = 0

[ftp]
       host = yuri
       user = boo
       pass = boo
       dir  = /woo/
       file = webcam.jpg
       tmp  = uploading.jpeg
       passive = 1
       debug = 0
       auto = 0
       local = 0
       ssh = 0

無事キャプチャ -> ftpでアップロードとできているようです。6-8秒ごとに。
ssh = 1
とするとパスワードを聞かれる。ので、ssh にするなら、passフレーズなしの公開鍵認証とかでしょうか。そうすればtext中にパスを入れるのを防げます。
(ssh-keygenでパスフレーズなしの一対の鍵をつくって、公開鍵を接続相手のauthorized_keysに追加しとくということ。)

複数(3つ)カメラを使う場合は、同時にカメラに接続できないようでした。ドライバ一緒だからか。衝突する、取得できないとかいうエラーがでる。one shotモードにして、cronで1分おきに起動して
1カメ:キャプチャ->ftp
2カメ:キャプチャ->ftp
3カメ:キャプチャ->ftp
という方法でもいいかと思ったけど、ftpしまくるのが相手にわずかながらも負荷かかるので良くない!と親切に思ってべつの方法を考える。そこで、シンプルなfswebcamの登場だー。

cronで、以下のように設定してみる。
fswebcamでそれぞれのカメラにおいてjpgキャプチャして、最後にそれをscpする。前述のように公開鍵を向こうの.ssh/auth somethingに挿してあるので、パスワードいらずにcronでもsshコネクションできる。
crontabでfswebcamコマンドなどを別の項目にすると、やはりfswebcamコマンドが衝突することがあるので、一項目(一行)に押し込んだ。間にはsleepコマンドを適宜いれた。(テストなので2コ分しかコマンドいれてないですが。)

crontab中のアンパサンド%は予約されているので、エスケープせねばならないことに気をつけてください。

$ crontab -l


MAILTO=""

# m h  dom mon dow   command
* * * * *  fswebcam -d /dev/video0 -D 5 -r 640x480 --font "/usr/share/fonts/truetype/freefont/FreeSans.ttf:12" -F30 --title "bath room" --timestamp "\%Y-\%m-\%d \%H:\%M:\%S(\%Z)" /home/boo/webcam/bathroom.jpg; sleep 3;fswebcam -d /dev/video1 -D 5 -r 640x480 --font "/usr/share/fonts/truetype/freefont/FreeSans.ttf:12" -F30 --title "lavatory" --timestamp "\%Y-\%m-\%d \%H:\%M:\%S(\%Z)" /home/boo/webcam/lavatory.jpg; sleep 3;scp -p /home/boo/webcam/*.jpg boo@fishserver:/www/boo/webcams/

これでwebcam every minuteとして動くようになりました!
ばんざいばんざい。


アップロードされた画像とカメラども

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す