mikolaboのブログ

パソコンからくり研究室

motionプログラムの公式ウェブサイトにある参考情報

https://motion-project.github.io/motion_config.html#configfiles からの情報を抽出

 

 

画像処理(Image Processing)

【width】(タイプ:整数、範囲/有効値:デバイスに依存、デフォルト:640)【height】(タイプ:整数、範囲/有効値:デバイスに依存、デフォルト:480)

各フレームの幅(ピクセル単位)。有効範囲はカメラによって異なります。すべてのデバイスで、幅は8の倍数でなければなりません。
Motionはv4l2デバイスとhttp netcamsをスケーリングしないので、値はデバイスによって提供される画像の実際のサイズに設定されるべきです。
rtsp / rtmpネットワークカメラの場合、Motionはカメラ画像を要求された寸法に再調整します。
この再スケーリングは非常に高いCPUコストで行われるため、ネットワークカメラは設定ファイルに含まれているのと同じサイズで画像を送信することをお勧めします。
Motionは提供されたイメージを再スケーリングしませんが、video4linuxバイスから来るイメージのサイズをheight / widthに提供された値と一致するように設定しようとします。
特定の高さ/幅の組み合わせは特定のフレームレートでのみ有効であることを認識することが重要です。有効な特定の組み合わせはデバイスによって異なります。
pwcPhilips USBカメラ用のドライバ)のようないくつかのデバイスドライバでは、サイズを非標準の値に設定すると、ドライバは最も近い小さいサイズのイメージを作成し、
モーションのサイズに合うようにイメージの周囲にグレーの帯を作成します。灰色の帯を生成するのはデバイスドライバであり、モーションではないことに注意してください。
モーションは、グレーバンドを含む画像全体のモーションを検出しようとします。

【framerate】(タイプ:整数、範囲/有効値:2 - 100、デフォルト:15)

1秒間にカメラからキャプチャされる最大フレーム数。カメラからの写真の取得速度が速いほど、CPU負荷が高くなり、Motionが検出されたときに含まれる写真も多くなります。
フレームレートが2未満に設定されている場合、Motionは写真の保存を停止します。このパラメータを、画像またはムービーとして保存する1秒あたりの最大画像数に設定します。
1秒より長い間隔を設定するには、代わりに 'minimum_gap'オプションを使用してください。

【minimum_frame_time】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

カメラから写真フレームをキャプチャするまでの最小時間(秒)。デフォルト:0 =無効 - キャプチャレートはカメラのフレームレートによって決まります。
このオプションは、毎秒2未満のレートで画像をキャプチャする場合に使用されます。
これが有効になっている場合、フレームレートオプションはMotionサービスのペースをWebカメラのポートなどに設定するためにのみ使用されます。

【rotate】(タイプ:離散整数、範囲/有効な値:0、90、180、270、デフォルト:0(回転しない))

与えられた度数で画像を回転させます。回転は保存されているすべての画像と動画に影響します。
回転機能は、カメラが逆さまになっているとき(180度)、または通常の風景(90度または270度)ではなく、縦長の画像形式を選択した場合に使用されます。
この機能を使用すると、0以外の値でCPU負荷が増加することに注意してください。また、90度または270度回転すると、Motionは幅と高さを自動的に交換するため、これらのオプションに触れる必要はありません。

【flip_axis】(タイプ:離散文字列、範囲/有効な値:none、v、h、デフォルト:なし(変更なし))

指定された軸に従って画像を反転します。このフリップは、保存されているすべての画像とムービーに影響します。
フリップ機能は、カメラが鏡の方向を向いているとき、または鏡像を映し出すときに使用されます(一部の車で見られるように)。
この機能をnone以外の値で使用すると、CPUの負荷が増加することに注意してください。

【locate_motion_mode】(タイプ:離散文字列、範囲/有効値:on, off, preview、デフォルト:off)

移動オブジェクトの周囲にボックスを配置して描画します。値 'preview'を指定すると、Motionは保存されたプレビューjpeg画像上にのみボックスを描画し、保存されたムービー上には描画しません。

【locate_motion_style】(タイプ:離散文字列、範囲/有効な値:box、redbox、cross、redcross、デフォルト:box)

有効になっている場合は、検索ボックスの外観とスタイルを設定します。

【text_left】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

左下隅にそれぞれユーザー定義のテキストが重ねて表示されます。AZ、az、0-9、 "/()@〜#<> \、。: - + _ \ n、および変換指定子を使用
オプションが定義されていない場合、この位置にテキストは表示されません。変換指定子を、このフィールドを定義すると、このオプションは引用符で囲まれている場合も、\nおよびスペースなどの新しいライン指定子が含まれています。
スペースと改行 '\ n'を組み合わせることで、写真のどこにでもテキストを配置できます。
httpリモートコントロールを使用してテキストを設定するときは、テキストをURLエンコードする必要があります。ブラウザがこれを行います。
コマンドラインツールで設定する必要がある場合は、最初にブラウザを使用して、エンコードされたURLを自動的に作成するようにしてください。

【text_right】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:%Y-%m-%d \\ n%T)

右下隅にユーザー定義のテキストがオーバーレイされています。AZ、az、0-9、 "/()@〜#<> \、。: - + _ \ n、および変換指定子を使用
オプションが定義されていない場合、この位置にテキストは表示されません。変換指定子を、このフィールドに定義すると、このオプションは引用符で囲まれている場合も、\ nおよびスペースなどの新しいライン指定子が含まれています。
スペースと改行 '\ n'を組み合わせることで、写真のどこにでもテキストを配置できます。
httpリモートコントロールを使用してテキストを設定するときは、テキストをURLエンコードする必要があります。ブラウザがこれを行います。
コマンドラインツールで設定する必要がある場合は、最初にブラウザを使用して、エンコードされたURLを自動的に作成するようにしてください。
それからスクリプトファイルやcronラインあるいはあなたが使いたいものにコピーペーストすることができます。
text_leftとの大きな違いは、このオプションが定義されていない場合、デフォルトは%Y-%m-%d \ n%Tで、日付はISO形式YYYY-MM-DDで表示され、24時間形式で表示されますHH:MM :SS
それからスクリプトファイルやcronラインあるいはあなたが使いたいものにコピーペーストすることができます。

【text_changes】(タイプ:ブール、範囲/有効値:on, off、デフォルト:off)

変更されたピクセルを示すテキストをオン/オフにします。このオプションを 'on'に設定すると、参照フレームと比較して変化したピクセル数が画像の右上隅に表示されます。
これは校正とテストに適しています。

 

f:id:mikolabo:20201011184140p:plain

オーバーレイテキストの配置方法

 


【text_scale】(タイプ:整数、範囲/有効値:1 - 10、デフォルト:1)

画像の上にテキストを描画する尺度。推奨範囲は1から10です。このオプションは、text_left、text_right、およびtext_changesによって定義されたテキストを通常のサイズのn倍で描画します。
これは、1280 x 720などの大きな画像フォーマットを使用するときに便利です。

【text_event】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:%Y%m%d%H%M%S)

このオプションは、テキスト表示とファイル名の両方に使用できる変換指定子%Cを定義するという点で特別です。このオプションは、特殊イベント変換指定子%Cの値を定義します。
このオプションでは、%C以外の任意の変換指定子を使用できます。日付と時刻の値は、現在のイベントの最初の画像のタイムスタンプから取得されます。
各イベントの一意の識別子を作成するために、%Cをfilenamesとtext_left / rightに使用できるという考えです。
オプションtext_eventは、値%Cを定義します。これは、ファイル名およびtext_right / text_leftで使用できます。
text_event/%C は、新しいイベントで最初に検出された画像のタイムスタンプを使用します。
イベントが進行中でない(ギャップ期間が満了した)場合、%Cは空の文字列です。
Pre_captured画像とminimum_motion_frames画像にはイベントが発生する前にタイムスタンプが付けられているため、text_left / rightの%Cはこれらの画像には影響しません。


動き検出(Motion Detection)

【emulate_motion】(タイプ:Boolean、範囲/有効値:on off、デフォルト:off)

動きがなくても常に画像を保存する

【threshold:しきい値】(タイプ:整数、範囲/有効な値:1 - 2147483647、デフォルト:1500)

動きを宣言するためのしきい値しきい値は、ノイズフィルタ、マスキング、スペックル除去、およびラベル付けの後にカウントされた変化したピクセルの数です。
'threshold'オプションは最も重要な検出設定です。モーションが実行されると、現在の画像フレームと前の画像フレームを比較し、ノイズフィルタ、マスキング、スペックル除去、
およびラベル付けで画像を処理した後に変更されたピクセルの数をカウントします。
'threshold'で定義されているよりも多くのピクセルが変更された場合は、動きが検出されたと見なします。
検出したい動きが出るようにしきい値をできるだけ低く設定しますが、ノイズや動いている植物から検出されないように十分に大きく設定します。
フレームが大きいほど、ピクセル数が多くなります。そのため、大きな画像フレームサイズの場合は、より高いしきい値が必要です。
-s(セットアップモード)コマンドラインオプションまたはtext_changes設定ファイルオプション、あるいはその両方を使用して、正しいしきい値を見つけてください。
小さな動きが検出されない場合(キッチンの床にあるマウスを参照)、値を下げてください。動きがあまりにも多くの鳥または動いている木を検出するならば、数を増やします。
(もちろん、あなたがMotionを使ってバードウォッチングをする多くのユーザーのうちの一人でない限り!)
実用的な価値は数百から数千になるでしょう

