FON2303D+openwrtで、UVCカメラのパンチルト

  • SSS
  • 2016/03/04 19:28

こんにちは。UVCカメラOrbitAFの記事を拝見しました。
偶然ですが、私もOrbit AFとFON2303D(openwrt14.07)を所有しています。
FONは発売当時、新品を購入したのち死蔵させたものを再活用しました。

所有の畑の植物を観察するため屋外へ、Orbit AFとFON2303Dを設置して、
防雨対策を施した箱に格納しました。motion-jpegの動画配信と、
jpg静止画の1分ごとの記録で、4ヶ月間、安定して動いています。

ネットワークはopenwrtならではの構成で、WDSのApとClientで
離島として接続しました。これも予想に反して安定しています。

Orbit AFとFON2303Dとをつなぎ、opkgでmjpg-streamerをいれてカメラ部は完成です。
httpのport8080で、いつでも外から映像を見られるようになりました。
配信できた解像度は960x720で、色味もよく、鮮明です。

mjpg-streamerを採用した理由ですが、動き検出つきのmotionを使う場合、
Livingstonさんの書かれたとおり負荷が高く、ほかの処理に影響が出たためでした。
私の場合は「とりあえず全部記録しておき、あとで捨てる」の方針にしました。

#UVC
opkg install kmod-video-uvc libwebcam uvcdynctrl

これを入れると、OrbitをFON2303Dに接続した状態で、パンチルト制御ができます。

シェル上で、首振りは以下のようなコマンドでできます。
uvcdynctrl -d video0 -s 'Tilt (relative)' 1024

/etc/init.d/mjpg-streamer enable
/etc/init.d/mjpg-streamer start
これで、電源を通電すれば全自動で、mjpg-streamerでパンチルト可能な映像配信が
スタートします。停電などで電源を突然失っても、手動の操作なしで
自動復帰するため、この構成で落ち着きました。

なお、映像の記録の担当は、ほかのopenwrt機をつかってcurlで保存しています。

映像のリアルタイムな閲覧はAndroid端末でtinyCam Monitor PROを使用しています。
このアプリは、カメラのサポートが多数あり、Motionやmjpg-streamerも
あります。mjpg-streamerを選択すると、パンチルトや、ライトのon/off、
AutoFocusのやり直しを簡単に制御できて重宝します。

無料版でも、カメラの同時閲覧数に制限があるなどで、基本は動きますので、
もし汎用的なカメラビュワーを検討中でしたら、おすすめです。


コメント

    • 1.Livingston
    • 2016/03/04 21:46

    いつも情報ありがとうございます。

    今回の情報もなかなか凄いですね!
    OpenWrt で監視カメラを動作させるには、やっぱり motion では苦しいのですね。mjpg-streamer の方が良好に動作しているようであれば、私も早速試してみたいと思います。

    動体検知機能の motion をいろいろ調整してみるのですが、検知して欲しいものを検知せずに、検知しないはずのものを検知するというどうしようもない癖があって、全部撮影で必要な部分を切り取るのも有効な手段のようですね。

    またカメラのパンとチルトの操作方法も伝授していただき大変感謝します。これも参考にします。

    いつも本当にありがとうございます。

    • 2.SSS
    • 2016/03/05 10:28

    そうなんですよ。motionはルーターのSoCに対して負荷が高いんですよね。
    どれだけCPUを使うのか、atomN270のx86機にopenwrt15.05を仮想でなくネイティブにいれて
    試してみました。この環境では、カメラ解像度は1280x960などカメラ仕様の上限まで
    高く設定できました。topコマンドでCPUをみると、ほぼ天井でした。
    非力なルーター機で動作が厳しいのは、納得な結果でした。

    openwrt+カメラ、というテーマで、私の中での課題は、

    ・カメラについているマイクを活用し、音声ファイルとして取得をしたい
    ・1台のopenwrt機で複数台のカメラ稼働を試したが、問題がある

    この2つを、今後解決したいと考えています。
    前者は、たぶん方法があるのでしょうが、事例が少ないようで、
    そのものズバリな情報は見つけられませんでした。

    後者は、1台のopenwrt機で2台以上のUVCカメラの同時稼働です。
    動き検出のmotionでなくmjpg-streamerならCPUリソースは足りるようです。

    mjpg-streamerでUVCカメラを複数台動かすには、特殊な儀式が必要です。
    2台つないで配信用portと/dev/video0,1,2をずらしただけでは、互いの映像が
    部分的に混じった、崩壊したjpg画像が出る症状となりました。

    「Multiple webcams streaming with mjpg-streamer」で検索すると、
    openwrtで複数台の設定事例のマニュアルが出てきます。
    そのマニュアルどおり設定ファイルを整備すればできるはずですが、
    どこかで間違えたのか、2台目以降の映像が出てくれませんでした。

    なお、パンチルトは二の次で、Logicool C270 など典型的な固定UVCカメラを使って、
    複数台の配信を実現したいのですが、私には、これすらできませんでした。
    1台だけなら、あるいは複数つないで/dev/videoXを切り替えて1台ずつの稼働なら
    安定して動きます。

    Livingstonさんの環境で、複数台のカメラを接続するタイミングがありましたら、
    ぜひ検証をお願いしたいです。長々とスミマセンでした。

    • 3.Livingston
    • 2016/03/05 22:37

    >>2
    いろいろと研究をなさっていらっしゃるのですね。毎度感心させていただいております。

    しかし監視カメラ関係については随分と先に進んでいらっしゃるようで、勉強させていただいている状態です。私も関心のある部分は、後追いで確認してみたいと思います。

    特に複数台のカメラ設置の件です。すでに問題点の洗い出しまでさなって頂いているので、その後を引き継げるような結果が得られればよいのですが・・・。

    今後もご助言をよろしくお願いいたします。