motion のインストール(Ubuntu 上,apt でインストール)
motion を apt でインストールする手順。motion の機能、Web カメラの確認、systemd サービスとしての起動、設定ファイル /etc/motion/motion.conf の場所、既定の保存先 /var/lib/motion について示す。
motion は、ビデオカメラの映像を監視し、画像の変化(動き)を検出して静止画や動画を保存するオープンソースのプログラムである。映像を HTTP で配信する機能も持つ。Ubuntu 24.04 LTS のパッケージのバージョンは 4.6 系である。
前準備
Ubuntu のシステム更新
motion のインストールの前に、パッケージリストとインストール済みパッケージを最新の状態にする。
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# 変更をシステム全体に反映させるために再起動
sudo shutdown -r now
* motion のインストール(Ubuntu 上)
以下のコマンドを実行して、motion パッケージをインストールする。
sudo apt update
sudo apt -y install motion
使ってみる
Ubuntu マシンに Web カメラを接続し、motion を動かしてみる。
- Web カメラが認識されていることを確認する。
/dev/video0のようなデバイスファイルが表示される。ls /dev/video* - motion を起動する。
motion設定ファイルは、カレントディレクトリの
motion.conf、ホームディレクトリの~/.motion/motion.conf、/etc/motion/motion.confの順に探索される。apt でインストールした直後は/etc/motion/motion.confが読み込まれる。読み込まれた設定ファイル名と使用するビデオデバイスは、起動時のログに表示される。
- 動きが検出されると、保存先ディレクトリに jpeg ファイルが蓄積される。保存先は設定ファイルの
target_dirで指定されており、既定値は/var/lib/motionである。
一般ユーザで
motionを実行した場合、/var/lib/motionへの書き込み権限がなく保存に失敗する。この場合は、自分のホームディレクトリに設定ファイルを置き、target_dirに書き込み可能なディレクトリを指定する。 - 終了するときは
Ctrl+Cを押す。
サービスとしての起動
常時動作させる場合は、systemd のサービスとして起動する。サービスとして動作するときは motion ユーザの権限で実行され、/var/lib/motion に保存される。
sudo systemctl start motion
システム起動時に自動実行されるように設定する。
sudo systemctl enable motion
ステータスを確認する。
systemctl status motion
設定ファイル
motion の動作は設定ファイルで制御する。システム全体の設定ファイルは /etc/motion/motion.conf であり、ユーザごとの設定は ~/.motion/motion.conf に置く。複数台のカメラを使う場合は、カメラごとの設定ファイル(/etc/motion/camera1-dist.conf などが雛形)を用意し、motion.conf の末尾で camera オプションにより読み込む。
主な設定項目は次のとおりである。
-
video_device: 使用するビデオデバイス(既定値は/dev/video0) -
target_dir: 画像と動画の保存先ディレクトリ -
width,height,framerate: 取得する画像の幅、高さ、フレームレート -
threshold: 動きと判定する変化画素数のしきい値 -
picture_output,movie_output: 静止画、動画を保存するかどうか -
stream_port,webcontrol_port: 映像配信と Web 制御画面のポート番号 -
stream_localhost,webcontrol_localhost: 接続元を localhost に限定するかどうか(既定値は on)
映像配信や Web 制御画面を他のマシンから利用できるようにする場合、これらのポートに認証をかけずに公開すると、映像と設定が第三者から参照される。webcontrol_auth_method と webcontrol_authentication、stream_auth_method と stream_authentication による認証を設定し、ファイアウォールで接続元を LAN 内に限定する。
設定ファイルを変更した後は、サービスを再起動して反映させる。
sudo systemctl restart motion