FreeBSD Daily Topics
2010年1月25日 ≪注目≫Video4BSD登場 - Video4Linux Webカメラ対応
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ファイルに次の設定を追加します。
リスト /boot/loader.confまたは/boot/loader.conf.localファイルに追加する設定
video4bsd_load="YES"/dev/videoNおよび/dev/video_daemonNデバイスファイルにアクセスできるように,/etc/devfs.rulesファイルに次の設定を追加します。ルールセットの部分([localrules=10])は使っているものへ適宜変更してください。なにも設定していなければこの設定を追加します。
なお,この設定では,Webカメラを利用するユーザはoperatorグループに所属している必要があります。それ以外のユーザでも利用できるようにする場合には,パーミッションを「0666」に変更するなど必要に応じて変更します。
リスト /etc/devfs.rulesファイルに追加するパーミッション設定の例
[localrules=10] # Webcam add path 'video*' mode 0660 group operator/etc/devfs.rulesファイルのルールを適用し,さらにwebcamd(8)が起動できるように次の設定を/etc/rc.confまたは/etc/rc.conf.localファイルに追加します。ルールセットの部分([localrules=10])は使っているものへ適宜変更してください。何も設定していなければこの設定を追加します。
リスト /etc/devfs.rulesファイルのルールを適用し,さらにwebcamd(8)が起動できるように/etc/rc.confまたは/etc/rc.conf.localに追加する設定
devfs_system_ruleset="localrules" webcamd_enable="YES"ここで一旦システムを再起動するか,次のようにして手動でカーネルモジュールの読み込みと,devd(8)デーモンの再起動を実施します。
手動でVideo4BSDカーネルモジュールを読み込みdevd(8)を再起動する方法
# kldload video4bsd # service devd restartWebカメラを差し込むと自動的にwebcamd(8)デーモンが起動するようになります。自動的に起動してこない場合には,次のように手動で起動します。この例では/dev/ugen7.2にWebカメラがささっていることになります。ugenは実際にWebカメラがささっているものを指定してください。
「tail -f /var/log/messages」のようにログファイルを監視しながらWebカメラの挿抜を実施すれば,どのugenファイルが使われているか確認できます。
webcamd(8)を手動で起動する方法
# service webcamd start ugen7.2Webカメラが差し込まれた段階での動作は/usr/local/etc/devd/webcamd.confファイルに記述されています。このファイルを編集すればUnknownデバイスとして認識されるWebカメラでも自動的にwebcamd(8)を起動できるようになります。ここでpwcview(1)を起動すると,Webカメラの撮影している内容が画面に表示されるようになります。
pwcview(1)を起動
% pwcviewVideo4Linuxに対応したアプリケーションは再度ビルドすることで,FreeBSD Video4BSDの機能を利用できるようになります。たとえばVLCを再構築するとVideo4BSD経由でWebカメラの映像を補足できるようになります。
CheeseでWebカメラを使うには,Gstreamerの若干の調整と再構築が必要です。current-mlに報告された内容によれば,今回追加された機能はVideo4Linuxを利用するすべてのアプリケーションで利用できるようになるとされています。なお,LinuxバイナリであるSkypeからは利用を確認できませんでした。
FreeBSD Daily Topics
- 2010年1月27日 BSD magazine 無償化,オンラインで毎月提供へ
- 2010年1月25日 ≪注目≫Video4BSD登場 - Video4Linux Webカメラ対応
- 2010年1月22日 BSDライセンス版bc(1)およびdc(1)をベースシステムへマージ
- 2010年1月19日 ラッパコマンドservice(8)追加
- 2010年1月18日 ≪注意≫utmp(5)からutmpxへ切り替え - Ports Collectionからインストールしたアプリケーションは個別に対処が必要
- 2010年1月12日 Softupdatesジャーナル機能のテスト呼びかけ
- 2010年1月8日 セキュリティアドバイザリZFS,ntpd(8),bind(8)および不具合通告FreeBSD-8.0
- 2010年1月7日 OpenJDK7 Ports Collectionに登場,VirtualBox 3.1.2 portのテスター募集
- 2010年1月6日 FreeBSD 6.3,セキュリティサポート終了間近
- 2010年1月5日 SATA on ATAとAHCI to CAMの性能比較

