P1050789.JPG記事の集約性や過去記事を更新したときに通知をだせるのにちょうどいいということで、ちょっと前からLinux関連記事を@wikiの方にまとめています。

サイトはこちら:snagplaces on @wiki

今後予定しているDell Studio HybridにLinuxやXenServerを入れる記事等もwikiに掲載していきます。

製品レビューや日記は引き続きこちらを使いますので、暇な方はRSS登録でもしてください。

※Linux関連記事についてはsnagplaces on @wikiにまとめていますので、そちらをご参照ください。

この記事自体はだいぶ前に書いたものですが、投稿するのをわすれてました。

mjpg-streamerは、一部独自送信方式があるものの、UVCカメラを使ったストリーミング配信ができます。

ダウンロードするときにuvc-streamerとmjpg-streamerの2種類がセットで来ますが、メインで使用するのはmjpeg-streamerでよさそうです(mjpg-streamerはuvc-streamerの後継らしい)。

mjpegとあるだけにjpeg変換ができないと使えないので、あらかじめlibjpeg-develはインストールしてください(libjpegだけでは駄目、yumで拾える)。

mjpg-streamerのダウンロードとコンパイル

mjpg-streamerのダウンロード(svnなので常に最新版です)

# svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer

コンパイル

# cd mjpg-streamer/mjpg-streamer/
# make

ちなみに、今回はmake installはしていません。installしても問題はありませんがプラグインのパスがうまく通っていないので結局フルパスで設定することになります。

mjpg-streamerの使用

mjpg-streamerを使用するには以下のコマンドを入力します。表示の確認にはブラウザを使いますが、別途Apacheを用意する必要はありません。

# ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y" -o "./output_http.so -w ./www -p 8080 -c hoge:hoge"
(# ./mjpg_streamer -i "入力側 -d 使用するデバイス" -o "出力側 -w Web表示用のファイル置場 -p ポート -c ユーザ名:パスワード")

README等を参照して適当にいじってわかったオプションは以下の通り。
-hで出る設定例で「-i "input_uvc.so --help"」とかやってもプラグインのヘルプは出ませんでした。これがわかれば設定の幅が広がるんですけどね。

mjpg_streamer
    -b:バックグラウンドとして起動(終了するにはpsでID確認してkill)
    -i:入力側の指定(""で囲む)
    input_uvc.so ※インストールした場合は/usr/local/lib/input_uvc.so
        -d:UVCデバイスの指定
        -y:不明、指定しないとエラーが出る
        -r:画面解像度(縦x横)UVCデバイスによって設定可能な解像度があるので注意(luvcview等で有効解像度を確認すること)
        -q:画像クオリティ(1~100)
   -o:出力側の指定(""で囲む)
   output_http.so ※インストールした場合は/usr/local/lib/input_uvc.so
       -w:Webで表示する時のテンプレート ※インストールした場合は/usr/local/www
       -p:使用ポート
       -c:認証ユーザ名とパスワード(ユーザ名:パスワード)

通常の使用ポートに8080を使用するので、Linuxファイアウォールでポート8080を許可するようにしましょう(HTTPの解放は80番だけ)。

ブラウザ上では以下のアドレスでアクセスするとデモページが表示されます。

http://ドメイン名:8080

ちなみに、ポートが明示できるためhttpのポート(80番)が指定できますが、Apacheが起動しているとポートの競合を起こして使用できないので、80番ポートを使用してmjpg-streamerを起動するときはhttpdのサービスを切っておきましょう。

ストリーミングの表示形態としては、5種類の方法が用意されています。

  • 一枚画像のみ
  • サーバプッシュ方式で画像の連続転送
  • Javaアプレット
  • Javascriptを使用して連続的に画像を読み込む
  • メディアプレイヤー等を使用しての配信

サーバプッシュ方式のはNetscape時代から使用されている技術なようで、IEでは表示できませんがiPod TouchのSafariでは表示できます。ただ、結構CPUを食うようなので他の作業をしたりとかはちょっと厳しいかもしれません(LOOX Rで表示させてると常時60%もCPUを使用してました)。Javascriptの方式は汎用性がありますがコマ落ち画像になります。Javaアプレット のほうはサーバプッシュのより若干負荷が軽いので無難なのはJavaアプレット方式でしょうね。

エラー対策

mjpg-streamerを構築する際、いくつかのエラーがありましたので、その対策法を載せておきます。

エラー例1:プラグインが見つからない

MJPG Streamer Version.: 2.0
ERROR: could not find input plugin
       Perhaps you want to adjust the search path with:
       # export LD_LIBRARY_PATH=/path/to/plugin/folder
       dlopen: input_uvc.so: cannot open shared object file: No such file or directory

対応:Input側のプラグインファイルなどをちゃんと明示(フルパス等)しましょう。

エラー例2:V4L2が動かない

MJPG Streamer Version.: 2.0
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 5
 i: Format............: MJPEG
Unable to set format: Invalid argument
 Init v4L2 failed !! exit fatal
 i: init_VideoIn failed

対応:Input側のデバイス指定で「-y」を付加しましょう。/dev/video0だけではダメなようです。もしくは別パッケージがデバイスを使用していたときもこのエラーが出ます。

その他のエラー対応例は「MJPG-Streamer › Wiki › ubuntuusers.de」に詳しく載ってます。

番外:JavaApplet版ビューアCambozolaをアップデートしてみる

mjpeg-streamerが持つCambozolaはバージョンが0.68で、これを配布しているサイトを見に行くと0.70になってました。

どれほど機能が向上しているのかわかりませんが、試しにアップデートしてみます。

Cambozolaのダウンロードとインストール

# cd www/
# wget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz
# tar -zxcf cambozola-latest.tar.gz
# cp cambozola-0.70/dist/cambozola.jar cambozola.jar

こんだけ。見た目も使用感も特に変わりませんでした。

音声が拾えないのがネックですが、設定の幅が広く使い勝手はなかなかよいです。Cambozolaに至ってはLa fonera2.0のWebカメラプラグインでも採用されましたしね。

liveusb-creatorはUSBメモリにFedoraのLiveCD版をインストールできるソフトウェアです。前から存在は知っていたのですが、USBメモリの相性なのかうまくインストールされなかったので今まで放置してました。

ダウンロード先:liveusb-creator - Trac

liveusb-creatorから直接LiveCDのisoをダウンロードできますが、なぜか転送が異様に遅いので、「Fedora Project」の「Fedora デスクトップ ライブメディア」からダウンロードして指定してやった方が早いです。

インストール手順

liveusb-creatorはWindows版とLinux版がありますが、今回はWindows版を使用します。

  1. liveusb-creatorのダウンロード、解凍
  2. Fedora Projectから「Fedora デスクトップ ライブメディア」をダウンロード
    ※例:Fedora-11-x86_64-Live.iso
    ※32bit用は「i686」、64bit用は「x86_64」を選んでください。
  3. liveusb-creatorを起動
  4. 「Browse」をクリックし、ダウンロードしたISOファイルを指定
  5. 「Target Device」にインストールしたいメディアを選択
    ※リムーバブルデバイスとして認識しているもののみ。SDカードにもインストールできるが認識はメディアリーダーに依存。
  6. 「Persistant Storage」に保存可能領域を指定
    ※LiveCDの容量が大体700M程度なので、その容量を想定して指定すること(2Gメモリなら2048-700=1348MBぐらいの範疇で設定)。
    ※目いっぱい指定してもいいみたい。
  7. 「Create Live USB」をクリックして作成

ライブメディアにはX Windowの違いがあり、通常版(Gnome)とKDE版があります。見た目で選ぶならKDEですが、日本語ロケールの設定がどうもうまくいかなかったのでGnome版でやりました。こちらであればログイン時に言語を選べるためお手軽です。

試しにLOOX R上で起動してみましたが、それほど速くないUSBメモリ(Buffalo RUF2-P8G-WH)であるにも関わらずVistaより高速に起動し、動作も思ったほど重くなく、NTFSアクセスは安定して使えるしBluetoothまでもすんなり認識してました。ネットワークの認識とかにわざわざ端末を開く必要はなかったです。あとはネットワークプリンタへのアクセスが手軽にできればデスクトップ利用においては十分ではないでしょうか。

いくらお手軽とはいえ昔の機器はUSB起動に対応していないため万能というわけでもありませんが、とりあえずLinuxを実用レベルなのか体験したい、HDDの挙動が怪しいからこれを使って救出できるかどうか試したいなど、様々な利用が想定できます。

それにしても、いつの間にかGnomeはかなり進化してますね。一部のネットブックに採用される(Ubuntuですが)などOS選択肢の一つとしてかなり有力になっていることもうなずけます。

Logicool Qcam Orbit AF【この記事は09/10/21に書きました】

下手に撮影にこだわって大失敗した典型例。でも他のサンプルがないのでこのままいきます。

Qcam Orbit AFはオートフォーカスとソフトウェア制御によるパンチルトに対応したWebカメラです。

製品情報はこちら:Logicool > ウェブカメラ+テレビ電話 > ウェブカメラ > Qcam® Orbit AF

今までPCから制御できるミサイルランチャーにWebカメラを付けたりしていましたが、専用品とのコストパフォーマンスを比較したらこの製品位しかないというのが現状です。

UVCに対応しているので、PCに挿せばすぐにWebカメラとして使用できますが、パンチルト等の制御は別途制御用のソフトウェアから行います。

実際の使用感ですが、別途ドライバを入れなくても屋内の表示が非常に明るく、部屋の電気を微灯にしてもなんとなく部屋の様子がわかるくらい。カールツァイスのおかげかどうかは分かりませんが、かなり高性能のようです。パンチルトの動作は一定の幅でカリカリと動き、安っぽいような感じを受けますが、これは後述のリモートでの操作時にちょうどいいことがわかります。

付属機能の一つにフェイストラッキングというものがありますが、精度はよくありません。あと9インチスタンドとかいうのは絵的にアレなので使っていません。

ちょっと暗めの部屋でも明るく映り、ソフト制御でカメラをパンチルトできることが目的であれば、十分お勧めできる製品かと思います。

さて、CentOSサーバに接続した際の動作ですが、UVCドライバとMJPG-Streamerが入っていればUSB端子に挿すだけで使えます。MJPG-Streamer上でのパンチルトも問題なく動きました。ただし、GainやContrastといった画質調整はできません。といっても無理に調整しなくてもそもそも明るくてきれいに映る製品なので、それほど気にならないかと思われます。

LinuxにQcam Orbitを使用する際に発生した問題点について、サウンドドライバが消えて音が出なくなるという現象がありました。
EeeBox B202についているサウンドドライバはIntel_HDAとALC888なのですが、この製品をつないだまま起動するとALC888のドライバが消えてサウンドが一切鳴らなくなるということがあります。

たぶんUSBサウンドドライバが上書きしてるんだろうなと思いつつ八方手を尽くして解決法を探したのですが的確なものがなかったので、とりあえず起動時にドライバ関係の処理を行うmodprobe.confを以下のように書き換えて再起動してみたところ、一応再発は抑えられました。しかしカメラを挿しなおしたりするとまたドライバが消えるので注意してください。

# vi /etc/modprobe.conf

【8行目あたりコメントアウト】
#remove snd-hda-intel { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-hda-intel

22:30現在でも降ったり止んだり。

午前中に雷で家が停電してしまい、自宅サーバのEeePCがバッテリを持っていないためこれも落ちてしまいました。幸い過電流だのは起きてないのでサーバ自体は問題なかったのですが、再起動した際にcronでyum自動アップデートを行っていたせいでカーネルのバージョンがかわり無線LANが使えなくなってました(面倒なのでバージョンチェック回避してない)。

まぁそれはいいのですが、これを機になんとなく気になっていたWebカメラ用ドライバであるGSPCAを試すことに。 試したのはLogicool QVP-61BLというもので、だいぶ前に千円ちょいで手に入れた安いものです。

GSPCAは個人的には鬼門で、昔何度か試したものの、ことごとくインストールに失敗していたのですが、今回はあっさりインストールできました。GSPCAを使用できるとv4l2に対応していないxawtvやmotionやらを使えるので便利にはなります。

導入方法は後日上げるとして、とりあえず以前使っていたバッファローコクヨサプライBSW20KM01Hとの結果は以下のような感じに。

バッファローコクヨサプライ BSW20KM01H
(MJPEG-Streamer使用)
Logicool QVP-61BL
(webcam使用)
BSW20KM01H QVP-61BL

 どちらも絵が暗いですが、これはたぶん部屋があまり明るくないせいです。QVP-61BLはそれにもまして暗く、xawtvで表示させるとカメラの追従がドライバのせいか非常に遅かったです。フォーカスも手動なので使い勝手もよいとはいえません。

BSW20KM01Hは近距離に向いてないのかQVP-61BLと同じ位置にあわせると結構ボケてしまいますが、まだ明るいほうなので定点監視には向いてる感じです。ただこれはUVCにまともに対応したパッケージがMJPEG-Streamerくらいしかなく、あまり遊べません。

こう考えると、昔使っていた初代EyeToyの汎用性はすごかったんだなと。土台が平べったいので液晶などの固定には向いてませんが。とにかくGSPCAが動いたのでそのうちEyeToy2の認識を再開したいと思います。あと音声込みのストリーミングとね。

« 1>2>3>4>5>6
ページトップ

このブログについて

※Linux関連記事についてはsnagplaces on @wikiにまとめていますので、そちらをご参照ください。

当blogではLinux関連Tipsを掲載していますが、私個人の環境で動作したことを記録しているのみであり、あらゆる環境で動作確認したものではありません。
もし、このblogの記事を参考にする場合は、ほかのサイトと比較しながら利用するようお願いします。また、記事の質向上のため、内容に間違い等ありましたら該当する記事のコメント欄に指摘をお願いします。
【旧サイト】 【旧々サイト】
※そのうち統合します・・・

twitter