Howto

UVC対応Webカメラを使用してディスプレイに動画像を表示する

UVC(USB Device Class)に対応したWebカメラを使用して、ディスプレイに動画像を表示する方法を紹介します。UVC対応カメラは、Qcam Orbit AF(Logicool製)を使用します。また、動画像の表示にはuvcviewを使用します。

おおまかな手順は下記のようになります。

  1. uvcviewをクロスコンパイルする
  2. UVC対応カメラを使用可能なDebian GNU Linux (etch)を用意する
  3. 実行する

なお、本 Howto では、以下の環境を想定しています。

1. uvcviewをクロスコンパイルする

uvcviewのクロスコンパイルには、libgtk2.0-devが必要です。libgtk2.0-devは多くのパッケージに依存しているため、一つ一つクロス開発用にインストールするのは大変です。そこで、libgtk2.0-devを含んでいるArmadillo-500 FX用の開発環境一式をインストールしてしまいます。

/etc/apt/sources.listに下記の1行を追加してください。

deb http://download.atmark-techno.com/debian etch/

以下のコマンドで、Armadillo-500 FX用の開発環境一式がインストールされます。

[PC ~]$ sudo apt-get update
[PC ~]$ sudo apt-get install a500fx-development-environment

uvcviewのソースコードを取得します。

[PC ~]$ wget http://www.nurs.or.jp/~ogochan/hack/uvcview-20070607.tar.gz
[PC ~]$ tar xzvf uvcview-20070607.tar.gz

クロスコンパイルします。

[PC ~]$ cd uvcview-20070607
[PC ~/uvcview-20070607]$ ./configure --host=arm-gnu-linux CC=arm-linux-gnu-gcc
[PC ~/uvcview-20070607]$ make
[PC ~/uvcview-20070607]$ ls src/uvcview
src/uvcview

srcディレクトリの下に、uvcviewが作成されます。

2. UVC対応カメラを使用可能なDebian GNU Linux (etch)を用意する

Armadillo-500 ソフトウェアマニュアルを参照して、コンパクトフラッシュカードにDebian GNU Linux (etch)をセットアップしてください。

カーネルは、video4linux2が有効になっている必要があります。コンパクトフラッシュカードのパーティション1の/boot/Image.gzには、UVC対応Webカメラを使用してストリーミング配信をおこなうで作成したカーネルを、名前を変更して保存してください。

また、uvcvideoデバイスドライバも必要ですので、UVC対応Webカメラを使用してストリーミング配信をおこなうと同じ手順でuvcvideo.koを用意してください。

準備ができたら、Armadillo-500にディスプレイ、USBキーボード、USBマウスを接続して、Debian GNU Linuxを起動してください。USBポートが足りなくなりますので、USBキーボードとUSBカメラはUSBハブ経由で接続するとよいでしょう。

Debian GNU Linuxが起動できたら、X windowシステム及びlibgtk2.0をインストールします。

armadillo:~# apt-get update
armadillo:~# apt-get install x-window-system-core
armadillo:~# apt-get install libgtk2.0-0

手順1. で作成した、uvcvideo.ko及びuvcviewをftp等でArmadillo-500にコピーしてください。uvcvideo.koはinsmodしておきます。

armadillo:~# insmod uvcvideo.ko

uvcvideo.koをinsmodしたあとに、UVC対応ビデオカメラをUSBポートに接続すると、カメラが認識されます。

usb 1-1: USB disconnect, address 5
usb 1-1: new high speed USB device using fsl-ehci and address 6
usb 1-1: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (046d:0994)
uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
input: UVC Camera (046d:0994) as /class/input/input8

3. 実行する

まずは、Xを起動します。VGAコンソールで、以下のコマンドを実行してください。

armadillo:~# startx

ウィンドウマネージャをインストールしていないので、X serverが起動したあと、xtermのみが起動します。

xtermで、以下のコマンドを実行すると、uvcviewが起動されカメラで撮影している画像が画面に表示されます。

armadillo:~# ./uvcview -cam /dev/video0 -fps 5 -width 352 -height 288

dmesgに下記のように表示されて、画面が黒くなったり、表示が安定しない場合は、fpsや解像度の指定を変更してみてください。

uvcvideo: Failed to resubmit video URB (-45).

4. 関連情報

本Howtoは、Armadillo-500に適用できます。