Linux で Logicool の QV-31HS を使って静止画のライブカメラシステムを構築しました。
必要なソフトウェアとインストール方法
使用するディストリビューション
Debian GNU/Linux 3.0(Woody) および 3.1(Sarge) での設定例です。他のディストリビューションでは若干異なることもあります。
xawtv
QV-31HS はビデオデバイスとして認識されます。ビデオデバイスを使用するにはカーネルで Video For Linux が有効になっている必要があります。 Debian 標準のカーネルでは有効になっているはずです。そして、ビデオデバイス (QV-31HS) から画像として保存するソフトウェアとして webcam を使用します。 ちなみに Debian では webcam というパッケージが存在しますが、他のディストリビューションでは xawtv というパッケージに webcam が含まれています。 webcam は静止画像専用ですが、 xawtv を使えばビデオデバイスからの出力を動画として X Window System で表示することができます。
Debian でのインストールは簡単です。以下のように apt-get でインストールできます。 X Window System を使用しない環境や、静止画しか利用しないのであれば、 xawtv は必要ありません。
# apt-get install webcam
qc-usb
QV-31HS のドライバとして qc-usb を使用しました。まずは QuickCam Express Driver から qc-usb をダウンロードします。
ビルドの際、使用しているカーネルのソースが必要になります。 Debian 純正のカーネルを使用しているのであれば、同じバージョンの kernel-header をあらかじめインストールしておきます。
準備が整ったら以下のようにインストールします。
$ cd qc-usb-0.6.1
$ make clean
$ make all
# make install
Debian Woody で試したところ、 make all でエラーが出て終了してしまうことがありました。 README によると、 LINUX_DIR でカーネルソースの場所を指定するとよいようです。次のようにソースの場所を指定して make all を実行すればうまくいきました。
最初は手動でモジュールを読み込みます。
起動時に自動で quickcam を読み込むには /etc/modules に quickcam という行を加えます。
カーネルを入れ換えた場合、もう一度ドライバをインストールしなければなりません。
ビデオデバイスの使用を許可する
Debian ではまだこの状態では一般のユーザで /dev/video0 への接続が許可されていません。以下のように /etc/group を編集します (vigr を実行します) 。
33 行目あたりにある video で始まる行の最後に使用するユーザ名を入力します。
video:x:44:ユーザ名
過去に Red Hat Linux 9 と Vine Linux 2.6 で試したときはこの作業は必要ありませんでした。ディストリビューションによってアクセス権が異なるようです。
webcam の設定
静止画用の webcam を使って定期的に画像を保存できるようにします。
webcam の設定
webcam の設定ファイルは ~/.webcamrc です。 .webcamrc のサンプルを以下に掲載します。
[grab] device = /dev/video0 text = %Y-%m-%d %H:%M:%S width = 320 height = 240 quality = 50 archive = /PATH_TO/live_%Y%m%d%H%M%S.jpg delay = 10
上の例では device は /dev/video0 となっています。他にビデオデバイスの存在する環境では /dev/video1 のように番号が異なる可能性があります。また、 archive (保存するファイル名) に日時を含めると、 webcam を起動中、ファイルがたまり続けます。これを有効に活用し、古いファイルを削除する方法はライブカメラの静止画像管理スクリプトにまとめてあります。
- [grab]
- grab セクションでは撮影した画像をローカルに保存する設定を行います。
- device
- ビデオデバイスを指定します。
- text
- 画像左下に文字を挿入する場合のフォーマットを指定します。 %Y: 年、%m: 月、%d:日、%H:時、%M:分、%S秒
- width
- 画像の横サイズ。
- height
- 画像の縦サイズ。
- quality
- JPEG の品質。
- archive
- 保存先のパスとファイル名。ファイル名には %Y、%m 等が使用できます。
- delay
- 画像を保存する間隔。 10 なら 10 秒おきに画像を保存します。
FTP セクションについて
ftp セクションでは撮影した画像を外部の FTP サーバへ転送するための設定を記述します。自宅サーバの場合、他へ転送する必要がありませんので、先ほどの例のように ftp に関する設定を記述しないこともあると思います 例えば撮影用 PC と Web サーバ用 PC が異なる場合でも NFS で共有ディレクトリを用意すれば FTP 機能を使う必要はなくなります。最近のバージョンでは ftp セクション自体を記述しなくても動くのですが、古いバージョンでは ftp セクションが必須の場合があります。もし grab セクションだけではエラーが出てしまうときは、以下のように必要最低限の ftp セクションを追加します。
[ftp] dir = . local = 1
webcam の実行
以下のように実行します。
もしも /dev/video0: No such file or directory
のように表示され、デバイスが見つからないようであれば、次のようにビデオデバイスを作り、適切なパーミッションにします。
# chgrp video /dev/video0
# chmod g+w /dev/video0
ls -l の結果が次のようになっていれば利用できると思います。
crw-rw-r-- 1 root video 81, 0 Jan 31 16:06 /dev/video0
撮影のたびにターミナルにログが表示されてうっとうしいかもしれません。以下のようにログの出力先を指定すればターミナルには表示されなくなります。保存しないなら出力先を /dev/null にすればよいでしょう。
archive で指定した場所に画像が保存されていれば成功です。屋外にカメラを設置した場合は webcam 起動直後、真っ白の画像が撮影され続けることがあります。しばらく待てば徐々に映ってきます。
終了させたいときは kill か killall を使います。
参考文献
- Linux 2003 ネットワークサーバ構築ガイド (アスキー)