2008年11月01日

WebCamへの道の入り口にたつ

FreeBSDでライブカメラ、ビデオチャット、監視カメラやFlashでのカメラ使用の為の
ライブラリーとアプリを作っていく。
実は新規購入できるカメラで動くportsやドライバは無い。
プログラミング自体はゼロから叩き直すと思うけれどすでに作られた「spca」系をベースにする。

現時点でとりあえず普通に購入できる「QCAM COOL」で低速ながら監視したり静止画を撮れたりしている。
アクセス部分の改善と一般アプリで使用できる様にインターフェースを作り
最低でもライブカメラ用連続画像ないしは任意にアクセスできるメモリーへの連続レンダリングをするものを作る。
wineで動いてくれれば相当可能性は増えるはずだ。
今回のテーマよりも
UNIXプログラミングを基礎からやるか、delphi版Direct3D9のまとめ直しをして
ゲームそのものをやるのが筋だし需要があるとは分かってはいるが
どうしてもこのテーマが気にかかり頭から離れないので今月に集中的に取りかかることにした。

FreeBSDでライブカメラをやろうとした場合
「動く」とされているドライバはFreeBSD7では機能せず
「動作確実」なアプリは古いカメラにしか対応していないという状況であることを知った。

元々持っていたものも
http://mxhaard.free.fr/spca5xx.html
をみるとgspcaというlinux互換レイヤーを使ったVideo for linux準拠のもので動きそうだったが
どうにもならなかった。そこで動く可能性がありそうなスペックの
ロジテックの「QCAM COOL」 QVP-30 SVを新規に購入した。
gspcaそして同系統のpwcではv4l対応ソフトのVLCでアクセスするとランプはつくし
カメラ名は認識するのだがそこでおしまいで下手をするとリブートした。

二つともカーネルドライバなのだがエラーはソースを根本的に変えないとだめで
思うにFreeBSD6.*以前と7.*といくつかの関数の扱いが違っているためではないかと感じられた。

そこで同系統のもので日本の人が作成したspcaviewを使ってみるとこにした。
gspcaをつないでいるときセンサーはzc030xブリッジのHV7131R(c)とでていた。
これについてはQCAM COOLのdevice ID 0x08af も載っている
http://mxhaard.free.fr/spca5xx.html
と一致する。

そこでspcaviewのソースをみるとspca5xx.cで「0x08a6」の「QuickCam IM」が同じ組み合わせだったので
その部分を「0x08af」に変えてビルドしたところ/dev/ugen0の権限を書き換えるという前作業が必要だったが
動作するようになった。
spca5shotについてはコンソールでも動作するX非依存のソフトで依存がないので
参考にするにはちょうど良い。
ソースはGPLなので流用している間はGPL、作り直ししたら別のライセンスにしようと思う。

カーネルドライバであるgspcaでもやはりIDによる選別をしていたがそこではセンサーはHV7131bになっていた。
従ってHV7131Rに設定するととりあえず動くがそれが正しいという保証は今のところない。

gspcaとpwcは基本的にspca5viewとアクセス部分は大差ないはずで
V4l自体は昔作られた規格だから動かないのはカーネルがらみの仕様の変化によるもののはずだ。
というのはpwcではusb関連でのstring取得で引数が3のところを2しかないというエラーが3箇所でて
それをsizeof(第二引数)とすることでとりあえずビルドできたし
gspcaはそのもとであるlinux-kmod-compatでメモリー関連の定義がおかしかった。

間違っているところが分かればgspcaのセンサー別アクセスデータとpwcのカーネル部分で
V4l互換カメラ用カーネルドライバができるはずではないかと考えている。

また
wineは最近1.17になったので
portでソースだけダウンロードしてextractしてavicap32.dllの内容をみたところ
V4lにアクセスする方法だった。
avicap32.dllに直接カメラへのアクセスコードを記述する方が敷居は低い。
この場合Flash playerあたりが絶好のテストターゲットではないかと思っている。

今日はまだそんな程度。


ラベル:Webcam SPCA
posted by Xo_ox at 23:22| Comment(0) | FreeBSDアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。