玄関にモニタカメラを付けてみる(続編)

投稿者: | 2019年6月13日

Evaluated another video streaming software, which is written by Python, on Raspberry Pi Zero W.  Super low latency (about 0.5 seconds or shorter via Wi-Fi LAN).  Amazing software!

以前、玄関のドアスコープにカメラを付けてネット経由で監視する実験をしました。Motion、ZoneMinder、MJPG-streamer、gstreamer、VLC といろいろ試し、当時は VLC が一番良い印象でした。しかし、自分でも理由を忘れてしまったのですが、この玄関カメラはすぐに取り外してしまいました。思ったほどの安定性が得られなかったのか、いちいち VLC クライアントアプリを起動するのが面倒だったのか、あるいは玄関に張り付いた Raspberry Pi が家族に不評だったのか、いずれかでしょう。

さて。前回の「目標」を再確認してみます。

  1. 簡単に導入できること
    私は、監視カメラソフトの専門家になりたい訳ではありません。また、Raspberry Pi による動画処理は変化の早いテーマのようですから、1〜2年で世の中の動向が変わってしまっているかも知れません。
  2. 外部のサーバーに動画をアップロードしないこと
    この理由から、市販のネットカメラは対象から外しました。最近、企業からの個人情報漏洩のニュースが増えているようです。普段は自宅 LAN で見られれば十分ですし、必要ならば VPN を使えば済むことです。
  3. 低レイテンシなこと
    玄関の来客を見たい訳ですから、遅延が大きいと大切な来客(宅配便など)に失礼になりますし、こちらのアクションも遅れてしまいます。
  4. 画質がそこそこ良いこと
    上記と同様、来客の姿形くらい識別できないと意味がありません。
  5. 画像のクロップ(切り出し)ができること
    玄関のドアスコープにカメラを当ててみると分かるのですが、iPhone 6 Plus の飛び出したカメラを当ててみても、かなりの画欠けが発生します。そのため、撮影時に画角の切り出し(クロップ)ができると便利です。(ちなみに、市販の USB カメラではドアスコープにカメラレンズを近接させることができず、これは用途に合いませんでした。その点、Raspberry Pi のカメラモジュールはレンズが小さく、また先端が飛び出していて使いやすそうです。)

pistreaming 編

今回は waveform80 さんという方の GitHub で提供されている pistreaming というソフトを試してみました。

この方は、恐れ多くも picamera という Python ライブラリを公開なさっている方で、その公開サイトを拝見すると、Raspberry Pi カメラの技術に極めてお詳しい方と推察いたしました。また、pistreaming の説明(README.md)を読むと、低レイテンシ(低遅延)の実現、KISS(物事を必要以上に複雑にせず、シンプルに実現する)の考え方に共感するところがありました。また、JavaScript で書かれた MPEG デコーダを採用するなど、アイデアも素晴らしいと思いました。これはきっと優秀なソフトに違いないと直感し、早速試してみた次第です。

インストール方法は分かりやすく書かれ、というか非常に単純で、私が説明するまでもありませんので、waveform80 さんのサイトを御参考ください。上記「目標」に対する結果だけまとめます。

  1. 簡単に導入できること
    極めて簡単です。apt-get コマンド、Git の基本、Python アプリの起動方法さえ分かれば、1分で導入できるでしょう。
  2. 外部のサーバーに動画をアップロードしないこと
    しません。
  3. 低レイテンシなこと
    0.5秒程度か、それ以下です!
  4. 画質がそこそこ良いこと
    MPEG1 ですが、十分見られます!
  5. 画像のクロップ(切り出し)ができること
    可能です。server.py というコード中の camera.hflip = HFLIP の次の行辺りに、camera.zoom = (0.0, 0.0, 0.5, 0.5) とか書けば良いのです。Python で書かれているので、いろいろカスタマイズも簡単そうですね。

なお、参考までに私の環境と使用したバージョンをまとめておきます。

  • Raspberry Pi Zero W(2017年4月に購入したもの)
  • Camera Module v1.3(最近売られているのは v2 ですね)
  • Raspbian OS (Stretch Lite)
  • pistreaming(コミット 9b1a871)
  • Python 3.5.3
  • クライアント Google Chrome 74.0.3729.169 (Mac OS)、iPhone 6 の Safari

その他のいろいろバージョン

$ apt list ffmpeg python3-picamera python3-ws4py
ffmpeg/stable,now 7:3.2.14-1~deb9u1+rpt1 armhf [installed]
python3-picamera/stable,now 1.13 armhf [installed]
python3-ws4py/stable,now 0.3.4-4 all [installed]

てな感じです。

それにしても素晴らしいソフトです。

今日はここまで。