Raspberry Pi向け軽量動き検出録画プログラム omxmotion
MotionではCPU処理が多く、Raspberry Pi Zeroでは640×480@10fpsが限界というところでしたが、omxmotionという軽量動き検出録画プログラムを見つけたので試してみました
omxmotion
omxmotionは軽量な動き検出録画プログラムで、h264の動きベクタを用いて動きを検出するため、CPU処理が少なく1920×1080@25fpsでもCPU負荷が50%以下に収まっていました
下準備
未インストールの必要なパッケージをインストール
% sudo apt install git libavformat-dev libncurses-dev libx264-dev
omxmotionのコンパイル
omxmotionはバイナリでは配布されていないため、自前でビルドする必要があります。
まずはgithubからソースコードをcloneします
% git clone https://github.com/dickontoo/omxmotion.git omxmotion
ビルドエラーが発生したため、一か所だけパッチが必要でした。以下のように一か所omxmotion.c
を修正します
diff --git a/omxmotion.c b/omxmotion.c
index 870894a..237afd9 100644
--- a/omxmotion.c
+++ b/omxmotion.c
@@ -370,7 +370,7 @@ static AVFormatContext *openoutput(char *url, int *index)
for (i = 0; i < oc->nb_streams; i++) {
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
oc->streams[i]->codec->flags
- |= CODEC_FLAG_GLOBAL_HEADER;
+ |= AV_CODEC_FLAG_GLOBAL_HEADER;
if (oc->streams[i]->codec->sample_rate == 0)
oc->streams[i]->codec->sample_rate = 48000; /* ish */
}
後はmake
ファイルでコンパイルするだけです
% make
実行
% mkdir ~/omxmotion
% ./omxmotion -b 4 -d ~/omxmotion/
-d
オプションは出力先ディレクトリ、-b
はターゲットのビットレート (Mbps
)です。-b
オプションを省略するとSegmentation Faultで落ちたため、必ず指定する必要があるようです
詳細なオプションはプロジェクトのgithubページを参照してください
ネットワークストリーミング
-c
オプションでアドレスを指定してUDPパケットのストリーミングができるようですが、パケットは送信されているようですが、残念ながら自分のVLCでは動画を見ることが出来ませんでした。
結論
残念ながらネットワーク越しに画像を確認することは出来なかったため、監視カメラとしては使い勝手が悪いかもしれませんが、ナイトビジョンカメラとしては今のところベストな選択肢だと思われます
最近のコメント