前のページで指定したパラメータの内容です。必要最小限のパラメータであり、数値を変えては調整する必要があるので、内容について説明します。
motion.conf に記載した2台のUSBカメラに共通するパラメータの内容です。
daemon off
デーモンモードのオン、オフを指定します。つまり、常にバックグラウンドで動作するサービスとして起動させるかどうかです。動作確認ができるまでは off にしてコマンドラインで起動させますので、この段階では off とします。(on off:デフォルト on )
norm 1
映像信号の規格を次の何れかから指定します。 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour) 日本の場合は NTSC 640×480 なので 1 とします。(デフォルト 0 )
width 640
height 352
キャプチャする解像度を指定します。使用するCameraにより、指定可能な解像度は異なります。上手く認識しない場合は width 640、hight 480を試してみて下さい。
framerate 12
1秒間にキャプチャする最大フレーム数を指定します。(2-100:デフォルト 100 )
threshold 2000
動体検知が検出するしきい値を設定します。映像の記録を開始するトリガーとなります。つまり、この数値のピクセル数に変化があった場合に映像が記録されます。適切な値は監視対象によって異なります。例えば、数値があまり小さいと、風によって木の枝が僅かに揺れただけでも動体検知が働いて録画されてしまいます。観察対象に併せて調整が必要です。(デフォルト 1500)
gap 60
短時間で映像に変化があった場合、次の動体検知で記録するまでの間隔を指定します。例えば、少し動いて止る、少し動いて止る、を繰り返した場合、その都度、動体検知が働くとバラバラの映像で記録されます。このギャップを何秒か指定します。gap 60 とした場合、60秒以内にこのような変化があっても、1本の連続したイベントと見なし一つの映像として記録されます。60 が推奨されています。パフォーマンスに影響を与えるパラメーターです。(デフォルト:60)
output_normal off
動きが検出された場合に静止画像を出力方法を指定します。記録される動画のプレビュー(JPEG)画像を得るのに便利な機能です。デフォルトが on なので、ここでは明示的に off としました。(デフォルト:on 値:on, off, first, best, center)
on … 画像を出力する off … 画像は出力しない
first … イベント最初の画像を出力 center … イベント中間の画像を出力
best … ★最も動きに変化のある画像を出力
quality 75
出力する画像の品質を指定します。数字が大きいほど高画質です。(デフォルト:75 1~100)上記 output_normal on にした場合に有効です。
ppm off
ppmで画像を出力したい場合は on にします。off で jpg で出力されます。(デフォルト:off )
ffmpeg_cap_new on
MPEGムービーをリアルタイムにエンコードするために ffmpeg を使用するか指定します。使用するので on にします。(値:on,off デフォルト off)
ffmpeg_bps 500000
★ffmpegエンコーダが使用するビットレートを指定します。高ければ画質が高くなりますが、それだけエンコードや配信に負荷を掛ける事になります。0にした場合、このオプションは無視されます。(値 0 ~ 9999999)
ffmpeg_video_codec mpeg4
ビデオコーデックを指定します。指定可能なパラメータは mpeg1(ffmpeg-0.4.8のみ), mpeg4(デフォルト), msmpeg4, swf, flv, ffv1, mov
locate on
動体検知が作動している際に、映像に変化があった箇所を白いフレームで囲みます。threshold で適切な値を探す際に、このフレームがあると調整し易いので、システム構築のこの段階では on にしておきます。このフレームも映像として記録されるので、運用時に off にします。(デフォルト off)
text_double on
表示されるタイムコードの文字を大きくします。on にすると大きくなります。off が標準サイズです。(デフォルト:off)
出力するファイルの保存先、ファイル名のルール
映像の動体検知に関する情報をファイル名(テキスト情報)を出力する事も出来るので、Motion で出力される情報を二次処理する、応用する上でキーになるパラメータです。ここではデフォルトで指定されている値をそのまま使用。内容は以下の通り。
snapshot_filename %v-%Y%m%d%H%M%S-snapshot
snapshot_interval で一定間隔でスナップショットを出力するようにした場合、そのスナップショットの出力先やファイル名を指定します。
(デフォルト:%v-%Y%m%d%H%M%S-snapshot)本稿の例では、カメラ毎の threadファイルで個別に target_dir を /Public/WebCam1 と
/Public/WebCam2 をそれぞれのルートディレクトリになるように指定し、各種_filename パラメータは motion.conf で共通する設定としているので、結果は以下の様になります。
カメラ1
/Public/WebCam1/イベント-年-月-日-時-分-秒-snapshot.jpg
カメラ2
/Public/WebCam2/イベント-年-月-日-時-分-秒-snapshot.jpg
出力先を一つのディレクトリに纏めたい場合は target_dir で指定したディレクトリから相対パスで以下の様に指定します。
例
snapshot_filename ./interval/%v-%Y%m%d%H%M%S-snapshot
この場合、以下の様に出力されます。
/Public/WebCam1/interval/01-20131215205930-snapshot.jpg
/Public/WebCam1/lastsnap.jpg
lastsnap.jpg は最も新しいスナップショットに対するシンボリックファイルになります。この lastsnap.jpg をネットで公開すれば、数秒おき、数分おきにWebカメラが捉えた最新の画像をネットで配信することができます。interval フォルダには定点観測動画に必要なスナップショットが保存されます。
時刻に関する変換指定子は以下の通りです。jpeg_filename、movie_filename、timelapse_filename パラメータも同様に指定できます。
%Y = 年
%m = 月
%d = 日
%H = 時
%M = 分
%S = 秒
%T = HH:MM:SS形式の文字列で出力
上記パラメータに共通して指定できるモーションに関する変換指定子は以下の通りです。
%v = event
%q = フレーム番号
%t = スレッド(カメラ)番号
%D = 変化のあったピクセル数
%N = ノイズレベル
%i = フレームの幅
%J = フレームの高さ
%K = 動きのあったX軸の中心座標
%L = 動きのあったY軸の中心座標
%C = text_event パラメータで任意に提議した文字列
movie_filename ./mov/%v-%Y%m%d%H%M%S
動体検知が働き、保存される映像のファイル名。snapshot_filename と同様です。movフォルダに纏めるようにしています。
(デフォルト:%v-%Y%m%d%H%M%S)
jpeg_filename %v-%Y%m%d%H%M%S-%q
timelapse_filename %Y%m%d-timelapse
このインターフェイスは、スレッドファイルも包括的に管理するようになっているので、これらのパラメータは、カメラ毎の設定ファイル(スレッドファイル)ではなく、motion.conf に記述する必要があります。それぞれの設定ファイルには記述しません。
control_port 8080
Motionにはブラウザ経由でこれらの設定を行えるインターフェイスが提供されています。使用するポート番号を指定します。0 とすると、この機能は無向になります。8080と指定した場合、http://自ドメイン:8080 で接続することができます。(デフォルト:0)
control_localhost on
オンにすると接続をローカルホストに限定します。(デフォルト:on)
control_authentication 任意のID:パスワード
このGUIツールに接続する際、IDとパスワードによる認証を有効にします。IDとパスワードはコロン ":" で区切ります。これは平文で流れるので外からの利用はやめてパスワードなしで、上記パラメータでローカルホストに限定した方が良いです。(デフォルト:認証なし)
quiet on
動体検出したときにビープ音を鳴らしません。off にすると動きが検出される度にビープ音を鳴らします。(デフォルト:on)
on_event_start /hogehoge/mail.sh
イベントスタート時に実行する任意のコマンドをフルパスで指定します。例えば、映像に変化が生じれば、管理者にメールで知らせるといった事も出来ます。(デフォルト:none)
on_event_end /hogehoge/mail.sh
イベント終了時に実行する任意のコマンドをプルパスで指定します。例えば、映像に変化が生じれば、管理者にメールで知らせるといった事も出来ます。(デフォルト:none)
thread /usr/local/etc/thread1.conf
thread /usr/local/etc/thread2.conf
2台以上の複数のカメラをMotionで制御する場合は、個別のカメラ毎に設定するファイルに必要なパラメータを記述する必要があります。Motion が読み込めるディレクトリ、例えば /usr/local/etc/thread1.conf と thread2.conf を作成し、motion.conf に作成したスレッドファイルに絶対パスで指定する必要があります。制御するWebカメラが1台の場合は、motion.conf に全てを記述し、threadファイルは必要がありません。
以降は カメラ毎の threadファイルに記述したパラメータの説明です。共通する設定は motion.conf に、カメラ固有に設定が必要と思われる項目をこちらに記載します。motion.conf と thread.conf でパラメーターが重複しても優先されるのは threadファイルです。
snapshot_interval 0
スナップショップを記録するインターバルを秒単位で指定します。動体検知に関係なく、一定間隔で定期的に画像を記録します。0 をしているとこの機能は無向になり、スナップショットは記録されません。植物の定点観測など観察用途に使える重要なパラメータなので記載。(デフォルト:0)
0=無向
60=1分
1800=30分
3600=1時間
86400=1日
target_dir /Public/WebCam1
Motion により記録される全ての画像と動画の保存先となるトップディレクトリを絶対パスで指定します。snapshot_filename や movie_filename 等で指定されたファイルが保存されるトップディレクトリになります。
オプション等で設定するファイル名の付け方と出力先は、ここで指定されたトップディレクトリから相対パスで指定するように設定します。
webcam_port 8081
Motionはミニhttpサーバーを内包しており、ブラウザからカメラが捉えている映像をリアルタイムに配信する事が出来ます。そのTCPポートを指定します。例えば URL http://サーバドメイン:8081 でWebカメラが捉えた映像をブラウザで見る事が出来るようにするには、webcam_port 8081 と指定します。複数のカメラがある場合は、それぞれの設定ファイルで webcam_port 8082 などとして、異なるポート番号を指定しバッティングしないようにして下さい。この昨日は連続する jpeg画像(MJPEG形式)を連続で表示する簡易な物であり、ブラウザの対応状況によっては、このミニhttpサーバーで配信される映像を見る事が出来ません。http で映像を配信しない場合は、webcam_port 0 とし、0 を指定します。また、port 8080 はデフォルトで Motion のGUI 設定ツール(前述)で指定されていたので 8081 としました。
webcam_quality 100
上記、配信用のMotionJPEG の品質を 1 から 100 の間で指定します。数字が大きい程、画質が高くデータ量が増えるため、より多くの通信帯域が必要になります。
webcam_motion on
この機能を on にすると、ストリーミング配信時、動きが検出されてない場合に 秒間1フレームにレートを落して帯域を節約します。動きが検出された場合は、webcam_maxrate で提議されているフレームレートで自動的にストリーミング配信を行ないます。off にした場合は、常に webcam_maxrate で指定されたフレームレートでMJPEGストリーミング配信を行ないます。
webcam_maxrate 15
MJPEGストリーミング配信時のMAXの秒間フレームレートを1~100の間で指定します。高い程、動きは滑らかになりますが、それだけ通信帯域を必要とします。LAN環境で接続する場合を除き、高い値は指定しないで下さい。(デフォルト:1)
webcam_localhost on
on にするとMJPEGによるストリーミング配信を「ローカルホストに限定します。(デフォルト:on)
Win7 環境でこの MJPEG は IE9、Chrome では再生出来ず、Firefox では再生出来ました。iOS のサファリでも再生出来ることは確認しました。
ただし、時間が経過する毎にブラウザの使用メモリが肥大化していくため、一般的なストリーミング配信の実用途には使えない簡易なものです。
引き続き、Motion を通常起動するサービスとして起動設定を行います。