【threshold_maximum】(タイプ:整数、範囲/有効値:0、1から無制限、デフォルト:0(オフ))

このパラメータは、モーションをトリガーする最大ピクセル数を指定します。変更されたピクセル数が最大値を超えると、イベントは発生しません。
その結果、ピクセル数の変化がしきい値を超えてthreshold_maximum未満の場合にのみMotionがイベントをトリガーします。ゼロの値はthreshold_maximumを無効にします。

【threshold_tune】(タイプ:Boolean、範囲/有効値:on off、デフォルト:off)

しきい値レベルの自動調整を有効にします。この機能により、Motionはモーションを宣言するためのしきい値を継続的に調整します。
この機能を有効にすると、しきい値設定は無視されます。それはあなたのカメラ、光の状態、屋内/屋外、検出される動きなどによって異なる結果を与えるかもしれません。
それがうまく働かないなら、代わりに 'threshold_tune'オプションを無効にして、thresholdの手動設定を使ってください。

【noise_level:騒音レベル】(タイプ:整数、範囲/有効値:1 - 255、デフォルト:32)

ノイズレベルは、ノイズと動きを区別するためのしきい値として使用されます。これはしきい値パラメーターとは異なります。これはピクセルレベルで変わります。
目的は、カメラ内の電気ノイズによって発生する変化を排除することです。特に完全な暗闇の中では、写真の中にランダムに現れる小さな灰色の点としてノイズを見ることができます。
このノイズは誤った動き検出を引き起こす可能性があります。このパラメータが意味することは、ピクセルの強度が、カウントされるノイズ閾値パラメータを超えて+/-以上変化しなければならないということです。

【noise_tune】(タイプ:noise_level、範囲/有効値:on off、デフォルト:on)

ノイズレベルの自動調整を有効にします。この機能により、Motionはノイズとモーションを区別するためにノイズしきい値を連続的に調整します。
この機能を有効にすると、 'noise_level'設定は無視されます。カメラや光の条件によっては、結果が異なる場合があります。

【despeckle_filter】(タイプ:文字列、範囲/有効値:E、e、D、d、およびlの組み合わせ、デフォルト:未定義)

(E / e)ロードまたは(D / d)イレートの組み合わせを使用したスペックル除去モーションイメージ。そして、オプションの(l)abellingで終わる。
動画のノイズを(除去または強調して)調整する方法。スペックル除去機能のオプションは、 'e'、 'E'、 'd'、または 'D'のいずれかです。
これは、ラベリング機能を有効にする末尾の 'l'(文字l)によって組み合わせることができます。
芝生や木々の周りに風が吹いている、または光の状況が悪いと、モーションイメージに多くの点(またはノイズ)が現れることがあります
(「モーションのチューニング」のセクションを参照)。この機能は、このノイズを除去(または強化)し、動きの信頼性を高めます。
'e'オプションはダイヤモンドを削除し、 'E'は正方形を削除し、交互のeEは円を削除します。e / Eを追加するたびに、ノイズはピクセル単位で小さくなります。
そのため、 'despeckle Ee'は半径2の円を削除します。ただし、これも検出を2だけ縮小し、しきい値に影響を与えます。
そのため、ノイズを除去してから検出された動きを元のサイズに戻すには、 'despeckle EedD'を試してください。
スペックル除去機能が完了したら、ラベリング機能で連結ピクセルの領域を検索し、各領域に「ラベルを付ける」ことができます。
プログラムは最大面積の変化したピクセル数に基づいて動きをトリガーします。言い換えれば、検出された動きをトリガするためには、最大のラベル付き領域は閾値を超えていなければならない。
値EedDlが良い出発点です。可能な組み合わせは無限であり、最良の組み合わせを見つけるには多くの実験が必要です。
ラベリング機能は、スペックル除去機能の後に実行した場合にのみ意図したとおりに機能することを忘れないでください。
すなわち 文字「l」は最後の文字でなければならず、ただ1つの「l」でなければなりません。
誤検出に関して問題がほとんどない場合は、このオプションを空白またはEedDのままにして、ほとんどの単一ピクセルノイズを除去します。
スペックル除去部分の非常に詳細な技術的説明は、この機能の作者のWebページにあります。Ian McConnellのWebcam:Motion Web Page

【area_detect】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

事前定義された領域(1から9)で動きを検出し、その領域で動きが検出されたら、スクリプトを実行します。動き検出はまだ続きます。
このオプションはon_area_detectスクリプトを実行するためだけのものです。
エリアは次のように番号付けされています
1 2 3
4 5 6
7 8 9

【mask_file】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

マスキングpgmファイルのフルパスとファイル名。必要に応じて、キャプチャされているフレームの幅と高さに合わせてマスクのサイズが変更されます。
動きを検出したくないカメラ画像の領域が1つ以上ある場合(たとえば、風の中で動く木や車/歩行者が通り過ぎるところの写真の角など)、マスクファイルが必要です。
このファイルは、お気に入りの写真編集プログラムで作成した写真です。検出したい領域は白でなければなりません。無視したい部分は黒くする必要があります。
pgm画像は、カメラで撮影した写真と同じサイズ(縦横のピクセル数)にする必要があります。そのため、マスクする正しい領域を定義できます。
グレートーンを使って感度を調整できます。あなたがマスクファイルを持っていないなら、設定ファイルにそれを持っていないか、それをコメントアウトすることによって、このオプションを無効にしてください。
あなたが使用している場合rotate またはflip_axisオプション。マスクは回転後に適用されます。

詳細な説明

マスクファイルは、pgm形式のイメージファイル(ポータブルグレーマップ)である必要があります。BINARY形式を選択する必要があります。
この機能を使用するには、カメラから取得したものとまったく同じサイズの画像を作成します。次に、検出したい領域を純粋に白にし、無視したい領域を黒にします。
動きに対する感度を低くしたい場所にグレーの領域を作成することもできます。通常あなたは純粋な白黒に固執するでしょう。
マスクファイルを生成する1つの方法は以下の通りである。
モーションキャプチャした写真を撮り、それをマスク用に白黒で編集してpgmファイルとしてエクスポートします。(gimpのようなプログラム)
あなたがこのフォーマットで保存することができないならば、グレイスケールjpgとして保存して、そしてあなたはそれをpgmフォーマットに変換することができます
djpeg -grayscale -pnm [inputfile] > mask.pgm (djpegがインストールされていると仮定します - jpeg libパッケージの一部です)。
マスクファイルオプションは、動きの検出をマスクします。全体の絵はまだ絵の上に表示されています。つまり、この機能を使用して、他人に見られたくない領域を隠すことはできません。
代わりにmask_privacyオプションを使用してください。
以下は、路上で車が検出されないようにするためのWebカメラの画像とマスクファイルの例です。

通常の写真 通りが生垣の向こう側に見えることに注意してください。

 f:id:mikolabo:20201011184144p:plain

 マスクファイル(Webブラウザで表示できるようにpng形式に変換)

 

f:id:mikolabo:20201011184148p:plain


【mask_privacy】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

プライバシーマスキングpgmファイルのフルパスとファイル名。このファイル は上記のmask_fileのように機能します。
このパラメータとの違いは、mask_fileが動きの検出からセクションを除外する一方で、このファイルは画像のセクションを完全に除外することです。
mask_privacyは検出前に適用されるため、除外領域では動きは検出されません。ただし、このパラメータはまだmask_fileと一緒に使用できます。
例えば、このファイルは隣のヤードを除外し、mask_fileはブローイングツリーを動き検出から除外することができます。
結果として得られる写真/映画は隣の庭の代わりに真っ黒に見えますが、木はまだ写真/映画の中にあります。

【smart_mask_speed】(タイプ:整数、範囲/有効値:0 - 10、デフォルト:0(無効))

