CentOS6.4の自鯖にmotionで動体検知監視カメラ

記事内容とは関係なく広告が表示されます。

今このブログやウェブページ、それにライブカメラを配信しているのは自宅の設置してあるサーバ機からです。

かなり昔にはプロバイダから提供されているホームページやブログを利用していたこともありますが、サイトで運営できることの自由度やアップできる写真などに制限があることが嫌なので自宅サーバを使っています。

ブログやウェブページについてはプロバイダでも同じようなことが出来ますが、ライブカメラの配信については自宅サーバの方が出来ることが多い(というかプロバイダでも出来るのかわかりませんが。。)

 

ライブカメラで配信していた内容も、最初の頃は部屋の中の熱帯魚の様子とか屋根の上に付けたカメラから周囲の様子を流したりもしていました。

でもメインは外出中の様子、特に保管しているバイクや自宅の様子を外出先から監視することです。

その構成方法も、最初の頃は自宅サーバのOSは Windows サーバでしたが、その後 Linux を始めて Fedor から CentOS と変えてきました。

現在は CentOS6.4 を使っています。

ライブカメラソフトも、処理の負荷を分散させるために自宅サーバ機とはべつにライブカメラ専用機を稼働させこれにライブカメラを複数台つなげていたこともありました。

その後ずっと fswebcam を使って最新の画像を配信するとともに、一定秒数間隔ですべての画像を保存していました。

こうするとしばらくチェックしないと膨大なファイルが溜まってしまってこまっていました。

 

そこでこの週末にようやく Linux 用の動体検知ソフトである motion を使って、画面の中に動くものがあったときだけ画像を更新して保存するシステムを導入しました。

今回はその自分向けの備忘録です。

■ WEBカメラ

今回、いろいろ調べていくウチに、今のUSBカメラのLinux用ドライバは、機器ごとに用意しなくても「UVC」という規格に準じたものであればどのカメラでも汎用性があり、Linuxでの導入がすごく楽になるというのがわかってきました。

電気店のパソコンコーナーでチャット用などで売られていたUSB接続のものです。

私が使っているのは大型量販電気店で安く売られていた「ELECOMのUCAM-DLK130TRD」です。

前面のレンズが通常のプラ製ではなくガラスを使ったモノですが、画素数は一般的な130万画素で1/4インチCMOSセンサを搭載した「UVC」Webカメラです。

「UVC」とは、ユニバーサル・ビデオ・クラスの略で、USB2.0の規格に準じていてパソコンに接続するとドライバを用意しなくてもWindows、Mac,Linuxで簡単に使える便利な機器です。

これなら自宅サーバ機に直接カメラを接続して、Linuxのサーバマシン一台だけで24時間のライブカメラ運用が可能になりそうです。

homeserver

 

■ システムの導入

まずは現在稼働しているfswebcamを停止します。

 # /etc/rc.d/init.d/fswebcam stop

で停止させます。

 

motionをインストールする前に必要な関連ソフトをいれておきます。

 ffmpeg

 gcc

これが出来たらいよいよmotionを導入します。

サイトにアクセスしてmotionの最新版、motion-3.12-.2.tar.gz をダウンロードします。

ダウンロードしたファイルを解凍します。

出来たファイルをインストール

 make && make install

設定ファイル(motion.conf)をリネームしてコピーします。

設定内容を、自分の環境、やりたい内容に合わせて書き換えます。

 vi /usr/local/

今回設定した主な内容は、

60行目 ※ビデオ信号の圧縮伝送方式を選ぶ
# The video norm to use (only for video capture and TV tuner cards)
# Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
norm 0 → norm 1

67行目 ※イメージの回転角度。回転結果は保存された画像だけでなく、MPEGムービーにも反映されます。有効な値:0(デフォルト=回転なし)、90、180、270。
# Rotate image this number of degrees. The rotation affects all saved images as
# well as mpeg movies. Valid values: 0 (default = no rotation), 90, 180 and 270.
rotate 0 → rotate 180

