heads-up
- Webcam for FreeBSD, Video4BSD and Video4Linux
current - 2010年1月10日
(協定世界時) に9-CURRENTに対して実施されたコミット (r202025) および2010年1月16日 (協定世界時) にPorts Collectionに追加された一連のアプリケーションによって、 FreeBSDアプリケーションからVideo4Linuxを使ったアプリケーションが動作するようになりました。 表1 Webカメラ関連Ports port 内容 multimedia/ video4bsd-kmod /dev/ videoNおよび/dev/ video_ daemonNデバイスを提供するカーネルモジュール multimedia/ webcamd Webカメラデバイスドライバ集。ユーザランドでデーモンとして動作し、 /dev/ video_ daemonNおよびlibusbと連系してWebカメラからデータのやりとりを実現する multimedia/ pwcview Webカメラデビューア multimedia/ v4l_ compat Video4Linuxを利用するためのラッパライブラリ multimedia/ libv4l Video4Linuxヘッダファイル video4bsdカーネルモジュールを読み込むと/dev/
videoNと/dev/ video_ daemonNというデバイスファイルが生成されます。/dev/ videoNへのアクセス (mmap、 read、 write、 open、 close) は/dev/ video_ daemonNへ転送されます。 /dev/
video_ daemonNはwebcamd(8)に利用されるデバイスファイルです。webcamd(8)はWebカメラのデバイスドライバおよびlibusbを使ったデバイスとのやりとりを実施します。つまり、 /dev/ video_ daemonNへ渡ってきた処理はwebcamd(8)で処理され、 その結果が/dev/ video_ daemonN→/dev/ videoNを経て、 Video4Linuxを利用しているアプリケーションへ戻っていく仕組みになっています。今のところサポートされていないのはpoll処理です。大雑把に処理の流れをたどると次のようになります。 - Video4Linux対応のアプリケーション
- /dev/
videoN - /dev/
video_ daemonN - webcamd(8)
- libusb
- Webカメラ
- libusb
- webcamd(8)
- /dev/
video_ daemonN - /dev/
videoN - Video4Linux対応のアプリケーション
Video4Linuxに対応したカーネルモジュールとデバイスドライバとしてはすでにpwc(4)
(multimedia/ pwcbsd) がありますが、 対応しているデバイスドライバの数に限りがあり、 最近のデバイスは対応していないという状況になります。これと比べて今回新しく追加されたwebcamd (multimedia/ webcamd)は対応しているデバイスが多く、 より多くのWebカメラが利用できます。 この機能を試すには、
まず次の条件をみたすFreeBSDが必要です。 表2 Video4FreeBSD / Video4Linuxに対応したFreeBSD 2010年1月10日 (r202025) 以降のFreeBSD 9-CURRENT 2010年1月17日 (r202504) 以降のFreeBSD 8-STABLE 2010年1月16日21時
(協定世界時) 以降のPorts Collectionから次のアプリケーションやライブラリ、 カーネルモジュールをインストールします。 - multimedia/
video4bsd-kmod - multimedia/
webcamd - multimedia/
pwcview - multimedia/
v4l_ compat - multimedia/
libv4l
システム起動時にVideo4BSDカーネルモジュールを読み込ませるため、
/boot/ loader. confまたは/boot/ loader. conf. localファイルに次の設定を追加します。 /dev/
videoNおよび/dev/ video_ daemonNデバイスファイルにアクセスできるように、 /etc/ devfs. rulesファイルに次の設定を追加します。ルールセットの部分 ([localrules=10]) は使っているものへ適宜変更してください。なにも設定していなければこの設定を追加します。 なお、
この設定では、 Webカメラを利用するユーザはoperatorグループに所属している必要があります。それ以外のユーザでも利用できるようにする場合には、 パーミッションを 「0666」 に変更するなど必要に応じて変更します。 /etc/
devfs. rulesファイルのルールを適用し、 さらにwebcamd(8)が起動できるように次の設定を/etc/ rc. confまたは/etc/ rc. conf. localファイルに追加します。ルールセットの部分 ([localrules=10]) は使っているものへ適宜変更してください。何も設定していなければこの設定を追加します。 ここで一旦システムを再起動するか、
次のようにして手動でカーネルモジュールの読み込みと、 devd(8)デーモンの再起動を実施します。 Webカメラを差し込むと自動的にwebcamd(8)デーモンが起動するようになります。自動的に起動してこない場合には、
次のように手動で起動します。この例では/dev/ ugen7. 2にWebカメラがささっていることになります。ugenは実際にWebカメラがささっているものを指定してください。 「tail -f /var/ log/ messages」 のようにログファイルを監視しながらWebカメラの挿抜を実施すれば、 どのugenファイルが使われているか確認できます。 Webカメラが差し込まれた段階での動作は/usr/
local/ etc/ devd/ webcamd. confファイルに記述されています。このファイルを編集すればUnknownデバイスとして認識されるWebカメラでも自動的にwebcamd(8)を起動できるようになります。ここでpwcview(1)を起動すると、 Webカメラの撮影している内容が画面に表示されるようになります。 Video4Linuxに対応したアプリケーションは再度ビルドすることで、FreeBSD Video4BSDの機能を利用できるようになります。たとえばVLCを再構築するとVideo4BSD経由でWebカメラの映像を補足できるようになります。
CheeseでWebカメラを使うには、
Gstreamerの若干の調整と再構築が必要です。current-mlに報告された内容によれば、 今回追加された機能はVideo4Linuxを利用するすべてのアプリケーションで利用できるようになるとされています。なお、 LinuxバイナリであるSkypeからは利用を確認できませんでした。