スマートマスクのスピード デフォルトは0 =無効です。1は遅く、10は速いです。スマートマスクは、動的な自己学習型マスクです。
スマートマスクは頻繁に動く領域(風の中の木のような)で感度を無効にします。この領域で動かなくなってしばらくすると、感度が再びオンになります。
構築されたマスクは実際の動きよりも少し境界で大きくなります。このようにスマートマスクは、風の強い条件下で突然の動きが発生したときに、より信頼性が高くなります。
ここでFastとは、マスクが素早く構築されていることを意味しますが、動きがなくなって非常に長い時間がかかることもありません。
遅いということは、マスクが作成されるまでに時間がかかることを意味しますが、それでも長くなります。smart_mask_speedの適切な開始値は5です。この設定はフレームレートとは無関係です。
アタックとディケイの時間はすべての利用可能なフレームレートにわたって一定です。スマートマスクが有効になっていて、モーションもモーションイメージまたはモーションMPEGを書き込むように設定されている場合、
現在のスマートマスクはオーバーレイとして白黒のモーションピクチャ/ MPEGに赤色でコピーされます。Motionがsetup_modeで実行されている場合も、Webカメラのストリームに同じことが起こります。
そうすれば、smart_mask_speedを簡単に調整できます。
mask_fileのオプションは、特定の領域に感度をオフにするには、静的なマスクが用意されています。一日中通り過ぎる車などで通りを覆い隠すのに非常に便利です。
しかし、大きな茂みや大きな木があるシナリオで、すべての葉が風の中を動いているときに、スペックル除去がオンになっていても時々動きを引き起こすと想像してください。
もちろん、ここで静的マスクを定義することもできますが、春と夏の間に茂みが成長しているとしたらどうでしょうか。まあ、あなたは時々マスクを適応させる必要があります。
カメラの位置が少し動いたらどうしますか?誰かがあなたの庭で新しい植物を育てたらどうしますか?常に新しい静的マスクを設定する必要があります。
この問題に対する答えは、スマートマスク機能です。動的な自己学習型マスクです。
スマートマスクは、頻繁に動く領域(風の中の木のような)で感度を無効にします。この領域で動かなくなってしばらくすると、感度が再びオンになります。
構築されたマスクは実際の動きよりも境界で少し大きいです。このようにして、スマートマスクは、風の強い条件下で突然の動きが発生したときに、より確実に機能します。

【lightswitch_percent】(タイプ:整数、範囲/有効な値:0 - 100、デフォルト:0(無効))

強度を変化させた画像領域の割合として与えられる突然の大量の光強度変化を無視します。値は、ライトスイッチ状態をトリガーする画像領域をパーセントで定義します。
ライトスイッチが検出されると、設定されたフレーム数の間、モーション検出は無効になります。これは、光の状態が変化したときや、カメラが暗い場所で感度を変えたときの誤検出を防ぐためです。

【lightswitch_frames】(タイプ:整数、範囲/有効な値:1 - 1000、デフォルト:5)

ライトスイッチ状態がトリガーされたときに無視するフレーム数(上記参照)。

【minimum_motion_frames】(タイプ:整数、範囲/有効な値:1 - 1000、デフォルト:1)

画像フレームは、それらが真の動きとして検出される前に、少なくとも連続して指定された数のフレームの動きを含まなければならない。
デフォルトの1では、すべての動きが検出されます。有効範囲は1から数千ですが、1から5の間にすることをお勧めします。
ピクチャフレームはMotionによってバッファされ、モーションが検出されるとモーションを含む最初のフレームも保存されるため、何も見逃すことはありません。
この機能は、カメラが光の感度を変えたり、光が変わったりしたときに多くの誤検出がある場合に使用されます。
Motionは大きな値を受け入れますが、これを比較的低い数値(10未満)に設定する必要があります。
1より大きいステップごとに、Motionはピクチャフレームバッファ用にRAM内にスペースを確保します。

【event_gap】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:60)

イベントの終了をトリガーするモーション検出なしの秒数。イベントは、短い時間枠内に撮影された一連の動画として定義されます。
値-1は許可され、すべてのMotionが1つのムービーファイルに書き込まれ、pre_captureは書き込まれないようにするイベントを無効にします。
0に設定すると、モーションはギャップレスモードで実行されます。動きが検出されなくなりpost_captureが終了した直後にイベントが終了します。
イベントを無効にすると、noise_tuneとsmartmaskに悪影響があります。どちらの機能もイベントの外でのみ正しく機能します。
event_gapが-1に設定されていると、両方の機能が正しく機能しなくなります。イベントは、短い時間枠内に撮影された一連の動画として定義されます。
例えば 部屋を歩いている人は、10枚の単一のjpg画像が保存されている可能性があるイベントです。
このオプションは、検出されたモーション間の休止時間を新しいイベントとして定義する必要がある期間を定義します。
最後の動きが検出された後にタイマーがスタートし、post_capture画像が保存され、開いているムービーファイルに追加されました。
ギャップタイマーがタイムアウトする前に検出された任意の動きは、ギャップタイマーをリセットするので、再びカウントオーバーを開始します。
オプション 'event_gap'は重要です。これは、イベントが終了したと言うまでに、モーションが検出されない期間が検出される期間を定義します。
イベントは、短い時間枠内に撮影された一連の動画として定義されます。
例えば、部屋を歩いている人は、10枚の単一のjpg画像が保存されている可能性があるイベントです。検出された動きは、'post_capture'オプションで設定されたpost_capturedフレームを含みます。
'gap'オプションは、検出されたモーション間の休止時間を新しいイベントとして定義する必要がある期間を定義します。良い初期値は60秒です。
技術的な用語で「ギャップ」が機能する方法は次のとおりです。
・動きのある最後のビデオフレームが検出された後に 'event_gap'秒タイムアウトするタイマー
・post_captureがアクティブになった場合、その後、ギャップタイマーは、最後の画像の後にカウントを開始post_captureのバッファが保存されています。
・event_gapタイマーはリセットされ、新しいモーションが検出されるたびに開始されるので、短い 'gap'値を設定してもアクションを見逃すことはありません。
 それは単により多くのイベント(例えば、より多くのmpegsファイル)を作成するでしょう
event_gap値は、Motionの多くの機能に影響します。
・タイマーが切れると、次にモーションが検出されたときにイベント番号が1つ増えます。ファイル名またはテキスト機能で%v変換指定子を使用すると
 ファイル名またはテキストの数が1つ増えます。
・pre_captureの機能は、イベントの開始時に動作します。そのため、非常に大きな 'event_gap'値がある場合、pre_captureはあまり機能しません。
ffmpeg機能を使用してムービーを作成すると、最初のモーションが検出されたときにイベントの最初に新しいムービーファイルが開始されます。
 'event_gap'秒が動かずに(そしてpost_capturedフレームが保存されて)経過すると、ムービーファイルは完成し閉じられます。
・1つの大きなムービーファイルを生成するために大きなevent_gap値を使用しないでください。
 Motionがこのムービーファイルの動作を停止した場合、正しく完了して閉じられないため、表示することはできません。
・追跡機能の中には、イベントが終了したときにカメラを中心位置に戻すものがあります。
'event_gap'と 'minimum_gap'は互いに関係がないことに注意してください。

【pre_capture】(タイプ:整数、範囲/有効値:0 - 100秒、デフォルト:0(無効))

動き検出時に出力される、動きが検出される前の事前にキャプチャされた(バッファリングされた)ピクチャの数を指定します。推奨範囲は0から5です。
大きな値を使用することはお勧めできません。大きな値を設定すると、Motionはビデオフレームをスキップし、映画は滑らかではなくなります。
これは、最初の画像がMotionとして検出された直後に、MotionがJPEGの保存、ムービーのエンコード、データベースへの書き込み、外部プログラムの実行など、
バッファリングされたすべての画像を処理しているためです。
これが行われるまで、Motionは別の画像を取得しません。これは、高いフレームレートと組み合わせたpre_captureの適度な値でも、
おそらくMotionの多くのフレームを見逃す可能性があることを意味します。
滑らかなムービーを作成するには、代わりに大きい値のpost_captureを使用してください。
Motionは 'pre_capture'で定義されたピクチャフレーム数をバッファします。動きが検出されると、バッファ内のピクチャはムービーに含まれます。
その結果、イベントが発生することがプログラムによって事前にわかっていて、実際に発生する前に録音が開始されたように見えます。
これはイベントのより完全なビデオクリップを提供する素晴らしい機能です。
pre_captureが0に設定されている場合、この機能は無効になります。推奨値はビデオの約0.5秒ですので、値はフレームレートと希望するプリキャプチャ時間に合うように定義する必要があります。
理論的には、最大数百フレームの事前にキャプチャされたフレームを持つことができますが、当然のことながら、動きによってコンピュータのメモリに大きなフットプリントが残ります。
したがって、pre_captureには比較的小さい値を使用することをお勧めします。選択したフレームレートに応じて、また機能に応じて1〜5の値が有効です。
スムーズなムービーを得るためにpost_captureに大きな値を使用してください。これはパフォーマンスのヒットやRAMスペースを犠牲にしません。

【post_capture】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0(無効))

動きが検出された後にキャプチャされるフレーム数を指定します。これの主な目的は、動きが検出されるたびに滑らかなビデオクリップを作成することです。
個人的な好み(およびディスク容量)に使用してください。このオプションは、連続ムービーを作成するのに適した方法です。
Post_captureは余分なRAMを消費せず、大きな値があってもムービーに一時停止を作りません。
ムービーを保存するだけで、output_normalがオンになっていない場合、推奨されるpost_captureの値は1〜5秒に相当します
(このパラメータのフレームレートに必要な秒数を掛けることを忘れないでください)。


スクリプト実行

モーションは、モーション検知と関連イベントに基づいて外部コマンドを実行できます。それらは以下のセクションで説明されています。