70行目 ※画像の幅(ピクセル数)。有効範囲はカメラに依存します。デフォルト:352
# Image width (pixels). Valid range: Camera dependent, default: 352
width 320 → width 640

73行目 ※画像の縦(ピクセル数)。有効範囲はカメラに依存します。デフォルト:480
# Image height (pixels). Valid range: Camera dependent, default: 288
height 240 → height 480

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 2

112行目 ※ビデオの明るさを調整します。
# Let motion regulate the brightness of a video device (default: off).
# The auto_brightness feature uses the brightness option as its target value.
# If brightness is zero auto_brightness will adjust to average brightness value 128.
# Only recommended for cameras without auto brightness
auto_brightness off → auto_brightness on

153行目 ※動体検知する基準となる変化したピクセル数
# Threshold for number of changed pixels in an image that
# triggers motion detection (default: 1500)
threshold 1500 → threshold 3000

207行目 ※検知した後の動作を停止する秒数。
# Gap is the seconds of no motion detection that triggers the end of an event
# An event is defined as a series of motion images taken within a short timeframe.
# Recommended value is 60 seconds (Default). The value 0 is allowed and disables
# events causing all Motion to be written to one single mpeg file and no pre_capture.
gap 5 → gap 3

247行目 ※ffmpegを利用してリアルタイムでmpeg動画にエンコードするかどうか
# Use ffmpeg to encode mpeg movies in realtime (default: off)
ffmpeg_cap_new on → ffmpeg_cap_new off

295行目 ※自動的に作成するスナップショットの秒数
# Make automated snapshot every N seconds (default: 0 = disabled)
snapshot_interval 0 → snapshot_interval 60

314行目 ※変化した部分を線で囲います。
# Locate and draw a box around the moving object.
# Valid values: on, off and preview (default: off)
# Set to ‘preview’ will only draw a box in preview_shot pictures.
locate off → locate on

359行目 ※写真や動画の保存場所。絶対パスで設定する事を推奨。
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /usr/local/apache2/htdocs/cam1 → target_dir /var/www/html/motioncam

368行目 スナップショットを保存する場所とファイル名設定。
# File path for snapshots (jpeg or ppm) relative to target_dir
# Default: %v-%Y%m%d%H%M%S-snapshot
# Default value is equivalent to legacy oldlayout option
# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-snapshot
# File extension .jpg or .ppm is automatically added so do not include this.
# Note: A symbolic link called lastsnap.jpg created in the target_dir will always
# point to the latest snapshot, unless snapshot_filename is exactly ‘lastsnap’
snapshot_filename %v-%Y%m%d%H%M%S-snapshot → snapshot_filename snapshot

377行目
# File path for motion triggered images (jpeg or ppm) relative to target_dir
# Default: %v-%Y%m%d%H%M%S-%q
# Default value is equivalent to legacy oldlayout option
# For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q
# File extension .jpg or .ppm is automatically added so do not include this
# Set to ‘preview’ together with best-preview feature enables special naming
# convention for preview shots. See motion guide for details
jpeg_filename %v-%Y%m%d%H%M%S-%q → jpeg_filename ./motion/%Y%m%d%H%M%S-%q

413行目 ※ローカルホストのみに公開する(onにするとネットに公開します)
# Restrict webcam connections to localhost only (default: on)
webcam_localhost on → webcam_localhost off

ここまで出来たらmotionを起動します。

 # /etc/rc.d/init.d/motion start

 

これで常に一定間隔(1分おき)に最新画像をアップするとともに、監視しているカメラに映っている範囲内に動くモノがあった時だけ撮影して保存する監視カメラ、ライブカメラが構築できました。

最初にこれをやりたくなってから完成するまでずいぶんと時間がかかりました。

 

  

コメント

タイトルとURLをコピーしました