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 が家族に不評だったのか、いずれかでしょう。
さて。前回の「目標」を再確認してみます。
- 簡単に導入できること
私は、監視カメラソフトの専門家になりたい訳ではありません。また、Raspberry Pi による動画処理は変化の早いテーマのようですから、1〜2年で世の中の動向が変わってしまっているかも知れません。 - 外部のサーバーに動画をアップロードしないこと
この理由から、市販のネットカメラは対象から外しました。最近、企業からの個人情報漏洩のニュースが増えているようです。普段は自宅 LAN で見られれば十分ですし、必要ならば VPN を使えば済むことです。 - 低レイテンシなこと
玄関の来客を見たい訳ですから、遅延が大きいと大切な来客(宅配便など)に失礼になりますし、こちらのアクションも遅れてしまいます。 - 画質がそこそこ良いこと
上記と同様、来客の姿形くらい識別できないと意味がありません。 - 画像のクロップ(切り出し)ができること
玄関のドアスコープにカメラを当ててみると分かるのですが、iPhone 6 Plus の飛び出したカメラを当ててみても、かなりの画欠けが発生します。そのため、撮影時に画角の切り出し(クロップ)ができると便利です。(ちなみに、市販の USB カメラではドアスコープにカメラレンズを近接させることができず、これは用途に合いませんでした。その点、Raspberry Pi のカメラモジュールはレンズが小さく、また先端が飛び出していて使いやすそうです。)
pistreaming 編
今回は waveform80 さんという方の GitHub で提供されている pistreaming というソフトを試してみました。
この方は、恐れ多くも picamera という Python ライブラリを公開なさっている方で、その公開サイトを拝見すると、Raspberry Pi カメラの技術に極めてお詳しい方と推察いたしました。また、pistreaming の説明(README.md)を読むと、低レイテンシ(低遅延)の実現、KISS(物事を必要以上に複雑にせず、シンプルに実現する)の考え方に共感するところがありました。また、JavaScript で書かれた MPEG デコーダを採用するなど、アイデアも素晴らしいと思いました。これはきっと優秀なソフトに違いないと直感し、早速試してみた次第です。
インストール方法は分かりやすく書かれ、というか非常に単純で、私が説明するまでもありませんので、waveform80 さんのサイトを御参考ください。上記「目標」に対する結果だけまとめます。
- 簡単に導入できること
極めて簡単です。apt-get コマンド、Git の基本、Python アプリの起動方法さえ分かれば、1分で導入できるでしょう。 - 外部のサーバーに動画をアップロードしないこと
しません。 - 低レイテンシなこと
0.5秒程度か、それ以下です! - 画質がそこそこ良いこと
MPEG1 ですが、十分見られます! - 画像のクロップ(切り出し)ができること
可能です。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]
てな感じです。
それにしても素晴らしいソフトです。
今日はここまで。