セキュリティ警告!
これらの機能は、あなたが以下に注意を払う必要があることを意味します。
リモートコントロールポート(http)にアクセスできる人なら誰でも、Motionを実行しているユーザと同じ権限で自分のコンピュータ上で任意のコマンドを実行できます。
localhostへのアクセスが制限されていない場合、またはサーバーのファイアウォールを使用してアクセスが制限されていない場合は、誰でも制御ポートにアクセスできます。
リモートコントロールが有効になっているMotionを実行しているマシンとインターネットの間には常にルータがあり、モーションコントロールポートに外部からアクセスできないようにする必要があります。
制御ポートをlocalhostに制限した場合でも、あらゆる種類のGUIまたは端末セッションを使用してユーザーがサーバーにログインしていることに注意する必要があります。
必要なのは、Motionの設定を変更するためのブラウザまたは単一のコマンドラインの実行だけです。
Motionを無害なユーザーとして実行することをお勧めします。rootとしてではありません!

on_event_start】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

イベントの開始時に実行されるプログラム/スクリプトのフルパスとファイル名。ギャップによって定義された無動作期間後に検出された最初の動作でイベントが開始します。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/ user / bin / perl)も忘れないでください。

on_event_end】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

イベント終了時に実行されるプログラム/スクリプトのフルパスとファイル名。event_gapが期限切れになると、イベントは終了します。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。

on_picture_save】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

画像が保存されたときに実行されるプログラム/スクリプトのフルパスとファイル名。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。
ファイル名を(フルパスで)コマンドに渡すには%fを使用してください。

on_motion_detected】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

動きが検出されたときに実行されるプログラム/スクリプトのフルパスとファイル名。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。

on_area_detected】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

area_detectオプションで指定された定義済み領域で動きが検出されたときに実行されるプログラム/スクリプトのフルパスとファイル名。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。

on_movie_start】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

新しいムービーが作成されているときに実行されるプログラム/スクリプトのフルパスとファイル名。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。
ファイル名を(フルパスで)コマンドに渡すには%fを使用してください。

on_movie_end】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

新しいムービーが作成された後に実行されるプログラム/スクリプトのフルパスとファイル名。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。
ファイル名を(フルパスで)コマンドに渡すには%fを使用してください。

on_camera_lost】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

カメラを開けない場合、またはカメラを紛失した場合に実行するコマンドのフルパスとファイル名。
モーションが失われたカメラを検出しない場合があることに注意してください。それはカメラとドライバーに依存します、そして、このオプションは各々の構成のためにテストされることが勧められます。
カメラの接続が解除されてもPCがハングアップすることさえある状況もあり、その場合このスクリプトは実行されません。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。

on_camera_found】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

紛失したカメラが見つかったときに実行されるコマンドのフルパスとファイル名
モーションが紛失したカメラを検出できなかった場合は、カメラが見つから なかったことも認識しません。
変換指定子 とスペースをコマンドの一部として 使用できます。これは任意の種類のプログラムまたはスクリプトです。ACLの実行ビットを設定することを忘れないでください。
それがperlbashのようなスクリプトタイプのプログラムである場合は、スクリプトの最初の行としてshebang行(たとえば#!/user/bin/perl)も忘れないでください。


Output - Picture Options:出力 - 画像オプション

モーションはさまざまな種類の写真を出力できます。通常の写真は以下の通りです。

 f:id:mikolabo:20201011184152p:plain

 モーションタイプのピクチャ、またはデバッグピクチャとも呼ばれます。最大の領域は青色で、これだけがMotionとしてカウントされます。
モーション画像は、最後の画像フレームではなく過去の画像の数学的計算である「参照フレーム」をMotionがどのように維持するかを示しています。
これは実際の動きを拡大し、ゆっくりとこっそり入ることが容易でないことを保証します。

 f:id:mikolabo:20201011184136p:plain

  【picture_output】(タイプ:離散文字列、範囲/有効な値:on、off、first、best、デフォルト:off)

このオプションは通常の画像の出力を制御します。'on'が通常の選択です。'first'はMotionはイベントごとに最初に検出された画像のみを保存します。
「best」は、「first」と比較して、もう少し多くのCPUパワーとリソースを必要とします。「best」に設定すると、Motionはイベント中に最も変更されたピクセルで画像を保存します。
これは、映画をサーバーに保存し、その映画のコンテンツをWebページに表示するためのjpegを表示したい場合に便利です。
画像を出力しないためには 'off'とき、netcam_highresのオプションが一緒に選択された「movie_passthrough」出力画像は、通常の解像度ではない高解像度で提供されます。

【picture_output_motion】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

動いている物体のみで写真を出力します。この機能は、グレイトーン画像として変化するピクセルだけが見える特別なモーションタイプのムービーを生成します。
ラベリングが有効になっている場合は、最大の領域が青で表示されます。スマートマスクが指定されている場合は、赤で表示されます。
このオプションはチューニングやテストには適していますが、一般の人々にとってはあまり面白くないでしょう。
デフォルトではこれらの動画は保存されません。動画は、.jpgまたは.ppmの前にファイル名の末尾に「m」が追加されている点を除いて、
通常のモーショントリガー画像と同じ場所に同じファイル名で保存されます。例えば、名前は01-20020424232936-00m.jpgです。

【picture_type】(タイプ:離散文字列、範囲/有効な値:jpeg、webp、ppm、デフォルト:jpeg

出力する画像ファイルの種類を指定します。特に品質を損なうことなく高品質の写真を保存する必要がある場合を除いて、常にjpegを使用することをお勧めします。

【picture_quality】(タイプ:整数、範囲/有効値:1 - 100、デフォルト:75)

JPEGまたはWebPイメージの品質(パーセント)。100はほとんど圧縮されていないことを意味します。数値が小さいと、ファイルサイズがはるかに小さくなりますが、画質が低下します。

【picture_exif】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

JPEG EXIFコメントに含めるテキストを指定するには、このオプションを使用します。EXIFタイムスタンプは、このテキストとは無関係に含まれます。このオプションで は変換指定子を使用できます。

【picture_filename】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:%v-%Y%m%d%H%M%S-%q)

このオプションは、ファイル名を指定し、オプションでtarget_dirに対するピクチャのパスを指定します。ファイル拡張子.jpg、webp、または.ppmが自動的に追加されます。このオプションで は変換指定子を使用できます。

【snapshot_interval】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0(無効))

このパラメータは、各スナップショット間の秒数を指定します

【snapshot_filename】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:%v-%Y%m%d%H%M%S-snapshot)

このオプションは、ファイル名と、オプションでtarget_dirに対するスナップショットのパスを示します。ファイル拡張子.jpg、webp、または.ppmが自動的に追加されます。
snapshot_filenameが正確に 'lastsnap'でない限り、lastsnap.jpgというシンボリックリンクがtarget_dirに作成され、常に最新のスナップショットを指すようになります。
このオプションで は変換指定子を使用できます。


Output - Movie Options:出力 - ムービーオプション

【movie_output】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:on)

モーションのムービーをエンコードするには、ffmpegライブラリを使用します。このオプションは、各新しいイベントの始めに新しいムービーを生成し、同じイベント内で検出された各モーションのムービーに追加します。現在のイベントは、 'event_gap'オプションで定義された時間が動きを検出せずに経過したときに終了します。次の動きの検出時に、新しい映画が始められる。

【movie_output_motion】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

ffmpegライブラリを使用して、変化するピクセルだけが見えるモーションタイプのムービーをエンコードします。movie_outputのように機能しますが、代わりにモーションピクセルタイプのピクチャを出力します。この機能は、グレイトーン画像として変化するピクセルだけが見える特別なモーションタイプのムービーを生成します。ラベリングが有効になっている場合は、最大の領域が青で表示されます。スマートマスクは赤で表示されます。ファイル名は通常の映画と同じですが、ファイル名の後に 'm'が付きます。

【movie_max_time】(タイプ:整数、範囲/有効な値:0(無限大) - 214748364、デフォルト:120)

映画の最大長(秒)。長さを無制限にするには、これをゼロに設定します。

【movie_bps】(タイプ:整数、範囲/有効な値:0 - 9999999、デフォルト:400000)

ffmpegによって制作された映画のビットレートビットレートは1秒あたりのビット数です。カメラが固定ビットレート設定になっている場合、値が高いほど品質が高くなり、ファイルが大きくなります。希望の品質を得るための実験 品質が高いほど、ファイルは大きくなります。movie_qualityが0(無効)になっていない場合、このオプションは無視されます。

【movie_quality】(タイプ:整数、範囲/有効な値:0 - 100、デフォルト:60)

ffmpegエンコーダの可変ビットレートを有効にして定義します。可変ビットレートが有効な場合、movie_bpsのオプションは無視されます。
値が0の場合はこのオプションが無効になり、値1 - 100の場合はムービーの品質が変わります。1の値は最悪の品質を意味し、100は最高の品質です。
サイズと品質の間で望ましい妥協点が得られるような値を試してください。

