地方在住IT系ニート

bkds

Motionのメモ

はじめに

Motionはカメラを利用して動画信号を監視するソフトウェアです。 今回は、Raspberry Pi上のUbuntuにMotionを導入し、監視カメラを構築します。 画像の変化を検知することができるので、物体の動作検知を利用して検知した動画部分のみを保存することができます。

Motion

Motionはオープンソースのソフトウェアなので、Githubでソースコードの確認が可能です。 コードからビルドも可能ですが、今回は、Ubuntuのパッケージからインストールします。 下記コマンドで、インストールと起動ができます。

sudo apt install motion
sudo systemctl enable motion
sudo systemctl start motion

Motionの設定を変更する場合は、/etc/motion/motion.confを書き換えて、再起動すると反映されます。 私の場合は、下記の項目をチューニングしました。

  • width (Image width in pixels.)
    • 640 -> 960
  • height (Image height in pixels.)
    • 480 -> 540
  • framerate (Maximum number of frames to be captured per second.)
    • 15 -> 30
  • rotate (Rotate image the given number of degrees.)
    • 0 -> 180
  • threshold (Threshold for number of changed pixels that triggers motion.)
    • 1500 -> 10000
  • movie_quality (The encoding quality of the movie.)
  • movie_codec (Container/Codec to used for the movie.)
    • mkv -> mp4

映像確認

Motionは、監視カメラ映像の画面と管理画面が用意されています。 デフォルトでは、映像画面は8081ポート、管理画面は8080ポートになっています。 ブラウザからアクセスすることで確認できるので、インターネットに公開する場合は適切な権限管理が求められます。

映像画面 映像画面

管理画面 管理画面

映像保存

動体検知後、motionは指定のディレクトリ(target_dir)に映像を保存します。 デフォルトでは、/var/lib/motionが指定されています。

Raspberry Pi上に長期間保存することは望ましくないため、今回はS3に保存する方にスクリプトを準備しました。 motionにはon_movie_endという設定項目があります。 これは、映像の保存が完了した際に何をするのかを指定できます。 今回は以下のように保存した映像ファイルを指定してシェルスクリプトを起動するようにしました。

on_movie_end /var/lib/motion/upload.sh %f

スクリプトは以下のようにS3にアップロード後、削除するようにしています。

#!/bin/sh
aws s3 cp $1 s3://my-bucket-name/
rm $1

メモ

管理画面のアクションからは、監視カメラの開始・停止などの操作が行なえます。 curlコマンドでリクエストすることでカメラの開始・停止ができるので、cronコマンド等を利用して特定の条件下でのみ監視を行うみたいなことも容易にできます。

下記コマンドで開始・停止ができます。

# 開始
curl -X GET http://10.0.0.1:8080/00/action/restart 2>/dev/null

# 停止
curl -X GET http://10.0.0.1:8080/00/action/quit 2>/dev/null
<-- Back to home
にほんブログ村 IT技術ブログ IT技術メモへPVアクセスランキング にほんブログ村