G-Clusterを監視カメラ化すべく,cam2webをクロスコンパイルしてみました.
はじめに
Webカメラをストリーミングする手法は,MotionやMJPEG_Streamerを使った方法が有名です.
しかし,これらのソフトウェアはそれなりにマシンパワーを必要とします.G-Clusterで動作させたところLoad Averageが1を超えてしまったり,出力される映像がカクカクになってしまうなどの問題点がありました.
また,Motionは元々動体検知機能が売りとなっており,Alpineのレポジトリからダウンロードできる物はffmpegやwebpなどいろいろ付いた80MB程度のパッケージとなってしまっています.
削った物をコンパイルできるのはできるのですが,それよりもストリーミングに特化したソフトウェアを見つけたので,試してみる事にしました.
cam2web
https://github.com/cvsandbox/cam2web
MJPEGとしてWebカメラの映像をストリーミングする事ができます.
ここだけ見るとMJPEG_Streamerと変わらないですが,実装の差なのか動作が軽量でした.
かなり軽量なので,Raspberry Piユーザにもおすすめしたいです.
クロスコンパイル
前提事項
前書いたffmpegと同じ手順でchroot環境を用意して下さい.
必須パッケージをインストール
|
|
cam2webの用意
|
|
Building cam2webを参考にしながらビルド
GCCにarmv6向けビルドを作るよう指示する必要があります.(qemu-staticではarmv7になる)
|
|
をCFLAGS
に付ければ大丈夫です1.
web2h
|
|
Makefile↓
|
|
本体
|
|
Makefile↓
|
|
動作
build/gcc/release/
に生成されるので全てをG-Clusterに転送し,実行すれば動きます.
ファイルサイズはかなり小さく,NANDに十分収まります.
また,Load Averageも常に低めなので低スペG-Clusterでは有り難いです.