【movie_codec】(タイプ:離散文字列、範囲/有効な値:mpeg4、msmpeg4、swf、flv、ffv1、mov、mp4、mkv、hevc、デフォルト:mkv

ビデオに使用されるコンテナ/コーデック。mpeg4またはmsmpeg4 - 拡張子が.aviのファイルを提供します。

swf - 拡張子が.swfのフラッシュフィルムを作成します。
flv - 拡張子が.flvのフラッシュビデオを提供します。
ffv1 - ロスレスエンコーディング用のFFビデオコーデック1
mov - QuickTime
mp4 - MPEG-4 Part 14 H264エンコーディング
mkv - H264エンコーディングMatroskaコンテナ
H.265 / HEVC(高効率ビデオコーディング)のhevc-MP4コンテナ

特定のコンテナは上記のデフォルトとは異なるコーデックを処理できることに注意してください。たとえば、mkvコンテナは事実上あらゆるコーデックを処理できます。
Motionはオプションでこのパラメータを使って追加の指定をすることができます。コンテナ(mkv)を指定してからセミコロンとffmpegコーデック名を追加することで、
Motionは指定されたコーデックをコンテナに使用しようとします。これは、オプションを次のように指定することによって、h265コーデックをmp4ではなくmkvコンテナに
エンコードするなどのオプションを許可します。mkv:libx265

【movie_duplicate_frames】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

指定した場合、CPUがムービーに要求されたフレームレートに追いつかない場合、フレームレートに追いつくためにフレームが複製されます。
結果のムービーは同じフレームを複数回送信するため、このオプションは慎重に使用してください。そのため、ムービーは「失速」してひどく見えることがあります。

【movie_passthrough】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

RTSP、RTMP、mjpeg、および一部のV412カメラを使用する場合は、カメラから直接取得したパケットを使用してモーションのムービーファイルを作成します。
mjpegカメラの場合、URLは次のようにmjpegではなくhttp接頭辞を使用して指定する必要があります。
v4l2カメラでmovie_passthroughを使用するには、netcam_urlパラメータとv4l2プレフィックスを使用して指定する必要があります 。
mjpeg(v4l2_paletteのオプション8)またはH264(v4l2_paletteのオプション21)を提供するWebカメラのみが movie_passthroughで動作します。
単一のnetcam_urlのみを使用する場合、このオプションは、結果のムービーファイルにイメージをエンコードするときに必要な処理を減らします。
動き検出を処理するために、画像の復号化は依然として画像上で行われる。
両方使用する場合netcam_urlとnetcam_highres ノーマル解像度ストリームが捕捉され、復号化されることで発生するものを、動きが検出された場合、
高解像度の画像が捕捉され、デコード/エンコード処理を介さずにムービーファイルに処理されます。
このオプションはCPU使用率を減らすはずですが、メモリ要件を増やします。
画像処理は行われないので、テキストオーバーレイ、プライバシーマスクなどは結果のビデオには表示されません。
結果のムービーの先頭には、パススルーオプションなしでムービーが作成された場合には存在しない、余分なフレームがいくつか含まれる可能性があります。
このオプションはCPUを減らすために高解像度画像のデコードをバイパスするので、画像がpicture_outputオプションで保存されるとき、提供される画像は通常の解像度のストリームからのものになります。

【movie_filename】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:%v - %Y%m%d%H%M%S)

target_dirを基準としたモーショントリガムービーのファイルパス。選択したコーデックに基づいて、ファイル拡張子が自動的に名前に追加されます。
このオプションで は変換指定子を使用できます。

【movie_extpipe_use】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

このオプションは、ムービーへの外部エンコーディングのために出力をパイプに送るかどうかを指定します。
生のビデオを標準出力に渡すことには、内蔵のffmpegエンコーダを使用する場合と比べていくつかの利点があります。
まず、標準入力のRAWフレームをサポートしているエンコーダであればどれでも使用できるので、現在動きのある形式に限定されているわけではありません。
movie_extpipeの 例を参照してください。次に、マルチコアシステムでは外部エンコーダが個別のCPUコアを使用するため、
ムービーのエンコードはメインモーションスレッドから個別のコアにオフロードされ、パフォーマンスが大幅に向上します。
このオプションでは、ビデオループバックソフトウェアのインストールや設定は不要です。

【movie_extpipe】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

このオプションは、映画のイベント中に画像を受信して処理するプログラムのプログラム名とオプションを指定します。
このオプションでは、ビデオループバックソフトウェアのインストールや設定は不要です。
サンプル:
movie_extpipe mencoder -demuxer rawvideo -rawvideo w=%w:h=%h:i420 -ovc x264 -x264encopts bframes=4:frameref=1:subq=1:scenecut=-1:nob_adapt:threads=1:keyint=1000:8x8dct:vbv_bufsize=4000:crf=24:partitions=i8x8,i4x4:vbv_maxrate=800:no-chroma-me -vf denoise3d=16:12:48:4,pp=lb -of avi -o %f.avi - -fps %fps
movie_extpipe x264 - --input-res %wx%h --fps %fps --bitrate 2000 --preset ultrafast --quiet -o %f.mp4
movie_extpipe mencoder -demuxer rawvideo -rawvideo w=%w:h=%h:fps=%fps -ovc x264 -x264encopts preset=ultrafast -of lavf -o %f.mp4 - -fps %fps
movie_extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx%h -framerate %fps -i pipe:0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4

【timelapse_interval】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0(無効))

このパラメータで設定された秒数の間隔で画像フレームを保存するタイムラプスビデオを作成します。

【timelapse_mode】(タイプ:離散文字列、範囲/有効な値:hourly, daily, weekly-sunday, weekly-monday, monthly, manual、デフォルト:daily)

タイムラプスビデオのファイルロールオーバーモード。 新しいタイムラプスファイルが新しいファイルであることを確認するために、
timelapse_filenameで変換指定子を使用することが重要です。ファイル名が変わらない場合は、Motionは単にタイムラプス写真を既存のファイルに追加します。
値 'Manual'は、Motionが自動的に新しいファイル名にロールオーバーしないことを意味します。
http制御インターフェースを使用して、timelapse_intervalオプションを0に設定してから、選択した値に戻すことで手動で行うことができ ます。
「hourly」という値は、正午にロールオーバーします。デフォルトの値 'daily'は真夜中にロールオーバーします。
あなたが週から来る場所に応じて日曜日か月曜日のどちらかで始まるかもしれないので、2つの週単位のオプションがあります。そして「毎月」は当然その月の1日にロールオーバーします。

【timelapse_fps】(タイプ:整数、範囲/有効値:0 - 100、デフォルト:30)

タイムラプスビデオの再生に使用する1秒あたりのフレームレート。

【timelapse_codec】(タイプ:離散文字列、範囲/有効な値:mpg、mpeg4、デフォルト:mpg)

タイムラプスビデオで使用されるコンテナ/コーデック。
mpg - mpgファイルをmpeg-2エンコーディングで作成します。Motionをシャットダウンして再起動すると、新しい写真が以前に作成されたファイルにタイムラプス用の名前で追加されます。
mpeg4 - デフォルトのエンコーディングでaviファイルを作成します。Motionをシャットダウンして再起動した場合、新しい写真はタイムラプス用に指定された名前の新しいファイルを作成します。
タイムラプスを記録するという性質は、典型的な映画のコンテナとコーデックが行うように設計されているものではないため、このオプションでは異なるコンテナは計画されていないことに注意してください。
別のコンテナ/コーデックを希望するユーザーは、ffmpegを直接使用して完成したタイムラプスビデオを再エンコードするか、
またはタイムラプスをjpg画像ファイルとして出力し、ffmpegを使用してそれらのjpgsをムービーにエンコードすることができます。

【timelapse_filename】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:%Y%m%d-timelapse)

target_dirを基準としたタイムラプスビデオのファイルパス。選択したコーデックに基づいて、ファイル拡張子が自動的に名前に追加されます。
このオプションで は変換指定子を使用できます。


Output - Pipe Options:出力 - パイプオプション

動きは2つのpipeの変化を提供する。最初のオプションは、通常のイメージを持つv4l2loopbackデバイスです。
このパイプオプションを使用すると、v4l2ループバックソフトウェアを使用して、v4l2デバイスからキャプチャされたビデオが新しいv4l2デバイスにパイプ接続されます。
この配管は、Motionが同じ機器を使用しているのと同時にユーザがビデオ機器を使用したい場合に必要です。
デフォルトでは、一度に1つのアプリケーションしかデバイスを開くことができません。
物理デバイスとは異なり、ビデオループバックデバイスは入力と出力の両方を取ります。
モジュールは単にその入力に来るものをすべて取り、それを出力に送ります。
ビデオループバックデバイスをインストールすると/dev/video1などの新しいデバイスが作成されますが、実際のWebカメラバイスは/dev/video0になります。
その後、motionに物理デバイス(/dev/video0)を開いてビデオ信号を/dev/video1に "パイプ"するように指示できます。
その後、VLCなどの外部ビデオプレーヤーを使って/dev/video1デバイスを開き、写真をライブで見ることができます。
VLCは実際のカメラを見ていると考えるために「だまされて」います。

