Ubuntuでモーション検知ウェブカメラを設定する方法

Motionは、通常のウェブカメラを監視カメラに変える便利なツールです。これは、ウェブカメラからの信号を監視し、動きを検知したときにスクリーンショットやビデオを撮影します。ここでは、Motionをインストールし、Ubuntu Linuxでモーション検知ウェブカメラを設定する方法を示します。
目次
- Motionサーバーのインストール
- システム用のMotionの設定
- デフォルトの保存場所の変更
- Motionの検知設定の調整
- Motionウェブインターフェースの有効化
- 保存したキャプチャをリモートで管理
- Motionサーバーの起動とテスト
Motionサーバーのインストール
Motionは、公式のUbuntuリポジトリにデフォルトで含まれています。これは、aptパッケージマネージャを通じてこのプログラムをインストールできることを意味します:
sudo apt install motion v4l-utils注意: この記事ではUbuntuを扱っていますが、MotionはほとんどのLinuxディストリビューションでも動作します。
Motionサーバーが正常に動作していることを確認するには、プログラムのヘルププロンプトを開きます:
motion -hシステム用のMotionの設定
Motionの設定を開始する前に、設定ファイルをHomeフォルダにコピーして、元のバックアップを作成する必要があります。ターミナルを開き、設定ファイルをHomeフォルダにコピーします:
cp/etc/motion/motion.conf ~/motion.conf.backupお気に入りのテキストエディタを使用して元の設定を開きます:
sudonano/etc/motion/motion.confMotionサーバーの最も簡単な調整の1つは、画像とビデオ出力の品質を変更することです。デフォルトでは、サーバーは解像度を640×480に設定していますが、これは現代のウェブカメラには小さすぎる場合があります。
これを変更するには、新しいターミナルセッションで次のコマンドを実行して、カメラの利用可能な解像度を確認します:
sudo v4l2-ctl -d/dev/video0 --list-formats-ext
Motionの設定に戻り、「画像処理」カテゴリまでスクロールし、widthとheightの変数を探します。

希望する解像度に適切な値を提供します。私の場合、Motionを1280×720で実行したいので、幅に「1280」、高さに「720」と入力します。

framerateの値を、ビデオをキャプチャしたいフレームレートに設定します。デフォルトでは「15」に設定されていますが、ディスクスペースを節約するために下げることができます。

「画像出力」カテゴリまでスクロールし、picture_output変数の値を「on」に設定します。これにより、Motionはウェブカメラから画像とビデオの両方をキャプチャできるようになります。

デフォルトの保存場所の変更
Motionサーバーのもう1つの調整は、データを保存する場所を変更することです。これは、キャプチャしたビデオや画像をマウントされたリモートディレクトリやDropboxのようなクラウドストレージサービスにエクスポートしたい場合に便利です。
まず、データを保存したいディレクトリに移動するか、作成します:
sudomkdir/motion/dataディレクトリの所有権を「motion:adm」に設定します:
sudochown-R motion:adm /motion/dataディレクトリへの全パスがすべてのユーザーに読み取り可能であることを確認します:
sudochmod-R755/motion/dataMotionの設定に戻り、target_dir変数を探し、その値をディレクトリのフルパスに設定します。

Motionの検知設定の調整
Motionは、現在のビデオフィードと数瞬前のビデオフィードの違いを見て動作します。プログラムが両者の間に十分な違いを見つけると、それを「動き」と分類し、そのイベントのビデオを記録します。
現在、Motionは1500ピクセルの違いが「動き」として分類するのに十分であると仮定しています。これは、ほとんどのウェブカメラにとって動作検知を簡単にしますが、高解像度カメラには過敏すぎる場合があります。
これを和らげるために、「モーション検知」カテゴリに移動し、threshold変数の値を上げます。私は5500ピクセルが、Motionがウェブカメラフィードからの不要な小さな動きを記録しないのに十分であると考えています。

また、threshold_maximum変数を追加して、Motionが「動き」と見なす違いの上限を設定することもできます。これは、ウェブカメラが混雑したエリアを見ている場合に役立ち、活動が少ないときだけ動作させたい場合に便利です。
ウェブカメラのthresholdおよびthreshold_maximumの値が不明な場合は、Motionに自動調整させることができます。そのためには、threshold_tune変数を追加し、「on」に設定します。

最後に、Motionが動きを検知する前後の瞬間も記録するように設定できます。これを行うには、pre_captureおよびpost_capture変数に移動し、保存したい追加フレームの数を設定します。

Motionウェブインターフェースの有効化
Motionサーバーには、ウェブカメラをリモートで監視できるウェブインターフェースが付属しています。これを有効にするには、設定の「Webcontrol」セクションに移動し、webcontrol_localhost変数の値を「off」に設定します。
「ライブストリーム」セクションまでスクロールし、stream_localhostの値を「off」に設定します。

注意: Motionのウェブインターフェースには認証チェックがありません。そのため、Motionサーバーのアドレスを知っている人は誰でも、あなたのウェブカメラを見たり、サービスを制御したりできます。
保存したキャプチャをリモートで管理
前述のように、画像をDropboxフォルダに保存するのが最良の方法ですので、どこでもアクセスできます。ただし、画像を自分のファイルサーバー(FTP経由)にアップロードしたい場合は、wputコマンドを使用して画像をアップロードできます:
sudo apt install wputMotionサーバーの設定を開き、ファイルの最後に次のコード行を挿入します:
on_picture_save wput ftp://YOUR-USERNAME:YOUR-PASSWORD@YOUR-SERVER-ADDRESS %f
on_movie_end wput ftp://YOUR-USERNAME:YOUR-PASSWORD@YOUR-SERVER-ADDRESS %f
Motionサーバーの起動とテスト
Motion設定ファイルを保存したら、次のコマンドを実行してサーバーを起動します:
sudo systemctl enable--now motion.serviceサーバーが正常に動作していることを確認するには、ウェブブラウザを開き、マシンのIPアドレスの後に「:8080」を入力します。

これにより、ウェブカメラからの現在のビデオフィードを表示するウェブページが表示され、サーバーの追加アクションを含むメニューが表示されます。たとえば、アクション -> スナップショットをクリックして、ウェブカメラから静止画像をキャプチャできます。

ウェブカメラの前を物体が通過することでMotionが動きを検知して記録するかどうかをテストし、target_dirディレクトリの内容を確認します。

メディアプレーヤーまたはウェブブラウザから開けるライブストリームもあります。これにアクセスするには、マシンのIPアドレスの後に「:8081」を入力します。

通常のウェブカメラをモーション検知システムに変えることは、Linuxでカメラを使用してできることの1つに過ぎません。今日インストールして試すことができるLinuxの最高のウェブカメラアプリについてもっと学びましょう。
画像クレジット: Bermix Studio via Unsplash. すべての変更とスクリーンショットはRamces Redによるものです。