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.conf

Motionサーバーの最も簡単な調整の1つは、画像とビデオ出力の品質を変更することです。デフォルトでは、サーバーは解像度を640×480に設定していますが、これは現代のウェブカメラには小さすぎる場合があります。

これを変更するには、新しいターミナルセッションで次のコマンドを実行して、カメラの利用可能な解像度を確認します:

sudo v4l2-ctl -d/dev/video0 --list-formats-ext

ウェブカメラの利用可能な解像度のリストを表示しているターミナル.

Motionの設定に戻り、「画像処理」カテゴリまでスクロールし、widthheightの変数を探します。

Motionのウェブカメラ解像度のデフォルト値を表示しているターミナル.

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

Motionのために更新された高解像度値を表示しているターミナル.

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

Motion設定ファイル内のframerate変数を強調表示しているターミナル.

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

Motion設定ファイル内のpicture_output変数を表示しているターミナル.

デフォルトの保存場所の変更

Motionサーバーのもう1つの調整は、データを保存する場所を変更することです。これは、キャプチャしたビデオや画像をマウントされたリモートディレクトリやDropboxのようなクラウドストレージサービスにエクスポートしたい場合に便利です。

まず、データを保存したいディレクトリに移動するか、作成します:

sudomkdir/motion/data

ディレクトリの所有権を「motion:adm」に設定します:

sudochown-R motion:adm /motion/data

ディレクトリへの全パスがすべてのユーザーに読み取り可能であることを確認します:

sudochmod-R755/motion/data

Motionの設定に戻り、target_dir変数を探し、その値をディレクトリのフルパスに設定します。

Motionのカスタムデータディレクトリを強調表示しているターミナル.

Motionの検知設定の調整

Motionは、現在のビデオフィードと数瞬前のビデオフィードの違いを見て動作します。プログラムが両者の間に十分な違いを見つけると、それを「動き」と分類し、そのイベントのビデオを記録します。

現在、Motionは1500ピクセルの違いが「動き」として分類するのに十分であると仮定しています。これは、ほとんどのウェブカメラにとって動作検知を簡単にしますが、高解像度カメラには過敏すぎる場合があります。

これを和らげるために、「モーション検知」カテゴリに移動し、threshold変数の値を上げます。私は5500ピクセルが、Motionがウェブカメラフィードからの不要な小さな動きを記録しないのに十分であると考えています。

Motionサーバーのカスタマイズされたしきい値を表示しているターミナル.

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

ウェブカメラのthresholdおよびthreshold_maximumの値が不明な場合は、Motionに自動調整させることができます。そのためには、threshold_tune変数を追加し、「on」に設定します。

Motionの異なるピクセルしきい値オプションを表示しているターミナル.

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

Motionで画像とビデオをキャプチャする際の追加フレームを表示しているターミナル.

Motionウェブインターフェースの有効化

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

「ライブストリーム」セクションまでスクロールし、stream_localhostの値を「off」に設定します。

Motionウェブコンソールにリモートシステムがアクセスできるようにするために無効にする必要がある2つのオプションを表示しているターミナル.

注意: Motionのウェブインターフェースには認証チェックがありません。そのため、Motionサーバーのアドレスを知っている人は誰でも、あなたのウェブカメラを見たり、サービスを制御したりできます。

保存したキャプチャをリモートで管理

前述のように、画像をDropboxフォルダに保存するのが最良の方法ですので、どこでもアクセスできます。ただし、画像を自分のファイルサーバー(FTP経由)にアップロードしたい場合は、wputコマンドを使用して画像をアップロードできます:

sudo apt install wput

Motionサーバーの設定を開き、ファイルの最後に次のコード行を挿入します:

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

リモートサーバーにキャプチャされたメディアを保存するための2つのスクリプトフックを表示しているターミナル.

Motionサーバーの起動とテスト

Motion設定ファイルを保存したら、次のコマンドを実行してサーバーを起動します:

sudo systemctl enable--now motion.service

サーバーが正常に動作していることを確認するには、ウェブブラウザを開き、マシンのIPアドレスの後に「:8080」を入力します。

Motionのウェブコンソールを表示しているスクリーンショット.

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

Motionウェブコンソールから実行できるさまざまなアクションを表示しているスクリーンショット.

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

カスタムディレクトリにキャプチャされたメディアを保存しているMotionを表示しているスクリーンショット.

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

Motionからの専用ビデオストリームを表示しているスクリーンショット.

通常のウェブカメラをモーション検知システムに変えることは、Linuxでカメラを使用してできることの1つに過ぎません。今日インストールして試すことができるLinuxの最高のウェブカメラアプリについてもっと学びましょう。

画像クレジット: Bermix Studio via Unsplash. すべての変更とスクリーンショットはRamces Redによるものです。