インストール
ビデオループバックデバイスは多くのディストリビューションでaptを使ってインストールすることができます。
Motionでテストされたパッケージはv4l2loopback-dkmsです。パッケージがインストールされたら、実行するだけです。(sudo modprobe v4l2loopback)
これにより、ループバックに使用できる新しいビデオデバイスが追加されます。複数のデバイスを追加することを可能にするv4l2loopbackに関連する追加のオプションがあると考えられています。
詳細についてはv4l2loopbackプロジェクトのドキュメントを参照してください。
Motionでvloopbackデバイスをアクティブにするには、motion.confファイルの 'video_pipe'オプションをv4l2loopbackによって作成されたデバイスに関連付けられたデバイス名に設定します。
motion.confのオプション 'video_pipe_motion'を設定することで、変化したピクセルが見える特別な動画を見ることもできます。
video_pipeまたはvideo_pipe_motionオプションを設定するときは、入力デバイスを/ dev / video1のように指定します。
このコマンドで無効にする必要があります。
sudo modprobe -r v4l2loopback
pipeの2番目のオプションは、動画がループバックデバイスに送信されること以外は上記と同じです。

【video_pipe】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

通常の画像用のvideo4linuxビデオループバックデバイス。デバイスは/dev/video1のような形式で指定されます。

【video_pipe_motion】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

動画用video4linuxビデオループバックデバイス。デバイスは/ dev / video1のような形式で指定されます。


Webコントロール

Motionは実行中にいくつかのパラメータを制御するための限られたWebインタフェースを持っています。
デフォルトでは、Webインタフェースによるパラメータの変更はwebcontrol_parms設定オプションによって無効にされています。
これはセキュリティ目的のためです。webcontrol_parmsが有効になっている場合は、Motionの実行中に一部のMotion設定オプションを変更できます。
他の設定オプションを保存してMotionを再起動して有効にする必要があります。
webcontrol_portが8080の 場合は、Motionが動作しているのと同じマシンから次のファイルを開きます 。http://localhost:8080/
リモートマシンからWebコントロールにアクセスするには、最初にwebcontrol_localhostを設定してからリモートマシンoffのlocalhostのIPを使用して接続します(例 http://192.168.1.4:8080/
Motionの実行中にスクリプトまたはcronを使用してMotionの設定を自動的に変更する場合は、Webページを取得または送信できるプログラムを使用してください。
一般的なプログラムは wget、lwp-request およびcurlです。

動き検出を一時停止する例
lwp-request http://localhost:8080/0/detection/pause
動き検出を開始する例
lwp-request http://localhost:8080/0/detection/start

text_leftをcpu loadで更新するためのスクリプト例(わかりやすくするために冗長)
#!/bin/bash

LOAD=`top -b -n2 | grep "Cpu(s)" | awk '{print $2+$4}' | tail -n1`

TEXTLEFT=""
TEXTLEFT=$TEXTLEFT"System at %{host}"
TEXTLEFT=$TEXTLEFT"\nCPU $LOAD "
TEXTLEFT=$TEXTLEFT"\nfps: %{fps}"
TEXTLEFT=$TEXTLEFT"\nDate: %Y-%m-%d"
TEXTLEFT=$TEXTLEFT"\n%T-%q"

# Replace special chars with needed urlcodes
TEXTLEFT="${TEXTLEFT//%/%25}" #Replace % with %25
TEXTLEFT="${TEXTLEFT// /%20}" #Replace spaces with %20
TEXTLEFT="${TEXTLEFT//\{/%7B}" #Replace { with %7B
TEXTLEFT="${TEXTLEFT//\}/%7D}" #Replace } with %7D

curl http://localhost:8080/1/config/set?text_left=$TEXTLEFT

return 0

スクリプトを介して、またはhtml / css webcontrol_interfaceの外側で更新する場合は常に、文字をurlcode値に置き換える必要があることに注意してください。
あなた自身のソフトウェア(例えばあなた自身のPHPフロントエンド)から制御するためにmotion.confオプションwebcontrol_interfaceを1(text)に設定することができます。
これはMotionがウェブブラウザレスポンス内のhtmlタグを削除するようにします。
以下の定義は、Motionの制御に利用できるコマンドを要約するときに使用されます。

{IP} Motionを実行しているコンピュータのIPアドレス
{port} Webコントロールに指定されたポート
{camid}カメラのcamera_id。
{parm} 要求されたMotion構成パラメーター。
{value1} 要求されたMotion構成パラメータの最初の値。
{value2} 要求されたMotion構成パラメータの2番目の値。

以下は利用可能なコマンドです。

{IP}:{port}/{camid}/config/list    カメラのすべての設定値を一覧表示します。
{IP}:{port}/{camid}/config/set?{parm}={value1} 要求されたパラメータに値を設定します
{IP}:{port}/{camid}/config/get?query={parm}  現在パラメータに設定されている値を返します。
{IP}:{port}/{camid}/config/write    現在のパラメータをファイルに書き込みます。
{IP}:{port}/{camid}/detection/status カメラの現在のステータスを返します。
{IP}:{port}/{camid}/detection/connection カメラの接続状態を返します。
{IP}:{port}/{camid}/detection/start  モーション検知を開始または再開します。
{IP}:{port}/{camid}/detection/pause  モーション検知を一時停止します。
{IP}:{port}/{camid}/action/eventstart 新しいイベントを起動します。
{IP}:{port}/{camid}/action/eventend  イベントの終了をトリガーします。
{IP}:{port}/{camid}/action/snapshot  スナップショットを作成する
{IP}:{port}/{camid}/action/restart   Motionをシャットダウンして再起動します
{IP}:{port}/{camid}/action/quit    カメラへの接続をすべて閉じる
{IP}:{port}/{camid}/action/end Motion アプリケーションを完全にシャットダウンする
{IP}:{port}/{camid}/track/center    中央PTZカメラにコマンドを送信する
{IP}:{port}/{camid}/track/set?x={value1}&y={value2}  PTZカメラにコマンドを送信して、xとyで指定された場所に移動します
{IP}:{port}/{camid}/track/set?pan={value1}&tilt={value2}  PTZカメラにコマンドを送り、値1にパンし、値2にチルトします

一般的な規則として、{camid}がメインのmotion.confファイルでcamera_idを参照する場合、上記で参照されているwebcontrolアクションはMotionに接続されているすべてのカメラに適用されます。
このcamera_idは通常0(ゼロ)として指定されます。そのため、のコマンドを発行すると、{IP}:{port}/0/detection/pauseすべてのカメラが一時停止します。
違いに対する明確化の点pause、quit及びend。アクションpauseが実行されると、Motionはモーション検出処理を停止し、もちろんすべてのイベントを停止しますが、カメラからの画像の処理とデコードを継続します。
ユーザが実行するとき、これは高速遷移を可能にする作用が逆に動き検出を停止させるだけでなく、画像のカメラ及び復号から切断するだけでなく、
aの後に動き検出を開始するには、ユーザーはstartquitquitrestartカメラへの接続が再初期化されます。
また、カメラは完全に切断されているので、Motionが完全に起動してカメラを処理または表示できるようにするまでに数秒以上かかることがあります。
最後に、のオプションがありますend。このオプションはMotionアプリケーションを完全に終了させます。
すべてのカメラへの接続をすべて閉じてアプリケーションを終了します。Motionをデーモンモードで実行している場合、これが必要になることがあります。
endリクエストを処理した後にwebcontrolインターフェースからMotionアプリケーションを再起動する方法はありません。
上記の項目がHTML / CSSインターフェースを介して利用可能な場合は、ログでMotionに送信された正確なURLを見ることも可能です。
ログレベルを8(デバッグ)に変更してから、Motion Webコントロールインターフェイスを開き、問題のアクションを実行します。
ログでは、Motionは、アクションを実行したMotionに送信された正確なURLを報告します。
アラート!セキュリティ警告!この機能はまたあなたが以下に注意を払う必要があることを意味します。
リモートコントロールポート(http)にアクセスできる人はだれでも、オプションの値を変更したり、Motionを実行しているユーザーと同じ権限でサーバー上の任意の場所にファイルを保存したりできます。
Motionを実行しているユーザーと同じ権限で、コンピューター上で任意のコマンドを実行できます。
localhostへのアクセスが制限されていない場合、またはサーバーのファイアウォールを使用してアクセスが制限されていない場合は、誰でも制御ポートにアクセスできます。
リモートコントロールが有効になっているMotionを実行しているマシンとインターネットの間には常にルータがあり、モーションコントロールポートに外部からアクセスできないようにする必要があります。
また、webcontrol_parmsを可能な限り低いレベルに調整してください 。
制御ポートをlocalhostに制限した場合でも、あらゆる種類の端末セッションでサーバーにログインしているすべてのユーザーの面倒を見る必要があります。
無害なユーザーとしてMotionを実行します。rootとして走らないでください!

【webcontrol_port】(タイプ:整数、範囲/有効な値:0 - 65535、デフォルト:0(無効))

Motionパラメータをhttpベースで制御するためのポート番号を設定します。
このオプションは、カメラの設定ファイルではなくmotion.confファイルに配置する必要があります。
1024未満のポート番号では通常、root権限が必要です。ポート8080はこの目的のためのポートの典型的な選択です。

【webcontrol_ipv6】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

IPv6IPV4からの接続を待ちます。

【webcontrol_localhost】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:on)

