前回の記事で無事設置できたネットワーク監視カメラ関連の話題です。
前回の記事ではカバーできてなかった「自動録画」を実現したので、そのメモです。
やりたいこと
- 画面の変化を認識して自動録画
- 画面の変化を認識した際に、あらかじめ設定しておいたメールアドレスに通知を送信
環境
利用するソフト
何かいいソフトがないかなぁーと思って調べたところ、iSpyというソフトを見つけました。
iSpy: Open Source Camera Security Software
オープンソースらしいですし、複数のネットワークカメラに対応しているみたいなので良い感じです。
(余談だけど、iSpyなんて名前のくせにWindows版しか無くて、更に.NET Frameworkを利用して作られていました。超Windowsなソフトウェアなのに、どうして「i」を付けたんだろうねー)
iSpyの設定
録画先の設定
上のメニューの「Settings」をクリックして表示したダイアログの「Storage」タブの「Media Directory」より設定できます。
カメラの追加
左上にある「Add」ボタンをクリックし、「IP Camera With Wizard」をクリック。
リストの中にCPB643Wがなかったので、「Unlisted(scan)」を選択しました。(監視カメラのマニュアル曰く、どうやらこのカメラのシステムはWansview NC541と同じっぽいですが、まぁせっかくScan機能があるので、これを使いたいと思います。)
次の画面はユーザー名やチャンネル番号を指定するみたいです。Channelは1で良いみたいです。ユーザー名とパスワードは監視カメラに設定したのを入力します。
IPアドレスとポート番号を指定。
検索に結構時間が掛かっちゃいますが、「255 IPCam:ipcam:MJPEG http://ユーザー名:パスワード@IPアドレス:ポート番号/videostream.cgi」ってのを選択しました。asfをVLCで開くタイプの設定も一応動作しましたが、バッファリングがうまくいかず、カクカクだったのでMJPEGの方を選択しました。
(余談ですけど、どうやら、URLの総当たりでこのリストは生成している見たいです。力業ですね…)
これでウィザードは終了です。たぶんこんな感じで監視カメラの様子がプレビューできているのではないでしょうか?
録画設定(一定時間動きを検知すると、録画開始し、その旨をメールで通知する)
方針
- Motion Detectionでモーションを感知
- 関知すると画像を撮影するように設定(録画漏れを防ぐためと、後述のメール送信のため)
- ある一定時間動きを感知し続けたらAlertsを発生させる(発火的な)
- Rubyのスクリプトにより、指定したメールアドレスに、直近5分間に撮影された画像を添付してメールを送信
- Alertsが発生すると同時に、発生10秒前から録画を開始し、最小60秒間録画し続ける。録画中に更にAlertsが発生したら録画時間を延長。最長900秒録画を行う
Ruby Scripts
Gemのmailをつかっているので、事前にインストールしておきましょう。
gem install mail
以下スクリプト(mailsend.rb)
require 'mail' require "fileutils" #添付対象のファイルリストを作成 filelists=[] # H:/Datas/SecurityCamera/video/ZMNIO/grabs/ にキャプチャー画像が溜まっていたので、以下のように設定(環境に合わせて任意で変更) files = Dir.glob("H:/Datas/SecurityCamera/video/ZMNIO/grabs/*").each{|f| #5分以内 if Time.now-60*5 < File.mtime(f) filelists.push(f) end } mail = Mail.new do from '送信元メールアドレス' to '送信先メールアドレス(その1),送信先メールアドレス(その2),送信先メールアドレス(その3)' subject "【監視カメラ】 #{Time.now.strftime('%Y/%m/%d %H:%M:%S')} (#{filelists.count}枚の写真)" body '監視カメラが画面の変化を捉えました。5分以内に撮影された画像の一部を転送します。' filelists.each{|f| add_file f } end #Gmailをつかって送信した mail.delivery_method :smtp, { :address => "smtp.gmail.com", :port => 587, :domain => 'よく分からない。(localhostで良いんじゃないかな)', :user_name => 'Gmailのユーザーアカウント(@gmail.com込み)', :password => 'Gmailのパスワード', :authentication => 'plain', :enable_starttls_auto => true } mail.deliver!
スクリプトファイルは「C:\Program Files\iSpy」に置いておいた。
設定内容
右クリックメニューの「View」より弄れる設定を次のようにしました。
Motion Detectionタブでは、動き感知の設定ができます。色々と吟味した結果このような数値となりました。
Detection Zonesを描き描きして、検知範囲の設定が可能です。
Alertsの設定。
注意すべき点:「Mode」のリストボックス横の「...」ボタンを押して秒数を指定しなくてはいけません。私の場合は1.5秒に設定しました。(1.5秒間動きを検知し続けるとAlertsを鳴らすという意味)
(Distinct Alert Intervalはもっと下げても良いかも)
動作内容
以下みたいなメールが届くようになります。
もちろん、録画もできてます。
素晴らしい。
終わりに
PCツケパじゃないと動作しないので一部の人向けかとは思いますが、安価にネットワークカメラサーバーもどきが立てれたので満足です。
ちなみに結構CPUリソースを食います。Celeron E3400だからかもしれませんが…常時CPU使用率が30%超えです。そろそろCPUを換えようかな…