このオプションはモーションパラメータの制御をローカルホストに制限します。このオプションは、カメラの設定ファイルではなくmotion.confに配置する必要があります。
これをonに設定すると、http(ブラウザ)を使用するコントロールは、Motionが実行されているのと同じマシン上でのみアクセスできます。

【webcontrol_parms】(タイプ:整数、範囲/有効値:0 - 3、デフォルト:0)

Webコントロールページに表示され、変更可能なパラメータの種類を設定します。
0:なし - 設定パラメータはありません。
1:限定 - 限定されたパラメータのリストが利用可能になります。
2:詳細設定 - 詳細なパラメータ一覧が表示されます。これらは通常Motionを有効にするために再起動する必要があります。
3:制限付き - ユーザーID、パスワード、および "on_"コマンド。
Webインターフェースのセキュリティーを強化するために、このパラメーターのデフォルトは0(なし)です。
webcontrol_parmsの設定はWebインタフェースに含まれていないため、このパラメータは設定ファイルで指定する必要があります。
EXTREMEレベル制限されたレベルを使用している場合、WebBrowserコントロールが侵害された場合、それはコンピュータを危険にさらす可能性があるため、注意が必要があります。
カメラを最初に設定するときには、このオプションをゼロ以外の値にのみ設定することを強くお勧めします。Motionが設定されたら、この値をゼロに設定して設定を完了することをお勧めします。

【webcontrol_interface】(タイプ:整数、範囲/有効値:0 - 2、デフォルト:0)

提供するWebコントロールインターフェイスの種類。
値0は、html / cssを使用した従来のWebページインタフェースを提供します。
値1は、プログラムによるアクセスに適したテキストのみのインターフェースを提供します。
値2は、従来のWeb制御インターフェースを提供します。
このオプションは、カメラの設定ファイルではなくmotion.confに配置する必要があります。ほとんどの場合の推奨値は「0」です。
これは、通常のブラウザでMotionをナビゲートおよび制御できるページを提供します。

【webcontrol_auth_method】(タイプ:整数、範囲/有効な値:0、1、2、デフォルト:0)

Webコントロールポートに使用する認証方法
0 =無効
1 =基本認証
2 =ダイジェスト認証

【webcontrol_authentication】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

このパラメータは、ストリームに使用するユーザー名とパスワードを設定します。構文はusername:passwordです。

【webcontrol_tls】(タイプ:(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

このオプションは、Webコントロールポートに対してSSL / TLSを有効にするかどうかを指定します。
一部のディストリビューションでは、Motionが使用するライブラリはSSL / TLSサポートでコンパイルされていない可能性があります。
この場合、MotionはSSL/TLS接続をサポートできません。SSL / TLSをサポートできるかどうかはログに記録されます。
このオプションを選択することに加えて、webcontrol_certおよび webcontrol_keyファイルも指定する必要があります。

【webcontrol_cert】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

SSL/TLSサポート用の証明書ファイルへのフルパス。webcontrol_tlsが有効な場合にのみ使用されます。

【webcontrol_key】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

SSL/TLSサポート用のキーファイルへのフルパス。webcontrol_tlsが有効な場合にのみ使用されます。

【webcontrol_cors_header】(タイプ:文字列、範囲/有効な値:*または有効なURI、デフォルト:未定義)

Webコントロールと共に送信されるAccess-Control-Allow-Originヘッダー値。指定しない場合、Access-Control-Allow-Originヘッダーは送信されません。
このヘッダーにより、ブラウザはクロスオリジンリソース共有(CORS)を介してWebコントロールにアクセスできます。
たとえば、*を指定すると、どのオリジンから提供されたブラウザクライアントコードからもアクセスできます。


ライブストリーム

Motionは、カメラから画像をストリーミングすることを可能にする単純なウェブカメラサーバーを内蔵しています。
ストリームは、ほとんどのブラウザで表示できる「multipart jpeg」形式(mjpeg)で生成されます。
ブラウザがストリームを直接開かない場合は、ストリームを参照する単純なHTMLページを手動で作成することが可能です。
mplayer、ffplay、avplayなどの一部の通常のストリームプレーヤーは、ネットワークストリームを次のように指定してストリームを開くこともできます。 http://localhost:mystreamportnumber/
通常、ストリームプレーヤーは少ししてから開きますが、次のような形式も提供すると便利です。 ffplay -f mjpeg http://localhost:mystreamportnumber/
VLCがストリームを開かないことが著者によって観察されました。これはMotionの制限ではなく、MJPG httpストリームに対する一般的なVLCサポートに関連しています。
上記の例では、Motion http://localhost:mystreamportnumber/ がストリームと画像にアクセスするための他のオプションを提供するので、Motionストリームにアクセスできることを示しています。
サブストリーム、動画ストリーム、および静止画像に加えて、Motionは、すべてのカメラへのストリームにアクセスするための単一のポートのみを使用するように設定することもできます。
これは、motion.confファイル内でストリームポートを指定し、別々のカメラファイルを使用することによっても実現できます。次の例では、ストリームにアクセスできる方法を明確にします。

{IP} Motionを実行しているコンピュータのIPアドレス
{port0} motion.confファイル内のストリームに指定されたポート。
{portX} camera.confファイル内のストリームに指定されたポート。
{camid}カメラのcamera_id。
{IP}:{port0}/{camid}/ カメラのプライマリストリーム
{IP}:{port0}/{camid}/stream カメラのプライマリストリーム
{IP}:{port0}/{camid}/substream カメラのサブストリーム
{IP}:{port0}/{camid}/motion カメラ用の動画ストリーム
{IP}:{port0}/{camid}/source カメラからのソース画像
{IP}:{port0}/{camid}/current カメラの静的JPG
{IP}:{portX}/ ポート{portX}で動作しているカメラのプライマリストリーム
{IP}:{portX}/stream ポート{portX}で動作しているカメラのプライマリストリーム
{IP}:{portX}/substream ポート{portX}で動作しているカメラのサブストリーム
{IP}:{portX}/motion ポート{portX}で動作しているカメラの動画ストリーム
{IP}:{portX}/source ポート{portX}で動作しているカメラからのソース画像
{IP}:{portX}/current ポート{portX}で動作しているカメラの静的JPG

【stream_port】(タイプ:整数、範囲/有効な値:0 - 65535、デフォルト:0(無効))

Motionがメインストリームを送信するTCPポート。ストリームポートはwebcontrol_portと異なる必要があります。
ポートが(camerax.confファイルで指定されているのではなく)motion.confファイル内で指定されている場合、Motionは別のURLを指定してその単一ポート上のすべてのストリームを提供します。
ポートの指定方法の詳細と例については、上記のストリームのセクションを参照してください。各カメラに固有のポートを設定する場合、適切な値は、カメラ1が8081、カメラ2が8082、カメラ3が8083などです。

【stream_localhost】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:on)

ローカルホストへのストリームへのアクセスを制限します。これをonに設定すると、Motionはモーションが実行されているのと同じマシン上でのみアクセスできます。

【stream_auth_method】(タイプ:整数、範囲/有効な値:0、1、2、デフォルト:0)

このパラメータは、ストリームポートに必要な認証方法を確立します。パラメーターは以下の意味を持ちます。
0 =無効
1 =基本認証
2 = MD5ダイジェスト(より安全な認証)
MotionのWebコントロール機能を有効にしている場合は、セキュリティ認証を有効にする必要があります。
いいえ、真剣に。あなたは本当にすべきです。このドキュメントに記載されているセキュリティ警告を参照してください。

【stream_authentication】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

このパラメータは、ストリームに使用するユーザー名とパスワードを設定します。構文はusername:passwordです。

【stream_tls】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

このオプションは、ストリームポートに対してSSL / TLSを有効にするかどうかを指定します。
一部のディストリビューションでは、Motionが使用するライブラリはSSL / TLSサポートでコンパイルされていない可能性があります。
この場合、MotionはSSL / TLS接続をサポートできません。SSL / TLSをサポートできるかどうかはログに記録されます。
このオプションを選択することに加えて、webcontrol_certおよび webcontrol_keyファイルも指定する必要があります。

【stream_cors_header】(タイプ:文字列、範囲/有効な値:*または有効なURI、デフォルト:未定義)

ストリームとともに送信されるAccess-Control-Allow-Originヘッダー値。指定しない場合、Access-Control-Allow-Originヘッダーは送信されません。
このヘッダーにより、ブラウザはクロスオリジンリソース共有(CORS)を介してストリームにアクセスできます。
たとえば、*を指定すると、どのオリジンから提供されたブラウザクライアントコードからもアクセスできます。

【stream_preview_scale】(タイプ:整数、範囲/有効値:1~100秒、デフォルト:25)

WebコントロールページでHTMLが有効になっている場合、MotionはホームWebコントロールページのすべてのストリームをHTML形式で表示するので、すべての画像を標準のブラウザで表示できます。
このパラメータは、ストリーム画像がページ上に配置されたときに、そのストリーム画像を拡大/縮小するパーセンテージを示します。
これはブラウザ側で拡大縮小され、Motionはフルフレームを送信し続けます。
100を超える数が許可されています。

【stream_preview_newline】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

WebコントロールページでHTMLが有効になっている場合、MotionはホームWebコントロールページ上のストリームのすべての画像をHTML形式で表示するので、すべての画像を標準のブラウザで表示できます。
このパラメータは、画像をWebコントロールWebページの新しい行に配置するかどうかを決定します。
プレビュー画像は、カメラID番号順にWebControlホームページに表示されます。このパラメータにより、ユーザーはページ上の画像を柔軟に整理できます。
このパラメータをoffに設定すると、小さい番号のスレッド番号の画像の右側に画像が設定されます。'on'に設定すると、画像は次の行の先頭(下)に配置されます。
より洗練されカスタマイズされたプレビューページが必要なユーザーは、URLストリームを参照する独自のローカルHTMLページを作成することをお勧めします。

【stream_preview_method】(タイプ:整数、範囲/有効値:0 - 4、デフォルト:0)

このオプションは、Webコントロールページに画像を表示するための方法を決定します。
0 =フルストリームの画像が送信され、クライアントからWebコントロールページに拡大縮小されます。
1 =サブストリーム画像はMotionによって送信されます。これは帯域幅を節約します
2 =静止画像はMotionによって送信され、ページは手動で更新する必要があります
3 =フルストリームの画像と動画を並べて検出設定を補助
4 =プライバシーまたは他のモーションオーバーレイなしでカメラによって提供されたソース画像

【stream_quality】(タイプ:整数、範囲/有効値:1 - 100、デフォルト:50)

ライブストリーム接続を介して転送されるJPEG画像フレームの品質設定(パーセント)。低い値に設定すると、画像のストリーミングに必要な帯域幅が減少します。

【stream_grey】Boolean、範囲/有効値:on, off、デフォルト:off)

ライブストリームをカラーではなくグレー(白黒)で送信します。帯域幅を制限するのに役立ちます。

【stream_maxrate】(タイプ:整数、範囲/有効値:1 - 100、デフォルト:1)

ストリームのフレームレートを1秒あたりのフレーム数で制限します。実質的に無制限の場合は、値を100に設定してください。
ローカルホストまたは内部LANでのみ使用しない限り、このパラメータを高く設定し過ぎないでください。

【stream_motion】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

動きが検出されない場合は1秒あたり1フレームにフレームレートを制限し、動きがある場合はそれをstream_maxrateに増やします。


Tracking:追跡

モーションは、カメラをパン(左右)度およびチルト(上下)度で指定された固定位置に移動させることができます。
移動は絶対座標または現在位置を基準にして設定できます。Logicool Quickcam Sphere / Orbitの自動追跡機能もありますが、それほど成熟していません。
これらの機能が必要な場合は、トラッキングに関するMotionコードを見直して修正してください。
Motionの開発者は追跡カメラを持っていないので、追跡機能が何らかの方法で開発されることはまずありません。(テストする方法はありません。)

【track_type】(タイプ:離散文字列、範囲/有効値:0(なし)、1(ステッパー)、2(iomojo)、3(pwc)、4(汎用)、5(uvcvideo)、デフォルト:0(なし))

トラッカーの種類
Motionには、シリアルステッピングモータコントローラ、iomojoスマイルカム、またはLogicool Quickcam SphereやOrbitなどのPhilips WebCamドライバ互換のパン/チルトカメラの
いずれかを使用する特別なトラッキングオプションがあります。
追跡を無効にするには、これを0に設定します。他の追跡オプションは無視されます。

値1は、ステッピングモーターと自家製コントローラーを使用した特別なモーショントラッキングプロジェクトです。
値2はiomojo smilecamのためのものです
値3は、pwcPhilips WebCam)ドライバによって駆動されるLogitech Quickcam Sphere / OrbitなどのpwcタイプのUSBトラッキングカメラ用です。このカメラを使用するには、pwcのバージョンが少なくとも8.12でなければなりません。
値4は一般的なトラックタイプです。このオプションはtrack_generic_moveスクリプトを実行し ます。ユーザーは、スクリプトに渡された変換指定子および/またはMotionによって設定された環境変数に基づいて、カメラを移動するための独自のスクリプトを書くことができます。
値5は、uvcvideoドライバによって駆動されるLogitech Quickcam Sphere / Orbit MPなどのuvcvideoタイプのUSBトラッキングカメラ用です。

【track_auto】(タイプ:Boolean、範囲/有効値:on, off、デフォルト:off)

モーションの自動追跡を有効にします。上記のtrack_typeで指定されているトラッキングカメラまたはカスタムスクリプトが必要 です。

【track_port】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

これは、ステッピングモーターインターフェイスが接続されているシリアルポートのデバイス名です。ステッピングモーターのトラッキングにのみ使用されます。

【track_motorx】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

X軸を制御するために使用されるモーター番号。ステッピングモーターのトラッキングにのみ使用されます。

【track_motorx_reverse】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

Description

【track_motory】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

y軸を制御するために使用されるモーター番号。ステッピングモーターのトラッキングにのみ使用されます。

【track_motory_reverse】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

【track_maxx】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

サーボxの最大位置。ステッピングモーターのトラッキングにのみ使用されます。

【track_minx】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

【track_maxy】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

サーボyの最大位置。ステッピングモーターのトラッキングにのみ使用されます。

【track_miny】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

【track_homex】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

【track_homey】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

【track_iomojo_id】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

一般的なステッピングモーターコントローラの代わりにiomojo smilecamをシリアルポートに接続している場合は、このオプションを使用してください。iomojoカメラ専用です。

【track_step_angle_x】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

自動追跡を使用して、カメラがX軸上で1ステップあたりに移動する角度(度)。現在は、pwcタイプのカメラでのみ使用されています。トラッキングカメラタイプpwcが必要です。

【track_step_angle_y】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

自動トラッキングを使用して、カメラがY軸上をステップごとに移動する角度(度)。現在は、pwcタイプのカメラでのみ使用されています。トラッキングカメラタイプpwcが必要です。

【track_move_wait】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

自動追跡によってカメラが移動した後、追跡が無効になるまでの遅延。遅延はピクチャフレーム数として定義されます。実際の遅延は選択したフレームレートによって異なります。
カメラを2秒に1回最大移動させ、フレームレートを10にする場合は、track_move_wait値を2 * 10 = 20に設定する必要があります。

【track_speed】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

モーターを設定する速度。ステッピングモーターのトラッキングにのみ使用されます。

【track_stepsize】(タイプ:整数、範囲/有効な値:0 - 2147483647、デフォルト:0)

実行するステップ数 ステッピングモーターのトラッキングにのみ使用されます。

【track_generic_move】(タイプ:文字列、範囲/有効な値:最大4095文字、デフォルト:未定義)

PTZカメラを一般追跡モードで移動するために実行するコマンドのフルパスとファイル名
ユーザーは変換指定子 を使用して、スクリプトへのコマンドラインオプションの一部としてパラメータを含めること、および/または以下に示すようにシステム環境変数から値を取得することを選択できます。
以下は、環境変数として提供されているパラメータです。

カメラを再センタリングするために呼び出された場合:TRACK_ACTION = center TRACK_XOFF TRACK_YOFF
モーションを追跡するために呼び出された場合:
TRACK_ACTION =move TRACK_CENT_X TRACK_CENT_Y TRACK_CENT_WIDTH TRACK_CENT_HEIGHT TRACK_CENT_MINX TRACK_CENT_MAXX TRACK_CENT_MINY TRACK_CENT_MAXY TRACK_IMGS_WIDTH TRACK_IMGS_HEIGHT TRACK_IMGS_MOTIONSIZE

以下は、システム環境変数に基づいてPTZネットカメラを移動するサンプルスクリプトです。3/8と5/8は単なる例示であり、VIVOTEK PZ81X1カメラでのテストに基づいて設定されています。他のカメラに適用可能な値と方法は、ユーザーが設定する必要があります。

#!/bin/bash

LOCKFILE=/tmp/track_generic_move_netcam.lock
if [ -e "$LOCKFILE" ]; then # Trick to avoid flooding
exit 0 # the netcam of multiple
fi # moving commands.

function movecam() {
touch $LOCKFILE
curl "http://youripaddress/cgi-bin/camctrl/camctrl.cgi?move=$1"
LOCKED=true
}

case "$TRACK_ACTION" in
center)
movecam home
;;
move)
if [ "$TRACK_CENT_X" -lt "$*1" ]; then
movecam left
fi
if [ "$TRACK_CENT_X" -gt "$*2" ]; then
movecam right
fi
if [ "$TRACK_CENT_Y" -lt "$*3" ]; then
movecam up
fi
if [ "$TRACK_CENT_Y" -gt "$*4" ]; then
movecam down
fi
;;
esac

if [ "$LOCKED" = "true" ]; then
sleep 2
rm -f "$LOCKFILE"
fi

*1:TRACK_IMGS_WIDTH*3/8

*2:TRACK_IMGS_WIDTH*5/8

*3:TRACK_IMGS_HEIGHT*3/8

*4:TRACK_IMGS_HEIGHT*5/8