(57)【要約】  表示する複数のシーケンス画像データ・サンプルを供給するための方法および装置が開示されている。画像データ・サンプルのうちの第１のサンプルがアクセスされ、その後、画像データ・サンプルの第２のサンプルがアクセスされる。その後、第１および第２の画像データ・サンプルは、表示のため供給することができ、そこで、第１および第２の画像データ・サンプルが連続していない場合に、１つまたは複数の他のデータ・サンプルが供給される。これらの他のデータ・サンプルは、画像データ・サンプルが第１および第２の画像データ・サンプルの間で使用可能でないことを示す。
2007505523.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイ・デバイスによって表示するために、画像取り込みデバイスにより取り込まれた複数のシーケンス画像を送信する方法であって、
前記画像取り込みデバイスにより取り込まれた複数のシーケンス画像内の第１の画像を読み込む工程と、
前記複数のシーケンス画像内の第２の画像を読み込む工程と、
表示するために前記ディスプレイ・デバイスに前記第１および第２の画像を送信する工程とを有し、
前記第１および第２の画像が連続していない場合には他のデータが前記ディスプレイ・デバイスに送信され、前記他のデータは、画像が前記第１および第２の画像の間で使用可能ではないことを示すことを特徴とする方法。
【請求項２】
前記他のデータは、前記複数のシーケンス画像と他の複数の画像との同期をとるために使用されることを特徴とする請求項１に記載の方法。
【請求項３】
前記他のデータのサンプルは、所定の速度で送信されることを特徴とする請求項１に記載の方法。
【請求項４】
前記他のデータのサンプルは、前記第１および第２の画像のデータのサンプルのサンプル転送速度に応じた速度で送信されることを特徴とする請求項１に記載の方法。
【請求項５】
前記他のデータは、任意の速度で送信されることを特徴とする請求項１に記載の方法。
【請求項６】
前記他のデータは、前記第２の画像が表示されるまでの時間を示すことを特徴とする請求項１に記載の方法。
【請求項７】
ディスプレイ・デバイスによって表示するために、画像取り込みデバイスにより取り込まれた複数のシーケンス画像を送信する装置であって、
前記画像取り込みデバイスにより取り込まれた複数のシーケンス画像内の第１の画像を読み込む手段と、
前記複数のシーケンス画像内の第２の画像を読み込む手段と、
表示するために前記ディスプレイ・デバイスに前記第１および第２の画像を送信する手段とを備え、
前記第１および第２の画像が連続していない場合には他のデータが前記ディスプレイ・デバイスに送信され、前記他のデータは、画像が前記第１および第２の画像の間で使用可能ではないことを示すことを特徴とする装置。
【請求項８】
機械可読記録媒体上に記録された機械可読プログラム・コードを含み、ディスプレイ・デバイスによって表示するために、画像取り込みデバイスにより取り込まれた複数のシーケンス画像を送信する方法を実行するように前記プログラム・コードが実行されるデータ処理装置のオペレーションを制御する、コンピュータ・プログラム製品であって、前記方法は、
前記画像取り込みデバイスにより取り込まれた複数のシーケンス画像内の第１の画像を読み込む工程と、
前記複数のシーケンス画像内の第２の画像を読み込む工程と、
表示するために前記ディスプレイ・デバイスに前記第１および第２の画像を送信する工程とを有し、
前記第１および第２の画像が連続していない場合には他のデータが前記ディスプレイ・デバイスに送信され、前記他のデータは、画像が前記第１および第２の画像の間で使用可能ではないことを示すことを特徴とするコンピュータ・プログラム製品。
【請求項９】
ディスプレイ・デバイスによって表示するために、画像取り込みデバイスにより取り込まれた複数のシーケンス画像を送信するコンピュータ・プログラムであって、
前記画像取り込みデバイスにより取り込まれた複数のシーケンス画像内の第１の画像を読み込むためのコードと、
前記複数のシーケンス画像内の第２の画像を読み込むためのコードと、
表示するために前記ディスプレイ・デバイスに前記第１および第２の画像を送信するためのコードとを有し、
前記第１および第２の画像が連続していない場合には他のデータが前記ディスプレイ・デバイスに送信され、前記他のデータは、画像が前記第１および第２の画像の間で使用可能ではないことを示すことを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、ビデオ画像処理に関するものであり、具体的には、非連続ビデオ・データをストリーミングするための方法および装置に関するものである。本発明は、さらに、複数の順次画像データ・サンプルを供給するためのコンピュータ・プログラムを記録したコンピュータ可読媒体を含むコンピュータ・プログラム製品に関するものである。
【背景技術】
【０００２】
最近世界に起きている出来事から、セキュリティが非常に重要な課題となっている。その結果、セキュリティ目的でエリアを監視するために業務でも、プライベートでも映像監視システムが次第に使用されるようになってきている。
【０００３】
映像監視システムのエリア内では、ネットワーク接続映像監視技術が現在使用されている。従来の閉回路テレビ（ＴＶ）システムとは異なり、ネットワーク接続映像監視システムでは、インターネット・プロトコル（ＩＰ）ベースのネットワーク・インフラストラクチャなどの標準的なネットワーク・インフラストラクチャを使用して、デジタル・ビデオ信号および制御信号を伝送する。ネットワーク接続映像監視システムの１つの利点は、インターネット、ＩＰベースのローカル・エリア・ネットワーク（ＬＡＮ）、またはインターネットなどの公共ネットワークの上で稼働するＩＰベースの仮想プライベート・ネットワーク（ＶＰＮ）などの既存のネットワーク上で映像監視を実行できる点である。
【０００４】
通常、ネットワーク接続映像監視システムは、コンピュータ・ネットワーク上に分散された１つまたは複数のビデオ・カメラ・サーバからデータを受信する、１つまたは複数のストレージ・サーバ（つまり、一般に、当業者に知られているような汎用コンピュータとして実装される）を備える。このようなネットワーク接続映像監視システムは、さらに、通常、カメラ・サーバからのライブ・ビデオ画像データまたはストレージ・サーバからの格納されているビデオ画像データを表示するために使用できる、１つまたは複数のビューイング・デバイス（例えば、コンピュータ、パーソナル・デジタル・アシスタント（ＰＤＡ）、または電話機）も備える。
【０００５】
ネットワーク接続映像監視システムは、ローカルまたはリモートのネットワーク接続ビデオ・カメラから取り込まれた画像データを表示し、記録するために使用できるより一般的なクラスのネットワーク接続ビューイングおよび記録システムの一部である。このようなネットワーク接続ビューイングおよび記録システムは、様々な目的に使用できる。例えば、このようなネットワーク接続ビューイングおよび記録システムは、建物および車両を監視する際のセキュリティに使用することができる。
【０００６】
ネットワーク接続ビューイングおよび記録システムは、さらに、監視にも使用できる。例えば、ネットワーク接続ビューイングおよび記録システムは、建物内の職員の遂行状況をチェックしたり、または離れた場所にある契約会社の職員の遂行および進捗状況をチェックするために使用することができる。
【０００７】
ネットワーク接続ビューイングおよび記録システムは、さらに、娯楽にも使用できる。例えば、このようなシステムは、スポーツ・イベントおよびコンサートのライブ・ビューイングに使用できる。このようなシステムの他の使用例は、教育に関するものである（例えば、通信教育）。
【０００８】
映像監視システムなどの従来のネットワーク接続ビューイングおよび記録システムでは、通常、インターネットなどのネットワークを経由して１つまたは複数のリモート・ビデオ・カメラからサーバにアップロードされるビデオ画像データを表示し、記録することができる。多くの場合、そのようなサーバに格納され、特定のカメラに関連付けられたビデオ画像データは、連続的ではない。例えば、このようなことは、特定のカメラによる記録が特定の持続時間のみにおいてイベントによりトリガされたか、スケジュールされているため、生じることがある。したがって、特定の期間にその特定のカメラに関してサーバ上にビデオ画像データが格納されない場合があり、その特定のカメラについてビデオ画像データ内にギャップが残ることがある。
【０００９】
その結果、そのような従来のサーバからサービスを提供される複数のカメラから並行して格納されているビデオ画像データを表示する場合、ビデオ画像データは同期しない状態を続ける可能性がある。これにより、オペレータは、ネットワーク接続が途絶したか、またはビデオ画像データ内のギャップがネットワーク・トラフィックが高くなったことの結果であると誤って信じてしまう可能性がある。
【非特許文献１】「ＱｕｉｃｋＴｉｍｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ」
【特許文献１】米国特許第６，４８４，１９５号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、既存の配置のうちの１つまたは複数の不利点を実質的に克服するか、または少なくとも改善することである。
【課題を解決するための手段】
【００１１】
本発明の一態様によれば、表示のため複数の順次画像データ・サンプルを供給する方法が提供され、前記方法は、
前記画像データ・サンプルのうちの第１のサンプルにアクセスすることと、
前記画像データ・サンプルのうちの第２のサンプルにアクセスすることと、
表示のため前記第１および第２の画像データ・サンプルを供給することとを含み、前記第１および第２の画像データ・サンプルが連続していない場合にさらに１つまたは複数のデータ・サンプルが供給され、前記他のデータ・サンプルは、画像データ・サンプルが前記第１の画像データ・サンプルと前記第２の画像データ・サンプルとの間で利用可能でないことを示す。
【００１２】
本発明の他の態様によれば、表示のため複数の順次画像データ・サンプルを供給する装置が提供され、前記装置は、
前記画像データ・サンプルのうちの第１のサンプルにアクセスする手段と、
前記画像データ・サンプルのうちの第２のサンプルにアクセスする手段と、
表示のため前記第１および第２の画像データ・サンプルを供給する手段とを備え、前記第１および第２の画像データ・サンプルが連続していない場合にさらに１つまたは複数のデータ・サンプルが供給され、前記他のデータ・サンプルは、画像データ・サンプルが前記第１の画像データ・サンプルと前記第２の画像データ・サンプルとの間で利用可能でないことを示す。
【００１３】
本発明のさらに他の態様によれば、表示のため複数の順次画像データ・サンプルを供給する方法を実行するプログラム・コードが実行されるデータ処理装置のオペレーションを制御するために、機械可読記録媒体に記録された機械可読プログラム・コードを含むコンピュータ・プログラム製品が提供され、前記方法は、
前記画像データ・サンプルのうちの第１のサンプルにアクセスすることと、
前記画像データ・サンプルのうちの第２のサンプルにアクセスすることと、
表示のため前記第１および第２の画像データ・サンプルを供給することとを含み、前記第１および第２の画像データ・サンプルが連続していない場合にさらに１つまたは複数のデータ・サンプルが供給され、前記他のデータ・サンプルは、画像データ・サンプルが前記第１の画像データ・サンプルと前記第２の画像データ・サンプルとの間で利用可能でないことを示す。
【００１４】
本発明のさらに他の態様によれば、表示のため複数の順次画像データ・サンプルを供給するコンピュータ・プログラムが提供され、前記プログラムは、
前記画像データ・サンプルのうちの第１のサンプルにアクセスするコードと、
前記画像データ・サンプルのうちの第２のサンプルにアクセスするコードと、
表示のため前記第１および第２の画像データ・サンプルを供給するコードとを備え、前記第１および第２の画像データ・サンプルが連続していない場合にさらに１つまたは複数のデータ・サンプルが供給され、前記他のデータ・サンプルは、画像データ・サンプルが前記第１の画像データ・サンプルと前記第２の画像データ・サンプルとの間で利用可能でないことを示す。
【００１５】
本発明の他の態様も開示される。
【００１６】
本発明の１つまたは複数の実施形態は、図面および付録を参照しつつ説明される。
【発明を実施するための最良の形態】
【００１７】
付属の図面の１つまたは複数において、同じ参照番号を持つ、複数のステップおよび／または特徴を参照している場合、特に断りのない限り、それらのステップおよび／または特徴は、この説明の目的のために、同じ（複数の）機能または（複数の）オペレーションを有する。
【００１８】
従来技術の配列に関係する「背景技術」の節に含まれる説明は、それぞれの公開および／または利用を通して公開されている知識をなすドキュメントまたはデバイスの説明に関係することに留意されたい。そのようなドキュメントまたはデバイスが何らかの形で従来技術における共通の一般的知識の一部をなすというようなことを、本発明の（複数の）発明者または出願人による表現として解釈すべきではない。
【００１９】
説明をしやすくするため、以下の説明は、第１．０節から５．０節に分割されており、それぞれの節は、関連する複数の下位項目を含む。
【００２０】
１．０  映像監視システムの概要
図１は、映像監視システム１００を示す。システム１００は、関連付けられたカメラ・サーバ１０９、１１０、および１１１を介して、インターネットまたはイントラネットなどのコンピュータ・ネットワーク２２２０に接続された、ビデオ・カメラ１１２、１１３、１１４、および１１５を備える。一部の実装では、ネットワーク２２２０は、ローカル・エリア・ネットワーク（ＬＡＮ）とすることができる。さらに、一実装では、カメラ１１２〜１１５のうちの１つまたは複数を、カメラおよびカメラ・サーバとが単一ユニットになるように、関連付けられたカメラ・サーバ１０９〜１１１内に構成することができる。
【００２１】
専用カメラ１１２〜１１５のいくつかの実施例として、Ｃａｎｏｎ（登録商標）ＶＣ−Ｃ４ビデオ・カメラがある。専用カメラ・サーバ１０９〜１１１の一部の実施例は、Ｃａｎｏｎ（登録商標）ＶＢ１５０およびＣａｎｏｎ（登録商標）ＶＢ−Ｃ１０であるが、ただし、ＶＣ−Ｃ１０は、カメラおよびカメラ・サーバが単一ユニットであるモデルの一実施例である。
【００２２】
カメラ１１２、１１３、１１４、および１１５および関連付けられたカメラ・サーバ１０９〜１１１はそれぞれ、画像を表すビデオ・データの取り組みを受け持つ。ビデオ・データは、カメラ・サーバ１０９〜１１１により、ビデオ・データ・ストリームとして出力される。カメラ・サーバ１０９〜１１１は，オプションにより、センサを接続できるセンサ入力を備える。接続されているセンサがアクティブ化される場合、カメラ・サーバ１０９〜１１１は、そのセンサを許可するように構成することができ、イベント通知は、カメラ・サーバ１０９〜１１１により生成される。
【００２３】
システム１００は、さらに、ストレージ・サーバ２３００Ａ、２３００Ｂ、２３００Ｃ、および２３００Ｄを備え、これらは、カメラ・サーバ１０９〜１１１のうちのどれか１つからのサンプル・データの出力を監視し、そのサンプル・データを記録（つまり、要求および格納）するために使用することができる。ストレージ・サーバ２３００Ａ、２３００Ｂ、２３００Ｃ、および２３００Ｄは、さらに、サンプル・データにアクセスし、システム１００のイベント処理および制御するために使用することもできる。ストレージ・サーバ２３００Ａ〜２３００Ｄは、これ以降、明示的に区別する場合を除き、ストレージ・サーバ２３００と総称される。
【００２４】
カメラ１１２〜１１５および関連付けられたカメラ・サーバ１０９〜１１１の１つまたは複数により取り込まれるビデオ・データは、カメラ・サーバ１０９〜１１１からストレージ・サーバ２３００に、コンピュータ・ネットワーク２２２０を介して、サンプル・データとしてアップロードすることができる。サンプル・データは、ストレージ・サーバ２３００により処理し、および／またはストレージ・サーバ（図２３を参照）のハード・ディスク・ドライブ２３１０上に格納することができ、したがって、ユーザは、ストレージ・サーバ２３００のディスプレイ２３１４（図２３を参照）を使用してサンプル・データを見ることができる
それとは別に、サンプル・データは、図１からわかるように、ストレージ・サーバ２３００から１つまたは複数のビューア２２００Ａ、２２００Ｂ、２２００Ｃ、および２２００Ｄに、コンピュータ・ネットワーク２２２０を介して、アップロードすることができる。ビューア２２００Ａ〜２２００Ｄは、これ以降、明示的に区別する場合を除き、ビューア２２００と総称される。ビューア２２００は、ビューア２２００とともに構成されているディスプレイ・デバイス２２１４（図２４を参照）を使用して、サンプル・データを処理し表示するためにユーザ側で使用することができる。
【００２５】
ビューア２２００は、さらに、直接１つまたは複数のカメラ・サーバ１０９〜１１１からビデオ・フレームを受信し、ディスプレイ・デバイス２２１４を使用してビデオ・フレームをユーザに提示するように構成することもできる。
【００２６】
図２２からわかるように、ビューア２２００は、コンピュータ・モジュール２２０１、キーボード２２０２およびマウス２２０３などの入力デバイス、プリンタ２２１５、ディスプレイ・デバイス２２１４、およびスピーカ２２１７を含む出力デバイスにより形成されることが好ましい。コンピュータ・モジュール２２０１内に構成されるネットワーク・インターフェース２２０８は、例えば、ネットワーク・リンク２２２１（同軸ケーブル、ツイスト・ペア・ケーブル、光ファイバ・ケーブル、８０２．１１ｂまたはＢｌｕｅｔｏｏｔｈ（登録商標）を使用した無線接続、または他の接続タイプ）を介して接続可能な、コンピュータ・ネットワーク２２２０との間の通信に使用することができる。ネットワーク・インターフェース２２０８内に組み込まれるか、他の何らかの形で含まれる変調復調器（モデム）トランシーバ・デバイス（図に示されていない）も、例えば、電話回線を介してコンピュータ・ネットワーク２２２０へのアクセスするために使用することができる。
【００２７】
コンピュータ・モジュール２２０１は、通常、少なくとも１つのプロセッサ・ユニット２２０５、および例えば、半導体ランダム・アクセス・メモリ（ＲＡＭ）および読み取り専用メモリ（ＲＯＭ）から形成されたメモリ・ユニット２２０６を備える。モジュール２２０１は、さらに、ビデオ・ディスプレイ２２１４およびスピーカ２２１７に結合するオーディオ・ビデオ・インターフェース２２０７、キーボード２２０２、マウス２２０３、プリンタ２２１５、およびオプションによりジョイスティック（図に示されていない）またはトラックボール（図に示されていない）用のＩ／Ｏインターフェース２２１３を含む多数の入出力（Ｉ／Ｏ）インターフェースも備える。オプションにより、モジュール２２０１は、ビデオ・ディスプレイ２２１４の上にオーバーレイされているタッチ・センシティブ面により形成され、ビデオ・ディスプレイ２２１４上を指で触るか、または指を移動することによりユーザ入力を可能にする。ストレージ・デバイス２２０９が用意され、通常は、ハード・ディスク・ドライブ２２１０およびフロッピー（登録商標）・ディスク・ドライブ２２１１を備える。磁気テープ・ドライブ（図に示されていない）も使用することができる。ＣＤ−ＲＯＭドライブ２２１２は、通常、不揮発性データ・ソースとして用意される。コンピュータ・モジュール２２０１のコンポーネント２２０５から２２１３は、通常、相互接続されたバス２２０４を介して、当業で知られているようなコンピュータ・システムの従来の動作モードが実行される方法で通信する。説明されている配列が実装できるコンピュータの実施例として、ＩＢＭ−ＰＣおよびその互換機、Ｓｕｎ  Ｓｐａｒｃｓｔａｔｉｏｎｓ、またはそれらから発展した同様のコンピュータ・システムがある。
【００２８】
ストレージ・サーバ２３００は、さらに、図２３に詳しく示されている。ストレージ・サーバ２３００は、コンピュータ・モジュール２３０１、キーボード２３０２およびマウス２３０３などの入力デバイス、プリンタ２３１５、ディスプレイ・デバイス２３１４、およびスピーカ２２１７を含む出力デバイスにより形成されることが好ましい。ネットワーク・インターフェース２３０８は、さらに、コンピュータ・モジュール２３０１内にも構成され、例えば、ネットワーク・リンク２３２１（同軸ケーブル、ツイスト・ペア・ケーブル、光ファイバ・ケーブル、８０２．１１ｂまたはＢｌｕｅｔｏｏｔｈ（登録商標）を使用した無線接続、または他の接続タイプ）を介して接続可能な、コンピュータ・ネットワーク２２２０との間の通信に使用することができる。ネットワーク・インターフェース２３０８内に組み込まれるか、他の何らかの形で含まれる変調復調器（モデム）トランシーバ・デバイス（図に示されていない）も、例えば、電話回線を介してコンピュータ・ネットワーク２２２０へのアクセスするために使用することができる。
【００２９】
コンピュータ・モジュール２２０１と同様に、コンピュータ・モジュール２３０１は、通常、少なくとも１つのプロセッサ・ユニット２３０５、および例えば、半導体ランダム・アクセス・メモリ（ＲＡＭ）および読み取り専用メモリ（ＲＯＭ）から形成されたメモリ・ユニット２３０６を備える。モジュール２３０１は、さらに、ビデオ・ディスプレイ２３１４およびスピーカ２３１７に結合するオーディオ・ビデオ・インターフェース２３０７、キーボード２３０２、プリンタ２３１５、およびマウス２３０３、およびオプションによりジョイスティック（図に示されていない）またはトラックボール（図に示されていない）用のＩ／Ｏインターフェース２３１３を含む多数の入出力（Ｉ／Ｏ）インターフェースも備える。オプションにより、モジュール２３０１は、ビデオ・ディスプレイ２３１４の上にオーバーレイされているタッチ・センシティブ面により形成され、ビデオ・ディスプレイ２３１４上を指で触るか、または指を移動することによりユーザ入力を可能にする。ストレージ・デバイス２３０９が用意され、通常は、ハード・ディスク・ドライブ２３１０およびフロッピー（登録商標）・ディスク・ドライブ２３１１を備える。磁気テープ・ドライブ（図に示されていない）も使用することができる。コンピュータ・モジュール２３０１に接続された周辺ストレージ・デバイス（図に示されていない）を使用することができる。さらに、ネットワーク接続ストレージ（ＮＡＳ）およびストレージ・エリア・ネットワーク（ＳＡＮ）を含む、ネットワーク・アクセス可能なストレージ・デバイスまたはそのようなデバイスの集合体（図に示されていない）をネットワーク２２２０に接続し、ネットワーク・インターフェース２３０８を通じてアクセスできる。ＣＤ−ＲＯＭドライブ２３１２は、通常、不揮発性データ・ソースとして用意される。コンピュータ・モジュール２３０１のコンポーネント２３０５から２３１３は、通常、相互接続されたバス２３０４を介して、当業で知られているようなコンピュータ・システムの従来の動作モードが実行される方法で通信する。
【００３０】
カメラ・サーバ１０９〜１１１は、コンピュータ・モジュール２２０１および２３０１と類似の構成を持つ。カメラ・サーバ１０９〜１１１は、メモリ（例えば、メモリ２３０６）およびプロセッサ（例えば、プロセッサ２３０５）を備える。しかし、カメラ・サーバ１０９〜１１１のハードウェア構成は、本明細書ではこれ以上詳しくは説明しない。
【００３１】
上述のように、ストレージ・サーバ２３００は、センサ（例えば、カメラ・サーバ１０９〜１１１に接続されたセンサ）からのイベントの監視および処理に使用できる。これらのイベントのうちの１つは、カメラ・サーバ１０９〜１１１のうちの１つまたは複数に直接接続された運動検出器（図に示されていない）を使用する運動検出を含むことができる。さらに、イベントは、例えば、熱／煙検出器を使用する熱／煙検出、リミット・スイッチを使用するドア開／閉を含む。
【００３２】
２．０  ストレージ・サーバの概要
図２は、ストレージ・サーバ２３００を詳しく説明している。ストレージ・サーバ２３００は、記録エンジン２０１およびアクセス・エンジン２０３を備えるが、これらについて以下で詳しく説明する。記録エンジン２０１およびアクセス・エンジン２０３は、ハーグ・ディスク・ドライブ２３１０上に常駐し、プロセッサ２３０５による実行時に制御される、別々のソフトウェア・アプリケーションとして実装されるのが好ましい。それとは別に、記録エンジン２０１およびアクセス・エンジン２０３は、単一のソフトウェア・アプリケーションとして実装できるが、さらには、記録エンジン２０１およびアクセス・エンジン２０３の一方または両方をハードウェアで実装することも可能である。
【００３３】
記録エンジン２０１は、一組のストレージ・サーバ構成ファイル２０５を保持する役割を持つ。構成ファイル２０５は、一組の一般設定、ストレージ・サーバ２３００が受け持つカメラ・サーバ１０９〜１１１に関係する情報、それらのカメラ・サーバ１０９〜１１１のそれぞれに関連付けられているカメラ１１２〜１１５に関係する情報を含む。それぞれのカメラ１１２〜１１５について、構成ファイル２０５は、与えられた期間に特定のカメラ１１２〜１１５に関してストレージ・サーバ２３００の動作を制御する一組のスケジュール・アイテムも含む。
【００３４】
記録エンジン２０１は、さらに、一組のビューア構成ファイル２０７も保持する。ビューア構成ファイル２０７は、知られているストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、および２３００Ｄ）への参照を含む。ビューア構成ファイル２０７は、さらに、知られているカメラ１１２〜１１５および、ストレージ・サーバ２３００に関連付けられている、関連カメラ・サーバ１０９〜１１１のそれぞれに関連付けられている一組のＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓも指定する。ＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓについて、以下で詳述する。通常、ストレージ・サーバ２３００上の記録エンジン２０１は、以下で詳しく説明するように、ストレージ・サーバ２３００がマスタ・ストレージ・サーバとして機能している場合に、一組のビューア構成ファイル２０７を保持する。
【００３５】
ビューア構成ファイル２０７は、さらに、ビデオ・ウィンドウ・レイアウトも含む。ビデオ・ウィンドウ・レイアウトでは、カメラ・サーバ１０９〜１１１および／またはストレージ・サーバ２３００からアップロードされたサンプル・データがビューア２２００のディスプレイ・デバイス２３１４上に表示される方法を記述する。ビデオ・ウィンドウ・レイアウトは、以下の第５．０節で詳しく説明される。ただし、図７６からわかるように、それぞれ特定のカメラ・サーバ１０９〜１１１に関連付けられる一組のビデオ・ウィンドウ（例えば、７６２５）の、レイアウト・エリア７６０５内の特定の配列を「レイアウト」と呼ぶ。
【００３６】
記録エンジン２０１は、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成された１つまたは複数のドライブにまたがって分散できる、一組のデータ・ファイル２０９に書き込む。そこには、多数のストレージ・デバイス（例えば、複数のハード・ディスク）がありえる。ドライブは、さらに、ストレージ・サーバ２３００の外部、例えば、上述のように周辺ストレージ・デバイスまたはネットワーク・アクセス可能ストレージ・デバイス上に置くことができる。以下の説明は、ストレージ・デバイス２３０９との間のデータの読み書きを指す。それとは別に、周辺またはネットワーク・アクセス可能ストレージ・デバイスとの間でデータの読み書きを行うこともできる。
【００３７】
カメラ・サーバ１０９〜１１１はそれぞれ、カメラ・サーバ１０９〜１１１に割り当てられた特定のドライブを備えるのが好ましい。データ・ファイル２０９は、カメラ・サーバ１１０から集められたビデオ・サンプル・データを格納するビデオ・ファイルを含む。データ・ファイル２０９は、さらに、イベント・ファイルも含む。上述のように、また以下で詳しく説明するが、イベント・ファイルは、テキスト・ファイルであり、これらは、イベントの詳細をテキスト・データの形で格納するために使用される。これらのイベントは、カメラ・サーバ１０９〜１１１からのイベント通知に対する応答として記録エンジン２０１により生成される。このようなイベントは、さらに、ストレージ・サーバ２３００による受信されたビデオ・サンプル・データまたは他の重要な出来事の分析結果として生じることもある。
【００３８】
記録エンジン２０１は、記録エンジン２０１が制御しなければならないそれぞれのカメラ・サーバ１０９〜１１１との一連のネットワーク接続を保持する。ネットワーク接続は、カメラ・サーバ情報を取り出す、カメラ・サーバ設定を構成する、イベント通知を受信する、およびビデオ・サンプル・データを受信するために使用される。
【００３９】
記録エンジン２０１は、構成情報またはステータス情報を取り出すために、また記録エンジン２０１またはシステム１００を再構成するために、Ｗｅｂサーバ２１３を通じてネットワーク２２２０上でビューア２２００のうちの１つまたは複数による通信が可能である。記録エンジン２０１は、さらに、ステータス情報（例えば、特定のカメラ１１２〜１１５と関連付けられている記録ステータス）を取り出すために１つまたは複数のＷｅｂブラウザ（図に示されていない）により通信することも可能である。
【００４０】
ビューア２２００は、ＨＴＴＰ（ハイパーテキスト・トランスポート・プロトコル）を使用してＷｅｂサーバ２１３に要求を送信することができ、これらの要求は、後述のように、記録エンジン２０１に送信されることを指示するように書式設定されている場合に、記録エンジン２０１に渡される。応答は、記録エンジン２０１によりＷｅｂサーバ２１３に返され、その要求を行ったビューア２２００に受け渡される。
【００４１】
Ｗｅｂサーバ２１３は、記録エンジン２０１およびアクセス・エンジン２０３とは別に、プロセッサ２３０５により通常実行されるアプリケーション・ソフトウェアとして実装されるのが好ましい。ビューア・ソフトウェアがストレージ・サーバ２３００と同じコンピュータ・モジュール上で実行される場合、要求は、通常、ネットワーク２２２０上でＷｅｂサーバ２１３に送信されないが、通常は、ビューア・ソフトウェアにより、ネットワーク・モジュール３０１を使用してソケット接続を通じてＷｅｂサーバ２１３に送信される。
【００４２】
本明細書の「Ｗｅｂサーバ」という用語は、ＨＴＴＰを使用してクライアント・ソフトウェアと通信できる、サーバを指すことを意図されている。「Ｗｅｂサーバ」という用語を使用していても、Ｗｅｂサーバ２１３がＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ上でブラウザ・ソフトウェアにコンテンツを提供するように必ず構成されることを意味しない。ストレージ・サーバ２３００上で、Ｗｅｂサーバ２１３は、ビューア２２００とのみ連携動作するように構成できるか、またはＷｅｂサーバ２１３は、ビューア２２００と連携するが、さらに、インターネットまたはイントラネット上でブラウザ・ソフトウェアにコンテンツを提供するようにも構成できる。Ｗｅｂサーバ２１３は、例えば、ＨＴＴＰダイジェスト認証を使用して、ビューア２２００のうちの１つを介してストレージ・サーバ２３００にアクセスしようとするユーザを認証するように構成できる。それとは別、Ｗｅｂサーバ２１３は、ＨＴＴＰ基本認証に基づいてアクセスを許可するように構成することができる。ストレージ・サーバ２３００へのアクセスに関してユーザを認証するだけでなく、Ｗｅｂサーバ２１３は、さらに、正しく認証されたユーザがストレージ・サーバ管理者として登録されているかどうかも決定する。ＨＴＴＰダイジェストおよびＨＴＴＰ基本認証は、インターネット・エンジニアリング・タスク・フォース（ＩＥＴＦ）により公開されているＲＦＣ  ２６１７の中で規定されている。
【００４３】
認証は、ＨＴＴＰダイジェスト認証（または一部の構成では、ＨＴＴＰ基本認証）方法を使用して実行され、その場合、有効なユーザ名がストレージ・サーバ・ユーザ・ファイルで与えられる。一端認証されると、Ｗｅｂサーバ２１３は、ストレージ・サーバ・グループ・ファイルに格納されている「ａｄｍｉｎ」グループ内のユーザ名を検索することにより認証されたユーザが管理者であるかどうかを決定する。
【００４４】
記録エンジン・アクセス・プロトコル（以下参照）におけるそれぞれの別々のコマンドに対するアクセス制御は、ＨＴＴＰメッセージ内のコマンドのそれぞれのパス（例えば、要求の中で使用されているＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒのパス）を有効なユーザの集まり、または「ａｄｍｉｎ」グループ内のユーザのみのいずれかに関連付けることにより、Ｗｅｂサーバ２１３自体の構成ファイルを使用して強制される。アクセス・エンジン２０３は、記録エンジン２０１により作成されたデータ・ファイル２０９を監視する役割を持つ。アクセス・エンジン２０３は、さらに、ビデオ・サンプル・データおよびイベント・データに対する要求に応える役割を持つが、ただし、そのような要求は、Ｗｅｂサーバ２１３を介してビューア２２００のうちの１つまたは複数から受信される。アクセス・エンジン２０３は、与えられた再生要求について正しいビデオ・ファイルを見つけて、ビューア２２００にサンプル・データ・ストリームとしてビデオ・ファイル内に格納されているサンプル・データを提供することによりビデオ・データを提供する。アクセス・エンジン２０３は、与えられた要求について正しいイベント・ファイルを見つけて、ビューア２２００にイベント・ファイル内に格納されているイベント・データを提供することによりイベント・データを提供する。
【００４５】
記録エンジン２０１は、さらに、新しいデータ・ファイル２０９が作成されるときにアクセス・エンジン２０３に通知するため、以下で詳しく説明されるプロセス間通信方法を使用してアクセス・エンジン２０３と調整する。
【００４６】
ストレージ・サーバ２３００は、さらに、ストレージ・サーバ構成ツール（ＳＳＣＴ）２１１も備える。ストレージ・サーバ構成ツール２１１は、ストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０上に常駐するアプリケーション・ソフトウェアとして実装されることが好ましい。ストレージ・サーバ構成ツール２１１は、以下で詳しく説明される、ストレージ・サーバ２３００をホスティングするコンピュータ・モジュール２３０１にログオンしているユーザが使用することができる。構成ツール２１１は、ユーザがストレージ・サーバ構成ファイル２０５のＧＥＮＥＲＡＬ要素４０５（図５参照）で記述されている設定の変更を行えるようにするグラフィカル・ユーザ・インターフェースを備える。
【００４７】
したがって、システム１００のユーザには２種類のタイプがある。管理者権限を有する「管理者」は、ストレージ・サーバ２３００の構成設定を変更できるだけでなく、ネットワーク２２２０を介してカメラ・サーバ１０９〜１１１からアップロードされた他のサンプル・データにアクセスし、表示することができる。「オペレータ」と呼ばれる第２のタイプのユーザは、管理者権限を持たず、限られた機能のみを実行できる。それらの限られた機能としては、ビューア２２００を使用してビデオ・ウィンドウ・レイアウトを選択する、およびネットワーク２２２０を介して、カメラ・サーバ１０９〜１１１の１つまたは複数からアップロードされたサンプル・データを表示するなどの機能を含む。それぞれのタイプのユーザによって実行することができる機能について、以下で詳しく説明する。さらに、両タイプのユーザとも、明示的に区別する場合を除き「ユーザ」または「複数のユーザ」と本明細書では総称される。
【００４８】
３．０  記録エンジン
３．１  記録エンジンのモジュール
記録エンジン２０１は、図３に示されているように、モジュール群３００に分割することができる。モジュール３００はそれぞれ、ハード・ディスク・ドライブ２３１０上に常駐する単一のソフトウェア・プログラムとしてまとめて、またプロセッサ２３０５により実行時に制御されるように実装されることが好ましい。それとは別に、モジュール３００の１つまたは複数を、別のソフトウェア・プログラムとして実装することができる。
【００４９】
モジュール３００のうちの第１のモジュールは、ネットワーク・モジュール３０１として知られる。ネットワーク・モジュール３０１は、システム１００の基幹ネットワーキング・オペレーションを実行する。ネットワーク・モジュール３０１は、通常、ストレージ・サーバ２３００のオペレーティング・システムの一部である。モジュール３００のうちの他のモジュールは、システム１００の基幹ファイル・システム・オペレーションを実行する、ファイル・システム・モジュール３０３と呼ばれる。ファイル・システム・モジュール３０３は、ここでもまた、通常、ストレージ・サーバ２３００のオペレーティング・システムの一部であり、以下の３．３節でさらに詳しく説明する。
【００５０】
カメラ・サーバ通信モジュール３０５は、記録エンジン２０１と、ネットワーク２２２０を経由して記録エンジン２０１が制御するカメラ・サーバ１０９〜１１１との間の通信を管理する。通信モジュール３０５は、正しい設定が特定のカメラ・サーバ１０９〜１１１に必ず送信されるようにし、必要に応じてイベント通知を受信するようにする役割を持つ。カメラ・サーバ通信モジュール３０５は、以下の３．７節で詳しく説明する。
【００５１】
メール・サーバ通信モジュール３０７は、モジュール３００にも含まれる。メール・サーバ通信モジュール３０７は、記録エンジン２０１とネットワーク２２２０に接続されている簡易メール転送プロトコル（ＳＭＴＰ）サーバ２２２１との間のすべての通信を管理する。ＳＭＴＰサーバ２２２１は、図２３に示されているようにストレージ・サーバ２３００のコンピュータ・モジュール２３０１内に、またはストレージ・サーバ２３００からリモートで構成することができる。以下で詳しく説明するように、ＳＭＴＰサーバ２２２１は、ネットワーク２２２０上のメール・サーバに電子メール・イベント通知を送信するために使用され、この電子メール・イベント通知は、最終的に、ストレージ・サーバ２３００の構成に基づき、特定の電子メール・メールボックスに配信される。ＰＯＰサーバへの接続は、認証目的のために必要な場合にも維持することができる。
【００５２】
Ｗｅｂインターフェース・モジュール３０９は、ネットワーク２２２０に接続されているＷｅｂサーバ２１３とのすべての通信を管理する。Ｗｅｂインターフェース・モジュール３０９は、共通ゲートウェイ・インターフェース（ＣＧＩ）を介して、またはストレージ・サーバ２３００上のオペレーションをより効率的なものにできるように、Ｗｅｂサーバ２１３と記録エンジン２０１との間の継続的通信をより適切にサポートするＦａｓｔＣＧＩ（登録商標）インターフェースを通じて、通常、Ｗｅｂサーバ２１３と通信し、またその逆も行われる。
【００５３】
モジュール３００は、さらに、Ｗｅｂインターフェース・モジュール３０９を介して送信されるビューア・コマンドを管理する、ビューア・インターフェース・モジュール３１１も含む。ビューア・インターフェース・モジュール３１１は、ストレージ・サーバ２３００がネットワーク２２２０に接続されたマスタ・ストレージ・サーバとして使用される場合にすべてのビューア２２００についてビデオ・ウィンドウ・レイアウトおよびビューア構成設定に対する変更のクエリまたは要求を処理するために使用される。例えば、ストレージ・サーバ２３００Ａ、２３００Ｂ、２３００Ｃ、または２３００Ｄのうちのどれかをマスタ・ストレージ・サーバとして使用することができる。このようなマスタ・ストレージ・サーバは、これ以降、マスタ・ストレージ・サーバ２３００Ａと呼ばれる。
【００５４】
管理インターフェース・モジュール３１３は、さらに、Ｗｅｂインターフェース・モジュール３０９を介して送信される管理コマンドを管理するためにも含まれる。管理インターフェース・モジュール３１３は、カメラ・サーバ１０９〜１１１に関係する変更および特定のストレージ・サーバ２３００と関連付けられているカメラ１１２〜１１５のスケジュール設定への変更のクエリまたは要求を処理するために使用される。
【００５５】
モジュール３００は、さらに、ストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０上に格納される構成ファイル２０７のすべてを管理する構成管理モジュール３１５も含む。
【００５６】
ビデオ・ファイル管理モジュール３１７も含まれる。ビデオ・ファイル管理モジュール３１７は、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成されているドライブ上に格納されたビデオ・ファイルを管理する。モジュール３１７は、必要に応じて新しいビデオ・ファイルを作成し、サンプル・データをそれらの新しいビデオ・ファイルに書き込み、既存のファイルのサイズまたは持続時間が所定の限界を超えた場合にさらに新しいファイルにスワッピングする役割を持つ。
【００５７】
ビデオ・ファイル・リカバリ・モジュール３１９では、必ず、ストレージ・サーバ２３００により取り扱われるすべてのビデオ・ファイルは、一貫した可読状態にある。記録エンジン２０１が早期に終了した場合（例えば、停電のため）、進行中ファイルは、ビデオ．ファイル・リカバリ・モジュール３１９がその進行中ファイルを調べて、そのような進行中ファイルへの内部一貫性を復元するまで本質的に読み取り可能ではない。
【００５８】
モジュール３００は、さらに、ストレージ・サーバ２３００のドライブ上に格納されているイベント・ファイルを管理するイベント・ファイル管理モジュール３２１も含む。イベント・ファイル管理モジュール３２１は、必要に応じて新しいイベント・ファイルを作成し、イベント・データをそれらの新しいイベント・ファイルに書き込み、既存のイベント・ファイルのサイズまたは持続時間が所定の限界を超えた場合にさらに新しいファイルにスワッピングする役割を持つ。イベント・ファイル管理モジュール３２１は、以下の３．６節で詳しく説明される。
【００５９】
ドライブ管理モジュール３２３は、記録エンジン・モジュール３００にも含まれる。ドライブ管理モジュール３２３は、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成されているすべてのドライブを管理する。ドライブ管理モジュール３２３は、ストレージ・デバイス２３０９内のすべての固定ドライブのリストを保持する。削除するビデオ・ファイルを選択することにより、ドライブ管理モジュール３２３では、必ず、一定の年齢を超えたビデオ・ファイルが削除され、ハード・ディスク２３１０上の空きメモリ領域が所定の限界内に保持されるようにする。ドライブ管理モジュール３２３は、さらに、記録エンジン２０１により使用されるハード・ディスク・ドライブ２３１０上のメモリ領域がストレージ・サーバ２３００の管理者により設定された所定の限界値を超えないようにもできる。ドライブ管理モジュール３２３は、特定のドライブの空きメモリ領域またはハード・ディスク・ドライブ２３１０上の使用メモリ領域が所定の限界を超えた場合にいつでもストレージ・サーバ２３００の特定のドライブへの記録を禁止するように構成することができる。
【００６０】
記録エンジン２０１は、さらに、スケジュールのリストを保持するためのスケジューリング・モジュール３２５も含む。スケジューリング・モジュール２０１は、ストレージ・サーバ２３００のオペレーティング・システムを使用して、タイマーを、カメラ１１２〜１１５の設定を変更する必要が生じる将来の時刻に対応する時刻に設定する。スケジューリング・モジュール２０１は、その後、それぞれのスケジュールの有効期限が切れるとストレージ・サーバ２３００のオペレーティング・システムから通知を受信し、新しいスケジュールを設定する。新しいカメラ・スケジュール・アイテム１１１５（図１３を参照）がアクティブ化されると、スケジューリング・モジュール２０１は、そのスケジュール・アイテムに適合するように新しいスケジュール・アイテムに対応する特定のカメラ１１２〜１１５の設定を調整する。イベントがトリガされると、スケジューリング・モジュール２０１は、そのときにアクティブであるスケジュール・アイテムに従って必要に応じてイベントが関連付けられているカメラ１１２〜１１５のカメラ設定を調整する。カメラ・スケジュール・アイテムについて、以下でさらに詳しく説明する。スケジューリング・モジュール３２５は、さらに、現在の時刻に基づき、それぞれのカメラ１０９〜１１１の構成を追跡する役割も持つ。カメラ記録パラメータを変更する可能性のあるイベントが発生すると、必ず、スケジューリング・モジュール３２５は、カメラ記録パラメータが正しく再構成されるようにする。
【００６１】
さらに、スケジューリング・モジュール３２５は、時刻を追跡し、一方のスケジュール・アイテムが他方に移行すると、または事後イベント記録期間が満了すると、必ずカメラ記録パラメータが変更されるようにする。
【００６２】
カメラ制御モジュール３２７は、記録エンジン・エンジン２０１にも含まれる。カメラ制御モジュール３２７は、スケジューリング・モジュール３２５およびカメラ・サーバ通信モジュール３０５と緊密にリンクしている。カメラ制御モジュール３２７は、特定のカメラ・サーバ１０９〜１１１の設定が現在のスケジュール・アイテムにより指定された設定と一致していることを保証する。つまり、カメラ制御モジュール３２７は、カメラ設定がカメラ・サーバ１０９〜１１１上で最新状態に保たれるようにする。これは、設定がスケジュール変更またはイベントのせいで記録エンジン２０１内で変更されたときに新しい設定をカメラ・サーバ１０９〜１１１に送信すること、およびカメラ・サーバ１０９〜１１１上の設定を監視し、異なるカメラ・サーバ１０９〜１１１により設定が変更された場合に設定が正確さを保つようにすることを伴う。カメラ制御モジュール３２７は、以下の状況で、新しいパン、傾斜、およびズーム（ＰＴＺ＿ｓｅｔｔｉｎｇｓ）をカメラ・サーバ１０９〜１１１に送信する。
【００６３】
（ｉ）新しいスケジュール・アイテムが起動するが、その場合、必要なＰＴＺ設定は現在ＰＴＺ設定と異なる。
【００６４】
（ｉｉ）現在のＰＴＺ設定と異なるＰＴＺ設定を必要とするイベントがトリガされた。
【００６５】
（ｉｉｉ）記録エンジン２０１内の現在のカメラ設定が設定されたＰＴＺ設定を必要とするときに、他の記録エンジン２０１が、カメラ１１２〜１１５を新しい位置に移動した。
【００６６】
図１１５は、記録エンジン２０１のカメラ制御モジュール３２７により、カメラ・サーバ１０９〜１１１に関連付けられた、特定のカメラ１１２〜１１５の制御を表す状態図である。図１１５からわかるように、制御モジュール３２７は、標準状態１１５０１にあるのがふつうであり、その場合、カメラ・サーバ１０９〜１１１は特定の設定に従って特定のカメラ１１２〜１１５を制御する。特定のカメラ１１２〜１１５の制御は、他の記録エンジンにより、例えば、矢印１１５０３によって表されているように、要求をカメラ制御モジュール３２７に送信することにより、要求することができる。その結果、カメラ制御モジュール３２７は、制御必須状態１１５０５に移動する。カメラ制御モジュール３２７は、さらに、矢印１１５０７により表されているように、上の状況（ｉ）および（ｉｉ）に従って状態１１５０５にも移動することができ、その場合、新しいスケジュール・アイテムが起動し、例えば、必須ＰＴＺ設定が現在のＰＴＺ設定と異なる。
【００６７】
図１１５に示されているように、次に、制御モジュール３２７は、矢印１１５０９によって表されているように、制御要求を関連付けられたカメラ・サーバ１０９〜１１１に送信することにより、特定のカメラ１１２〜１１５の制御を要求することができる。その結果、カメラ制御モジュール３２７は、制御要求状態１１５１１に移動する。カメラ・サーバ１０９〜１１１は、特定のカメラ・サーバ１０９〜１１１の制御を拒絶し、制御拒絶メッセージを制御モジュール３２７に送り返すことができる。その結果、カメラ制御モジュール３２７は、状態１１５０５に戻る。それとは別に、カメラ・サーバ１０９〜１１１は、矢印１１５１５により表されているように、制御付与メッセージをカメラ制御モジュール３２７に送信することにより特定のカメラ１１２〜１１５の制御権を付与することができる。その結果、カメラ制御モジュール３２７は、制御取得状態１１５１７に移動する。
【００６８】
制御取得状態１１５１７から、カメラ制御モジュール３２７は、矢印１１５１９により表されているように、また以下で詳しく説明するように、関連付けられているカメラ・サーバ１０９〜１１１に制御コマンドを送信することにより特定のカメラ１１２〜１１５を操作する。その結果、カメラ制御モジュール３２７は制御完了状態１１５２１に移動し、カメラ制御モジュール３２７がカメラ１１２〜１１５の制御を解放し、関連付けられているカメラ・サーバ１０９〜１１１に戻すまでその状態に留まる。その結果、カメラ制御モジュール３２７は、標準状態１１５０１に戻る。
【００６９】
カメラ制御モジュール３２７は、さらに、例えば、以下で詳しく説明するように、特定のカメラ１１２〜１１５の制御を獲得するより高い制御権をユーザが持つことで、制御取得状態１１５１７から制御必須状態１１５０５に移動することもできる。
【００７０】
記録エンジン２０１は、さらに、フレーム・バッファ・モジュール３２９も含む。フレーム・バッファ・モジュール３２９は、カメラ・サーバ１０９〜１１１からサンプル・データを受信し、サンプル・データをストレージ・サーバ２３００のメモリ２３０６内に構成された循環フレーム・バッファに保存する。サンプル・データが記録される場合、サンプル・データはビデオ・ファイル管理モジュール３１７に送られ、ハード・ディスク・ドライブ２３１０に書き込まれる。サンプル・データは、さらに、ストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０内にソフトウェアとして実装された運動検出アルゴリズムに供給することもできる。連続フレーム間の相違を比較し、しきい値を適用して必要な大きさの変化が画像のそれぞれの部分において発生したかどうかを判定し、他のしきい値を適用して画像の十分な部分が十分に変化したかどうかを判定するアルゴリズムなどの、適当な運動検出アルゴリズムを使用して運動検出することができる。
【００７１】
記録が実行されない場合、サンプル・データは、フレーム・バッファからオーバーフローするまでできる限り長い間、メモリ２３０６内に保持され、イベントがトリガされ、事前イベント記録がそのイベントに対して有効になっている場合には、サンプル・データを後でハード・ディスク・ドライブ２３１０に保存することができる。
【００７２】
記録エンジン２０１は、さらに、カメラ・サーバ通信モジュール３０５、ビューア・インターフェース３１１およびドライブ管理モジュール３２３などの様々なソースから受信された信号をイベント・レコードに変換するイベント管理モジュール３３１を備え、このため、イベント・ファイル管理モジュール３２１およびビデオ・ファイル管理モジュール３１７を使用して、これらのイベント・レコードをディスク２３１０に書き込むことができる。
【００７３】
３．２  ストレージ・サーバ構成オブジェクト
この節では、ストレージ・サーバ２３００構成を伴うオペレーションの基礎である、ストレージ・サーバ構成オブジェクトについて説明する。
【００７４】
ストレージ・サーバ構成オブジェクト（ＳＳＣＯ）は、ストレージ・サーバ構成ファイル２０５などのストレージ・サーバ２３００構成の複数の態様において使用され、管理プロトコルで交換されるデータとして、管理インターフェース３１３により使用されるＸＭＬドキュメントである。ストレージ・サーバ構成オブジェクトは、知られているＵＴＦ−８形式でフォーマットされるのが好ましい。このようなストレージ・サーバ構成オブジェクトを構成する要素４００の階層は、図４を参照しつつ、以下で説明される。
【００７５】
図４に示されているように、ストレージ・サーバ構成オブジェクトは、ネットワーク・ビデオ・レコーダ（ＮＶＲ）要素４０１、ＧＥＮＥＲＡＬ要素４０５、ＣＡＭＳＶＲ要素４０７、およびＣＡＭＥＲＡ要素４０９を含むが、これについては以下で詳しく説明する。特に断りのない限り、ストレージ・サーバ構成オブジェクトの説明の文脈において「ＸＭＬドキュメント」、「要素」、および「属性」という用語は、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ（２０００年１０月６日）により公開された拡張マークアップ言語（ＸＭＬ）勧告（第２版）において定義されている意味で使用される。
【００７６】
３．２．１  ネットワーク・ビデオ・レコーダ（ＮＶＲ）要素
要素４００の第１の要素は、図４に示されているように、ネットワーク・ビデオ・レコーダ（ＮＶＲ）要素と呼ばれる。ネットワーク・ビデオ・レコーダ要素４０１は、ストレージ・サーバ２３００に対応する、特定のストレージ・サーバ構成オブジェクトに格納されている、構成情報をカプセル化するものである。ネットワーク・ビデオ・レコーダ要素４０１は、特定のストレージ・サーバ構成オブジェクトの型と目的を示す、「ｔｙｐｅ」属性４０２を含む。型要素は、以下のように６つの値のうちの１つに設定することができる。
【００７７】
（ｉ）ｆｉｌｅ−ストレージ・サーバ構成オブジェクトがストレージ・サーバ２３００の構成ファイル２０５として使用されることを示す。
【００７８】
（ｉｉ）ｇｅｎｅｒａｌ−ストレージ・サーバ構成オブジェクトは、ストレージ・サーバ２３００の一般的な設定を記述し、またＣＡＭＳＶＲ  ４０７またはＣＡＭＥＲＡ  ４０９要素を含まないことが好ましいが、これについては、以下で詳述する。
【００７９】
（ｉｉｉ）ｃａｍｓｖｒ−ストレージ・サーバ構成オブジェクトが特定のストレージ・サーバ２３００に関連付けられているカメラ・サーバ１０９〜１１１を記述することを示す。ネットワーク・ビデオ・レコーダ要素４０１は、ＧＥＮＥＲＡＬ  ４０５またはＣＡＭＥＲＡ  ４０９要素を含まないのが好ましいが、ＣＡＭＥＲＡ要素は、個々のＣＡＭＳＶＲ  ４０７要素内に存在することができる。
【００８０】
（ｉｖ）ｃａｍｅｒａ−ストレージ・サーバ構成オブジェクトが特定のストレージ・サーバ２３００に関連付けられているすべてのカメラ・サーバ１０９〜１１１の状態を記述することを示す。ネットワーク・ビデオ・レコーダ要素４００は、ＧＥＮＥＲＡＬ  ４０５またはＣＡＭＳＶＲ  ４０７要素を含まないのが好ましい。しかし、ＣＡＭＥＲＡ要素４０９は、ＳＴＡＴＥ要素を含み、これについては以下で説明する。
【００８１】
（ｖ）ｓｃｈｅｄ−ストレージ・サーバ構成オブジェクトが、一組のカメラ・サーバ１０９〜１１１に属しているスケジュールを記述することを示す。ネットワーク・ビデオ・レコーダ要素４０１は、ＧＥＮＥＲＡＬ  ４０５またはＣＡＭＳＶＲ  ４０７要素を含まない。しかし、ＣＡＭＥＲＡ要素４０９は、ＤＡＹ要素１１１１（図１１を参照）を含み、これについては以下で説明する。
【００８２】
（ｖｉ）ｔｒｉｇｇｅｒ−ストレージ・サーバ構成オブジェクトが、トリガされる一組のカメラ・サーバ１０９〜１１１を記述することを示す。ネットワーク・ビデオ・レコーダ要素４０１は、ＧＥＮＥＲＡＬ  ４０５またはＣＡＭＳＶＲ  ４０７要素を含まないのが好ましい。ＣＡＭＥＲＡ要素４０９内に存在する要素を無視することができる。
【００８３】
ネットワーク・ビデオ・レコーダ要素４０１は、ストレージ・サーバ構成オブジェクトがストレージ・サーバ２３００上で変更を実行することを意図されていることを示す「ａｃｔｉｏｎ」属性４０３も含む。ａｃｔｉｏｎ属性４０３は、オプションである。ネットワーク・ビデオ・レコーダ要素４０１内に存在する場合、ａｃｔｉｏｎ属性に対する有効な値は以下のとおりである。
【００８４】
（ｉ）ａｄｄ−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ１０９〜１１１またはスケジュール曜日をシステム１００に追加するために使用されることを示す。
【００８５】
（ｉｉ）ｍｏｄｉｆｙ−ストレージ・サーバ構成オブジェクトは、既存のカメラ・サーバ２３００またはスケジュール曜日の詳細を修正するために使用されることを示す。
【００８６】
（ｉｉｉ）ｄｅｌｅｔｅ−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ１０９〜１１１またはスケジュール曜日をシステム１００から削除するために使用されることを示す。
【００８７】
（ｉｖ）ｍｏｖｅｉｎ−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ１０９〜１１１が異なるストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、または２３００Ｄ）から移動される場合に、カメラ・サーバ１０９〜１１１をストレージ・サーバ２３００を追加するために使用されることを示す。
【００８８】
（ｖ）ｍｏｖｅｏｕｔ−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ１０９〜１１１が異なるストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、または２３００Ｄ）に移動される場合に、カメラ・サーバ１０９〜１１１をストレージ・サーバ２３００から削除するために使用されることを示す。
【００８９】
３．２．２  ＧＥＮＥＲＡＬ要素
ストレージ・サーバ構成オブジェクトのＧＥＮＥＲＡＬ要素４０５は、図５に示されている。ＧＥＮＥＲＡＬ要素４０５は、図５に示されているように、ストレージ・サーバ２３００の一般的構成を記述し、多数の他の要素５０１〜５１５を含む。
【００９０】
ＧＥＮＥＲＡＬ要素４０５は、それぞれビューア２２００またはストレージ・サーバ２３００ディスプレイ２２１４および２３１４上の構成ビュー内に表示されているようなストレージ・サーバ２３００の名前を示すＮＡＭＥ要素５０１を含む。構成ビューについて、以下でさらに詳しく説明する。２つまでのＮＡＭＥ要素５０１がありうる。ＮＡＭＥ要素５０１は、ｌａｎｇｕａｇｅ属性５１７により指定される、言語で区別される。有効な言語識別子は、「Ｅｎｇｌｉｓｈ」および「Ｊａｐａｎｅｓｅ」であり、ＧＥＮＥＲＡＬ要素４０５内のどの２つのＮＡＭＥ要素５０１も同じ言語識別子を持たないことが好ましい。
【００９１】
ＮＥＸＴＩＤ要素５０３は、システム１００の記録エンジン２０１に追加される次のカメラ１１２〜１１５に対応する一意的な識別子を示す。ＮＥＸＴＩＤ要素５０３の値は、カメラ１１２〜１１５がシステム１００に追加されるとインクリメントされる。ＮＥＸＴＩＤ要素５０３は、それぞれの追加カメラ１１２〜１１５は、他の既存のカメラ１１２〜１１５、またはシステム１００から削除されたカメラ１１２〜１１５と衝突しない識別子を与えられることを保証する。
【００９２】
ＰＲＯＸＹ要素５０５は、記録エンジン２０１をカメラ・サーバ１０９〜１１１に接続した場合に使用されるＨＴＴＰプロキシ・サーバ（図に示されていない）を示す。ＰＲＯＸＹ要素５０５内に構成されたｅｎａｂｌｅｄ属性は、２つの値「０」（無効）または「１」（有効）のうちの１つを取りうる。ＰＲＯＸＹ要素５１９のＨＯＳＴタグ５０７は、「ｈｏｓｔ：ｐｏｒｔ」形式でプロキシ・サーバのホスト名またはインターネット・プロトコル（ＩＰ）アドレスを示す。ｐｏｒｔ属性が省略された場合、デフォルト値は８０である。
【００９３】
ＥＭＡＩＬ要素５０９は、記録エンジン２０１の電子メール通知システム（図に示されていない）により使用される設定を指定するが、これは、図６を参照しつつ、以下の３．２．３節でさらに詳しく説明される。
【００９４】
ＬＩＭＩＴＥＲ要素５１１は、ビデオ・ファイルおよびイベント・ファイルがいつスワップされるかを決定するために使用される基準を指定するが、これは、図７を参照しつつ、以下の３．２．４節でさらに詳しく説明される。
【００９５】
ＨＩＳＴＯＲＹ要素５１３は、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成されたドライブのビデオおよびイベント・ファイル・ディレクトリ内に格納されるビデオ・ファイルおよびイベント・ファイルの最大年齢を表す値を含む。ＨＩＳＴＯＲＹ要素は、秒単位で測定される、整数値を含む。
【００９６】
ＧＥＮＥＲＡＬ要素４０５は、多数のＤＲＩＶＥ要素５１５も含む。それぞれのＤＲＩＶＥ要素５１５は、システム１００のストレージ・デバイス２３０９内に構成される単一ドライブの設定を記述する。ＤＲＩＶＥ要素５１５は、図８を参照しつつ３．２．５節でさらに詳しく説明される。
【００９７】
３．２．３  ＥＭＡＩＬ要素
上述のように、ＥＭＡＩＬ要素５０９は、記録エンジン２０１の電子メール通知システムにより使用される設定を指定する。図６に示されているように、ＥＭＡＩＬ要素５０９は、子要素６０３〜６１３を含む。ＥＭＡＩＬ要素５０９は、さらに、ｅｎａｂｌｅｄ属性６０１も含む。ｅｎａｂｌｅｄ属性６０１が０に設定された場合、電子メール通知システムは無効化され、すべての子要素を無視することができる。ｅｎａｂｌｅｄ属性６０１が非ゼロ値に設定された場合、電子メール通知システムは有効化される。
【００９８】
ＳＭＴＰ要素６０３は、電子メールを送信するために使用されるＳＭＴＰサーバ２２２１のホスト名を指定する。ＳＭＴＰ要素６０３は、オプションの「ａｕｔｈ」属性を含む。存在する場合、「ａｕｔｈ」属性は、以下のような３つの値のうちの１つに設定することができる。
【００９９】
（ｉ）ｎｏｎｅ−認証をＳＭＴＰサーバ２２２１上で実行する必要のないことを示す。
【０１００】
（ｉｉ）ｓｍｔｐ−認証は、ＳＭＴＰ認証プロトコルを使用して実行されることを示す。
【０１０１】
（ｉｉｉ）ｐｏｐ−認証は、（知られているｐｏｐ−ｂｅｆｏｒｅ−ｓｍｔｐ規約を使用して）開いているＳＭＴＰ接続を持つ前にＰＯＰサーバにログオンすることにより実行されることを示す。
【０１０２】
ＳＭＴＰ要素６０３の内側のＨＯＳＴ要素６０５は、「ｈｏｓｔ：ｐｏｒｔ」形式でＳＭＴＰサーバ２２２１のホスト名またはインターネット・プロトコル（ＩＰ）アドレスを示す。ポートが省略された場合、デフォルト値は２５である。
【０１０３】
ＳＭＴＰ要素６０３の内側のＵＳＥＲ要素６０７は、ＳＭＴＰまたはＰＯＰ認証方法を使用してＳＭＴＰサーバ２２２１にログインするために使用されるユーザ詳細を示す。ＵＳＥＲ要素６０７は、「ｈｉｄｄｅｎ」属性を含む。「ｈｉｄｄｅｎ」属性が非ゼロ値に設定された場合、ＵＳＥＲ要素６０７の内容は、使用される実際のパスワードを表さない。ＵＳＥＲ要素６０７の内容は、「ｕｓｅｒｎａｍｅ：ｐａｓｓｗｏｒｄ」の形式である。
【０１０４】
ＳＭＴＰ要素の内側のＰＯＰＨＯＳＴ要素は、ｐｏｐ−ｂｅｆｏｒｅ−ｓｍｔｐ認証に使用するネットワーク２２２０上のＰＯＰサーバのホスト名またはＩＰアドレスおよびＰＯＰサーバに関連付けられているポートを「ｈｏｓｔ：ｐｏｒｔ」の形式で示す。ポートが省略された場合、デフォルト値は１１０である。
【０１０５】
ＥＭＡＩＬ要素５０９のＦＲＯＭ要素６０９は、送信された電子メールの送信者として電子メール通知システムにより使用されるアドレスを示す。ＦＲＯＭ要素６０９に含まれるデータの形式は、電子メール・アドレスを記述するための既存の標準に適合するのが好ましい。
【０１０６】
ＴＯ要素６１１は、送信された電子メールの受信者として電子メール通知システムにより使用されるアドレスを示す。ＴＯ要素６１１に含まれるデータの形式は、電子メール・アドレスを記述するための既存の標準に適合すべきである。
【０１０７】
ＰＲＩＯＲＩＴＹ要素６１３は、電子メール通知システムにより使用されるしきい値優先度を示す。このしきい値優先度以上の優先度を持つイベントが発生すると、電子メール通知が送信される。優先度レベルは、１（つまり、最高優先度を表す）から５（つまり、最低優先度を表す）までの範囲とすることができる。
【０１０８】
３．２．４  ＬＩＭＩＴＥＲ要素
上述のように、ＬＩＭＩＴＥＲ要素５１１は、いつビデオ・ファイルおよびイベント・ファイルがスワップされ、他の要素７０３および７０５を含むかを決定するために使用される基準を指定する。図７に示されているように、ＬＩＭＩＴＥＲ要素５１１は、「ｂｙｓｉｚｅ」属性７０１を含む。ｂｙｓｉｚｅ属性７０１が非ゼロの場合、ビデオ・ファイルとイベント・ファイルがいつスワップされるかを決定するためにＳＩＺＥ要素７０３の値が使用される。「ｂｙｔｉｍｅ」属性７０２も、ＬＩＭＩＴＥＲ要素５１１に含まれる。ｂｙｔｉｍｅ属性７０２が非ゼロの場合、ビデオ・ファイルとイベント・ファイルがいつスワップされるかを決定するためにＴＩＭＥ要素７０５の値が使用される。
【０１０９】
ＳＩＺＥ要素７０３は、ビデオ・ファイルの最大サイズをバイト単位で指定する。記録エンジン２０１は、ファイルをスワップする前に、最大サイズを少しだけ超えていてもよい。ＬＩＭＩＴＥＲ要素５１１のｂｙｓｉｚｅ属性７０１が存在しないか、または０に設定されているか、またはＳＩＺＥ要素７０３が存在しない場合、１ギガバイトのハード限界が強制される。
【０１１０】
ＴＩＭＥ要素７０５は、ビデオ・ファイルの最大持続時間を秒単位で指定する。ＬＩＭＩＴＥＲ要素５１１のｂｙｔｉｍｅ属性７０２が存在しないか、または０に設定されているか、またはＴＩＭＥ要素７０５が存在しない場合、２４時間のハード限界が強制される。
【０１１１】
３．２．５  ＤＲＩＶＥ要素
上述のように、それぞれのＤＲＩＶＥ要素５１５は、記録エンジン２０１により使用される、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成された、それぞれのドライブの状態を記述する。ストレージ・サーバ２３００に利用可能なそれぞれのドライブに対応するＤＲＩＶＥ要素５１５が１つあるのが好ましい。これは、内部ストレージ・デバイス（例えば、ハブ・ディスク）、ストレージ・デバイス内のパーティション、周辺部ストレージ・デバイス、ネットワーク・アクセス可能ストレージ・デバイス、および他のストレージ・デバイスのそれぞれにマッピングされる論理ドライブを含むシステム１００上に構成されたすべての論理ドライブを含む。図８に示されているように、このドライブ要素は、さらに２つの要素８０２および８０３を含む。ＤＲＩＶＥ要素５１５は、ストレージ・デバイス２３０９の特定のドライブ（例えば、Ｗｉｎｄｏｗｓ（登録商標）システムでは、「Ｃ：１」は、第１のハード・ディスクを示す）にアクセスするためにプロセッサ２３０５により使用されるパスを示すｐａｔｈ属性８０１を含む。
【０１１２】
ＦＲＥＥ要素８０２は、記録エンジン２０１の空きメモリ領域監視を制御する値を含む。ＦＲＥＥ要素８０２は、「／」文字で区切られた、それぞれバイト数を表す、３つの整数値からなる。第１の値は、ハード・ディスク・ドライブ２３１０のメモリ領域しきい値を表す。対応するドライブ上の空きメモリ領域が第１の値よりも下である場合、記録エンジン２０１は、空きメモリ領域がより高い値に達するまで旧いビデオ・ファイルを削除しようと試みる。ＦＲＥＥ要素８０２内の第２の値は、空きメモリ領域限界を表す。対応するドライブ上の空きメモリ領域が第２の値よりも下である場合、記録エンジン２０１は、旧いビデオ・ファイルを削除しようと試み、空きメモリ領域がもう一度第２の値よりも高くなるまでさらに多くのサンプル・データをドライブに書き込むことを拒絶する。第３の値は、ストレージ・サーバ構成オブジェクトが作成されたときのドライブ上の空き領域を表す。
【０１１３】
ＵＳＥＤ要素８０３は、記録エンジン２０１により使用されるハード・ディスク・ドライブ２３１０上のメモリ領域の監視を制御する値を含む。本明細書で説明されているように、「使用ディスク領域」は、ビデオおよびイベント・ファイルを格納するために記録エンジン２０１によりハード・ディスク・ドライブ２３１０上で使用されるメモリ領域を指す。ＵＳＥＤ要素８０３は、「／」文字で区切られた、それぞれバイト数を表す、３つの整数値を含む。第１の値は、使用ディスク領域しきい値を表す。ＤＲＩＶＥ要素５１５に対応するドライブ上の記録エンジン２０１により使用される領域が第１の値よりも上に来る場合、記録エンジン２０１は、使用領域が下限値に達するまで旧いビデオ・ファイルを削除しようと試みる。第２の値は、使用ディスク領域限界を表す。対応するドライブ上の記録エンジン２０１により使用される領域が第２の値よりも上に来る場合、記録エンジン２０１は、旧いビデオ・ファイルを削除しようと試みる。さらに、この事例では、記録エンジン２０１は、使用ディスク領域がもう一度第２の値よりも小さくなるまで、さらに多くのサンプル・データを対応するドライブに書き込むことを拒絶する。第３の値は、このストレージ・サーバ構成オブジェクトが作成されたときのドライブ上の使用ディスク領域を表す。
【０１１４】
３．２．６  ＣＡＭＳＶＲ要素
上述のように、ストレージ・サーバ構成オブジェクトを形成するＸＭＬドキュメントは、ＣＡＭＳＶＲ要素４０７を含む。ＣＡＭＳＶＲ要素４０７は、ストレージ・サーバ２３００により制御される単一のカメラ・サーバ１０９〜１１１を記述する。図９に示されているように、ＣＡＭＳＶＲ要素４０７は、さらに要素９０１〜９０５を含む。ＣＡＭＳＶＲ要素４０７は、ストレージ・サーバ構成オブジェクトが関連付けられているカメラ・サーバ１０９〜１１１の専用の型を記述する、ｔｙｐｅ属性９０７を含む。ｔｙｐｅ属性９０７は、以下の専用の型値のうちの１つを含むことができる。
【０１１５】
（ｉ）ＶＢ１０１、
（ｉｉ）ＶＢ１５０、
（ｉｉｉ）ＶＢ−Ｃ１０、
（ｉｖ）ｕｎｋｎｏｗｎ−カメラ・サーバの型が上記の１つでない場合、またはカメラ・サーバ１０９〜１１１の型が他の何らかの理由により決定できない場合にのみ使用される。
【０１１６】
それぞれのＨＯＳＴ要素９０１は、特定のカメラ・サーバ１０９〜１１１と通信するために記録エンジン２０１により使用されるホスト名またはインターネット・プロトコル（ＩＰ）アドレスおよびポートを「ｈｏｓｔ：ｐｏｒｔ」という形式で記述する。ポートが省略された場合、デフォルト値は８０である。通常、１つのＨＯＳＴ要素９０１のみが存在する。２つのＨＯＳＴ要素９０１は、関連付けられているストレージ・サーバ構成オブジェクトを使用して、特定のカメラ・サーバ１０９〜１１１に使用されるホスト名またはポートを変更する場合に使用することができる。オプションのｒｅｎａｍｅ属性９０９を使用することで、どのＨＯＳＴ要素９０１が旧いホスト名およびポート（「ｏｌｄ」）を記述し、どのＨＯＳＴ要素９０１が新しいホスト名およびポート（「ｎｅｗ」）を記述するかを指定することができる。
【０１１７】
ＬＩＶＥ要素９０２は、特定のカメラ・サーバ１０９〜１１１と通信するためにビューア２２００により使用されるホスト名またはＩＰアドレスおよびポートを「ｈｏｓｔ：ｐｏｒｔ」という形式で記述する。ポートが省略された場合、デフォルト値は８０である。ＬＩＶＥ要素９０２は、オプションであり、省略された場合、ＬＩＶＥ要素９０２により表される値は、ＨＯＳＴ要素９０１のと同じであると想定される。
【０１１８】
ＵＳＥＲ要素９０３は、特定のカメラ・サーバ１０９〜１１１にログオンするために使用されるユーザ詳細を記述する。ｈｉｄｄｅｎ属性９１１は、ＵＳＥＲ要素９０３に含まれる。ｈｉｄｄｅｎ属性９１１が非ゼロ値に設定された場合、ＵＳＥＲ要素９０３の内容は、使用される実際のパスワードを表さない。ＵＳＥＲ要素９０３の内容は、「ｕｓｅｒｎａｍｅ：ｐａｓｓｗｏｒｄ」の形式である。
【０１１９】
最大８つまでのＰＲＥＳＥＴ要素９０４をＣＡＭＳＶＲ要素４０７に入れることができる。ＰＲＥＳＥＴ要素９０４は、図１０を参照しつつ３．２．７節で詳しく説明される。
【０１２０】
ＣＡＭＳＶＲ要素９０７は、最大４つまでのＣＡＭＥＲＡ要素９０５を含むことができる。ＣＡＭＥＲＡ要素９０５は、関連付けられたストレージ・サーバ構成オブジェクト型が「ｃａｍｓｖｒ」に設定されている場合にＣＡＭＳＶＲ要素９０７内に存在する。ＣＡＭＥＲＡ要素９０７は、図１１を参照しつつ以下の３．２．８節で詳しく説明される。
【０１２１】
３．２．７  ＰＲＥＳＥＴ要素
ＰＲＥＳＥＴ要素９０４は、ストレージ・サーバ２３００に関連付けられているカメラ・サーバ１０９〜１１１のカメラ１１２〜１１５に対しプリセットされている位置のうちの１つを記述する。図１０からわかるように、ＰＲＥＳＥＴ要素９０４は、記述されるプリセットを指定し、１から８までの整数とすることができる、「ｉｄ」属性１００９を含む。ＰＲＥＳＥＴ要素９０４は、さらに、要素１００１、１００３、および１００５も含む。
【０１２２】
ＮＡＭＥ要素１００１はそれぞれ、プリセットの名前を示す。言語により区別される、２つまでのＮＡＭＥ要素１００１がありうる。言語は、ｌａｎｇｕａｇｅ属性１００３内で指定される。有効な言語識別子は、「Ｅｎｇｌｉｓｈ」および「Ｊａｐａｎｅｓｅ」であり、単一のＰＲＥＳＥＴ要素９０４内のどの２つのＮＡＭＥ要素１００１も同じ言語識別子を持たない。
【０１２３】
ＣＡＭＩＤ要素１００３は、特定のプリセットにより参照されるカメラ番号を示す。カメラ番号は、ＶＢ１０１およびＶＢ１５０型カメラ・サーバについては０から３までの間の値とすることができ、ＶＢ−Ｃ１０カメラ・サーバについては０に設定される。カメラ番号は、複数のカメラ１１２〜１１５をサポートするカメラ・サーバ１０９〜１１１上で特定のカメラを識別するために使用される。
【０１２４】
ＰＴＺ要素１００５は、ＰＲＥＳＥＴ要素９０４により表される特定のプリセットに対するパン、傾斜、およびズーム設定を示す。ＰＴＺ要素１００５は、「／」文字で区切られる３つの浮動小数点値を含み、それぞれ、パン、傾斜、およびズームを示す。
【０１２５】
３．２．８  ＣＡＭＥＲＡ要素
ストレージ・サーバ構成オブジェクトのＣＡＭＥＲＡ要素４０９は、システム１００内の単一カメラ１１２〜１１５を記述する。図１１に示されているように、ＣＡＭＥＲＡ要素４０９は、多数の他の要素１１０１〜１１１５を含む。ＣＡＭＥＲＡ要素４０９は、ＣＡＭＥＲＡ要素４０９に関連付けられているカメラ１１２〜１１５に割り当てられた一意的なカメラ識別子を指定する、「ｉｄ」属性１１１６を含む。ｔｙｐｅ属性１１１８は、カメラ１１２〜１１５の型を指定する。ｔｙｐｅ属性１１１８の値は、文字列であり、カメラ・サーバ１０９〜１１１により報告される特定のカメラ１１２〜１１１５の型を示す。
【０１２６】
ＣＡＭＥＲＡ要素４０９のｓｅｒｖｅｒ属性１１２０は、特定のカメラ１１０〜１１５が属すカメラ・サーバ１０９〜１１１を「ｈｏｓｔ：ｐｏｒｔ」形式で指定する。ポートが指定されていない場合、ポートは８０であると想定される。ｓｅｖｅｒｉｄ属性１１２２は、カメラ１０９〜１１１の識別子を指定する。ＶＢ１０１またはＶＢ１５０のカメラ・サーバ１０９〜１１１については、ｓｅｒｖｅｒｉｄ属性１１２２値は、０から３までの範囲とすることができるが、ＶＢ−Ｃ１０カメラ・サーバについては、値は０とすることができ、また省略しても安全である。
【０１２７】
ＣＡＭＥＲＡ要素４０９のそれぞれのＮＡＭＥ要素１１０１は、関連付けられたカメラ１１２〜１１５の名前を示す。言語により区別される、２つまでのＮＡＭＥ要素１１０１がありうる。言語は、ｌａｎｇｕａｇｅ属性１１２３内で指定される。ｌａｎｇｕａｇｅ属性１１２３は、「Ｅｎｇｌｉｓｈ」および「Ｊａｐａｎｅｓｅ」に設定することができ、単一のＣＡＭＥＲＡ要素４０９内のどの２つのＮＡＭＥ要素も同じ言語識別子を持たないことが好ましい。
【０１２８】
ＤＩＲ要素１１０３は、特定のカメラ１１２〜１１５に関連付けられているビデオおよびイベント・ファイルが書き込まれるストレージ・デバイス２３０９内に構成されたディレクトリを指定する。ｐａｔｈ属性１１２５は、そのディレクトリに対するディレクトリ・パスを指定するために使用される。
【０１２９】
Ｑ要素１１０５は、ＣＡＭＥＲＡ要素４０９により記述されている特定のカメラ１１２〜１１５が記録する場合に使用されるデフォルトの画質を指定する。有効な値が以下の表１で説明されている。
【０１３０】
【表１】
2007505523.tif 000003
【０１３１】
Ｒ要素１１０７は、ＣＡＭＥＲＡ要素４０９により記述されている特定のカメラ１１２〜１１５が記録する場合に使用されるデフォルトの画像解像度を指定する。Ｒ要素１１０７の有効な値は、以下の表２で説明される。
【０１３２】
【表２】
2007505523.tif 000004
【０１３３】
ＳＴＡＴＥ要素１１０９は、ストレージ・サーバ構成オブジェクト型が「ｃａｍｅｒａ」に設定されている場合にカメラ要素４０９内に存在する。ＳＴＡＴＥ要素１１０９は、図１２を参照しつつ以下の３．２．９節で詳しく説明される。
【０１３４】
それぞれのＤＡＹ要素１１１１は、特定のカメラ・サーバ１０９〜１１１のスケジュールに単一の２４時間周期を記述する。ｃａｍｅｒａｉｄ属性１１２７は、ＤＡＹ要素１１１１が属する特定のカメラ・サーバ１０９〜１１１を指定し、また親ＣＡＭＥＲＡ要素４０９のｉｄ属性と同じ値を持たなければならない。ｎａｍｅ属性１１２９は、スケジュール内に曜日の名前を記述する。平日スケジュールは、「Ｍｏｎｄａｙ」、「Ｔｕｅｓｄａｙ」などを曜日の名前として指定することにより示される。曜日名でない文字列が使用される場合、ＤＡＹ要素１１１１は、特別スケジュールを表すと仮定される。
【０１３５】
ＤＡＹ要素１１１１内のそれぞれのＤＡＴＥ要素１１１３は、その曜日がアクティブである単一の日付を指定する。曜日要素は、その曜日に対応するＤＡＴＥ要素１１１３を含む特別なスケジュールによりオーバーライドされない限り、その名前に対応する各曜日でアクティブであると自動的に想定される。ＤＡＴＥ要素１１１３の形式は、「ｙｙｙｙ−ｍｍ−ｄｄ」である。
【０１３６】
ＤＡＹ要素１１１１内のそれぞれのＳＣＨＥＤ要素１１１５は、単一のスケジュール・アイテムを記述する。ＳＣＨＥＤ要素１１１５は、図１３を参照しつつ３．２．１０節で詳しく説明される。
【０１３７】
３．２．９  ＳＴＡＴＥ要素
ＳＴＡＴＥ要素１１０９は、特定のカメラ１１２〜１１５の現在状態を示すためにＣＡＭＥＲＡ要素４０９内に含めることができる。図１２に示されているように、ＳＴＡＴＥ要素１１０９は、多数の他の要素１２０１〜１２０９を含む。
【０１３８】
ＳＴＡＴＵＳ要素１２０１は、関連付けられているカメラ・サーバ１０９〜１１１の現在ステータスを示し、以下の値のうちの１つを取りうる。
【０１３９】
（ｉ）ｕｎｋｎｏｗｎ、
（ｉｉ）ｄｉｓｃｏｎｎｅｃｔｅｄ、
（ｉｉｉ）ｉｄｌｅ、
（ｉｖ）ｓｔａｒｔｉｎｇ、
（ｖ）ｍｏｎｉｔｏｒｉｎｇ、
（ｖｉ）ｒｅｃｏｒｄｉｎｇ、
（ｖｉｉ）ｅｒｒｏｒ。
【０１４０】
ＭＯＤＥ  １２０３要素は、現在のスケジュール型を記述する、整数値を含む。以下のスケジュール型を、以下の表３にまとめた。
【０１４１】
【表３】
2007505523.tif 000005
【０１４２】
Ｑ要素１２０５は、特定のカメラ・サーバ１０９〜１１１がサンプル・データ・サンプルを受け取ることを現在予定されている品質を指定する。Ｑ要素１２０５の有効な値は、以下の表４で説明される。
【０１４３】
【表４】
2007505523.tif 000006
【０１４４】
Ｒ要素１２０７は、カメラ・サーバ１０９〜１１１がサンプル・データ・サンプルを受け取ることを現在予定されている解像度を指定する。Ｒ要素１２７７の有効な値は、以下の表５で説明される。
【０１４５】
【表５】
2007505523.tif 000007
【０１４６】
ＲＡＴＥ要素１２０９は、記録エンジン２０１が現在記録している間のフレーム速度を示す。
【０１４７】
３．２．１０  ＳＣＨＥＤ要素
ＳＣＨＥＤ要素１１１５は、曜日内の単一スケジュール・アイテムを記述する。図１３に示されているように、ＳＣＨＥＤ要素１１１５は、多数の他の要素１３０１〜１３０７を含む。ｗｅｅｋｄａｙｓ属性１３０９は、特定のスケジュール・アイテムが有効である曜日の集合を示す。ｗｅｅｋｄａｙｓ属性１３０９は、記録エンジン２０１により使用されない。ｗｅｅｋｄａｙｓ属性１３０９は、ビューア２２００が複数の曜日に出現する同一スケジュール・アイテムを容易にグループ化できるように、ストレージ・サーバ構成ファイル２０５に格納され、ビューア２２００に送信される。ｓｔａｒｔ  １３１１およびｓｔｏｐ  １３１３属性は、スケジュール・アイテムが有効である期間を示し、それぞれの属性１３１１および１３１３は形式「ｈｈｍｍ」を取る。
【０１４８】
ＢＡＳＥ要素１３０１は、特定のスケジュール期間に通常の記録設定を記述するが、３．２．１１節でさらに詳しく説明する。
【０１４９】
ＭＯＴＩＯＮ要素１３０３は、スケジュール要素１１１５により表されるスケジュールでの運動検出設定を記述する。特定のスケジュールで運動検出が有効化されない場合、ＭＯＴＩＯＮ要素１３０３を省略できる。ＭＯＴＩＯＮ要素１３０３は、３．２．１２節でさらに詳しく説明される。
【０１５０】
それぞれのＳＥＮＳＯＲ要素１３０５は、特定のカメラ・サーバ１０９〜１１１に接続された特定のセンサ入力に対するセンサ設定を記述する。センサ・ベースの記録（つまり、センサによりトリガされる記録）が特定のスケジュールで有効化されない場合、ＳＥＮＳＯＲ要素１３０５は、省略可能である。ＳＥＮＳＯＲ要素１３０５は、３．２．１３節でさらに詳しく説明される。
【０１５１】
ＯＰＥＲＡＴＯＲ要素１３０７は、トリガ・メッセージが記録エンジン２０１により受信されたときにアクティブ化される記録設定を記述する。これは、通常、ユーザが、ビューア２２００のビューイング画面７６００（図７６を参照）から手動記録を開始したときに発生し、これにより、ビューア２２００は、Ｗｅｂサーバ２１３を介してＲＥ＿ｔｒｉｇｇｅｒコマンド（以下で詳述する）を記録エンジン２０１に送信することになる。記録設定は、さらに、外部ソフトウェア（アラーム制御システムなど）がＷｅｂサーバ２１３を介してＲＥ＿ｔｒｉｇｇｅｒコマンドを記録エンジン２０１に送信するときにもアクティブ化される。ＯＰＥＲＡＴＯＲ要素１３０７は、ＥＶＥＮＴ要素と本質的に同じ型であるが、これについては、３．２．１４節で詳しく説明する。
【０１５２】
３．２．１１  ＢＡＳＥ要素
図１４は、ＢＡＳＥ要素１３０１を示す。ＢＡＳＥ要素１３０１は、特定のスケジュール期間の通常記録設定を記述する。図１４に示されているように、ＢＡＳＥ要素は、多数の他の要素１４０１〜１４０８を含む。
【０１５３】
ＲＡＴＥ要素１４０１は、最大３０．０フレーム／秒で記録されるフレーム（つまり、サンプル）速度を示す。記録が実行されない場合、０．０の速度が指定される。
【０１５４】
Ｑ要素１４０２は、ＢＡＳＥ要素１３０１に関連付けられている特定のカメラ・サーバ１０９〜１１１から取り出されるサンプル・データの画質を示す。
【０１５５】
Ｒ要素１４０３は、特定のカメラ・サーバ１０９〜１１１から取り出されるビデオ・サンプル・データの解像度を示す。
【０１５６】
ＰＲＥＳＥＴ要素１４０４は、特定のカメラ・サーバ１０９〜１１１のカメラ１１２〜１１５が記録時に面していなければならないプリセット位置の識別子を示す。有効なプリセット識別子は、１から８までの範囲の数である。特別な値である−１を指定することで、カメラ１１２〜１１５の位置を制御すべきでないことを示すことができる。
【０１５７】
ＰＴＺ要素１４０６は、特定のカメラ・サーバ１０９〜１１１に関連付けられたカメラ１１２〜１１５のそれぞれパン、傾斜、およびズーム設定を示す、「／」文字で区切られた、３つの浮動小数点値を含む。ＰＴＺ要素１４０６は、特定のカメラ１１２〜１１５について、プリセットのどれにも対応しない、カスタム・ビューイング位置を指定するために使用される。ＰＲＥＳＥＴ  １４０４およびＰＴＺ要素１４０６は、相互排他的である。
【０１５８】
ＬＩＧＨＴ要素１４０８は、特定のカメラ１１２〜１１５に関連付けられているバックライト補正をオンにするかどうかを指示する。ＬＩＧＨＴ要素１４０８に対する非ゼロ値は、バックライト補正はオンにされることを示すが、値０は、バックライト補正がオフであることを示す。
【０１５９】
３．２．１２  ＭＯＴＩＯＮ要素
ＭＯＴＩＯＮ要素１３０３は、ＳＣＨＥＤ要素１１１５により定義された所定のスケジュール期間に使用される運動検出パラメータを示す。図１５に示されているように、ＭＯＴＩＯＮ要素１３０３は、多数の他の要素１５０１〜１５０６を含む。ｅｎａｂｌｅｄ属性１５０７は、運動検出が有効化されるかどうかを制御する。ｅｎａｂｌｅｄ属性１５０７の値が０の場合、運動検出は無効化される。ｅｎａｂｌｅｄ属性１５０７の値が非０の場合、運動検出はアクティブ化される。ｅｎｇｉｎｅ属性１５０９は、運動検出が実行されるかどうかを制御する。ｅｎｇｉｎｅ属性１５０９は、以下のように２つの有効な値のうちの１つを取りうる。
【０１６０】
（ｉ）ｒｅ−運動検出は、記録エンジン２０１により実行されなければならないことを示す。
【０１６１】
（ｉｉ）ｃａｍｓｖｒ−運動検出が特定のカメラ・サーバ１０９〜１１１により実行されなければならないことを示す（注意：これは、ＶＢ１５０カメラ・サーバ型などのある種のカメラ・サーバのみに適用可能である）。
【０１６２】
ＲＥＧＩＯＮ要素１５０１は、運動解析が実行される画像の部分を示す。つまり、運動解析が運動を検出するために実行される場合に、特定のカメラ１１２〜１１５により取り込まれるビデオ・サンプル・データにより表される、ビデオ画像内の領域である。運動解析は、記録エンジン２０１内の画像解析エンジン（図に示されていない）により実行される。ＲＥＧＩＯＮ要素１５０１の値は、「（（ｘ１，ｙ１）−（ｘ２，ｙ２））」の形式であるが、ただし、ｘ１およびｘ２は、０から８０までの範囲、ｙ１およびｙ２は、０から６０までの範囲である。ｘ１、ｘ２、ｙ１、およびｙ２限界値は、６４０×４８０画像内の８×８ブロックを表す。しかし、これらの限界値は、小さな解像度が使用される場合に画像解析エンジンにより適宜スケーリングすることができる。
【０１６３】
ＲＡＴＥ要素１５０２は、最大３０．０フレーム／秒までの、フレームが画像解析エンジンにより解析される速度を示す。
【０１６４】
ＢＬＯＣＫ要素１５０３は、画像解析エンジンにより使用されるブロック許容誤差設定（つまり、感度とも呼ばれる）を制御し、０から２５５までの範囲の値を取りうる。
【０１６５】
ＡＲＥＡ要素１５０４は、解析される領域により覆われている総面積（つまり、物理面積）の割合として表される、画像解析エンジンにより使用される面積許容誤差設定を制御する。ＡＲＥＡ要素１５０４は、０．０％から１００．０％までの範囲の値を取りうる。
【０１６６】
ＴＩＭＥ要素１５０５は、画像解析エンジンにより使用される時間許容誤差設定を制御する。ＴＩＭＥ要素１５０５は、０．０秒から５．０秒までの範囲の値を取りうる。
【０１６７】
ＥＶＥＮＴ要素１５０６は、運動イベントが発生したときに記録エンジン２０１を制御する。ＥＶＥＮＴ要素１５０６は、３．２．１４節で詳しく説明される。
【０１６８】
３．２．１３  ＳＥＮＳＯＲ要素
図１６は、ＳＥＮＳＯＲ要素１３０５を示す。ＳＥＮＳＯＲ要素１３０５は、親ＣＡＭＥＲＡ要素４０９により記述された特定のカメラ・サーバ１０９〜１１１に関連付けられた特定のセンサにより使用される設定を示すために使用することができる。図１６に示されているように、ｉｄ属性１６０１は、特定のカメラ・サーバ１０９〜１１１上の特定のセンサに対応する識別子を示す。ＶＢ１０１およびＶＢ１５０型カメラ・サーバでは、ＳＥＮＳＯＲ要素１３０５は、値０または１に設定することができる。ＶＢ−Ｃ１０型カメラ・サーバでは、ＳＥＮＳＯＲ要素１３０５は０にすることができる。ｅｎａｂｌｅｄ属性１６０３は、関連付けられたセンサによるセンサ・ベースの記録が有効化されるかどうかを示す。
【０１６９】
それぞれのＮＡＭＥ要素１６０５は、特定のセンサの名前を示す。２つまでのＮＡＭＥ要素１６０５がありうる。ＮＡＭＥ要素１６０５は、ｌａｎｇｕａｇｅ属性により指定される、言語で区別される。有効な言語識別子は、「Ｅｎｇｌｉｓｈ」および「Ｊａｐａｎｅｓｅ」である。単一のＳＥＮＳＯＲ要素１３０５内の２つのＮＡＭＥ要素１６０５は、同じ言語識別子を持たなければならない。
【０１７０】
ＥＶＥＮＴ要素１６０７は、センサ・イベントが発生し、ＥＶＥＮＴ要素１５０６と同じである場合に記録エンジン２０１を制御するが、これについては、３．２．１４節で詳しく説明する。
【０１７１】
３．２．１４  ＥＶＥＮＴ要素
図１７は、ＥＶＥＮＴ要素１５０６を示す。上述のように、ＥＶＥＮＴ要素１５０６は、特定のイベントが発生したときに記録エンジン２０１を制御する。図１７に示されているように、ＥＶＥＮＴ要素１５０６は、多数の他の要素１７０１〜１７０７を含む。ｔｒｉｇｇｅｒ属性１７０９は、非ゼロの値により、関連付けられているイベントがトリガされることを示す。つまり、対応するＥＶＥＮＴ要素の内側の設定が、特定の時間について適用されるということである。
【０１７２】
ＰＲＩＯＲＩＴＹ要素１７０１は、イベントの優先度を制御する。イベントがトリガされると、設定は、トリガされたイベントが関連付けられているカメラ１１２〜１１５に対し現在トリガされているすべてのイベントのうちの最高優先度のイベントである場合のみ適用される。ＰＲＩＯＲＩＴＹ要素１７０１の値は、１（つまり、最高優先度）から５（つまり、最低優先度）までの範囲とすることができる。
【０１７３】
ＲＡＴＥ要素１７０２は、最大３０．０フレーム／秒までの、関連付けられたイベントがトリガされている間にフレーム（つまり、サンプル）が記録される速度を制御する。
【０１７４】
ＰＲＥ要素１７０３は、事前イベント記録持続時間を指定する（つまり、そのイベントがトリガされるのに先だって記録されるサンプル・データの秒数）。
【０１７５】
ＰＯＳＴ要素１７０４は、事後イベント記録持続時間を指定する（つまり、ＥＶＥＮＴ要素１７０９内の設定が適用されるイベントがもはやトリガされなくなった後の秒数）。
【０１７６】
ＰＲＥＳＥＴ要素１７０５は、イベントがトリガされた場合に関連付けられているカメラ・サーバ１０９〜１１１の特定のカメラ１１２〜１１５が移動される先のプリセット位置を指定する。有効なＰＲＥＳＥＴ識別子は、１から８までの範囲の数である。特別な値である−１を指定することで、関連付けられたカメラ１１２〜１１５の位置を制御すべきでないことを示すことができる。
【０１７７】
ＰＴＺ要素１７０６は、特定のカメラ１１２〜１１５のそれぞれパン、傾斜、およびズーム設定を示す、「／」文字で区切られた、３つの浮動小数点値を含む。ＰＴＺ要素１７０６は、プリセットのどれにも対応しない、カスタム・カメラ位置を指定するために使用することができる。ＰＲＥＳＥＴ  １７０５およびＰＴＺ  １７０６要素は、相互排他的である。
【０１７８】
ＬＩＧＨＴ要素１７０７は、イベントがトリガされている間に特定のカメラ１１２〜１１５に関連付けられているバックライト補正をオンにするかどうかを指示する。ＬＩＧＨＴ要素１７０７に対する非ゼロ値は、バックライト補正はオンにされることを示すが、値０は、バックライト補正がオフであることを示す。
【０１７９】
３．３  ストレージ・サーバ・データ
３．３．１  ストレージ・サーバ構成ファイル
ストレージ・サーバ構成ファイル２０５は、型「ｆｉｌｅ」のストレージ・サーバ構成ファイル（ＳＳＣＯ）を含むデータ・ファイルである。ストレージ・サーバ構成ファイル２０５は、個々のストレージ・サーバ（例えば、ストレージ・サーバ２３００Ａ、２３００Ｂ、２３００Ｃ、および２３００Ｄのうちの１つ）を稼働させるために必要な情報を含む。ストレージ・サーバ構成ファイル２０５は、記録エンジン２０１が実行を開始すると記録エンジン２０１により読み込まれる。ストレージ・サーバ構成ファイル２０５は、記録エンジン２０１の構成が管理者により変更される毎に書き換えられる。
【０１８０】
ストレージ・サーバ構成ツール２１１は、ストレージ・サーバ構成ファイル２０５を書き換えるために使用することもでき、構成ファイル２０５が変更される毎にプロセス間通信（ＩＰＣ）メッセージを記録エンジン２０１に送信し、ストレージ・サーバ２３００の一般設定を再び決定するように記録エンジン２０１に指令する。
【０１８１】
３．３．２  ストレージ・サーバのユーザ認証
ストレージ・サーバ・ユーザ・ファイルは、Ｗｅｂインターフェース２１３を介して記録エンジン２０１にアクセスできるユーザを定義し、また、ストレージ・サーバ構成ツール２１１を使用して修正することができるが、これについては以下で詳しく説明する。ストレージ・サーバ・ユーザ・ファイルは、一連のエントリを１行に１つずつ並べたテキスト・ファイルである。それぞれのエントリは、ユーザ名（ユーザを識別する）、レルム（つまり、ユーザが有効であるコンテクストを識別する文字列）、およびダイジェストからなる。使用されるレルムは、システム１００に対し構成された値である（例えば、「ＣＯＭＰＡＮＹＮＡＭＥ」）。ダイジェストは、区切り文字として「：」（コロン）を使用してユーザ名、レルム、およびパスワードを連結し、その後、ＭＤ５アルゴリズムをこのデータに適用してハッシュを生成することにより生成される。
【０１８２】
ストレージ・サーバ・グループ・ファイルを使用して、ストレージ・サーバ・ユーザ・ファイルにリストされているどのユーザが管理者特権を有するかを定義する。ストレージ・サーバ・グループ・ファイルは、「ａｄｍｉｎ」という文字列から始まり、空白で区切られた、管理者特権を持つそれぞれのユーザのユーザ名が続く単一行からなる。ストレージ・サーバ・グループ・ファイルは、さらに、ストレージ・サーバ構成ツール（後述）により生成され、修正されもする。
【０１８３】
３．３．３  ストレージ・サーバ・データ・ファイル構造
記録エンジン２０１により格納されるビデオおよびイベント・データは、一連のファイルに分配される。カメラ１１２〜１１５から受信されたすべてのビデオ・データは、ビデオ・ファイルに格納される。イベント・データは、カメラ・サーバ１０９〜１１１、ビューア２２００、および内部ストレージ・サーバ２３００イベントを含む様々なソースから収集することができる。イベント・データは、イベント・レコードの形で別のイベント・ファイルに格納される。イベント・データは、さらに、受信されたビデオ・フレームとともにビデオ・ファイル内に格納されている、テキスト・サンプル内に挿入することもできる。図９３は、データが記録エンジンを通ってデータのソースからファイルへ流れる道筋を示している。
【０１８４】
３．３．４  ストレージ・サーバ・ビデオ・ファイル構造
ビデオ監視および記録システムでは、標準またはデ・ファクト・スタンダードの形式を使用してビデオをファイルに記録しておくと、ユーザがストレージ・サーバ２３００からビデオを抽出し、サードパーティ製プログラム（通常使用されるメディア・プレーヤーなど）を使用して再生または処理するのに便利であり、好都合である。また、状況によっては、異なる持続時間に関連付けられたさらに小さなチャンクでデータを保持すると都合がよい場合もある。こうした状況では、小さなチャンクを使用すると、ビデオ・サンプル・データの削除をきめ細かく簡単に制御することができ、またサードパーティ製ツールで格納されているデータに容易にアクセスすることができる。
【０１８５】
ストレージ・サーバ２３００は、ストレージ・デバイス２２０９（内蔵、外付け、およびネットワーク・アクセス可能なドライブを含む）内に異なるビデオ・ファイルおよびイベント・ファイル群を保持する。本明細書ではビデオ・ファイルと総称される、メディア・ファイル１８００およびインデックス・ファイル１８０５、およびイベント・ファイルからなる、特定の持続時間に対するカメラ１１２〜１１５のそれぞれに関連付けられたファイル群がある。
【０１８６】
図１８に示されているように、ビデオ・ファイルは、第１のファイル１８００および第２のファイル１８０５を含む。メディア・ファイルと呼ばれる、第１のファイル１８００は、カメラ１１２〜１１５により取り込まれるビデオ・サンプル・データを格納するために使用される。このようなメディア・ファイル１８００は、ビデオ・フレームを表すサンプルおよびタイム・スタンプおよびイベント通知を表すテキスト・サンプルとしてビデオ・サンプル・データを格納することができる。
【０１８７】
ビデオ・ファイルのペアの第２のファイル１８０５は、インデックス・ファイルと呼ばれる。インデックス・ファイル１８０５は、メディア・ファイル１８００内のどこでそれぞれのサンプルを見つけるか、およびそれぞれのサンプルがいつメディア・プレーヤーにより再生されるか、またはアクセス・エンジン２０３により処理されるかに関してメディア・プレーヤー・アプリケーション（例えば、ＱｕｉｃｋＴｉｍｅ（登録商標））またはアクセス・エンジン２０３に指示する情報を格納する。
【０１８８】
ファイル１８００および１８０５の形式については、３．３．４．２節で詳しく説明する。
【０１８９】
メディア・サンプルおよびインデックス情報（タイミングおよび解像度など）が別のファイルに入っている実装が本明細書で説明されているが、他の実装では、メディア・サンプルおよびインデックス情報は、共通ファイル内に構成することができる。
【０１９０】
３．３．４．１  ファイルのロケーションと命名
カメラ・サーバ１０９〜１１１のそれぞれに対応するデータ・ファイル２０９は、そのカメラ・サーバ１０９〜１１１に対しファイルを格納するために選択されたドライブのサブディレクトリに格納される。例えば、データ・ファイル２０９は、ディレクトリ「ｄｒｉｖｅ：＼Ｗｅｂｖｉｅｗ−ＮＶＲ＼ｖｉｄｅｏｆｉｌｅｓ」に格納することができるが、ただし、ｄｒｉｖｅは、データ・ファイル２０９を格納するために選択されたドライブの文字で置き換えられる。所定の時刻に記録しているカメラ・サーバ１０９〜１１１はそれぞれ、特定のカメラ・サーバ１０９〜１１１に関連付けられているスタンバイ・ファイルの１つのペア（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）を持つ。スタンバイ・ファイルは、以下のテンプレート（１）に従って名前を付けられる。
【０１９１】
Standby(0|1)_cameraid_creationdate_creationtime_count.avi、および
Standby(0|1)_cameraid_creationdate_creationtime_count.mov            （１）
Ｓｔａｎｄｂｙという単語の直後の文字は、０または１のいずれかに設定され、どのスタンバイ・ファイル（つまり、メディア・ファイル１８００および関連付けられているインデックス・ファイル１８０５）が表されているかを示す。後述のように、カメラ・サーバ１０９〜１１１に従って２つのスタンバイ・ファイル（つまり、２つのメディア・ファイル１８００と２つの関連付けられたインデックス・ファイル１８０５）がありうる。
【０１９２】
テンプレート（１）のｃａｍｅｒａｉｄセクションは、特定のカメラ・サーバ１０９〜１１１が最初にシステム１００に追加されたときに記録エンジン２０１により特定のカメラ・サーバ１０９〜１１１に与えられた特定のカメラ・サーバ１０９〜１１１の一意的な識別子を表す１６文字からなるデータ文字列である。ｃａｍｅｒａｉｄセクションは、１６進数形式で表され、小文字は値Ａ〜Ｆを表す。
【０１９３】
テンプレート（１）のｃｒｅａｔｉｏｎｄａｔｅセクションは、関連付けられたスタンバイ・ファイルが作成された、協定世界時（ＵＴＣ）による日付を表す。ｃｒｅａｔｉｏｎｄａｔｅセクションの形式は、ｙｙｙｙｍｍｄｄである。
【０１９４】
テンプレート（１）のｃｒｅａｔｉｏｎｔｉｍｅセクションは、スタンバイ・ファイルが作成された時刻を、協定世界時で表す。ｃｒｅａｔｉｏｎｔｉｍｅセクションの形式は、ｈｈｍｍｓｓである。
【０１９５】
テンプレート（１）のｃｏｕｎｔセクションは、記録エンジン２０１による現在の記録セッションの開始を表すスタンバイ・ファイルからカウントする、関連付けられたスタンバイ・ファイルの連番を表す。システム１００内のそれぞれのカメラ・サーバ１０９〜１１１について別々のカウンタを保持することができる。同じカメラ識別子、作成日時（つまり、秒まで）を持つ複数のスタンバイ・ファイルが作成される場合、ｃｏｕｎｔセクションの値を使用して、そのようなファイルを区別することができる。
【０１９６】
記録エンジン２０１は、任意の時点において、カメラ・サーバ１０９〜１１１毎に１つの非アクティブ・スタンバイ・ファイル（つまり、１つの非アクティブ・メディア・ファイル１８００および関連付けられたインデックス・ファイル８０５）を保持しようと試みる。記録エンジン２０１は、１つの非アクティブ・スタンバイ・ファイルを保持し、ファイル・スワップオーバーが生じたときにすぐに記録できるファイルを用意することにより、スタンバイ・ファイル群を作成したときにオーバーヘッドが生じてもそれらのファイルへのサンプル・データの書き込みが遅れることのないようにする。したがって、スタンバイ・ファイルの対応するメディア・ファイル１８００にサンプルを書き込ませることによりスタンバイ・ファイルがアクティブ状態に移行されたときに、新しい非アクティブ・スタンバイ・ファイルが並行動作で作成される。
【０１９７】
スタンバイ・ファイル・ペア（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）は、以下のような一組の基準のうちの１つが満たされると完了できる。
【０１９８】
（ｉ）スケジュール変更により、記録が停止する。
【０１９９】
（ｉｉ）メディア・ファイル１８００のサイズがユーザ設定限界を超える。
【０２００】
（ｉｉｉ）メディア・ファイル１８００のサイズが１ギガバイトのハード限界を超える。
【０２０１】
（ｉｖ）スタンバイ・メディア・ファイル１８００内に表されているビデオ・サンプル日付の持続時間が、ユーザ設定限界を超える。
【０２０２】
（ｖ）スタンバイ・メディア・ファイル１８００内に表されているビデオ・サンプル・データの持続時間が、２４時間のハード限界を超える。
【０２０３】
（ｖｉ）関連付けられているインデックス・ファイル１８０５が、最大容量まで詰められ、これ以上サンプルのインデックスを作成することができない。
【０２０４】
スタンバイ・ファイル・ペアが完成すると、スタンバイ・ファイル・ペアは閉じられ、以下のテンプレート（２）に従って完了したファイル・ペアとしてリネームされる。
【０２０５】
MEDIA_cameraid_startdate_starttime_enddate_endtime_count.avi、および
INDEX_cameraid_startdate_starttime_enddate_endtime_count.mov          （２）
前のように、テンプレート（２）のｃａｍｅｒａｉｄセクションは、特定のカメラ・サーバ１０９〜１１１が最初にシステム１００に追加されたときに記録エンジン２０１により特定のカメラ・サーバ１０９〜１１１に与えられた特定のカメラ・サーバ１０９〜１１１の一意的な識別子を表す１６文字からなる文字列である。ｃａｍｅｒａｉｄセクションの値は、１６進数形式で表され、小文字は値Ａ〜Ｆを表す。
【０２０６】
上記のテンプレートのｓｔａｒｔｄａｔｅセクションは、スタンバイ・ファイル・ペアの第１のサンプルが記録されたときの日付を、協定世界時形式で表す。ｓｔａｒｔｄａｔｅセクションの形式は、ｙｙｙｙｍｍｄｄである。
【０２０７】
ｓｔａｒｔｔｉｍｅセクションは、ファイルの第１のサンプルが記録された時刻を、協定世界時で表す。ｓｔａｒｔｔｉｍｅセクションの形式は、ｈｈｍｍｓｓである。
【０２０８】
ｓｔａｒｄｄａｔｅおよびｓｔａｒｔｔｉｍｅは、必ずしも、スタンバイ・ファイル内で使用されるｃｒｅａｔｉｏｎｄａｔｅおよびｃｒｅａｔｉｏｎｔｉｍｅと同じ値を表すわけではない。
【０２０９】
ｅｎｄｄａｔｅセクションは、スタンバイ・ファイル・ペアが完成した日付を、協定世界時形式で表す。ｅｎｄｄａｔｅセクションの形式は、ｙｙｙｙｍｍｄｄである。
【０２１０】
ｅｎｄｔｉｍｅセクションは、スタンバイ・ファイル・ペアが完成した時刻を、協定世界時形式で表す。ｅｎｄｔｉｍｅセクションの形式は、ｈｈｍｍｓｓである。
【０２１１】
上記ファイルの命名形式により、アクセス・エンジン２０３は、特定の時点を表すメディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５が存在するかどうかを決定することができる。この命名形式を使用することにより、さらに、管理者は、記録エンジン２０１により記録された特定のファイルによりカバーされる時間範囲を容易に決定することができ、それにより、Ｗｉｎｄｏｗｓ（登録商標）Ｅｘｐｌｏｒｅｒなどのサードパーティ製ファイル管理ソフトウェアを使用してファイルのコピーおよび移動行うことができる。この命名形式では、さらに、サードパーティ製ソフトウェア・アプリケーションが、ファイルの任意の形式の中央インデックスをチェックしなくても（例えば、アーカイブ・ストレージへの自動化された定期的コピーのため）ファイルを自動的に取り扱う、または処理することが可能になる。この命名形式を使用すると、さらに、中央インデックスと実際のファイルとの間の、記録エンジン２０１により中央ファイル・インデックスが保持されていた場合に生じるであろう不一致の可能性を回避できる。
【０２１２】
３．３．４．２  ファイル形式
後述のように、インデックス・ファイル１８０５は、１つまたは複数のトラック１８１３および１８１５を含む。それぞれのトラックは、関連付けられたメディア・ファイル２００への参照（例えば、参照１８０７）を含む。そのようなものとして、他の実装では、複数のトラック２１３を含むインデックス・ファイル２０５は、複数のメディア・ファイル（例えば、メディア・ファイル１８００）をポイントすることができる。例えば、一方のメディア・ファイル（例えば、メディア・ファイル１８００）がすべてのビデオ・サンプルを含み、他方のメディア・ファイル（図に示されていない）がそれらのビデオ・サンプルに関連付けられたすべてのイベント記述を含む場合には、関連付けられたインデックス・ファイル（例えば、ファイル１８０５）は、両方のメディア・ファイル１８００をポイントすることができる。
【０２１３】
一実装では、１つのメディア・ファイル（例えば、ファイル１８００）は、複数のインデックス・ファイル１８０５により参照することができる。例えば、１つのメディア・ファイル１８００が、カメラ・サーバ１０９〜１１１のうちの複数から受信されたサンプル（つまり、サンプル・データ）を格納する場合には、そのようなメディア・ファイル１８００は、複数のインデックス・ファイル１８０５により参照することができる。
【０２１４】
３．３．４．２．１  インデックス・ファイル
インデックス・ファイル１８０５は、ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式に従って構成される。ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式は、アトムと呼ばれる特別なメモリ構造を使用してデータを格納する。アトムは、ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式により指定されたデータ・コンテナである。それぞれのアトムは、関連付けられているアトムに格納されるデータの種類を指定する関連付けられた型コードを持つ。上述のように、ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式、特にＱｕｉｃｋＴｉｍｅ（登録商標）アトムの詳細な説明は、アップル・コンピュータ社が公開している「ＱｕｉｃｋＴｉｍｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ」というタイトルの出版物にある。
【０２１５】
インデックス・ファイル１８０５は、ＱｕｉｃｋＴｉｍｅ（登録商標）ファイルに対し指定されているアトムのすべてを含む。トラック・アトムと呼ばれるアトムは、それぞれのトラック（例えば、トラック１８１３および１８１５）を格納する。特定のトラック・アトムに関連付けられたトラックは、そのトラックによって参照されるメディア・ファイル１８００へのポインタ（例えば、メディア・ファイル参照１８１３）を含む。
【０２１６】
図１８に示されているように、インデックス・ファイル１８０５のトラック１８１３および１８１５のそれぞれは、さらに、サンプル−オフセット・テーブル１８０９および１８１７も含む。トラック１８１３および１８１５は、それぞれのサンプル（例えば、サンプル１８０１）へのオフセットを関連付けられたメディア・ファイル１８００内に格納する。インデックス・ファイル１８０５のトラック１８１３および１８１５のそれぞれは、さらに、サンプル・サイズ・テーブル１８１１および１８１９も含む。サンプル・サイズ・テーブル１８１１および１８１８は、関連付けられたメディア・ファイル１８００に含まれるサンプルのサイズを格納する。
【０２１７】
サンプル・オフセット・テーブル１８０９および１８１７、およびサンプル・サイズ・テーブル１８１１および１８１９は、ＱｕｉｃｋＴｉｍｅ（登録商標）メディア・プレーヤーにより読み込まれるように構成される。その結果、完成インデックス・ファイル１８０５は、インデックス・ファイル１８０５のトラック１８１３内に含まれるメディア・ファイル参照（例えば、参照１８０７）を使用して関連付けられているメディア・ファイル１８００を特定する、ＱｕｉｃｋＴｉｍｅ（登録商標）メディア・プレーヤーにより比較ことができる。さらに、完成インデックス・ファイル１８０５の内容が定期的にハード・ディスク・ドライブ２３１０にフラッシングされる限り、ファイル１８０５の一貫性を保証する形で、ＱｕｉｃｋＴｉｍｅ（登録商標）メディア・プレーヤーは、最後の完全フラッシュの時点まで進行中の記録を表示することができる。システム障害がある場合、ファイル１８０５がフラッシングされた最後の時刻以降にインデックス・ファイル１８０５に追加されたデータは、インデックス・ファイル１８０５から失われる。
【０２１８】
３．３．４．２．２  メディア・ファイル
メディア・ファイル１８００の形式は順応性がある。それぞれの個別サンプル（例えば、１８０１）は、連続するバイトの１つの集合として格納される。以下の節では、説明されている配列によりサポートされる、メディア・ファイル１８００の好ましい形式を説明する。しかし、当業者であれば、メディア・ファイル１８００に対し任意の好適なファイル形式を使用できることは理解するであろう。
【０２１９】
（ｉ）ＡＶＩ（登録商標）メディア・データ形式
メディア・ファイル１８００は、Ｍｉｃｒｏｓｏｆｔ  ＡＶＩ（登録商標）ファイル形式に従って構成される。ＡＶＩ（登録商標）ファイル形式は、ＡＶＩ（登録商標）メディア・プレーヤー・アプリケーションまたはＡＶＩ（登録商標）ファイル形式に従って構成されたファイルを読み込むことができる任意のメディア・プレーヤー・アプリケーションで使用されるファイル仕様である。このようなメディア・プレーヤー・アプリケーションは、ビデオ／オーディオ・シーケンスを取り込み、編集し、再生するために使用することができる。一般に、ＡＶＩ（登録商標）ファイル形式に従って構成されたファイルは、異なる型のデータのサンプルを含む複数のデータ・ストリーム（つまり、サンプル）を含む。ほとんどのＡＶＩ（登録商標）シーケンスでは、オーディオとビデオの両方のストリームを使用する。そのようなＡＶＩ（登録商標）シーケンスの単純な変更形態では、ビデオ・データを使用し、オーディオ・ストリームを必要としない。メディア・ファイル１８００は、ＡＶＩ（登録商標）ファイル形式を読み込むことができるメディア・プレーヤー・ソフトウェア・アプリケーションにより再生可能である。
【０２２０】
ＡＶＩ（登録商標）ファイル形式は、カメラ・サーバ１０９〜１１１により取り込まれたサンプル・データの処理に関していくつかの制限を有する。第１に、それぞれのＡＶＩ（登録商標）サンプルは、一定のフレーム速度で再生されることである。したがって、ネットワーク遅延によるフレーム速度の変化またはサンプルの遅れにより、再生速度が時間の経過を正確に表さなくなる可能性がある。第２に、Ｍｏｔｉｏｎ−ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）規格に従って構成された画像ファイルについて、画像解像度を表す値は、画像ファイルのそれぞれのＪＰＥＧフラグメント内に格納される。しかし、Ｗｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｐｌａｙｅｒなどのメディア・プレーヤーは、画像をスケーリングできないため、再生結果は次善の最適化となる。
【０２２１】
メディア・ファイル１８００が最初に作成されると、ヘッダの集合が生成される。ＡＶＩ（登録商標）ヘッダは、ファイル１８００に関する一般的な詳細を格納するために生成される。さらに、与えられたメディア・データ・ファイル１８００をポイントする関連付けられたインデックス・ファイル１８０５内でそれぞれのトラックを表すために個々のストリーム・ヘッダが生成される。空のサンプル・リスト構造も、メディア・ファイル１８００のそれぞれの個別サンプル（例えば、サンプル１８０１）を格納するために作成される。
【０２２２】
メディア・ファイル１８００が閉じられると、ヘッダは、メディア・ファイル１８００内に格納されているサンプルの個数を反映するように更新される。さらに、関連付けられたＡＶＩ（登録商標）インデックス（図に示されていない）がファイル１８００の末尾に付加される。ＡＶＩ（登録商標）インデックスは、ＡＶＩ（登録商標）ファイル１８０５のサンプル・データを再生するためにＷｉｎｄｏｗｓ（登録商標）  Ｍｅｄｉａ  Ｐｌａｙｅｒにより必要とされる標準構造である。
【０２２３】
サンプル（例えば、サンプル１８０１）をアクティブ（つまり、開いている）メディア・ファイル１８００に挿入する場合、サンプルは、ファイル１８００の新しいサンプル・チャンク内に格納される。格納されたサンプルは、対応するサンプルがどのデータ・ストリームに属すか、およびサンプルのサイズを示すヘッダを持つ。さらに、これ以降「ＣＮＶＤ」チャンクと呼ばれる、特別なチャンクが、新しく格納されたサンプルの前に挿入される。ＣＮＶＤチャンクは、標準ＡＶＩ（登録商標）メディア・プレーヤーにより無視されるように構成される。ＣＮＶＤチャンクは、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５を回復するために使用できる、追加情報を含む。特に、ＣＮＶＤチャンクは、タイムスタンプ（つまり、ミリ秒）およびＣＮＶＤチャンクの後の新しく格納されたサンプルの解像度を含む情報を含む。
【０２２４】
（ｉｉ）ＡＶＩ（登録商標）ビデオ・ストリーム処理
カメラ・サーバ１０９〜１１１により取り込まれたサンプル・データのそれぞれのビデオ・サンプルは、ＡＶＩ（登録商標）メディア・ファイル１８００内に別のサンプル（つまり、サンプル・チャンク）として挿入される、別のＪＰＥＧファイルとして構成されることが好ましい。
【０２２５】
（ｉｉｉ）ＡＶＩ（登録商標）テキスト・ストリーム処理
上述のように、ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式は、同じ名前のＱｕｉｃｋＴｉｍｅ（登録商標）メディア・プレーヤー・アプリケーションまたはＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式に従って構成されたファイルを読み込むことができる任意のメディア・プレーヤー・アプリケーションで使用されるファイル仕様である。ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式は、可変ビデオ・フレーム速度および解像度をサポートする。ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式の詳細な説明は、アップル・コンピュータ社が公開している「ＱｕｉｃｋＴｉｍｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ」というタイトルの出版物にある。「ＱｕｉｃｋＴｉｍｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ」という刊行物は、Ｗｅｂサイトｈｔｔｐ：／／ｄｅｖｅｌｏｐｅｒ．ａｐｐｌｅ．ｃｏｍ／ｔｅｃｈｐｕｂｓ／ｑｕｉｃｋｔｉｍｅ／ｑｔｄｅｖｄｏｃｓ／ＰＤＦ／ＱＴＦｉｌｅＦｏｒｍａｔ．ｐｄｆ（２００３年１月９日現在）にある。
【０２２６】
ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式では、テキスト文字列は１６ビット長のフィールドとその後に続くテキスト文字列とからなると規定している。しかし、ＡＶＩ（登録商標）ファイル形式では、ＮＵＬＬ終端文字列を規定している。ＱｕｉｃｋＴｉｍｅ（登録商標）およびＡＶＩ（登録商標）の両方のファイル形式でテキスト文字列を正しく再生できるようにするために、同じテキスト文字列の２つのコピーがメディア・ファイル１８００の関連する同じチャンク内に置かれる。テキスト文字列の第１のコピーは、テキスト文字列のＮＵＬＬ終端バージョンである。ＡＶＩ（登録商標）メディア・プレーヤーは、ファイル１８００の関連するサンプルの先頭に第１のコピーを置き、終端文字の後に続くデータを破棄する。テキスト文字列の第２のコピーは、第１のコピーの終端となるＮＵＬＬ文字の直後に置かれる。第２のコピーは、ＱｕｉｃｋＴｉｍｅ（登録商標）ファイル形式に従って構成される。この場合、ＱｕｉｃｋＴｉｍｅ（登録商標）インデックス・ファイル１８０５には、インデックス・ファイル１８０５が通常、対応するサンプルを参照するために使用する、サンプルの先頭のオフセットではなく、文字列の第２のコピーのオフセットが与えられる。
【０２２７】
例えば、図１９は、ＡＶＩ（登録商標）ファイル形式に従って構成されたメディア・ファイル１９００内のテキスト文字列サンプル「Ｄｏｏｒ７Ａ」の配置を示す。図１９に示されているように、テキスト・サンプルのＡＶＩ（登録商標）バージョン１９０１およびＱｕｉｃｋＴｉｍｅ（登録商標）バージョン１９０３は、ファイル１９００内に含まれる。図１９は、データ文字列「Ｄｏｏｒ７Ａ」の対応するインデックス・ファイル（図に示されていない）のサンプル・オフセット１９０５およびサンプル・サイズ１９０８エントリも含む。特に、サンプル・オフセット・エントリ１９０５は、テキスト・サンプルのＱｕｉｃｋＴｉｍｅ（登録商標）バージョン１９０３の先頭をポイントする。さらに、サンプル・サイズ・エントリ１９０８は、ＱｕｉｃｋＴｉｍｅ（登録商標）バージョン１９０３のサイズを与える。
【０２２８】
３．３．５  ストレージ・サーバ・イベント・ファイル構造
それぞれのカメラ・サーバ１０９〜１１１に対応するイベント・ファイルは、ストレージ・デバイス２３０９内に構成され、そのカメラ・サーバ１０９〜１１１についてイベント・ファイルを格納するために選択されたドライブのサブディレクトリに格納される。例えば、イベント・ファイルは、ディレクトリ「ｄｒｉｖｅ：＼Ｗｅｂｖｉｅｗ−ＮＶＲ＼ｅｖｅｎｔｆｉｌｅｓ」に格納することができるが、ただし、ｄｒｉｖｅは、イベント・ファイルを格納するために選択されたドライブの文字で置き換えられる。
【０２２９】
記録エンジン２０１は、それぞれのビデオ・ファイル・ペアに対応するイベント・ファイルを作成する（つまり、同じカメラ１１２〜１１５および同じ持続時間に関係する）。イベント・ファイルとビデオ・ファイル・ペアとのマッチングは、ビデオおよびイベント・データがアーカイブ・ストレージに移動される状況において有用である、というのも、ビデオおよびイベント・データは、両方とも一緒にコピーまたは移動することができ、後で、両方とも一緒に置き換えることができるからである。このようなマッチングは、ユーザがイベントに関する情報にアクセスしようと試みた場合に特定のイベントに関連付けられたビデオ・データが利用可能になり、ユーザが特定のビデオにアクセスしようと試みた場合に特定のビデオに関連付けられたイベント・データが利用可能になることを保証する。
【０２３０】
それぞれのイベント・ファイルは、以下のテンプレートに従って名前を付けることができる。
【０２３１】
EVENT_cameraid_creationdate_creationtime_count.evt                    （３）
テンプレート（３）のｃａｍｅｒａｉｄセクションは、特定のカメラ・サーバ１０９〜１１１が最初にシステム１００に追加されたときに記録エンジン２０１により特定のカメラ１０９〜１１１に与えられた特定のカメラ・サーバ１０９〜１１１の一意的な識別子を表す１６文字からなるデータ文字列である。テンプレート・セクション（３）のｃａｍｅｒａｉｄの値は、１６進数形式で表され、小文字は値Ａ〜Ｆを表す。
【０２３２】
テンプレート（３）のｃｒｅａｔｉｏｎｄａｔｅセクションは、イベント・ファイルが作成された日付を、ＵＴＣで表す。ｃｒｅａｔｉｏｎｄａｔｅの形式は、ｙｙｙｙｍｍｄｄである。
【０２３３】
テンプレート（３）のｃｒｅａｔｉｏｎｔｉｍｅセクションは、イベント・ファイルが作成された時刻を、ＵＴＣで表す。ｃｒｅａｔｉｏｎｔｉｍｅセクションの形式は、ｈｈｍｍｓｓである。
【０２３４】
テンプレート（３）のｃｏｕｎｔセクションは、記録エンジン２０１による現在の記録セッションの開始を表すイベント・ファイルからカウントする、イベント・ファイルに対応する連番を表す。システム１００内のそれぞれのカメラ・サーバ１０９〜１１１について別々のカウンタを保持することができる。同じカメラ識別子、作成日時（つまり、秒まで）を持つ複数のファイルが作成される場合、ｃｏｕｎｔセクションの値を使用して、そのようなファイルを区別することができる。
【０２３５】
これらのイベント・ファイルに加えて、ストレージ・サーバ２３００に関連付けられているが、必ずしも特定のカメラ・サーバ１０９〜１１１に関連付けられていない、イベントを含むシステム・イベント・ファイルがある。これらは、記録エンジン２０１の起動または停止、またはリモート・ユーザがビューア２２００上でシステム１００にログインしてビューア構成およびレイアウト・ファイルを取り出すことを示すイベントを含むが、これについて、以下でさらに詳しく説明する。
【０２３６】
イベント・ファイルは、ＵＴＦ８形式で符号化された、テキスト・ファイルである。イベント・ファイルのそれぞれの行は、単一イベントを記述したイベント・レコードを含み、以下のように、コロンで区切られた複数のフィールドからなる。
【０２３７】
＜datetime＞:＜cameraid＞:＜type＞:＜priority＞:＜description＞                  （４）
イベント・ファイル行（４）のｄａｔｅｔｉｍｅフィールドには、イベントが記録された日時を記述する。ｄａｔｅｔｉｍｅフィールドは、追加ｍｉｌｌｉｓｅｃｏｎｄフィールドが挿入された、ＡＮＳＩ関数ｃｔｉｍｅ（）により生成される標準形式である。このような時刻の例は、Ｔｕｅ  Ａｕｇ  １９  ０５：０５：５３．５８５  ２００３であり、日時は、常に、ＵＴＣ形式で表される。
【０２３８】
ｃａｍｅｒａｉｄフィールドは、イベントに関連付けられたカメラ・サーバ１０９〜１１１の識別子を記述する。カメラ・サーバ１０９〜１１１がイベントに関連付けられていない場合、ｃａｍｅｒａｉｄフィールドはＳＹＳＴＥＭに設定される。
【０２３９】
イベント・ファイル行（４）のｔｙｐｅフィールドは、イベントの型を定義する４文字コードとその後に続く、０個（つまり、イベントが停止していることを示す−ＯＦＦ）または１（つまり、イベントが起動していることを示す−ＯＮ）とを含む。ユーザ・ログオンなどのいくつかのイベントには、ＯＦＦイベントがない。
【０２４０】
以下の表６は、使用可能なすべてのイベント型を定義している。
【０２４１】
【表６】
2007505523.tif 000008
【０２４２】
上のイベント・ファイル行（４）のｐｒｉｏｒｉｔｙフィールドは、１（つまり、最高優先度）から５（つまり、最低優先度）までの範囲の値を含む。
【０２４３】
イベント・ファイル行（４）の最後のフィールドである、ｄｅｓｃｒｉｐｔｉｏｎは、改行文字を使用してフィールドの終わりが配置されるのでオプションで追加コロンを含めることができる。
【０２４４】
３．４  構成管理モジュール
構成管理モジュール３１５は、ストレージ・サーバ構成ファイルの読み込みおよび書き込みを行い、またストレージ・サーバ構成ファイルを修正する場合に他のアプリケーションが記録エンジン２０１に信号を送れるようにするメカニズムを備える。
【０２４５】
図９４は、構成変更監視プロセス９４００を示す流れ図である。プロセス９４００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス９４００は、他のアプリケーションが信号を送ることができる同期オブジェクトを待つ。一実装では、そのような他のアプリケーションは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システム上で動作する。この場合、使用される同期オブジェクトは、名前付きＥｖｅｎｔオブジェクトである。特定の一実装では、オブジェクトは、「Ｒｅｃｏｒｄｉｎｇ  Ｅｎｇｉｎｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｃｈａｎｇｅｄ」という名前を付けることも可能であり、その場合、すべてのユーザがオブジェクトにアクセスできるようにオブジェクトのセキュリティ属性が設定される。
【０２４６】
プロセス９４００は、構成ファイルのＧｅｎｅｒａｌセクションを更新する。カメラ・サーバ１０９〜１１１またはカメラ１１２〜１１５も追加、修正、または削除された場合、それらの変更は無視される。
【０２４７】
プロセス９４００は、プロセッサ２３０５が他のアプリケーションによりアクセスされることができる同期オブジェクトを作成し、同期オブジェクトの名前およびセキュリティ属性を設定する第１のステップ９４０１から始まる。その後、プロセッサ２３０５は、ループに入り、同期オブジェクトが他のアプリケーションによりトリガされるのを待つ。オブジェクトがステップ９４０３でトリガされた後、次のステップ９４０５で、ストレージ・サーバ構成ファイルが読み込まれる。
【０２４８】
次のステップ９４０７で、プロセス９４００は、ストレージ・サーバ構成ファイルのＧｅｎｅｒａｌセクションに対応する内部変数を更新してから、新しい同期イベントを探すステップ９４０３に戻る。
【０２４９】
３．５  ビデオ・ファイル管理モジュール
記録エンジン２０１のビデオ・ファイル管理モジュール３１７は、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成されているドライブ上に格納されたすべてのビデオ・ファイル（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）を管理する。ビデオ・ファイル管理モジュール３１７は、必要に応じて新しいビデオ・ファイルを作成し、ビデオ・サンプル・データをそのビデオ・ファイルに書き込み、既存のビデオ・ファイルのサイズまたは持続時間が設定限界を超えた場合にスタンバイ・ファイルにスワッピングする役割を持つ。
【０２５０】
３．５．１  ビデオ・ファイル管理スレッド
ビデオ・ファイル管理モジュール３１７は、ビデオ・ファイル管理スレッドまたはサブルーチンを含む。ビデオ・ファイル管理スレッドは、ビデオ・ファイルを作成し、閉じる役割を持つ。作成および閉じるオペレーションは、比較的時間を食う場合があり、したがって、カメラ・サーバ１０９〜１１１から受信されたサンプル・データを処理する際の潜在的遅延を避けるためにメイン・スレッドよりも低い優先度の別のスレッド（つまり、実行コンテクスト）により実行される。
【０２５１】
上述のように、記録エンジン２０１は、遅延なくファイルの瞬間的スワップオーバーを行えるようにするために、非アクティブ・スタンバイ・ファイル（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）がカメラ・サーバ１０９〜１１１毎に必ず保持されるようにしようと試みる。第１のサンプルがスタンバイ・ファイルに書き込まれるとすぐに、ファイル管理スレッドは、新しい非アクティブ・スタンバイ・ファイルを作成し、次のスワップオーバーの用意をするように指令される。
【０２５２】
ビデオ・ファイル管理スレッドに従ってビデオ・ファイルを作成し、閉じるプロセス２０００は、図２０を参照しつつ以下で説明される。プロセス２０００は、ストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行される。プロセス２０００は、ステップ２００１から始まり、そこで、プロセッサ２３０５は、他のスレッドからのメッセージが検出されるまで待つ。メッセージは、後述のように３つの型のうちの１つとすることができる。
【０２５３】
次のステップ２００３で、メッセージがＣＲＥＡＴＥ  ＦＩＬＥ  ＳＥＴ要求である場合、プロセス２０００は、ステップ２００３に進む。そうでない場合、プロセス２０００は、ステップ２００６に進む。ステップ２３０５で、プロセッサ２３０５は、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５を作成するために、ビデオ・ファイル集合作成プロセス２１００に入る。プロセス２１００は、図２１を参照しつつ以下の３．５．２節で詳しく説明される。その後、プロセス２０００は、ステップ２００１に戻る。
【０２５４】
次のステップ２００６で、メッセージがＣＬＯＳＥ  ＦＩＬＥ  ＳＥＴ要求である場合、プロセス２０００は、ステップ２００９に進む。そうでない場合、プロセス２０００は、ステップ２００７に進む。ステップ２００９で、プロセス２０００は、メディア・ファイル１８００およびインデックス・ファイル１８０５を閉じて完成ファイル・ペアを作成するために、ビデオ・ファイル集合クローズ・プロセス２６００に入る。プロセス２６００は、３．５．５節で説明される。その後、プロセス２０００は、ステップ２００１に戻る。
【０２５５】
次のステップ２００７で、メッセージがＳＴＯＰ  ＴＨＲＥＡＤ要求である場合、プロセス２０００は終了する。ＳＴＯＰ  ＴＨＲＥＡＤ要求は、通常、記録エンジン２０１が停止しようとするときに送信される。そうでない場合、プロセス２０００は、ステップ２００１に戻る。
【０２５６】
３．５．２  ファイル集合作成プロセス
ビデオ・ファイル集合作成プロセス２１００は、図２１の流れ図を参照しつつ説明される。プロセス２１００は、ビデオ・ファイル管理スレッドにより呼び出される。プロセス２１００の目的は、それぞれ１つのメディア・ファイル１８００と１つの関連付けられたインデックス・ファイル１８０５からなるスタンバイ・ファイルの集合を作成することである。プロセス２１００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２５７】
プロセス２１００は、プロセッサ２３０５がアクセス・エンジン２０３と共有される同期オブジェクトを取得するステップ２１０１から始まる。同期オブジェクトは、ハード・ディスク・ドライブ２３０５上に格納され、メディア・ファイル１８００およびインデックス・ファイル１８０５の作成、オープン、クローズ、および削除が記録エンジン２０１およびアクセス・エンジン２０３のそれぞれに関して必ず自動的に実行されるようにするために使用される。
【０２５８】
次のステップ２１０３で、プロセッサ２３０５は、３．３．４．１節の規定に従って、適当なスタンバイ・ファイル名の集合を生成する。メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５を格納するために使用されるファイル・ディレクトリは、３．３．４．１節で説明されているように、関連付けられたカメラ・サーバ１０９〜１１１に関連付けられているドライブ文字を文字列「＼Ｗｅｂｖｉｅｗ−ＮＶＲ＼ｖｉｄｅｏｆｉｌｅｓ」と組み合わせることにより決定される。イベント・ファイルを格納するために使用されるディレクトリは、カメラ・サーバ１０９〜１１１に関連付けられたドライブ文字を文字列「＼Ｗｅｂｖｉｅｗ−ＮＶＲ＼ｅｖｅｎｔｆｉｌｅｓ」と組み合わせることにより決定される。
【０２５９】
次のステップ２１０５で、プロセッサ２３０５は、生成される次のスタンバイ・ファイルの用意をするために与えられたカメラ１１２〜１１５に対するファイル・カウンタをインクリメントする。その後、次のステップ２１０７で、プロセッサ２３０５は、ハード・ディスク・ドライブ２３１０内にイベント・ファイルを作成する。イベント・ファイルは、図３５を参照しつつ以下で説明されるイベント・ファイル作成プロセス３５００に従って作成される。次のステップ２１０９で、プロセッサ２３０５は、ハード・ディスク・ドライブ２３１０内にメディア・ファイル２００を作成する。メディア・ファイル１８００は、メディア・ファイル１８００を作成するプロセス２４００に従ってステップ２１０９で作成される。プロセス２４００は、図２４を参照しつつ以下で詳しく説明される。
【０２６０】
メディア・ファイル１８００は、プロセッサ２３０５により供給される、メディア・ファイル・パス・パラメータおよびメディア・ファイル形式パラメータに従って作成される。メディア・ファイル形式パラメータは、メディア・ファイル２００のファイル形式（例えば、ＡＶＩ（登録商標）またはＱｕｉｃｋＴｉｍｅ（登録商標））を指定する。その後、次のステップ２１１１で、プロセッサ２３０５は、ハード・ディスク・ドライブ２３１０内にインデックス・ファイル１８０５を作成する。インデックス・ファイル２０５は、プロセッサ２３０５により供給される、インデックス・ファイル・パス・パラメータに基づいて生成される。インデックス・ファイル１８０５は、インデックス・ファイル１８０５を作成するプロセス２５００に従ってステップ２１１１で作成される。プロセス２５００は、図２５を参照しつつ以下で詳しく説明される。上述のように、インデックス・ファイル１８０５は、ＱｕｉｃｋＴｉｍｅ（登録商標）形式に従って生成される。
【０２６１】
プロセス２１００は、プロセッサ２３０５が、プロセッサ２３０５によって供給されるトラック容量パラメータ、トラック速度パラメータ、およびデータ・ソース識別子パラメータに基づいて第１のトラック（例えば、トラック１８１３）を作成する次のステップ２１１３で続く。ステップ２１１３で作成されたトラック（例えば、トラック１２１３）は、メディア・ファイル１８００に格納されるサンプル・データを参照するように構成される。またステップ２１１３で、プロセッサ２３０５は、ビデオ・トラック１８１３を、ハード・ディスク・ドライブ２３１０内に構成されたインデックス・ファイル１８０５に追加する。その後、次にステップ２１１５で、プロセッサ２３０５は、トラック容量パラメータ、トラック速度パラメータ、およびデータ・ソース識別子パラメータに基づいて第２のトラック（例えば、トラック１８１５）を作成する。第２のトラック１８１５は、テキスト文字列（つまり、テキスト・サンプル・データ）を参照するように構成される。またステップ２１０７で、プロセッサ２３０５は、作成されたテキスト・トラック１８１５をインデックス・ファイル１８０５に追加する。
【０２６２】
プロセス２１００は、次のステップ２１１７で終了するが、そこでは、ステップ２１０１に含まれる同期オブジェクトが解放され、それにより、アクセス・エンジン２０３はそれらのファイルに作用する。
【０２６３】
３．５．３  メディア・ファイル作成プロセス
次に、ステップ２１０９のメディア・ファイル作成プロセス２４００は、図２４の流れ図を参照しつつ説明される。プロセス２４００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス２４００は、プロセッサ２３０５が、ステップ２１０９でプロセッサ２３０５により供給されるメディア・ファイル・パス・パラメータにより指定された、ハード・ディスク・ドライブ２３１０内のメモリ・アドレスにメディア・ファイル１８００を作成するステップ２４０１から始まる。次のステップ２４０３で、メディア・ファイル形式パラメータが、メディア・ファイル１８００がＡＶＩ（登録商標）形式に従って構成されることを指定している場合、プロセス２４００はステップ２４０５に進む。そうでない場合、プロセス２４００は終了する。
【０２６４】
ステップ２４０５で、プロセッサ２３０５は、プロセッサ２３０５により検出されたサンプルを格納するためのヘッダの空集合および空のサンプル構造を作成する。次に、ステップ２４０７で、作成されたサンプル構造が、ハード・ディスク・ドライブ２３１０内に構成されたメディア・ファイル１８００に書き込まれる。プロセス２４００は、プロセッサ２３０５がＡＶＩ（登録商標）インデックス・ファイル構造を作成する次のステップ２４０９で終了する。インデックス・ファイル１８０５構造は、メディア・ファイル１８００の終わりに追加されるが、その結果の長さは現在不明であるため、ハード・ディスク・ドライブ２３１０またはメモリ２３０６内に構成されたテンポラリ・ファイルのいずれかに格納できる。
【０２６５】
３．５．４  インデックス・ファイル作成プロセス
次に、インデックス・ファイル１８０５を作成するプロセス２５００を、図２５の流れ図を参照しつつ説明する。プロセス２５００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス２５００は、プロセッサ２３０５が、ステップ２１１１でプロセッサ２３０５により供給されるメディア・ファイル・パス・パラメータにより指定された、ハード・ディスク・ドライブ２３１０内のメモリ・アドレスにインデックス・ファイル１８０５を作成するステップ２５０１から始まる。その後、次のステップ２５０３で、プロセッサ２３０５は、インデックス・ファイル１８０５のムービー・ヘッダ・アトムを初期化する。
【０２６６】
ムービー・ヘッダ・アトムは、ＱｕｉｃｋＴｉｍｅ（登録商標）ムービー全体の特性を指定するために使用され、上述のように、アップル・コンピュータ社が公開している「ＱｕｉｃｋＴｉｍｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ」というタイトルの出版物の中で詳しく説明されている。プロセス２５００は、次のステップ２５０５で終了し、そこで、プロセッサ２３０５は、インデックス・ファイル１８０５のユーザ・データ・アトムを初期化する。ユーザ・データ・アトムを使用すると、ユーザは、ムービーなどのＱｕｉｃｋＴｉｍｅ（登録商標）オブジェクトに関連付けられたデータを定義し、格納することができる。
【０２６７】
３．５．５  ビデオ・ファイル・ペア・クローズ・プロセス
図２６は、ビデオ・ファイル・ペア（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）を閉じるプロセス２６００を示す流れ図である。ビデオ・ファイル・ペア・クローズ・プロセス２６００は、ビデオ・ファイル管理スレッドにより呼び出される。プロセス２６００の目的は、ファイルのアクティブな（開いている）ペアを受け取って、ファイルを閉じ、ファイルの名前を適切なファイル名に変更することである。プロセス２６００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２６８】
プロセス２６００は、プロセッサ２３０５がアクセス・エンジン２０３と共有される同期オブジェクトを取得するステップ２６０１から始まる。上述のように、同期オブジェクトは、ファイル・ペアを形成するメディア・ファイル１８００およびインデックス・ファイル１８０５の作成、オープン、クローズ、および削除が記録エンジン２０１およびアクセス・エンジン２０３のそれぞれに関して必ず自動的に実行されるようにするために使用される。次のステップ２６０３で、プロセッサ２３０５は、アクティブ・ファイル・ペアが実際にサンプルを含むかどうかを決定する。ステップ２６０３でサンプルが存在しない場合、ファイル・ペアは、有用なデータを格納せず、プロセス２６００は、ステップ２６１９に進む。そうでなく、スタンバイ・ファイル・ペア内にサンプルが存在する場合、上の３．３．４．１節で説明されている規定に従って新しいファイル名の集合が生成される。
【０２６９】
次のステップ２６０５で、ファイル・ペアのメディア・ファイル１８００は、メディア・ファイル完成プロセス２７００に従って閉じられるが、これについては図２７を参照しつつ以下で詳しく説明される。その後、次のステップ２６０９で、メディア・ファイル１８００がリネームされる。プロセス２６００は、次のステップ２６１１に続き、そこで、関連付けられたインデックス・ファイル８０５（つまり、アクティブ・インデックス・ファイル１８０５）内のメディア・ファイル参照１８０８はリネームされたメディア・ファイル１８００と対応するように更新される。
【０２７０】
次のステップ２６１１で、アクティブ・インデックス・ファイル１８０５は、インデックス・ファイル完成プロセス２８００に従って閉じられるが、これについては図２８を参照しつつ以下で詳しく説明される。その後、次のステップ２６１５で、インデックス・ファイル１８０５がリネームされる。
【０２７１】
ステップ２６１９で、メディア・ファイル１８００は、メディア・ファイル完成プロセス２７００に従って閉じられる。メディア・ファイル１８００は、有用なデータを含まないので、メディア・ファイル１８００は、次のステップ２６２１で、ハード・ディスク・ドライブ２３１０から削除される。プロセス２６００は、次のステップ２６２３に続き、そこで、ファイル・ペアのインデックス・ファイル１８０５は、インデックス・ファイル完成プロセス２８００に従って閉じられる。インデックス・ファイル１８０５は、有用なデータを含まないので、インデックス・ファイル１８０５は、次のステップ２６２５で、ハード・ディスク・ドライブ２３１０から削除される。ステップ２６１６で、このプロセスは、イベント・ファイル・プロセス３６００を呼び出すことにより、現在のファイル集合に属するイベント・ファイルを閉じる。プロセス２６００は、最終ステップ２６１７で終了し、そこで、ステップ２６０１で取得された同期オブジェクトは解放される。
【０２７２】
３．５．６  メディア・ファイル完成プロセス
ステップ２６０７および２６０９で実行されるプロセス２７００について、図２７の流れ図を参照しつつ説明する。プロセス２７００は、メディア・ファイル１８００が破損しておらず、再生可能であることを角にするために必要なクリーンアップ・タスクを実行し、その後、メディア・ファイル１８００を閉じる。プロセス２７００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２７３】
プロセス２７００は、第１のステップ２７０１から始まり、そこで、メディア・ファイル２００がＡＶＩ（登録商標）ファイル形式に従ってフォーマットされているとプロセッサ２３０５が決定した場合に、プロセス２７００はステップ２７０３に進む。そうでない場合、プロセス２７００は、メモリ２３０６内のまだ書き込まれていないメディア・ファイル・データがハード・ディスク・ドライブ２３１０内に構成されたメディア・ファイル１８００にフラッシングされるステップ２７０９に進む。ステップ２７０９の後、プロセス２７００は、直接ステップ２７０７に進む。
【０２７４】
ステップ２７０３で、プロセッサ２３０５は、メディア・ファイル１８００のＡＶＩ（登録商標）ヘッダをメディア・ファイル１８００内に格納されているサンプルに関する情報で更新する。ヘッダは、メディア・ファイル１８００内に格納されているサンプルの正確な個数を反映するように更新される。次のステップ２７０５で、ＡＶＩ（登録商標）インデックス・ファイル１８０５が、メディア・ファイル１８００の終わりに書き込まれる。プロセス２７００は、メディア・ファイル１８００を閉じて完成メディア・ファイル１８００を作成する次のステップ２７０７で終了する。
【０２７５】
３．５．７  インデックス・ファイル完成プロセス
次に、ステップ２６１３および２６２３で実行されるインデックス・ファイル完成プロセス２８００について、図２８の流れ図を参照しつつ説明する。プロセス２８００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２７６】
プロセス２８００は、プロセス２３０５がインデックス・ファイル２０５の終了時刻をプロセッサ２３０５により供給されるインデックス終了時刻値に設定する第１のステップ２８０１から開始する。インデックス・ファイル２０５の終了時刻は、メディア・ファイル１８００の第１のサンプルからストレージ・サーバ２３００のシステム・クロックにより表される現在時刻までの期間をカバーするように設定される。次のステップ１７０３で、プロセッサ２３０５は、インデックス・ファイル１８０５の第１のトラックを選択する。その後、ステップ２８０５で、処理すべきインデックス・ファイル１８０５のトラックが残っているとプロセッサ２３０５が決定した場合、プロセス２８００はステップ１８０７に進む。そうでない場合、プロセス２８００は、ステップ２８１１に進む。
【０２７７】
ステップ２８０７で、選択されたトラックの終了時刻は、プロセッサ２３０５により供給されるインデックス終了時刻に設定される。その後、インデックス・ファイル１８０５の次のトラックが、ステップ１８０９でプロセッサ２３０５により選択され、プロセス２８００は、ステップ２８０５に戻る。ステップ２８１１で、プロセッサ２３０５は、メモリ２３０６内のまだ書き込まれていないインデックス・ファイル・データを、ハード・ディスク・ドライブ２３１０内に構成されているインデックス・ファイル１８０５にフラッシングする。その後、プロセス２８００は、次のステップ２８１３で終了し、そこで、インデックス・ファイル１８０５は閉じられる。
【０２７８】
３．５．８  サンプルをファイルに書き込むプロセス
図２９は、サンプルをメディア・ファイル１８００に書き込むプロセス２９００を示す流れ図である。プロセス２９００は、メモリ２３０６内に構成されているフレーム・バッファから単一のビデオ・データ・サンプルを表すサンプルを取り出し、そのサンプルがメディア・ファイル１８００に書き込まれるようにする。その後、関連付けられたインデックス・ファイル１８０５は、新しく書き込まれたサンプルを参照するように更新される。プロセス２９００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２７９】
プロセス２９００は、サンプル・データを保存する現在の速度が、ストレージ・サーバ２３００がサンプル・データを取得する速度と同じである場合に、プロセス２９００がステップ２９０９に進む第１のステップ２９０１から始まる。そうでなければ、プロセス２９００は、現在のサンプルに対応する取り込み時間（つまり、タイムスタンプ）がメモリ２３０６内に構成される保存速度カウンタに追加されるステップ２９０３に進む。つまり、ステップ２９０３で、保存速度カウンタは、現在のサンプル（つまり、フレーム）の時刻と前のサンプルのタイムスタンプとの差の分だけインクリメントされる。次のステップ２９０５で、保存速度カウンタの値が現在の保存速度を超える場合、プロセスはステップ２９０７に進む。そうでない場合、プロセス２９００は終了する。
【０２８０】
ステップ２９０７で、プロセッサ２３０５は、保存速度カウンタの値から現在の保存速度を引いて保存速度カウンタをリセットする。次のステップ２９１９で、プロセッサ２３０５は、カメラ１０９〜１１１に関連付けられたディスクに現在のフレームを書き込む十分なディスク領域があるかどうかを決定する。十分な空き領域はない場合、プロセスは終了する。その後、ステップ２９０９で、プロセッサ２３０５は、図３０を参照しつつ以下の３．５．９節で説明されるビデオ・ファイル・リミット・チェック・プロセス３０００に従ってメディア・ファイル１８００に書き込むサンプルを格納するための領域があることが保証される。
【０２８１】
次のステップ２９１１で、メディア・ファイル１８００内にサンプルがない場合、プロセス２９００はステップ２９１３に進む。そうでない場合、プロセス２９００は、ステップ２９１５に直接進む。ステップ２９１３で、プロセッサ２３０５は、ストレージ・サーバ２３００上で実行する要求をビデオ・ファイル管理スレッドに送信し、新しい非アクティブ・スタンバイ・ファイル（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）を作成する。ステップ２９１５で、サンプルが、メディア・ファイル１８００のビデオ・トラックに書き込まれる。サンプルは、ファイルをビデオ・トラックに書き込むプロセス３１００に従ってステップ２９１５で書き込まれるが、これについては図３１を参照しつつ以下で詳しく説明する。
【０２８２】
プロセス２９００は、次のステップ２９１７で終了し、そこで、サンプルのプロパティは、フレーム・プロパティをテキスト・トラックに書き込むプロセス３２００に従って、メディア・ファイル１８００のテキスト・トラックにテキスト文字列の形で書き込まれる。プロセス３２００は、図３２を参照しつつ以下で詳しく説明される。
【０２８３】
３．５．９  ビデオ・ファイル・リミット・チェック・プロセス
次に、ビデオ・ファイル・リミットをチェックするプロセス３０００について、図３０を参照しつつ説明する。プロセス３０００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス３０００は、カメラ・サーバ１０９〜１１１（つまり、現在アクティブな、または開いているメディア・ファイル１８００）に対するアクティブ・ファイル・ペアが追加サンプル（つまり、ビデオ・フレームを収容することができるかどうかを決定する。それ以上サンプルを収容できない場合、プロセッサ２３０５は、そのカメラ・サーバ１０９〜１１１に対する非アクティブ・スタンバイ・ファイルに切り替わり、前のアクティブなメディア・ファイル・ペアを閉じる要求を発行する。
【０２８４】
プロセス３０００は、第１のステップ３００１から始まり、そこで、プロセッサ２３０５は、アクティブ・ファイル・ペアのメディア・ファイル１８００に対応するインデックス・ファイル１８０５をチェックする。インデックス・ファイル１８０５が、新しいサンプルを収納する対応するサンプル・テーブル１８０９内に空きエントリを持つ場合、プロセッサはステップ３００３に進む。そうでない場合、プロセス３０００は、ステップ３０１５に進む。ステップ３００３で、現在アクティブなメディア・ファイル１８００の容量が所定の限界（例えば、１ギガバイト）よりも小さい場合、プロセス３０００はステップ３００５に進む。そうでない場合、プロセス３０００は、ステップ３０１５に進む。ステップ３００５で、システム１００がメディア・ファイル１８００のサイズを制限するようにユーザにより構成されるとプロセッサ２３０が決定した場合、プロセス３０００はステップ３００７に進む。そうでない場合、プロセスは、ステップ３００９に進む。
【０２８５】
ステップ３００７で、現在アクティブなメディア・ファイル１８００がユーザ指定限界よりも小さいとプロセッサ２３０５が決定した場合、プロセス３０００はステップ３００９に進む。そうでない場合、プロセス３０００は、ステップ３０１５に進む。ステップ３００９で、現在アクティブなメディア・ファイル１８００の容量が所定の限界（例えば、１ギガバイト）よりも小さい場合、プロセス３０００はステップ３０１１に進む。そうでない場合、プロセス３０００は、ステップ３０１５に進む。ステップ３０１１で、システム１００がメディア・ファイル１８００の持続時間を制限するようにユーザにより構成されるとプロセッサ２３０５が決定した場合、プロセス３０００はステップ３０１３に進む。そうでない場合、プロセス３０００は終了する。ステップ３０１３で、現在アクティブなメディア・ファイル１８００の持続時間がユーザ指定限界よりも小さいとプロセッサ２３０５が決定した場合、プロセス３０００は終了する。そうでない場合、プロセス３０００は、ステップ３０１５に進む。
【０２８６】
ステップ３０１５で、プロセッサ２３０５は、現在アクティブなメディア・ファイル１８００を非アクティブなスタンバイ・メディア・ファイルに設定することによりファイル・スワップオーバーを開始する。その後、次のステップ３０１７で、プロセッサ２３０５は、ＣＬＯＳＥ  ＦＩＬＥ要求をビデオ・ファイル管理スレッドに送信し、メディア・ファイル１８００を閉じると、プロセス３０００は終了する。
【０２８７】
３．５．１０  サンプル（つまり、フレーム）をビデオ・トラックに書き込むプロセス
次に、ステップ２９１５で実行される、サンプルをビデオ・トラックに書き込むプロセス３１００について、図３１を参照しつつ説明する。プロセス３１００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２８８】
第１のステップ３１０１で、アクティブなメディア・ファイル１８００のビデオ・トラック内にすでにサンプルが存在している場合、プロセス３１００はステップ３１０３に進む。そうでない場合、プロセス３１００は、ステップ３１０７に進む。ステップ３１０３で、新しいサンプルの形式および解像度がメディア・ファイル１８００内の現在の（複数の）サンプルと同じでない場合、プロセスはステップ３１０７に進む。そうでない場合、プロセス３１００は、ステップ３１０５に直接進む。ステップ３１０７で、プロセッサ２３０５は、正しいデータ形式および解像度を使用してサンプルを受け入れるようにメディア・ファイル１８００のビデオ・トラックを再構成する。プロセス３１００は、サンプルをトラックに追加するプロセス３３００に従ってサンプルがビデオ・トラックに追加されるステップ３１０５で終了するが、これについて、図３３を参照しつつ以下で詳しく説明する。
【０２８９】
３．５．１１  サンプル・プロパティをテキスト・トラックに書き込むプロセス
次に、サンプル・プロパティをテキスト・トラックに書き込むプロセス３２００について、図３２を参照しつつ説明する。プロセス３２００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス３２００は、時刻およびイベント情報が、ストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０内に構成されたメディア・ファイル１８００のテキスト・トラックに書き込まれるようにする。ＱｕｉｃｋＴｉｍｅ（登録商標）またはＡＶＩ（登録商標）プレーヤーを使用してメディア・ファイル１８００が再生される場合、時刻およびイベント情報は、後から、サンプル・データと連携して表示することができる。
【０２９０】
プロセス３２００は、書き込まれるサンプルに関連付けられている取得時刻を示すタイムスタンプにプロセッサ２３０５がアクセスし、追加ｍｉｌｌｉｓｅｃｏｎｄフィールドが挿入された、ＡＮＳＩ関数ｃｔｉｍｅ（）により生成される形式の文字列を生成する第１のステップ３２０１から始まる。このような時刻の例は、Ｔｕｅ  Ａｕｇ  １９  ０５：０５：５３．５８５  ２００３であり、日時は、常に、ＵＴＣ形式で表される。
【０２９１】
次のステップ３２０３で、現在のアクティブ・メディア・ファイル１８００に保存されていない関連付けられたカメラ・サーバ１０９〜１１１に対しイベントがある場合、プロセス３２００は、ステップ３２０５に進む。そうでない場合、プロセス３２００は、ステップ３２０７に進む。ステップ３２０５で、プロセッサ３２０５は、メモリ２３０６内に構成されたイベント・キューから次のイベントを順に引き出し、イベントの記述が、ステップ３２０１で生成された文字列に付加される。プロセス３２００は、ステップ３２０７で終了し、そこで、テキスト文字列が、プロセス３３００に従ってテキスト・トラックに追加される。
【０２９２】
３．５．１２  サンプルをトラックに追加するプロセス
次に、ステップ３１０５および３２０７で実行される、サンプルをビデオ・トラックに追加するプロセス３３００について、図３３を参照しつつ説明する。プロセス３３００は、ビデオ・サンプルまたはテキスト・サンプル（つまり、テキスト文字列）を受け取り、サンプル・データがアクティブ・メディア・ファイル１８００に書き込まれるようにし、また関連付けられたインデックス・ファイル１８０５内にサンプルへの参照が設定されるようにする。プロセス３３００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２９３】
プロセス３３００は、サンプルがアクティブ・メディア・ファイル１８００に追加されるステップ３３０１から始まる。サンプルは、サンプルをメディア・ファイルに追加するプロセス３４００に従ってステップ３３０１で追加されるが、これについては図３４を参照しつつ以下で詳しく説明する。次のステップ３３０２で、追加されるサンプルのサンプル・オフセット・パラメータおよびサンプル・サイズ・パラメータにより示されるサンプル・オフセットが、インデックス・ファイル１８０５のトラック（つまり、ビデオ・トラック１８１３またはテキスト・トラック１８１５のいずれか）のサンプル・テーブル構造（つまり、サンプル・オフセット・テーブル１８０９または１８１７およびサンプル・サイズ・テーブル１８１１または１８１９）に書き込まれる。次のステップ３３０３で、そのサンプルがトラックに関連付けられる第１のサンプルである場合、プロセス３３００は次のステップ３３０５に続く。そうでない場合、プロセス３３００は、ステップ３３０７に進む。
【０２９４】
ステップ３３０５で、プロセッサ２３０５は、サンプル記録時間パラメータ（つまり、タイムスタンプ）を使用してトラックの開始時刻を現在のサンプルのタイムスタンプに設定し、サンプルの取得時刻を反映させる。そうでない場合、プロセッサ２３０５は、現在のサンプルのタイムスタンプから前のサンプルのタイムスタンプ（つまり、取得時刻）を引くことにより前のサンプルの持続時間を決定する。その後、次のステップ３３０９で、関連するトラック（つまり、トラック１８１３または１８１５）に関連付けられているトラック持続時間値が、現在のサンプルのタイムスタンプと関連するトラックのタイムスタンプとの差に設定される。次のステップ３３１１で、このトラック持続時間によりトラックの終わりがインデックス持続時間を超える場合、プロセス３３００は、ステップ３３１３に進む。そうでない場合、１３０３のプロセスは終了する。ステップ１５１３で、インデックス持続時間がトラックを収納するように更新され（つまり、インデックス・ファイル１８０５の持続時間が現在のトラックの終わりに対応するようにプロセッサ３２０５により調整される）、ステップ１３０３のプロセスは終了する。
【０２９５】
３．５．１３  サンプルをメディア・ファイルに追加するプロセス
次に、サンプルをメディア・ファイル１８００に追加するプロセス３４００について、図３４を参照しつつ説明する。プロセス３４００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０２９６】
プロセス３４００は、第１のステップ３４０１から始まり、そこで、メディア・ファイル１８００の形式がＡＶＩ（登録商標）であるとプロセッサ２３０５が決定した場合に、プロセス３４００はステップ３４０３に進む。そうでない場合、プロセス３４００は、直接ステップ３４１９に進み、そこで、検出されたサンプルのデータは、ハード・ディスク・ドライブ２３１０内に構成されたメディア・ファイル１８００に付加される。
【０２９７】
ステップ３４０３で、サンプル・ファイル１８００に追加されるサンプルが空の場合（つまり、関連付けられたサンプルのサイズが０の場合）、プロセス３４００は、直接ステップ３４１５に進む。そうでない場合、プロセス３４００は、ステップ３４０５に進む。ステップ３４０５で、書き込まれるトラックがテキスト・トラックの場合、プロセス３４００は、ステップ３４０７に進む。そうでない場合、プロセス３４００は、ステップ３４１１に直接進む。ステップ３４０７で、上の「ＡＶＩ（登録商標）ビデオ・ストリーム処理」という表題の節で説明されているように、文字列のＮＵＬＬ終端コピーが作成される。次のステップ３４０９で、検出されたサンプルのオリジナル・データが、データ文字列として、文字列のＮＵＬＬ終端コピーに付加される。
【０２９８】
その後、ステップ３４１１で、プロセッサ２３０５は、検出されたサンプル取得時刻に基づくタイムスタンプを含むカスタム・データ・チャンクを作成し、カスタム・データ・チャンクをハード・ディスク・ドライブ２３１０内に構成されたメディア・ファイル１８００に書き込む。次のステップ３４１３で、ＡＶＩ（登録商標）インデックスは、メディア・ファイル８００内に格納されているカスタム・データ・チャンクへの参照で更新される。
【０２９９】
ステップ３４１５で、プロセッサ２３０５は、検出されたサンプルに基づくデータ・チャンクをメディア・ファイル１８００に書き込む。プロセス３４００は、次のステップ３４１７で終了し、そこで、インデックス・ファイル１８０５のＡＶＩ（登録商標）インデックスは、メディア・ファイル１８００内に格納されているカスタム・データ・チャンクへの参照で更新される。
【０３００】
３．６  イベント・ファイル管理モジュール
上述のように、記録エンジン２０１は、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成されたドライブ上に格納されているすべてのイベント・ファイルを管理するイベント管理モジュール３２１を含む。イベント・ファイル管理モジュール３２１は、必要に応じて新しいイベント・ファイルを作成し、データをそれらの新しいイベント・ファイルに書き込み、既存のイベント・ファイルのサイズまたは持続時間が所定の限界を超えた場合にさらに新しいイベント・ファイルにスワッピングする役割を持つ。
【０３０１】
３．６．１  イベント・ファイル作成プロセス
図３５は、イベント・ファイル作成プロセス３５００を示す流れ図である。プロセス３５００は、スタンバイ・メディア・ファイル１８００を作成する。プロセス３５００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３０２】
プロセス３５００は、プロセッサ２３０５がオペレーティング・システムに備えられている機能を使用して、ファイル・ペア作成プロセス２１００のステップ２１０３で生成されたパスを使用してファイルを作成する第１のステップ３５０１から開始する。プロセス３５００は、次のステップ３５０３で終了し、そこで、イベント生成プロセスに従って「ｆｉｌｅ  ｓｅｔ  ｓｔａｒｔｉｎｇ」イベントが生成される。
【０３０３】
３．６．２  イベントをイベント・ファイルに書き込むプロセス
図９５は、イベントをイベント・ファイルに書き込むプロセス９５００を示す流れ図である。プロセス９５００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス９５００は、第１のステップ９５０１で始まるが、そこでは、イベント・レコードが上述の形式に従って作成される。次のステップ９５０２で、イベント・レコードは、ストレージ・デバイス２３０９内に構成された現在開いているイベント・ファイルまたは現在開いているシステム・イベント・ファイルに書き込まれる。
【０３０４】
３．６．３  イベント・ファイル完成プロセス
図３６は、イベント・ファイル完成プロセス３６００を示す流れ図である。プロセス３６００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３０５】
プロセス３６００は、プロセッサ２３０５がイベント生成プロセスを使用してファイル集合停止イベントを生成する第１のステップ３６０１から始まる。プロセス３６００は、イベント・ファイルが閉じられる次のステップ３６０３で終了する。
【０３０６】
３．７  カメラ・サーバ通信モジュール
上述のように、カメラ・サーバ通信モジュール３０５は、記録エンジン２０１と、記録エンジン２０１が制御するカメラ・サーバ１０９〜１１１との間の通信を管理する。通信モジュール３０５は、正しい設定が特定のカメラ・サーバ１０９〜１１１に必ず送信されるようにし、必要に応じてサンプルおよびイベント通知を受信するようにする役割を持つ。したがって、カメラ・サーバ通信モジュール３０５は、カメラ・サーバ１０９〜１１１との接続を保持し、記録エンジン２０１とカメラ・サーバ１０９〜１１１のそれぞれとの間のすべてのデータの交換を行う役割を持つ。
【０３０７】
記録エンジン２０１によりサポートされるカメラ・サーバ１０９〜１１１は、ＴＣＰ／ＩＰ接続を介してＨＴＴＰプロトコルを使用して通信する。記録エンジン２０１は、カメラ・サーバ１０９〜１１１に接続し、ＨＴＴＰ要求を発行し、実行されるオペレーションに応じて特定のリソースを要求する。カメラ・サーバ１０９〜１１１によりサポートされるほとんどの要求は、即時返信を求める。この例外は、記録エンジン２０１に送信することができる新しい通知をカメラ・サーバ１０９〜１１１が持つまで、要求の後通知を開いたままにしておく取得コマンドである。
【０３０８】
カメラ・サーバ１０９〜１１１毎に一組のＴＣＰ／ＩＰソケットが保持される（つまり、それぞれのカメラ・サーバ１０９〜１１１と関連付けられているストレージ・サーバ２３００との間で）。ＴＣＰ／ＩＰソケットの制御ソケットは、特定のカメラ・サーバ１０９〜１１１の現在状態に関する情報を要求する、またはカメラ・サーバ１０９〜１１１上の様々な設定を変更する特定のカメラ・サーバ１０９〜１１１にコマンドを送信する役割を持つ（パン、傾斜、およびズーム設定、バックライト補正、解像度、品質設定、運動検出設定、アクティブ・カメラなど）。ＴＣＰ／ＩＰソケットの通知ソケットは、カメラ・サーバ・イベントの通知の受信を監視する役割を持つ。特定のカメラ・サーバ１０９〜１１１に接続されているそれぞれのカメラ１１２〜１１５からビデオ・サンプル・データを受信するために別の画像ソケットが使用される。起動されると、画像は、画像ソケットを閉じることでしか終了できないストリームでカメラ・サーバ１０９〜１１１から記録エンジン２０１に送信される。
【０３０９】
カメラ・サーバ１０９〜１１１は、アクティブ・クライアント・セッションを表すために使用され、いくつかの要求とともに供給される、接続識別子の集合を保持する。制御および通知ソケットは、単一の接続識別子を共有するが、画像ソケットは、明示的に作成された識別子を使用しない。
【０３１０】
ソケット通信は、非同期に実行される。つまり、記録エンジン２０１は、記録エンジン２０１がソケットに接続する、またはソケットに書き込むオペレーションを実行しようと試みることをオペレーティング・システムに通知し、オペレーティング・システムは、その後、接続が完了したとき、またはオペレーティング・システムが書き込むデータを受け付ける準備ができたときに、記録エンジン２０１に通知する。さらに、記録エンジン２０１は、オペレーティング・システムから、新しい着信データがソケット上で利用できる場合には読み込み通知を、ソケットが他端により切断されるか、タイムアウトが発生した場合には切断通知を受信するように自己登録する。
【０３１１】
３．７．１  カメラ・サーバ接続確立プロセス
図３７は、ストレージ・サーバ２３００上で実行する記録エンジン２０１とカメラ・サーバ１０９〜１１１のそれぞれとの間のカメラ・サーバ接続を確立するプロセスを示す流れ図である。プロセス３７００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス３７００は、記録エンジン２０１でカメラ・サーバ１０９〜１１１が初期化されると、プログラムが最初に起動されたとき、または新しいカメラ・サーバ１０９〜１１１が管理者用インターフェースを使用して登録されたときに、必ず実行される。プロセス３７００は、制御および通知用のソケットを作成し、接続することにより開始する。その後、プロセス３７００は、カメラ・サーバ１０９〜１１１により参照されるそれぞれのカメラ１１２〜１１５を通じて反復し、カメラ毎に１つの画像ソケットを接続して行く。ソケットに接続するすべてのステップは、非同期接続の試みを開始することによりそのような動作を行う。オペレーティング・システムは、記録エンジン２０１に通知する。プロセス３７００は、プロセッサ２３０５が制御ソケットを作成するステップ３７０１から開始する。次のステップで、プロセッサ２３０５は、記録エンジンと、関連付けられたストレージ・サーバ２３００の記録エンジン２０１と関連付けられているカメラ・サーバ１０９〜１１１のそれぞれとの間で制御ソケットを接続する。その後、次のステップ３７０５で、プロセッサ２３０５は、通知ソケットを作成する。次のステップ３７０９で、記録エンジン２０１に接続されていないカメラ・サーバ１０９〜１１１があるとプロセッサ２３０５が決定した場合、プロセス３７００はステップ３７１１に進む。そうでない場合、プロセス３７００は終了する。
【０３１２】
ステップ３７１１で、プロセッサ２３０５は、次の未接続カメラ・サーバ１０９〜１１１を選択する。その後、次のステップ３７１３で、プロセッサ２３０５は、選択されたカメラ・サーバ１０９〜１１１に対し画像ソケットを作成する。次のステップ３７１５で、プロセッサ２３０５は、選択されたカメラ・サーバ１０９〜１１１に対し画像ソケットを接続する。
【０３１３】
３．７．２  ソケット・イベント処理プロセス
図９６は、ソケット・イベントを処理するプロセス９６００を示す流れ図である。プロセス９６００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またストレージ・サーバ２３００のプロセッサ２３０５により実行に際して制御される。プロセス９６００は、ソケット上で接続または切断が発生した場合、ソケットへの書き込みのためソケットがデータを受け付け可能状態になった場合、または着信データがソケットから読み込める状態になった場合に、オペレーティング・システムにより実行される。
【０３１４】
プロセス９６００は、プロセッサ２３０５が特定のソケットとカメラ・サーバ１０９〜１１１とのマッチングを行う第１のステップ９６０１から始まる。次のステップ９６０３で、ソケットが画像ソケットの場合、プロセス９６００はステップ９６０５に進む。そうでない場合、プロセス９６００は、ステップ９６０７に進む。ステップ９６０５で、プロセッサ２３０５は、ソケットと特定のカメラ１１２〜１１５とのマッチングを行う。
【０３１５】
その後、次のステップ９６０７で、プロセッサ２３０５が接続イベントを検出した場合、ソケットは、新しいコマンドを処理することを開始する用意ができ、プロセス９６００は、ステップ９６０９に進む。そうでない場合、プロセス９６００は、ステップ９６１１に進む。ステップ９６０９で、プロセッサ２３０５は、次のコマンドを送信する。
【０３１６】
ステップ９６１１で、プロセッサ２３０５により検出されるイベントが読み込みイベントの場合、プロセス９６００は、ステップ９６１３に進む。そうでない場合、プロセス９６００は、ステップ９６１５に進む。ステップ９６１３で、プロセッサ２３０５は、ソケット読み込みイベントを処理する。
【０３１７】
ステップ９６１５で、イベントが書き込みイベントの場合、プロセス９６００は、ステップ９６１７に進む。そうでない場合、プロセス９６００は、ステップ９６１９に進む。
【０３１８】
ステップ９６１７で、プロセッサ２３０５は、メモリ２３０６内に構成された送信バッファから内容を送信する。
【０３１９】
ステップ９６１９で、イベントが切断イベントの場合、プロセス９６００は、ステップ９６２１に進む。そうでない場合、プロセス９６００は終了する。ステップ９６２１で、プロセッサ２３０５は、ソケット切断イベントを処理する。
【０３２０】
３．７．３  次のコマンドを送信するプロセス
図９７は、次のコマンドを送信するプロセス９７００を示す流れ図である。プロセス９７００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３２１】
プロセス９７００は、特定のソケット上で送信する必要のあるコマンドが必ず送信されるようにすることを役割とする。プロセス９７００が実行される毎に、ソケット上で送信するため１つのコマンドがキューに入れられる。したがって、それぞれのコマンドへの応答で、プロセス９７００が再び実行され、それによりさらに他のコマンドが必要に応じて送信される。
【０３２２】
プロセス９７００は、制御コマンドを作成するプロセス、通知コマンドを作成するプロセス、またはプロセス９７００が機能するソケットに応じて画像コマンドを作成するプロセスを実行する。
【０３２３】
コマンドが正常に作成された場合（つまり、与えられたソケット上で実行される必要がある未処理コマンドが現在ない場合、コマンドは作成されないことがある）、プロセス９７００では、ソケットが現在接続されているかどうかを決定する。ソケットが接続されている場合、オペレーティング・システムにソケットの書き込みの準備が整ったときにソケット・イベントを処理するプロセスの実行を依頼することにより、送信のためコマンドがキューに入れられる。ソケットが接続されていない場合、ソケットを接続する要求がオペレーティング・システムに発行される。ソケットが接続された後、オペレーティング・システムは、ソケット・イベントを処理するプロセスを呼び出し、これは、結局次のコマンドを送信するプロセスを実行する。
【０３２４】
コマンドが作成されなかった場合、これは、この時点に現在のソケットを使用して実行する必要のあるものがないことを意味する。ソケットは切断される。
【０３２５】
プロセス９７００は、第１のステップ９７０１から始まり、そこで、ソケットが制御ソケットであるとプロセッサ２３０５が決定した場合に、プロセス９７００はステップ９７０３に進む。そうでない場合、プロセス９７００は、ステップ９７１１に進む。ステップ９７０３で、プロセッサ２３０５は、制御コマンドを作成し、プロセス９７００は、ステップ９７０５に進む。
【０３２６】
ステップ９７１１で、ソケットが通知ソケットであるとプロセッサ２３０５が決定した場合、プロセッサ２３０５はステップ９７１３に進む。そうでない場合、プロセス９７００は、ステップ９７１５に進む。ステップ９７１３で、プロセッサ２３０５は、通知コマンドを作成し、プロセス９７００は、ステップ９７０５に進む。
【０３２７】
ステップ９７１５で、ソケットが画像ソケットであるとプロセッサ２３０５が決定した場合、プロセス９７００はステップ９７１７に進む。そうでない場合、プロセス９７００は、ステップ９７０５に進む。ステップ９７１７で、プロセッサ２３０５は、画像コマンドを作成する。
【０３２８】
ステップ９７０５で、コマンドが作成されたとプロセッサ２３０５が決定した場合、プロセス９７００はステップ９７０７に進む。そうでない場合、プロセス９７００は終了する。ステップ９７０７で、ソケットが開いているとプロセッサ２３０５が決定した場合、プロセス９７００はステップ９７０９に進む。そうでない場合、プロセス９７００は、ステップ９７１１に進む。
【０３２９】
ステップ９７０９で、プロセッサ２３０５は、送信のため作成されたコマンドをメモリ２３０６内のキューに入れる。ステップ９７１１で、プロセッサ２３０５は、作成されたソケットを接続し、プロセス９７００は、終了する。
【０３３０】
３．７．４  ソケット読み込み処理プロセス
図９８は、ソケット読み込みコマンドを処理するプロセス９８００を示す流れ図である。プロセス９８００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３３１】
プロセス９８００は、ソケットから読み出せる用意ができているデータがあれば実行される。プロセス９８００は、ソケットの型を決定し、その型のソケットに専用の機能を実行する。プロセス９８００は、ソケットが制御ソケットである場合に、プロセス９８００がステップ９８０３に進む第１のステップ９８０１から始まる。そうでない場合、プロセス９８００は、ステップ９８０５に進む。ステップ９８０３で、プロセッサ２３０５は、制御応答を受信する。
【０３３２】
ステップ９８０５で、ソケットが通知ソケットの場合、プロセス９８００は、ステップ９８０７に進む。そうでない場合、プロセス９８００は、ステップ９８０９に進む。ステップ９８０７で、プロセッサ２３０５は、通知応答を受信する。
【０３３３】
ステップ９８０９で、ソケットが画像ソケットの場合、プロセス９８００は、ステップ９８１１に進む。そうでない場合、プロセス９８００は終了する。ステップ９８１１で、プロセッサ２３０５は、画像応答を受信し、プロセス９８００は、終了する。
【０３３４】
３．７．５  ソケット切断処理プロセス
図９９は、ソケット切断を処理するプロセス９９００を示す流れ図である。プロセス９９００は、オペレーティング・システムがソケットが切断されたことを記録エンジン２０１に通知した場合に実行される。メモリ２３０６内に構成された送信データ・バッファがデータを含む場合、そのソケット上で送信される必要があるコマンドがある。この場合、プロセッサ２３０５は、接続を確立すべきであることをオペレーティング・システムに通知する。オペレーティング・システムは、後から、接続が正常になされたことを記録エンジン２０１に通知する。
【０３３５】
送信データ・バッファ内にデータが存在しない場合、プロセッサ２３０５は、ソケットの再接続を試みようとしない。ソケットは、その後、新しいコマンドを送信する必要がある場合に接続することができる。
【０３３６】
プロセス９９００は、メモリ２３０６内に構成された送信バッファが使用中である場合に、プロセス９９００がステップ９９０３に進む第１のステップ９９０１から始まる。そうでない場合、プロセス９９００は終了する。ステップ９９０３で、プロセッサ２３０５は、ソケットを接続し、プロセス９９００は、終了する。
【０３３７】
３．７．６  制御コマンド作成プロセス
図１００は、制御コマンドを作成するプロセス１００００を示す流れ図である。プロセス１００００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３３８】
プロセス１００００は、特定のカメラ・サーバ１０９〜１１１との記録エンジン・セッションに対し接続識別子が開いている場合に、プロセス１００００がステップ１０００３に進む第１のステップ１０００１から始まる。そうでない場合、プロセス１００００は、プロセッサ２３０５が開いているカメラ・サーバ・メッセージを作成するステップ１００１４に進み、プロセス１００００は、終了する。
【０３３９】
ステップ１０００３で、カメラ・サーバ情報を受信する必要があるとプロセッサ２３０５が決定した場合、プロセス１００００は次のステップ１００１３に進む。そうでない場合、プロセス１００００は、ステップ１０００５に進む。ステップ１００１３で、プロセッサ２３０５は、カメラ・サーバ情報取得メッセージを作成し、プロセス１００００は、終了する。
【０３４０】
ステップ１００１３に関して、記録エンジン２０１は、接続されているカメラ１１２〜１１５の名前、現在のパン、傾斜、およびズーム位置などのカメラ・サーバ情報の様々な態様を認識する必要がある。その結果、ステップ１００１３で、プロセッサ２３０５は、そのような情報を要求するＨＴＴＰメッセージを生成する。いくつかの実装では、必要な情報のすべてを取得するために様々な要求を別々に実行する必要がある場合がある。簡素化するため、これらの様々な要求を単一のステップに組み合わせることができる。
【０３４１】
ステップ１０００５では、カメラ１１２〜１１５に対するパン、傾斜、およびズーム設定が調整を必要とする場合、プロセス１００００はステップ１０００７に進む。そうでない場合、プロセス１００００は、ステップ１００１５に進む。ステップ１０００７で、特定のカメラ１１２〜１１５のプリセットされたリストが最新のものであるとプロセッサ２３０５が決定した場合、プロセス１００００はステップ１０００９に進む。そうでない場合、プロセス１００００は、ステップ１００１９に進む。
【０３４２】
ステップ１０００９で、特定のカメラ１１２〜１１５に対応するカメラ制御が開いている場合、プロセス１００００はステップ１００１１に進む。そうでない場合、プロセス１００００は、ステップ１００２１に進む。
【０３４３】
ステップ１００１１で、特定のカメラ１１２〜１１５の制御優先度が通常の優先度レベルに設定されているとプロセッサ２３０５が決定した場合、プロセス１００００はステップ１００２７に進む。そうでない場合、プロセス１００００は、ステップ１００２９に進む。ステップ１００２７で、プロセッサ２３０５は、カメラ操作メッセージを作成し、プロセス１００００は、終了する。ステップ１００２９で、プロセッサ２３０５は、優先度メッセージを作成し、プロセス１００００は、終了する。
【０３４４】
ステップ１００１５で、カメラ制御が開いている場合、プロセス１００００は、ステップ１００１７に進む。そうでない場合、プロセス１００００は終了する。ステップ１００１７で、プロセッサ２３０５は、カメラ制御解放メッセージを作成し、プロセス１００００は、終了する。
【０３４５】
ステップ１００１９で、プロセッサ２３０５は、プリセット・リスト取得メッセージを作成し、プロセス１００００は、終了する。
【０３４６】
ステップ１００２１で、特定のカメラ１１２〜１１５の制御優先度が通常の優先度レベル以下に設定されているとプロセッサ２３０５が決定した場合、プロセス１００００はステップ１００２３に進む。そうでない場合、上述のようにプロセス１００００は、ステップ１００２９に進む。
【０３４７】
カメラ・サーバ１０９〜１１１では、通常、特定の制御優先度レベル（例えば、７）で制御を要求するストレージ・サーバ（例えば、２３００Ａ）は、同じ制御優先度レベル（例えば、７）を使用してすでに制御権を有する、他のストレージ・サーバ（例えば、２３００Ｂ）から制御権を取得することができる。しかし、これにより、２つ以上のストレージ・サーバ（例えば、ストレージ・サーバ２３００Ａおよび２３００Ｂ）は同じ制御優先度レベルを使用し、互いに特定のカメラ・サーバ（例えば、１０９）の制御権を絶えず取り合う可能性がある。
【０３４８】
例えば、ストレージ・サーバ２３００Ａおよび２３００Ｂがカメラ１１３の異なるプリセット・カメラ位置から記録するように設定される場合、ストレージ・サーバ２３００Ａおよび２３００Ｂは、カメラ１１３の位置を変更するため特定のカメラ・サーバ１０９の制御を要求し続けることができる。これを避けるために、制御権を取得するために、カメラ・サーバ２３００Ａのプロセッサ２３０５は、特定のカメラ・サーバ１１３への接続の優先度レベルを通常レベルよりも低い６に設定することができる。その結果、カメラ・サーバ２３００Ａは、ストレージ・サーバ２３００Ａに制御権を与えることなく、通常優先度レベル７で実行される、ストレージ・サーバ２３００Ｂまたは他のストレージ・サーバ２３００からは制御権を奪わない。制御権がいったんストレージ・サーバ２３００Ａに与えられた後、ストレージ・サーバ２３００Ａのプロセッサ２３０５は、ストレージ・サーバ２３００Ａの優先度レベルを通常レベル７に戻し、他のストレージ・サーバ２３００が制御権を取得しないようにする。
【０３４９】
ステップ１００２３で、カメラ制御要求が行われたとプロセッサ２３０５が決定した場合、プロセス１００００はステップ１００２５に進む。そうでない場合、プロセス１００００は終了する。ステップ１００２５で、プロセッサ２３０５は、カメラ制御取得メッセージを作成し、プロセス１００００は、終了する。
【０３５０】
３．７．７  制御応答受信プロセス
図１０１は、制御応答を受信するプロセス１０１００を示す流れ図である。
【０３５１】
プロセス１０１００は、制御ソケット上で読み出せる用意ができているデータがあれば実行される。プロセス１０１００は、すべての応答データが同時に利用できるわけではない場合に、単一の応答に対し複数回実行できる。
【０３５２】
現在の応答が完全なＨＴＴＰヘッダをまだ含んでいない場合、ＨＴＴＰヘッダに対するバッファ内にデータが受信される。ＨＴＴＰヘッダを解析して応答の内容の長さを取得し、追加データが利用可能であれば、そのデータが受信データ・バッファ内に受信される。
【０３５３】
与えられたソケットについてすべての応答データが受信されていない場合、プロセス１０１００は終了する。そうでない場合、応答を制御するプロセスが実行される。
【０３５４】
プロセス１０１００は、第１のステップ１０１０１から始まり、そこで、完全なＨＴＴＰヘッダが受信されたとプロセッサ２３０５が決定した場合に、プロセス１０１００はステップ１０１０９に進む。そうでない場合、プロセッサ２３０５は、ＨＴＴＰヘッダ・データが受信されるステップ１０１０３に進む。
【０３５５】
次のステップ１０１０５で、プロセッサ２３０５は、残りの長さ属性を制御応答の内容長さに設定する。その後、次のステップ１０１０７で、追加データが利用可能であるとプロセッサ２３０５が決定した場合、プロセス１０１００はステップ１０１０９に進む。そうでない場合、プロセス１０１００は終了する。
【０３５６】
ステップ１０１０９で、プロセッサ２３０５は、メモリ２３０６内に構成されたソケット・バッファ内に残りのデータを受信する。その後、次のステップ１０１１１で、プロセッサ２３０５は、応答の残りの長さから応答の受信された部分の長さを引く。次のステップ１０１１３で、応答全体が受信されたとプロセッサ２３０５が決定した場合、プロセス１０１００はステップ１０１１５に進む。そうでない場合、プロセス１０１００は終了する。
【０３５７】
ステップ１０１１５で、プロセッサ２３０５は、制御応答を受信し、プロセス１０１００は、終了する。
【０３５８】
３．７．８  制御応答処理プロセス
図１０２は、制御プロセスを制御するプロセス１０２００を示す流れ図である。プロセス１０２００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３５９】
プロセス１０２００は、制御ソケット上で送信されたコマンドに対する応答として受信されたデータを処理し、受信データが応答であるという要求に基づくいくつかのアクションを実行する。いくつかの要求は、追加処理を必要としない。
【０３６０】
プロセス１０２００は、第１のステップ１０２０１から始まり、そこで、プロセッサ２３０５が開いているカメラ・サーバ要求を検出した場合に、プロセス１０２００はステップ１０２０３に進む。そうでない場合、プロセス１０２００は、ステップ１０２０９に進む。ステップ１０２０３で、プロセッサ２３０５は、要求の応答本体から接続識別子を抽出する。その後、次のステップ１０２０５で、プロセッサ２３０５は、次の通知コマンドを送信し、プロセス１０２００は、ステップ１０２０７に進む。
【０３６１】
ステップ１０２０９で、その要求がカメラ・サーバ情報取得要求であったとプロセッサ２３０５が決定した場合、プロセス１０２００はステップ１０２１１に進む。そうでない場合、プロセス１０２００は、ステップ１０２１３に進む。要求がカメラ・サーバ情報取得要求であった場合、要求の応答本体が解析され、現在のパン、傾斜、ズーム位置、カメラ名などを含む、要求を発行したカメラ・サーバ１０９〜１１１に関する情報を抽出する。ステップ１０２１１で、プロセッサ２３０５は、要求の応答本体からカメラ・サーバ・プロパティを抽出する。その後、プロセス１０２００は、ステップ１０２２１に進む。ステップ１０２１３で、その要求がプリセット・リスト取得要求であったとプロセッサ２３０５が決定した場合、プロセス１０２００はステップ１０２１５に進む。そうでない場合、プロセス１０２００は、ステップ１０２１７に進む。要求がプリセット・リスト要求であった場合、応答本体が解析され、カメラ・サーバに格納されているプリセット位置に関する情報を取得する。したがって、ステップ１０２１５で、プロセッサ２３０５は、要求の応答本体からプリセット設定を抽出し、プロセス１０２００は、ステップ１０２２１に進む。
【０３６２】
ステップ１０２１７で、その要求がカメラ操作要求であったとプロセッサ２３０５が決定した場合、プロセス１０２００はステップ１０２１９に進む。そうでない場合、プロセス１０２００は、ステップ１０２０７に進む。ステップ１０２１９で、プロセッサ２３０５は、パン、傾斜、ズーム（ＰＴＺ）補正フラグを設定する。カメラに対する現在のＰＴＺ設定が記録エンジン内の現在のカメラ設定により必要な設定と整合している場合、「ＰＴＺ  ｃｏｒｒｅｃｔ」フラグがセットされ、これにより、必要なければカメラを移動するコマンドは送信されない。
【０３６３】
ステップ１０２２１で、現在のカメラのパン、傾斜、ズーム設定が所望のパン、傾斜、ズーム設定と異なるとプロセッサ２３０５が決定した場合、プロセス１０２００はステップ１０２０７に進む。そうでない場合、プロセス１０２００は、ステップ１０２０９に進む。ステップ１０２０７で、プロセッサ２３０５は、次の制御コマンドを送信する。要求がカメラ操作要求であった場合、カメラに対する新しいＰＴＺ設定は、記録エンジンにより要求されるものと同じであり、したがって「ＰＴＺ  ｃｏｒｒｅｃｔ」フラグがセットされる。
【０３６４】
３．７．９  通知コマンド作成プロセス
図１０３は、通知コマンドを作成するプロセス１０３００を示す流れ図である。プロセス１０３００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０３６５】
プロセス１０３００は、接続識別子が現在開いているとプロセッサ２３０５が決定した場合に、プロセス１０３００はステップ１０３０９に進む第１のステップ１０３０１から始まる。そうでない場合、プロセス１０３００は、ステップ１０３０３に進む。接続識別子が現在開いていない場合、コマンドは制御ソケット上で送信され、新しい接続識別子が設定される。コマンドは、制御ソケットを引数として、次のコマンドを送信するプロセスを実行することにより送信される。その後、接続識別子が確立されるまで、通知ソケット上で他のコマンドが送信されない場合がある。
【０３６６】
以下で詳しく説明するように、現在のセンサ・ステータスが知られていない場合、現在のセンサ・ステータスを決定するために外部ＩＯステータス・メッセージが作成される。知られている場合、Ｇｅｔ  Ｎｏｔｉｃｅメッセージが作成され、これにより、記録エンジンはセンサおよび運動検出イベントおよびカメラ制御イベントの受信を監視することができる。ステップ１０３０３で、現在のセンサのステータスが知られているとプロセッサ２３０５が決定した場合、プロセス１０３００はステップ１０３０５に進む。そうでない場合、プロセス１０３００は、ステップ１０３０７に進む。ステップ１０３０５で、プロセッサ２３０５は、通知取得メッセージを作成する。Ｇｅｔ  Ｎｏｔｉｃｅメッセージにより、記録エンジン２０１は、センサおよび運動検出イベントおよびカメラ制御イベントの受信を監視することができる。
【０３６７】
ステップ１０３０７で、プロセッサ２３０５は、外部入力／出力（ＩＯ）ステータス・メッセージを作成し、プロセス１０３００は、終了する。ステップ１０３０９で、プロセッサ２３０５は、次の制御コマンドを送信し、プロセス１０３００は、終了する。
【０３６８】
３．７．１０  通知応答受信プロセス
図１０４は、通知応答を受信するプロセス１０４００を示す流れ図である。現在の応答が完全なＨＴＴＰヘッダをまだ含んでいない場合、ＨＴＴＰヘッダに対するバッファ内にデータが受信される。ＨＴＴＰヘッダを解析して応答の内容の長さを取得し、追加データが利用可能であれば、そのデータが受信データ・バッファ内に受信される。
【０３６９】
プロセス１０４００は、完全なＨＴＴＰヘッダが受信されたとプロセッサ２３０５が決定した場合に、プロセス１０４００はステップ１０４０３に進む第１のステップ１０４０１から始まる。そうでない場合、プロセス１０４００は、ステップ１０４１１に進む。ステップ１０４１１で、プロセッサ２３０５は、ＨＴＴＰヘッダ・データを受信する。その後、次のステップ１０４１３で、プロセッサ２３０５は、残りの長さを内容の長さに設定する。次のステップ１０４１５で、追加データが利用可能であるとプロセッサ２３０５が決定した場合、プロセス１０４００はステップ１０４０３に進む。そうでない場合、プロセス１０４００は終了する。
【０３７０】
ステップ１０４０３で、プロセッサ２３０５がメモリ２３０６内に構成されたソケット・バッファ内に残りのデータを受信する場合、次のステップ１０４０５で、プロセッサ２３０５は、通知メッセージの残りの長さから受信された長さを引く。
【０３７１】
次のステップ１０４０７で、通知応答全体が受信された場合、プロセス１０４００は、ステップ１０４０９に進む。そうでない場合、プロセス１０４００は終了する。ステップ１０４０９で、プロセッサ２３０５は、通知応答を処理する。
【０３７２】
３．７．１１  通知応答処理プロセス
図１０５は、プロセス１０４００のステップ１０４０９で実行されるように通知応答を処理するプロセス１０５００を示す流れ図である。プロセス１０５００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。要求が外部入力出力（ＩＯ）ステータス要求であると決定された場合、プロセッサ２３０５は、カメラ１０９〜１１１により報告される現在のセンサおよび運動検出ステータスが記録エンジン２０１により知られているものと一致しているかどうかを決定する。変更があれば、イベント・ルーチンを生成するプロセスを使用して、センサおよび／または運動イベントが生成される。カメラ設定は、以下で詳しく説明するように、カメラ設定を更新するプロセスを実行することによりトリガされたイベントに従って更新される。
【０３７３】
要求が通知取得要求であると決定された場合、プロセッサ２３０５は、その応答から、これがどのような種類の通知であるかを決定する。
【０３７４】
通知がセンサまたは運動検出ステータスの変更を示している場合、イベントを生成するプロセスが呼び出され、カメラ設定は、カメラ設定更新プロセスを呼び出すことによりトリガされたイベントに応じて更新される。
【０３７５】
カメラが他のクライアントにより移動されたことを通知が示している場合、カメラ設定を更新するプロセスが実行され、必要ならば記録エンジン２０１により望まれている位置にカメラを戻し始める。
【０３７６】
カメラ制御が与えられたことを通知が示している場合、次のコマンドを送信するプロセスを使用して制御ソケット上で次のコマンドが送信される。これにより、通常は、カメラを新しい位置に移動するカメラ操作コマンドが生成される。
【０３７７】
カメラ制御が拒絶されたことを通知が示している場合、次のコマンドを送信するプロセスを使用して制御ソケット上で次のコマンドが送信される。これだと、通常、カメラ制御の新しい要求が発行され、その結果、カメラ制御が最終的に付与されたときにループから抜け出る。
【０３７８】
プロセス１０５００は、外部ＩＯステータス要求があるかどうかをプロセッサ２３０５が決定する第１のステップ１０５０１から開始する。要求がない場合（ステップ１０５０１のＮｏオプション）、プロセス１０５００は、ステップ１０５０５に進む。しかし、外部ＩＯステータス要求（ステップ１０５０１のＹｅｓオプション）がある場合、ステップ１０５０３は、センサまたは運動状態が異なるかどうかをチェックする。状態に違いがない場合（ステップ１０５０３のＮｏオプション）、プロセス１０５００は、ステップ１０５１３に進み、そこで、次の通知コマンドが送信される。
【０３７９】
しかし、異なるセンサまたは運動状態がある場合（ステップ１０５０３のＹｅｓオプション）、プロセス１０５００は、ステップ１０５０９に進み、そこで、変更された状態に応じて、センサおよび／または運動イベントを発生する。
【０３８０】
いったんイベントが生成されると、ステップ１０５１１で、パラメータの設定が更新される。その後、ステップ１０５１３で、次の通知コマンドが送信され、プロセス１０５００は終了する。
【０３８１】
外部ＩＯステータス要求がない場合に実行される、ステップ１０５０５では、通知取得要求があるかどうかをチェックする。通知取得要求（ステップ１０５０５のＹｅｓオプション）がある場合、ステップ１０５０７は、センサまたは運動ステータス変更があるかどうかを決定する。
【０３８２】
ステータス変更がある場合（ステップ１０５０７のＮｏオプション）、プロセス１０５００は、ステップ１０５０９に進むが、これについては上で説明している。ステータス変更がない場合（ステップ１０５０７のＮｏオプション）、ステップ１０５１５で、プロセッサ２３０５は、カメラ１１２〜１１５が他のストレージ・サーバにより制御されるかどうかをチェックする。その場合（ステップ１０５１５のＹｅｓオプション）、プロセス１０５００はステップ１０５１１に進み、すでに説明されているように、カメラ設定は更新される。そうでない場合、プロセス１０５００は終了する。
【０３８３】
カメラ１１２〜１１５が他のストレージ・サーバ２３００により制御されない場合（ステップ１０５１５のＮｏオプション）、ステップ１０５１７で、プロセッサ２３０５は、カメラ制御要求が与えられたかどうかをチェックする。要求が与えられている場合（ステップ１０５１７のＹｅｓオプション）、ステップ１０５２１で、次の制御コマンドが送信される。その後、プロセス１０５００は、ステップ１０５１３に進み、そこで、次の通知コマンドが送信される。
【０３８４】
カメラ制御要求が与えられなかった場合（ステップ１０５１７のＮｏオプション）、ステップ１０５１９で、カメラ制御要求が拒絶されたかどうかのチェックが実行される。拒絶が行われていなかった場合（ステップ１０５１９のＮｏオプション）、プロセス１０５００は、ステップ１０５１３に進み、そこで、次の通知コマンドが送信される。しかし、カメラ制御要求が拒絶された場合（ステップ１０５１９のＹｅｓオプション）、制御の流れはステップ１０５２１に進み、次の制御コマンドが送信される。
【０３８５】
３．７．１２  画像コマンド作成プロセス
図１０６は、画像コマンドを作成するプロセス１０６００を示す流れ図である。プロセス１０６００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス１０６００は、画像ソケットが接続されていた場合に実行される。与えられたカメラに現在必要な取得フレーム速度が０よりも大きい場合、画像取得メッセージが作成される。そうでない場合、記録エンジン２０１は、ソケットを使用して画像データを受信する必要はない。
【０３８６】
プロセス１０６００は、必要なフレーム速度が０よりも大きいとプロセッサ２３０５が決定した場合に、プロセス１０６００が終了する第１のステップ１０６０１から始まる。そうでない場合、プロセッサ２３０５は、画像取得メッセージを作成し、プロセス１０６００は、終了する。
【０３８７】
３．７．１３  画像応答受信プロセス
図３８は、画像応答受信プロセス３８００を示す流れ図である。プロセス３８００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス３８００は、カメラ・サーバ１０９〜１１１の画像ソケット上でストレージ・サーバ２３００により受信できるサンプル・データが用意される毎に実行される。
【０３８８】
プロセス３８００は、完全なＨＴＴＰヘッダがカメラ・サーバ１０９〜１１１のうちの１つから受信されたとプロセッサ２３０５が決定した場合に、プロセス３８００はステップ３８０３に進むステップ３７０１から始まる。そうでない場合、プロセス３８００は、ステップ３８１５に進む。ステップ３８０３で、完全なマルチパート・ヘッダが受信されたとプロセッサ２３０５が決定した場合、プロセス３８００はステップ３８０５に進む。そうでない場合、プロセス３８００は、ステップ３８１９に進む。
【０３８９】
ステップ３８１５で、プロセッサ３８１５は、ＨＴＴＰヘッダ・データを受信する。次のステップ３８１７で、利用可能な追加サンプル・データがもうないとプロセッサ２３９５が決定した場合、プロセス３８００は終了する。まだあれば、プロセス３８００はステップ３８１９に進み、そこで、プロセッサ２３０５は、マルチパート・ヘッダ・データを受信する。その後、次のステップ３８２１で、フレーム・バッファ領域がストレージ・サーバ２３００のメモリ２３０６内に確保されているとプロセッサ２３０５が決定した場合に、プロセス３８００はステップ３８２９に直接進む。そうでない場合、プロセス３８００は、ステップ３８２３に進み、そこで、マルチパート・ヘッダが内容の長さを含むとプロセッサ２３０５が決定した場合、プロセス３８００は、ステップ３８２５に進む。そうでない場合、プロセス３８００は終了する。次のステップ３８２５で、プロセッサ２３０５は、残りの長さパラメータを内容の長さに設定する。その後、ステップ３８２７で、プロセッサ２３０５は、受信されるサンプル・データの残りの長さに従ってメモリ２３０６内にフレーム・バッファ領域を確保する。
【０３９０】
プロセス３８００は、次のステップ３８２９で続行し、そこで、追加サンプル・データが利用可能である場合、プロセス３８００はステップ３８０５に進む。そうでない場合、プロセス３８００は終了する。ステップ３８０５で、プロセッサ２３０５は、メモリ２３０６またはハード・ディスク２３１０内に割り当てられたフレーム・バッファ内に残りのサンプル・データを受信する。その後、次のステップ３８０７で、プロセッサ２３０５は、残りのサンプル・データの長さから受信されたサンプル・データの長さを引く。プロセス３８００は次のステップ３８０９で続き、そこで、サンプル・データすべてがカメラ・サーバ１０９〜１１１のうちの１つから受信されたとプロセッサ２３０５が決定した場合に、プロセス３８００はステップ３８１１に進む。そうでない場合、プロセッサ２３０５は終了する。ステップ３８１１で、プロセッサ２３０５は、カメラ・サーバ１０９〜１１１のうちの１つから受信されたサンプル・データのサンプルを処理する。プロセス３８００は、次のステップ３８１３で終了し、そこで、プロセッサ２３０５は、マルチパート・ヘッダをクリアする。
【０３９１】
３．８  フレーム・バッファ・モジュール
上述のように、記録エンジン２０１は、さらに、フレーム・バッファ・モジュール３２９も含む。フレーム・バッファ・モジュール３２９は、カメラ・サーバ１０９〜１１１からサンプル・データを受信し、サンプル・データをストレージ・サーバ２３００のメモリ２３０６内に構成された循環フレーム・バッファに保存する。サンプル・データが記録される画像を表す場合、サンプル・データはビデオ・ファイル管理モジュール３１７に送られ、ハード・ディスク・ドライブ２３１０に書き込まれる。サンプル・データは、さらに、運動検出アルゴリズムにも供給することができる。記録が実行されない場合、サンプル・データは、フレーム・バッファからオーバーフローするまでできる限り長い間、メモリ２３０６内に保持され、イベントがトリガされ、事前イベント記録がそのイベントに対して有効になっている場合に、後でハード・ディスク・ドライブ２３１０に保存することができる。
【０３９２】
図３９は、サンプル（つまり、フレーム）を処理するプロセス３９００を示す流れ図である。プロセス３８００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス３９００は、関連付けられたカメラ・サーバ１０９〜１１１の現在のスケジュールが運動解析を必要とするとプロセッサ２３０５が決定した場合に、プロセス３９００はステップ３９０３に進むステップ３９０１から始まる。そうでない場合、プロセス３９００は、ステップ３９１７に直接進む。ステップ３９０３で、プロセッサ２３０５は、現在のサンプルのタイムスタンプをメモリ２３０６内に構成された運動検出器速度カウンタに追加する。次のステップ３９０５で、運動検出器速度カウンタの値が所定の運動検出器しきい値を超える場合、プロセス３９００はステップ３９０７に進む。そうでない場合、プロセス３９００は、ステップ３９１７に進む。ステップ３９０７で、プロセッサ２３０５は、運動検出器アルゴリズムを現在のサンプルに適用する。ステップ３９０２で、適当な運動検出器アルゴリズムを使用することができる。
【０３９３】
次のステップ３９０９で、新しい運動が検出された場合、プロセス３９００は、ステップ３９１１に進む。そうでない場合、プロセス３９００は、ステップ３９２３に進む。ステップ３９１１で、プロセッサ２３０５は、運動開始イベントを処理する。その後、ステップ３９１３で、プロセッサ２３０５は、メモリ２３０６内に構成された事前イベント・バッファを処理する。運動ステータスは、次のステップ３９１４で検出されるように設定される。
【０３９４】
ステップ３９２３で、運動が検出されたとプロセッサ２３０５が決定した場合、プロセス３９００はステップ３９２５に進む。そうでない場合、プロセス３９００は、ステップ３９１７に進む。ステップ３９２５で、プロセッサ２３０５は、運動停止イベントを処理する。その後、次のステップ３９２７で、プロセッサ２３０５は、運動ステータスを未検出に設定する。
【０３９５】
プロセス３９００は、次のステップ３９１５で続行し、そこで、プロセッサ２３０５は、現在のスケジュールを再処理する。その後、ステップ３９１７で、現在のスケジュールではサンプル・データを保存する必要があるとプロセッサ２３０５が決定した場合、そのプロセスはステップ３９１９に進む。そうでない場合、プロセス３９００は終了する。ステップ３９１９で、現在のサンプルが関連付けられたメディア・ファイル１８００に書き込まれる。
【０３９６】
３．９  記録エンジン・アクセス・プロトコル
記録エンジン２０１に対するアクセス・プロトコルが定義される。アクセス・プロトコルは、６つのコマンドを含み、２つの主要なグループに細分できる。
【０３９７】
「ＲＥ＿」プレフィックスが付くコマンドは、記録エンジン２０１にのみ影響し、記録エンジン２０１の管理者インターフェースにより管理される。管理者インターフェースについては、以下でさらに詳しく説明する。
【０３９８】
「ＮＶＲ＿」プレフィックスが付くコマンドは、システム１００全体に丸ごと影響を及ぼし、ストレージ・サーバ２３００がシステム１００のマスタ・ストレージ・サーバの容量内で動作しているときにストレージ・サーバ２３００上で呼び出される。「ＮＶＲ＿」プレフィックスの付きコマンドは、記録エンジン２０１のビューア・インターフェースにより管理される。
【０３９９】
コマンドは、ビューア２２００または他のデバイス（例えば、コンピュータ、ＰＤＡ、電話機、または他のデバイス）上でソフトウェア・アプリケーションにより、Ｗｅｂサーバ２１３に送信され、Ｗｅｂサーバ２１３は、それらのコマンドを記録エンジン２０１に渡す。コマンドは、上述のように、管理者インターフェース・モジュール３１３により記録エンジン２０１内で処理される。コマンドは、通常、共通ゲートウェイ・インターフェース（ＣＧＩ）を使用してＷｅｂサーバ２１３から記録エンジン２０１に送信され、記録エンジン２０１からの応答は、通常、これもまた、ＣＧＩインターフェースを使用してＷｅｂサーバ２１３に返される。ストレージ・サーバ２３００上でより効率のよい動作をさせるために、ＦａｓｔＣＧＩ（登録商標）インターフェースを使用できる。
【０４００】
コマンドは、さらに、同じストレージ・サーバ２３００上で稼働しているソフトウェア・アプリケーション（ビューアなど）から送信することもできる。この場合、コマンドは、そのまま、送信側ソフトウェアによりＷｅｂサーバ２１３に送信される。しかし、このような場合、コマンドがネットワーク２２２０上で送信されるのではなく、コマンドは、通常、同じコンピュータ２３００内のソケット接続を通じて送信される。
【０４０１】
その後、記録エンジン２０１によりＷｅｂサーバ２１３に返される応答は、通常、Ｗｅｂサーバ２１３によりビューア２２００にＨＴＴＰとして返される。
【０４０２】
３．９．１  管理者インターフェース
記録エンジン管理者インターフェースは、３つのコマンドを備えており、これらのコマンドを以下の表７にまとめた。
【０４０３】
【表７】
2007505523.tif 000009
【０４０４】
３．９．１．１  ＲＥ＿Ｇｅｔコマンド
ＲＥ＿Ｇｅｔコマンドは、以下のリソース上でＨＴＴＰ「Ｇｅｔメソッド」を使用してビューア２２００により要求として送信される。
【０４０５】
／webview-nvr／re_get.fcgi?action=＜val＞                      （８）
リソース（８）の「ａｃｔｉｏｎ」引数は、要求されている情報の型を記述する。「ａｃｔｉｏｎ」引数の中でいくつかの値が使用される場合、他にもいくつかオプション引数が存在しうる。
【０４０６】
ＲＥ＿Ｇｅｔコマンドの戻り値は、指名された型のストレージ・サーバ構成オブジェクト（ＳＳＣＯ）とすることができる。無効な型が指定された場合、データは返されない。
【０４０７】
図４０は、記録エンジン２０１により実行されるようなＲＥ＿Ｇｅｔコマンドを処理するプロセス４０００を示す流れ図である。プロセス４０００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４０００は、ＲＥ＿Ｇｅｔコマンドに関連付けられたパラメータがプロセッサ２３０５により復号化される第１のステップ４００１から始まる。その後、次のステップ４００３で、そのコマンドに関連付けられたアクションが「ｒｅｄｅｔａｉｌｓ」に等しい場合、プロセス４０００はステップ４００５に進む。そうでない場合、プロセス４０００は、ステップ４００７に進む。ステップ４００５で、プロセッサ２３０５は、型「ｇｅｎｅｒａｌ」のストレージ・サーバ構成オブジェクトをＷｅｂサーバ２１３に送信する。
【０４０８】
ステップ４００７で、そのコマンドに関連付けられたアクションが「ｃａｍｓｖｒｄｅｔａｉｌｓ」に等しい場合、プロセス４０００はステップ４００９に進む。そうでない場合、プロセス４０００は、ステップ４０１１に進む。ステップ４００９で、プロセッサ２３０５は、型「ｃａｍｓｖｒ」のストレージ・サーバ構成オブジェクトをＷｅｂサーバ２１３に送信する。
【０４０９】
ステップ４０１１で、そのコマンドに関連付けられたアクションが「ｃａｍｅｒａｄｅｔａｉｌｓ」に等しい場合、プロセス４０００はステップ４０１３に進む。そうでない場合、プロセス４０００は、ステップ４０１５に進む。ステップ４０１３で、プロセッサ２３０５は、型「ｃａｍｅｒａ」のストレージ・サーバ構成オブジェクトをＷｅｂサーバ２１３に送信する。
【０４１０】
ステップ４０１５で、そのコマンドに関連付けられたアクションが「ｓｃｈｅｄｄｅｔａｉｌｓ」に等しい場合、プロセス４０００はステップ４０１７に進む。そうでない場合、プロセス４０００は、ステップ４０１９に進む。ステップ４０１７で、プロセッサ２３０５は、型「ｓｃｈｅｄ」のストレージ・サーバ構成オブジェクトをＷｅｂサーバ２１３に送信する。ステップ４０１９で、プロセッサ２３０５は、空の応答を送信する。
【０４１１】
３．９．１．１．１  ＲＥＤＥＴＡＩＬＳアクション
ＲＥＤＥＴＡＩＬＳアクションは、一般的記録エンジン２０１構成を取り出す。ＲＥＤＥＴＡＩＬＳアクションは、上述のように、型「ｇｅｎｅｒａｌ」のストレージ・サーバ構成オブジェクトを返す。追加オプション引数は利用できない。
【０４１２】
３．９．１．１．２  ＣＡＭＳＶＲＤＥＴＡＩＬＳアクション
ＣＡＭＳＶＲＤＥＴＡＩＬＳアクションは、ストレージ・サーバ２３００に関連付けられたカメラ・サーバ１０９〜１１１およびカメラ・サーバ１０９〜１１１に接続されたカメラ１１２〜１１５のリストを取り出す。ＣＡＭＳＶＲＤＥＴＡＩＬＳアクションは、上述のように、型「ｃａｍｓｖｒ」のストレージ・サーバ構成オブジェクトを返す。オプション引数「ｃａｍｓｖｒｓ」は、カメラ・サーバ１１０〜１１５のホスト名のカンマで区切られたリストを含む。「ｃａｍｓｖｒｓ」引数が存在する場合、返されるカメラ・サーバ１０９〜１１１のリストは、引数内で言及されたものに制限される。そうでない場合、すべてのカメラ・サーバ１０９〜１１１が返される。
【０４１３】
３．９．１．１．３  ＣＡＭＥＲＡＤＥＴＡＩＬＳアクション
ＣＡＭＥＲＡＤＥＴＡＩＬＳアクションは、ストレージ・サーバ２３００に関連付けられたカメラ１１２〜１１５のリストおよびカメラ１１２〜１１５のステータスを取り出す。ＣＡＭＥＲＡＤＥＴＡＩＬＳアクションは、上述のように、型「ｃａｍｅｒａ」のストレージ・サーバ構成オブジェクトを返す。オプション引数「ｃａｍｅｒａｓ」は、カメラ識別子のカンマで区切られたリストを含む。「ｃａｍｅｒａｓ」引数が存在する場合、返されるカメラ１１２〜１１５のリストは、引数内で言及されたものに制限される。そうでない場合、すべてのカメラ１１２〜１１５が返される。
【０４１４】
３．９．１．１．４  ＳＣＨＥＤＤＥＴＡＩＬＳアクション
ＳＣＨＥＤＤＥＴＡＩＬＳアクションは、ストレージ・サーバ２３００に属しているスケジュールのリストを取り出す。ＳＣＨＥＤＤＥＴＡＩＬＳアクションは、上述のように、型「ｓｃｈｅｄ」のストレージ・サーバ構成オブジェクトを返す。オプション引数「ｃａｍｅｒａｓ」は、カメラ識別子のカンマで区切られたリストを含み、オプション引数「ｄａｙｓ」は、曜日名のカンマで区切られたリストを含む。「ｃａｍｅｒａｓ」または「ｄａｙｓ」のいずれかの、または両方の引数が存在する場合、返されるスケジュールのリストは、指定されたカメラ１１２〜１１５および／または曜日に関連付けられたスケジュール制限される。
【０４１５】
３．９．１．２  ＲＥ＿Ｓｅｔコマンド
ＲＥ＿Ｓｅｔコマンドは、以下のリソース上でＨＴＴＰ「Ｐｏｓｔメソッド」を使用してビューア２２００により要求として送信される。
【０４１６】
／webview-nvr／re_set.fcgi?action=＜val＞                    （９）
リソース（９）の「ａｃｔｉｏｎ」引数は、送信される情報の型を記述する。「ａｃｔｉｏｎ」引数の中でいくつかの値が使用される場合、他にもいくつかオプション引数が存在しうる。
【０４１７】
ストレージ・サーバ構成オブジェクトは、要求メッセージの本体内で供給することができる。ストレージ・サーバ構成オブジェクトは、図４を参照しつつ上で説明されているように、ネットワーク・ビデオ・レコーダ要素４００においてａｃｔｉｏｎ属性を含む。
【０４１８】
ＲＥ＿Ｓｅｔコマンドにより実行されるオペレーションは、アトミックでない。ＲＥ＿Ｓｅｔコマンドのプロセスは、問題が発生すると直ちに停止し、すでに実行されてしまっている変更をロールバックする試みはなされない。
【０４１９】
Ｗｅｂサーバ２１３内のＲＥ＿Ｓｅｔコマンドのアクセス特権は、ＲＥ＿Ｓｅｔコマンドへのアクセスが管理者であるユーザに許されるように設定される。
【０４２０】
ＲＥ＿Ｓｅｔコマンドが正常に完了すると、記録エンジン２０１は、変更されたカメラ・サーバ１０９〜１１１またはスケジュールの構成を記述しているストレージ・サーバ構成オブジェクトをＷｅｂサーバ２１３に返す。返されたストレージ・サーバ構成オブジェクトは、ストレージ・サーバ２３００に新しく割り当てられたカメラ・サーバ１０９〜１１１のカメラ識別子を取得するために使用することができる。
【０４２１】
エラーが発生した場合、プロセッサ２３０５により、ＮＶＲ−ＳＴＡＴＵＳのタグを持つ単一要素とともに短いＸＭＬドキュメントが返されるようにできる。ＮＶＲ−ＳＴＡＴＵＳタグの内容に、発生したエラーを記述する。
【０４２２】
図４１は、記録エンジン２０１により実行されるようなＲＥ＿Ｓｅｔコマンドを処理するプロセス４１００を示す流れ図である。プロセス４１００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０４２３】
プロセス４１００は、ＲＥ＿Ｓｅｔコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ２３０５により復号化される第１のステップ４１０１から始まる。その後、次のステップ４１０３で、そのコマンドに関連付けられたアクションが「ｃａｍｓｖｒｄｅｔａｉｌｓ」に等しい場合、プロセス４１００はステップ４１０５に進む。そうでない場合、プロセスは、ステップ４１０７に進む。ステップ４１０５で、プロセッサ２３０５は、特定のカメラ・サーバ１０９〜１１１の詳細を設定する。
【０４２４】
ステップ４１０７で、そのコマンドに関連付けられたアクションが「ｓｃｈｅｄｄｅｔａｉｌｓ」に等しい場合、プロセス４１００はステップ４１０９に進む。そうでない場合、プロセスは、ステップ４１１１に進む。ステップ４１０９で、プロセッサ２３０５は、特定のカメラ・サーバ１０９〜１１１のスケジュール詳細を設定する。
【０４２５】
ステップ４１１１で、プロセッサ２３０５は、空の応答をＷｅｂサーバ２１３に送信する。
【０４２６】
３．９．１．２．１  ＣＡＭＳＶＲＤｅｔａｉｌｓアクション
ＣＡＭＳＶＲＤＥＴＡＩＬＳアクションは、ストレージ・サーバ２３００上で、カメラ１１２〜１１５およびカメラ・サーバ１０９〜１１１に関する情報を追加、修正、および削除するために使用される。ストレージ・サーバ２３００上のカメラ１１２〜１１５およびカメラ・サーバ１０９〜１１１に関する情報に関して、表現「ａｄｄ」、「ｍｏｄｉｆｙ」、および「ｄｅｌｅｔｅ」は、それぞれ、カメラ１１２〜１１５またはカメラ・サーバ１０９〜１１１に関する情報の追加、情報の修正、および情報の削除を指す。関連付けられたネットワーク・ビデオ・レコーダ要素４００内のａｃｔｉｏｎ属性は、さらに、コマンドの動作を定義する。図４２は、カメラ・サーバ１０９〜１１１の詳細を設定するプロセス４２００を示す流れ図である。プロセス４２００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。
【０４２７】
プロセス４２００は、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがａｄｄである場合、プロセス４２００はステップ４２０３に進む第１のステップ４２０１から始まる。そうでない場合、プロセス４２００は、ステップ４２０９に進む。ステップ４２０３で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ１０９〜１１１のすべてをストレージ・サーバ２３００に関連付けられているカメラ・サーバ１０９〜１１１の集合に追加する。次のステップ４２０５で、コマンドが成功した場合、プロセス４２００は、ステップ４２０７に進む。そうでない場合、プロセス４２００は、ステップ４２２１に進む。ステップ４２０７で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ１０９〜１１１のそれぞれの詳細を含むストレージ・サーバ構成オブジェクトをストレージ・サーバ２３００に関連付けられているカメラ・サーバ１０９〜１１１のそれぞれに送信する。
【０４２８】
ステップ４２０９で、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｍｏｖｅｉｎである場合、プロセス４２００はステップ４２０３に進む。そうでない場合、プロセス４２００は、ステップ４２１１に進む。ステップ４２１１で、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｅｄｉｔである場合、プロセス４２００はステップ４２１３に進む。そうでない場合、プロセス４２００は、ステップ４２１５に進む。ステップ４２１３で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクトにリストされているカメラ・サーバ１０９〜１１１のすべてに関係する設定を変更し、その後、プロセスはステップ４２０５に進む。
【０４２９】
ステップ４２１５で、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｄｅｌｅｔｅである場合、プロセス４２００はステップ４２１９に進む。そうでない場合、プロセス４２００は、ステップ４２１７に進む。ステップ４２１９で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクトにリストされているカメラ・サーバ１０９〜１１１に関するすべての情報を削除し、その後、プロセスはステップ４２２１に進む。ステップ４２２１で、プロセッサ２３０５は、成功コードを生成し、プロセス４２００は、終了する。
【０４３０】
ステップ４２１７で、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｍｏｖｅｏｕｔである場合、プロセス４２００はステップ４２１９に進む。そうでない場合、プロセス４２００は、ステップ４２２３に進む。ステップ４２２３で、プロセッサ２３０５は、空の応答を生成し、プロセス４２００は、終了する。
【０４３１】
３．９．１．２．１．１  ＡＤＤおよびＭＯＶＥＩＮアクション
上述のように、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがａｄｄまたはｍｏｖｅｉｎである場合、与えられたストレージ・サーバ構成オブジェクト内に記述されているすべてのカメラ・サーバ１０９〜１１１がストレージ・サーバ２３００に追加される。このオペレーションは、以下の理由から失敗する場合がある。
【０４３２】
（ｉ）カメラ・サーバ１０９〜１１１を追加するとシステム１００内に存在するカメラ・サーバ１０９〜１１１の個数は強制的最大許容値を超える場合（例えば、これは、６４となるように構成することができる）。
【０４３３】
（ｉｉ）カメラ・サーバ１０９〜１１１は、すでに、ストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ１０９〜１１１のうちの１つと同じホスト名およびポートとともに追加されている。
【０４３４】
（ｉｉｉ）カメラ・サーバ１０９〜１１１のうちの１つについて指定されたホスト名が無効である。
【０４３５】
（ｉｖ）カメラ・サーバ１０９〜１１１のうちの１つについて指定されたディレクトリ名が無効である。
【０４３６】
３．９．１．２．１．２  ＭＯＤＩＦＹアクション
上述のように、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｍｏｄｉｆｙである場合、与えられたストレージ・サーバ構成オブジェクト内に記述されているすべてのカメラ・サーバ１０９〜１１１がストレージ・サーバ２３００の中の対をなすもう片方とマッチングされ、新しい設定が入力される。カメラ・サーバ１０９〜１１１の個数が変更された場合、必要なカメラ１１２〜１１５がストレージ・サーバ２３００に追加されるか、または削除される。
【０４３７】
カメラ識別子は、静的であり、どのような状況でも変更されないことが好ましい。
【０４３８】
ｍｏｄｉｆｙアクション・オペレーションは、以下の理由から失敗する場合がある。
【０４３９】
（ｉ）カメラ・サーバ１０９〜１１１を修正するとシステム１００内に存在するカメラ・サーバ１０９〜１１１の個数は強制的最大許容値を超える場合（例えば、これは、６４となるように構成することができる）。
【０４４０】
（ｉｉ）指定されたカメラ・サーバ１０９〜１１１のうちの１つがシステム１００に追加されていない場合。
【０４４１】
（ｉｉｉ）カメラ・サーバ１０９〜１１１のうちの１つについて指定されたホスト名が無効である場合。
【０４４２】
（ｉｖ）カメラ１１２〜１１５のうちの１つについて指定されたディレクトリ名が無効である場合。
【０４４３】
３．９．１．２．１．３  ＤＥＬＥＴＥおよびＭＯＶＥＯＵＴアクション
上述のように、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｄｅｌｅｔｅまたはｍｏｖｅｏｕｔである場合、与えられたストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ１０９〜１１１に関するすべての情報がストレージ・サーバ２３００から削除される。ＣＡＭＳＶＲ要素内に必要な唯一の情報は、ＨＯＳＴ要素である。ＣＡＭＳＶＲ要素の他の要素は、この特別な場合には省略できる。
【０４４４】
ｄｅｌｅｔｅおよびｍｏｖｅｏｕｔオペレーションは、ストレージ・サーバ構成オブジェクトで指定されたカメラ・サーバ１０９〜１１１がシステム１００に追加されていない場合に失敗することがある。
【０４４５】
３．９．１．２．２  ＳＣＨＥＤＤＥＴＡＩＬＳアクション
ＳＣＨＥＤＤＥＴＡＩＬＳアクションは、カメラ１１２〜１１５に関連付けられたスケジュール曜日を修正し、削除するために使用される。個々のスケジュール・アイテムは、修正されないことが好ましい。変更が行われると、一日全体が一度に書き換えられる。ネットワーク・ビデオ・レコーダ要素４００内のａｃｔｉｏｎ属性は、さらに、コマンドの動作を定義する。しかし、ＳＣＨＥＤＤＥＴＡＩＬＳアクションのａｃｔｉｉｏｎ属性は、３つの値「ａｄｄ」、「ｍｏｄｉｆｙ」、および「ｄｅｌｅｔｅ」のみに制限される。
【０４４６】
図４３は、カメラ・サーバ１０９〜１１１スケジュール詳細を設定するプロセス４３００を示す流れ図である。プロセス４３００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４３００は、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがａｄｄである場合、プロセス４３００はステップ４３０３に進む第１のステップ４３０１から始まる。そうでない場合、プロセス４３００は、ステップ４３０９に進む。ステップ４３０３で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクトにより記述される、ストレージ・サーバ２３００に関連付けられたカメラ・サーバ１０９〜１１１のスケジュール詳細のすべてを置き換える。
【０４４７】
次のステップ４３０５で、コマンドが成功した場合、プロセス４３００は、ステップ４３０７に進む。そうでなければ、プロセス４３００は、プロセッサ２３０５がエラーを生成するステップ４３１５に進む。ステップ４３０７で、プロセッサ２３０５は、Ｗｅｂサーバ２１３を介して新しく修正されたスケジュール詳細を含むストレージ・サーバ構成オブジェクトをビューア２２００に送信する。ステップ４３１１で、プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｄｅｌｅｔｅである場合、プロセス４３００はステップ４３１３に進む。そうでない場合、プロセス４３００は、ステップ４３１７に進む。ステップ４３１３で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクトにリストされているスケジュール曜日を削除し、その後、プロセスはステップ４３１５に進む。
【０４４８】
ステップ４３１７で、プロセッサ２３０５は、空の応答を生成し、プロセス４３００は、終了する。
【０４４９】
３．９．１．２．２．１  ＡＤＤアクション
プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがａｄｄである場合、ストレージ・サーバ構成オブジェクト内で参照されているすべてのスケジュール曜日がストレージ・サーバ２３００に追加される。与えられたカメラ・サーバ２３００に対し特定の曜日がすでに存在している場合、その曜日は新しい曜日で上書きされる。
【０４５０】
３．９．１．２．２．２  ＭＯＤＩＦＹアクション
プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがｍｏｄｉｆｙである場合、ストレージ・サーバ構成オブジェクト内で参照されているすべてのスケジュール曜日がストレージ・サーバ２３００に追加される。与えられたカメラ・サーバ２３００に対し特定の曜日がすでに存在している場合、その曜日はストレージ・サーバ構成オブジェクト内に記述されている新しい曜日で上書きされる。ＭＯＤＩＦＹアクションは、ＡＤＤアクションと実質的に同じである。
【０４５１】
３．９．１．２．２．３  ＤＥＬＥＴＥアクション
プロセッサ２３０５により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションが「ｄｅｌｅｔｅ」である場合、ストレージ・サーバ構成オブジェクト内で参照されているすべてのスケジュール曜日がストレージ・サーバ２３００から削除される。ＤＡＹ要素内で必要な唯一の情報は、削除すべき曜日を識別する、ｎａｍｅ属性である。
【０４５２】
ＤＥＬＥＴＥオペレーションは、指定されたスケジュール曜日がシステム１００内の与えられたカメラ・サーバ１０９〜１１１内に存在しない場合に失敗することがある。
【０４５３】
３．９．１．３  ＲＥ＿Ｔｒｉｇｇｅｒコマンド
ＲＥ＿Ｔｒｉｇｇｅｒコマンドは、以下のリソース（１０）上でＨＴＴＰ「Ｐｏｓｔメソッド」を使用してＣＧＩ要求として送信される。
【０４５４】
／webview-nvr／re_trigger.fcgi                            （１０）
ＲＥ＿Ｔｒｉｇｇｅｒコマンドのストレージ・サーバ構成オブジェクトは、要求メッセージの本体内で供給することができる。ＲＥ＿Ｔｒｉｇｇｅｒコマンドに対するストレージ・サーバ構成オブジェクトは、関連付けられたネットワーク・ビデオ・レコーダ要素４００内のａｃｔｉｏｎ属性を含む。ａｃｔｉｏｎ属性値は「ｔｒｉｇｇｅｒ」に等しい。
【０４５５】
ＲＥ＿Ｔｒｉｇｇｅｒコマンドに対するストレージ・サーバ構成オブジェクトは、ＣＡＭＥＲＡ要素４０９のリストを含み、それぞれの要素は、トリガされるべき、１つのカメラ・サーバ１０９〜１１１のカメラ識別子を指定する。ＲＥ＿Ｔｒｉｇｇｅｒコマンドに対するストレージ・サーバ構成オブジェクトで指定されたそれぞれのカメラ・サーバ１０９〜１１１は、最大フレーム（つまり、サンプル）速度で６０秒間記録し、その後、特定のカメラ・サーバ１０９〜１１１が、その特定のカメラ・サーバ１０９〜１１１が記録し始めたときのモードに戻るように設定される。
【０４５６】
ＣＡＭＥＲＡ要素４０９内の他のデータは無視され、また省略することができる。ＲＥ＿Ｔｒｉｇｇｅｒコマンドは、単一のＮＶＲーＳＴＡＴＵＳ要素とともにＸＭＬドキュメントを返す。ＮＶＲ−ＳＴＡＴＵＳ要素の内容は、記録が正常にトリガされたかどうかを示すか、またはエラーが発生した場合にその詳細を示す。
【０４５７】
図４４は、記録エンジン２０１により実行されるようなＲＥ＿Ｔｒｉｇｇｅｒコマンドを処理するプロセス４４００を示す流れ図である。プロセス４４００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４４００は、ＲＥ＿Ｔｒｉｇｇｅｒコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ２３０５により復号化される第１のステップ４４０１から始まる。その後、次のステップ４４０３で、そのコマンドに関連付けられたアクションが「ｔｒｉｇｇｅｒ」に等しい場合、プロセス４４００はステップ４４０５に進む。そうでない場合、プロセス４４００は、ステップ４４０９に進む。
【０４５８】
ステップ４４０５で、ストレージ・サーバ構成オブジェクト内にまだトリガされていないカメラ１１２〜１１５が残っているとプロセッサ２３０５が決定した場合、プロセス４４００はステップ４４０７に進む。そうでない場合、プロセス４４００は、ステップ４４１５に進む。
【０４５９】
ステップ４４０７で、プロセッサ２３０５は、ストレージ・サーバ構成オブジェクトから次のカメラ１１２〜１１５を選択する。その後、次のステップ４４１７で、プロセッサ２３０５は、ユーザ名を含むオペレータ・オーバーライド・イベントを生成する。次のステップ４４１１で、プロセッサ２３０５は、特定のカメラ１１２〜１１５上のオペレータ・オーバーライドをトリガする。その後、次のステップ４４１３で、プロセッサ２３０５は、識別されたカメラ１１２〜１１５の設定を更新する。
【０４６０】
ステップ４４１５で、プロセッサ２３０５は、成功またはエラー・コードを生成し、プロセス４４００は、終了する。
【０４６１】
ステップ４４０９で、プロセッサ２３０５は、空の応答を生成し、プロセス４４００は、終了する。
【０４６２】
３．９．２  ビューア・インターフェース
記録エンジン２０１は、ビューア・インターフェースを備える。ビューア・インターフェースは、３つのコマンドを備えており、これらのコマンドを以下の表８にまとめた。
【０４６３】
【表８】
2007505523.tif 000010
【０４６４】
３．９．２．１  ＮＶＲ＿ＵｓｅｒＧｅｔコマンド
ＮＶＲ＿ＵｓｅｒＧｅｔコマンドは、以下のリソース（１１）上でＨＴＴＰ「Ｇｅｔメソッド」を使用して要求として送信される。
【０４６５】
／webview-nvr／nvr_userget.fcgi?file=＜val＞                （１１）
リソース（１１）内の「ｆｉｌｅ」引数の値は以下のうちの１つとすることができる。
【０４６６】
（ｉ）ｃｏｎｆｉｇ−一連の知られているストレージ・サーバ２３００、一連の知られているカメラ・サーバ１０９〜１１１、一連の知られているカメラ１１２〜１１５を記述するハード・ディスク・ドライブ２３１０からファイルを取り出し、カメラ１１２〜１１５を一連のＺｏｎｅｓとＬｏｃａｔｉｏｎｓ（後述）に関係付ける。
【０４６７】
（ｉｉ）ｕｌａｙｏｕｔ−単一ユーザによりカスタマイズされたレイアウトを格納するために使用することができるユーザ特有のファイルであるパーソナル・レイアウト・ファイルをハード・ディスク・ドライブ２３１０から取り出す。
【０４６８】
（ｉｉｉ）ｐｌａｙｏｕｔ−管理者特権を持つユーザしか修正できないファイルである共有レイアウト・ファイルをハード・ディスク・ドライブ２３１０から取り出す。ファイルは、システム１００のすべてのユーザ（つまり、オペレータおよび管理者）により使用されることができるレイアウトを含む。
【０４６９】
レイアウト・ファイルは、一組のレイアウトを含むファイルである（後述）。
【０４７０】
これらのファイルは、ＮＶＲ＿ＵｓｅｒＧｅｔコマンドへの応答として元の形式で返される。ＮＶＲ＿ＵｓｅｒＧｅｔコマンドは、ユーザ・ログインを示すために記録エンジン２０１により使用されるが、ＮＶＲ＿ＵｓｅｒＧｅｔコマンドは、認証されることを求めて、ビューア２２００により第１のコマンドとして常に送信される。したがって、ユーザ・ログイン・イベントは、ＮＶＲ＿ＵｓｅｒＧｅｔコマンドが記録エンジン２０１により受信されると必ず記録エンジン２０１により生成される。他の配列では、ログイン・イベントは、Ｗｅｂサーバ２１３とともにビューア２２００のＨＴＴＰ認証が成功したこと（ＨＴＴＰダイジェスト認証またはＨＴＴＰ基本認証を含む）を記録エンジン２０１に通知するＷｅｂサーバ２１３に関連付けられたモジュールにより検出することができる。
【０４７１】
図４５は、記録エンジン２０１により実行されるようなＮＶＲ＿ＵｓｅｒＧｅｔコマンドを処理するプロセスを示す流れ図である。プロセス４５００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４５００は、ＮＶＲ＿ＵｓｅｒＧｅｔコマンドに関連付けられたパラメータがプロセッサ２３０５により復号化される第１のステップ４５０１から始まる。その後、次のステップ４００３で、そのコマンドに関連付けられた「ｆｉｌｅ」パラメータが「ｃｏｎｆｉｇ」に等しい場合、プロセス４５００はステップ４５０５に進む。そうでない場合、プロセスは、ステップ４５１３に進む。
【０４７２】
ステップ４５０５で、プロセッサ２３０５は、ファイル名を「ｃｏｎｆｉｇ．ｃｕｉ．ＳＳ」に設定し、その後、プロセス４５００は、ステップ４５０７に進む。
【０４７３】
ステップ４５１３で、そのコマンドに関連付けられた「ｆｉｌｅ」パラメータが「ｐｌａｙｏｕｔ」に等しい場合、プロセス４５００はステップ４５１５に進む。そうでない場合、プロセス４５００は、ステップ４５１７に進む。ステップ４５１５で、プロセッサ２３０５は、ファイル名を「ｐｌａｙｏｕｔ．ｃｕｉ．ＳＳ」に設定し、その後、プロセス４５００は、ステップ４５０７に進む。
【０４７４】
ステップ４５１７で、そのコマンドに関連付けられた「ｆｉｌｅ」パラメータが「ｕｌａｙｏｕｔ」に等しい場合、プロセス４５００はステップ４５１９に進む。そうでない場合、プロセス４５００は、ステップ４５２３に進む。ステップ４５１９で、プロセッサ２３０５は、Ｗｅｂサーバ２１３にログインするために使用されるユーザ名を決定する。次のステップ４５２１で、プロセッサ２３０５は、ファイル名を「ｕｌａｙｏｕｔ．ｃｕｉ．」＋ログイン時に使用するユーザ名の値＋「．ＳＳ」（例えば、「ｈｅｎｒｙ」というユーザ名の場合、ファイル名はｕｌａｙｏｕｔ．ｃｕｉ．ｈｅｎｒｙ．ＳＳとなる）に設定し、プロセス４５００はステップ４５０７に進む。
【０４７５】
ステップ４５０７で、プロセッサ２３０５は、読み込みのためステップ４５０５、４５１５、または４５２１で設定されたファイル名でファイルを開く。その後、次のステップ４５０９で、ファイルが正常に開かれたとプロセッサ２３０５が決定した場合、プロセス４５００はステップ４５１１に進む。そうでない場合、プロセス４５００は、プロセッサ２３０５が空の応答を送信するステップ４５２３に進み、プロセス４５００は、終了する。ステップ４５１１で、プロセッサ２３０５は、開いているファイルの内容をＷｅｂサーバ２１３に送信するが、このサーバは、ＨＴＴＰ応答上の開いているファイルの内容を、ＮＶＲ＿ＵｓｅｒＧｅｔコマンドを起動したビューア２２００に送信し、プロセス４５００は終了する。
【０４７６】
３．９．２．２  ＮＶＲ＿ＵｓｅｒＳｅｔコマンド
ＮＶＲ＿ＵｓｅｒＳｅｔコマンドは、以下のリソース（１２）上でＨＴＴＰ「Ｐｏｓｔメソッド」を使用してＷｅｂサーバ２１３に要求として送信される。
【０４７７】
／webview-nvr／nvr_userset.fcgi?file=＜val＞              （１２）
リソース（１２）内の「ｆｉｌｅ」引数の値は以下のようにできる。
【０４７８】
（ｉ）ｕｌａｙｏｕｔ−単一ユーザによりカスタマイズされたビデオ・ウィンドウ・レイアウトを格納するために使用されるユーザ特有のファイルである、パーソナル・レイアウト・ファイルを書き換える。
【０４７９】
ＮＶＲ＿ＵｓｅｒＳｅｔコマンドは、パーソナル・レイアウト・ファイルを要求メッセージの内容で置き換える。
【０４８０】
図４６は、記録エンジン２０１により実行されるようなＮＶＲ＿ＵｓｅｒＳｅｔコマンドを処理するプロセス４６００を示す流れ図である。プロセス４６００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４６００は、ＮＶＲ＿ＵｓｅｒＳｅｔコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ２３０５により復号化される第１のステップ４６０１から始まる。その後、次のステップ４６０３で、そのコマンドに関連付けられた「ｆｉｌｅ」パラメータが「ｕｌａｙｏｕｔ」に等しい場合、プロセス４６００はステップ４６０５に進む。そうでない場合、プロセスは、ステップ４６１５に進む。ステップ４６０５で、プロセッサ２３０５は、Ｗｅｂサーバ２１３にログインするために使用されるユーザ名を決定する。次のステップ４６０７で、プロセッサ２３０５は、ファイル名を「ｕｌａｙｏｕｔ．ｃｕｉ．」＋ユーザ名の値＋「．ＳＳ」に設定する。（例えば、ユーザ名が「ｈｅｎｒｙ」の場合、ファイル名は、ｕｌａｙｏｕｔ．ｃｕｉ．ｈｅｎｒｙ．ＳＳに設定される）。プロセス４６００は、プロセッサ２３０５が書き込みのためこのファイル名でファイルを開く次のステップ４６０９で続行する。次のステップ４６１１で、ファイルが正常に開かれた場合、プロセス４６００は、ステップ４６１３に進む。そうでない場合、プロセス４６００は、ステップ４６１５に進む。ステップ４６１３で、プロセッサ２３０５は、ＮＶＲ＿ＵｓｅｒＳｅｔコマンドで受信されたデータをハード・ディスク・ドライブ２３１０内に構成された開いているファイルに書き込む。プロセス４６００は、次のステップ４６１５で終了し、プロセッサ２３０５は、空の応答をＷｅｂサーバ２１３に送信する。
【０４８１】
３．９．２．３  ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンド
ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドは、以下のリソース（１３）上でＨＴＴＰ「Ｐｏｓｔメソッド」を使用して記録エンジン２０１によりＷｅｂサーバ２１３に送信される。
【０４８２】
／webview-nvr／nvr_adminset.fcgi?file=＜val＞              （１３）
リソース（１３）内の「ｆｉｌｅ」引数の値は以下のようにできる。
【０４８３】
（ｉ）ｃｏｎｆｉｇ−一連の知られているストレージ・サーバ２３００を記述するファイルを書き換え、知られているストレージ・サーバ２３００に関連付けられたカメラ・サーバ１０９〜１１１を一連のＺｏｎｅｓおよびＬｏｃａｔｉｏｎｓ（後述）に関係付ける。
【０４８４】
（ｉｉ）ｐｌａｙｏｕｔ−管理者特権を持つユーザしか修正できない、共有レイアウト・ファイルを書き換える。共有レイアウト・ファイルは、システム１００のすべてのユーザにより使用されることができるレイアウトを含む。
【０４８５】
ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドは、構成または保護レイアウト・ファイルの１つを要求メッセージの内容で置き換える。
【０４８６】
Ｗｅｂサーバ２１３内のＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドのアクセス特権は、ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドへのアクセスが管理者権限を有するユーザにのみ許されるように設定することができる。
【０４８７】
図４７は、記録エンジン２０１により実行されるようなＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドを処理するプロセス４７００を示す流れ図である。プロセス４７００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４７００は、ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ２３０５により復号化される第１のステップ４７０１から始まる。その後、次のステップ４７０３で、そのコマンドに関連付けられた「ｆｉｌｅ」パラメータが「ｃｏｎｆｉｇ」に等しい場合、プロセス４００はステップ４７０５に進む。そうでない場合、プロセスは、ステップ４７１３に進む。ステップ４７０５で、プロセッサ２３０５は、ファイル名を「ｃｏｎｆｉｇ．ｃｕｉ．ＳＳ」に設定する。
【０４８８】
ステップ４７１３で、そのコマンドに関連付けられた「ｆｉｌｅ」パラメータが「ｐｌａｙｏｕｔ」に等しい場合、プロセス４００はステップ４７１５に進む。そうでない場合、プロセス４７００は、ステップ４７１７に進む。ステップ４７１５で、プロセッサ２３０５は、ファイル名を「ｐｌａｙｏｕｔ．ｃｕｉ．ＳＳ」に設定する。
【０４８９】
プロセス４７００は、プロセッサ２３０５が書き込みのためこのファイル名でファイルを開く次のステップ４７０７で続行する。次のステップ４７０９で、ファイルが正常に開かれた場合、プロセス４７００は、ステップ４７１１に進む。そうでない場合、プロセス４７００は、ステップ４７１７に進む。ステップ４７１１で、プロセッサ２３０５は、ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドで受信されたデータをハード・ディスク・ドライブ２３１０内に構成されたアクティブ・ファイルに書き込む。プロセス４７００は、次のステップ４７１１で終了し、プロセッサ２３０５は、空の応答をＷｅｂサーバ２１３に送信する。
【０４９０】
３．１０  ストレージ・サーバ構成ツール（ＳＳＣＴ）
上述のように、ストレージ・サーバ構成ツール２１１は、ストレージ・サーバ２３００をホスティングするコンピュータ２３０１にユーザがログオンすることにより利用可能になる。構成ツール２１１は、管理者がストレージ・サーバ構成ファイル２０５のＧＥＮＥＲＡＬ要素４０５で記述されている設定の変更を行えるようにするグラフィカル・ユーザ・インターフェースを備える。
【０４９１】
ストレージ・サーバ構成ツール２１１は、メイン・ウィンドウの最上部のタブをクリックすることによりアクセスされる、３つのページ１０８００、１０９００、および１１０００を持つダイアログ・ボックスを備えるユーザ・インターフェースである。
【０４９２】
図１０８は、「Ｓｅｔｔｉｎｇｓ」というタイトルが付いている、一般設定を構成するために使用される第１のページ１０８００を示しており、すべて、ストレージ・サーバ構成オブジェクトの＜ＧＥＮＥＲＡＬ＞要素内に記述される。「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  Ｎａｍｅ」テキスト・ボックス１０８０１は、＜ＮＡＭＥ＞要素（上述のように）に格納されている、特定のストレージ・サーバ２３００の名前を構成するために使用される。「Ｅｎａｂｌｅ  ｔｈｅ  ｆｏｌｌｏｗｉｎｇ  ｐｒｏｘｙ  ｓｅｒｖｅｒ」チェック・ボックス１０８０３は、＜ＰＲＯＸＹ＞要素のｅｎａｂｌｅｄ属性を制御するために使用される（上述のように）。「Ｐｒｏｘｙ  ｓｅｒｖｅｒ」テキスト・ボックス１０８０５および「Ｐｏｒｔ」テキスト・ボックス１０８０７は、＜ＰＲＯＸＹ＞要素の＜ＨＯＳＴ＞下位要素内に格納される（上述のように）。「Ｍａｘ．Ｒｅｔａｉｎｅｄ  Ｈｉｓｔｏｒｙ」テキスト・ボックス１０８０９の内容は、＜ＨＩＳＴＯＲＹ＞要素内に格納される（上述のように）。「Ｃｏｎｔｒｏｌ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  Ｄｉｓｋ  Ｕｓａｇｅ」チェック・ボックス１０８１１は、ｂｙｓｉｚｅまたはｂｙｔｉｍｅ属性の一方を＜ＬＩＭＩＴＥＲ＞要素内に設定できるかどうかを決定する（上述のように）。「Ｍａｘ．Ｆｉｌｅ  Ｓｉｚｅ／Ｄｕｒａｔｉｏｎ」テキスト・ボックス１０８１３の内容は、上述の＜ＬＩＭＩＴＥＲ＞要素の＜ＴＩＭＥ＞または＜ＳＩＺＥ＞要素内に格納される。テキスト・ボックス１０８１３と並んでいるコンボ・ボックス１０８１５は、これらの要素のうちのどの要素が現在値を格納するために使用され、＜ＬＩＭＩＴＥＲ＞要素のｂｙｓｉｚｅまたはｂｙｔｉｍｅ属性のうちのどちらが設定されているかを決定するために使用される。「Ｍａｘ．Ｄｉｓｋ  Ｓｐａｃｅ  Ｕｓｅｄ」テキスト・ボックス１０８１７は、コンボ・ボックス１０８１９内で示されているドライブに対応する＜ＤＲＩＶＥ＞要素（上述のような）の＜ＵＳＥＤ＞要素に格納されている値を含む。
【０４９３】
「Ｓｔａｒｔ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」１０８２１および「Ｓｔｏｐ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」１０８２３というラベルが付いているボタンは、記録エンジン２０１とアクセス・エンジン２０３の両方を起動、停止するために使用される。
【０４９４】
図１０９は、「Ｅｖｅｎｔ  Ｎｏｔｉｆｉｃａｔｉｏｎ」というタイトルが付いている、電子メール通知設定を構成するために使用される第２のページ１０９００を示しており、これらはストレージ・サーバ構成オブジェクトの＜ＧＥＮＥＲＡＬ＞要素の＜ＥＭＡＩＬ＞下位要素内に記述される。＜ＥＭＡＩＬ＞要素については上で説明されている。「Ｓｅｎｄ  ｅ−ｍａｉｌ  ｗｈｅｎ  ｅｖｅｎｔｓ  ａｒｅ  ｒｅｃｏｒｄｅｄ」チェック・ボックス１０９０１の状態は、＜ＥＭＡＩＬ＞要素のｅｎａｂｌｅｄ属性に格納される。チェック・ボックス１０９０１が無効化された場合、ページ１０９００内の他のすべてのアイテムも無効化される。「Ｍｉｎ．Ｐｒｉｏｒｉｔｙ  Ｌｅｖｅｌ」コンボ・ボックス１０９０３内の値は、＜ＰＲＩ＞要素内に格納される。「Ｔｏ  ａｄｄｒｅｓｓ」テキスト・ボックス１０９０５の値は、＜ＴＯ＞要素内に格納される。「Ｆｒｏｍ  ａｄｄｒｅｓｓ」テキスト・ボックス１０９０７の値は、＜ＦＲＯＭ＞要素内に格納される。「ＳＭＴＰ  ｓｅｒｖｅｒ」１０９０９および「Ｐｏｒｔ」１０９１１テキスト・ボックス内の値は、＜ＳＭＴＰ＞要素の＜ＨＯＳＴ＞下位要素内に格納される。「Ｅｎａｂｌｅ  ａｕｔｈｅｎｔｉｃａｔｉｏｎ」チェック・ボックス１０９１３の値により、＜ＳＭＴＰ＞要素のａｕｔｈ属性の値が「ｐｏｐ」（有効）に設定されるのか、または「ｎｏｎｅ」（無効）に設定されるのかが決定される。チェック・ボックス１０９１３が無効化された場合、テキスト・ボックス１０９１３の下のすべてのアイテムも無効化される。「Ｕｓｅｒ  ｎａｍｅ」１０９１５および「Ｐａｓｓｗｏｒｄ」１０９１７テキスト・ボックスの値は、＜ＳＭＴＰ＞要素の＜ＵＳＥＲ＞下位要素内に格納される。「ＰＯＰ  ｓｅｒｖｅｒ」１０９１９および「Ｐｏｒｔ」１０９２１テキスト・ボックスの値は、＜ＳＭＴＰ＞要素の＜ＰＯＰＨＯＳＴ＞下位要素内に格納される。
【０４９５】
図１１０は、「Ｕｓｅｒ  Ｍａｎａｇｅｍｅｎｔ」というタイトルが付いている第３のページ１１０００を示しており、Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  Ｕｓｅｒｓファイルに格納されるすべてのユーザのリスト１１００１を含む。Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  Ｇｒｏｕｐｓファイル内で「ａｄｍｉｎ」グループのメンバとして言及されているすべてのユーザは、そのユーザ名の隣にチェックマーク（例えば、チェックマーク１１００３）が付いており、対応するユーザが管理者であることを示している。
【０４９６】
Ａｄｄ  １１００５およびＥｄｉｔ  １１００７ボタンは、ユーザの名前およびパスワードを修正するために使用することができるダイアログ・ボックスを表示する。
【０４９７】
ストレージ・サーバ２３００の構成に対する変更は、ストレージ・サーバ構成ファイル２０５を新しい設定に書き換えることにより有効にできる。構成ファイル２０５内のカメラ・サーバ・リストまたはスケジュール・アイテムに対し行われた最近の変更を保存するために、構成ツール２１１が変更を保存することを試みるたび毎にストレージ・サーバ構成ファイル２０５が再ロードされる。
【０４９８】
ストレージ・サーバ２３００の構成に変更が加えられたときに記録エンジン２０１が実行中の場合（通常のオペレーションでは、よくあることである）、記録エンジン２１０は、構成が変更されたことを通知される。それに対する応答として、記録サーバ２０１は、構成ファイル２０５を再ロードし、最新の設定を使用してオペレーションを再開する。この通知が実行されるようにするために、記録エンジン２０１は、ストレージ・サーバ２３００の構成に対し変更が加えられたときに使用されるストレージ・サーバ構成ツール２１１によりアクセス可能なストレージ・サーバ２３００のメモリ２３０６内に格納された共有同期オブジェクトを作成する。
【０４９９】
本明細書で説明されている実装では、共有同期オブジェクトは、名前付きイベント・オブジェクトである。記録エンジン２０１のスレッドは、共有同期オブジェクトが構成ツール２１１によりトリガされるのを待つ。このスレッドは、図５０を参照しつつ以下でさらに詳しく説明される。構成ツール２１１は、構成ツール２１１が構成ファイル２０５への変更の書き込みを終了したときに記録エンジン２０１に信号を送るイベントをトリガする。
【０５００】
図４８は、ストレージ・サーバ構成ツール・プロセス４８００を示す流れ図である。プロセス４８００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４８００は、第１のステップ４８０１から始まり、そこで、プロセッサ２３０５は、構成ファイル２０５を読み込む。構成ファイル２０５が有効であるとプロセッサ２３０５が決定した場合、プロセス４８００は、ステップ４８０５に進む。そうでない場合、プロセス４８００は、プロセッサ２３０５が所定のデフォルト構成を初期化するステップ４８１５に進む。その後、次のステップ４８１７で、プロセッサ２３０５は、デフォルト構成を構成ファイル２０５に書き込む。
【０５０１】
プロセス４８００は、次のステップ４８０５で続行し、そこで、プロセッサ２３０５は、例えば、キーボード２３０２またはマウス２３０３を介してユーザ入力を受け取る。次のステップ４８０７で、ユーザが「Ｅｘｉｔ」と入力したとプロセッサ２３０５が決定した場合、プロセス４８００は次のステップ４８０９で続行する。そうでない場合、プロセス４８００は、ステップ４８１９に進み、そこで、ユーザが「Ａｐｐｌｙ」を入力したとプロセッサ２３０５が決定した場合、プロセス４８００は、ステップ４８２１に進む。そうでない場合、プロセス４８００は、ステップ４８０５に戻る。ステップ４８２１で、プロセッサ２３０５は、ハード・ディスク・ドライブ２３１０内の構成ファイル２０５に構成変更を保存する。ステップ４８２１で実行されるような構成変更を保存するプロセス４９００は、図４９を参照しつつ以下で説明される。
【０５０２】
プロセス４８００は、次のステップ４８０９で続行し、そこで、保存されていない構成変更があるとプロセッサ２３０５が決定した場合、プロセス４８００は、次のステップ４８１１に続く。そうでない場合、プロセス４８００は終了する。ステップ４８１１で、ユーザが構成変更を保存することを望んでいる場合、プロセスは、ステップ４８１３に進む。そうでない場合、プロセス４８００は終了する。ステップ４８１３で、プロセッサ２３０５は、プロセス４９００に従って、ハード・ディスク・ドライブ２３１０内の構成ファイル２０５に構成変更を保存する。
【０５０３】
次に、プロセス４８０のステップ４８１３および４８２１で実行されるような構成ファイル２０５を保存するプロセス４９００について、さらに詳しく説明する。プロセス４９００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス４９００は、第１のステップ４９０１から始まり、そこで、プロセッサ２３０５は、構成ファイル２０５を読み込む。次のステップ４９０３で、プロセッサ２３０５は、ハード・ディスク・ドライブ２３０５に構成ファイル２０５を再度書き込む。プロセス４９００は、次のステップ４９０５で終了し、そこで、プロセッサ２３０５は、ストレージ・サーバ２３００への構成変更が保存されたことを記録エンジン２０１に知らせる。
【０５０４】
図５０は、ストレージ・サーバ２３００への構成変更を監視するプロセス５０００を示す流れ図である。説明されているように、プロセス５０００は、記録エンジン２０１内のスレッド（つまり、サブルーチン）として実装するのが好ましい。プロセス５０００は、ハード・ディスク・ドライブ２３１０上に常駐するのが好ましく、またプロセッサ２３０５により実行に際して制御されるのが好ましい。
【０５０５】
プロセス５０００は、第１のステップ５００１から始まり、そこで、プロセッサ２３０５は、同期オブジェクトを作成する。次のステップ５００３で、プロセッサ２３０５は、構成ツール２１１からトリガが来るのを待つ。トリガを検出した後、プロセッサ２３０５は、次のステップ５００５で構成ファイル２０５を読み込む。その後、次のステップ５００７で、プロセッサ２３０５は、ストレージ・サーバの構成を更新し、ステップ５００３に戻る。
【０５０６】
３．１１  イベント管理
図１０７は、イベントを生成するプロセス１０７００を示す流れ図である。プロセス１０７００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。このプロセス１０７００は、条件に応じてイベントが生成される場合に必ず実行される。イベントが特定のカメラ１１２〜１１５に関連付けられ、そのカメラが現在データを記録中である場合、イベントの詳細がその彼らのイベント・キューに追加される。イベント・キューの目的は、書き込まれる次のビデオ・フレームとともにビデオ・ファイル内に保存できるようにイベント記述を保持することである。
【０５０７】
プロセス１０７００は、生成されるイベントが特定のカメラ１１２〜１１５に関連付けられた場合に、プロセス１０７００がステップ１０７０３に進む第１のステップ１０７０１から始まる。そうでない場合、プロセス１０７００は、ステップ１０７０７に直接進む。
【０５０８】
ステップ１０７０３で、特定のカメラ１１２〜１１５の記録速度が０よりも大きいとプロセッサ２３０５が決定した場合、プロセス１０７００はステップ１０７０５に進む。そうでない場合、プロセス１０７００は、ステップ１０７０７に進む。ステップ１０７０５で、プロセッサ２３０５は、メモリ２３０６内に構成されたイベント・キューにイベントを追加する。
【０５０９】
プロセス１０７００は、プロセッサ２３０５がイベントをイベント・ファイルに書き込む次のステップ１０７０７で終了する。
【０５１０】
図１１１は、スケジュール・スレッド・プロセス１１１００をさらに詳細に示す流れ図である。プロセス１１１００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。ステップ１１１０１で、プロセッサ２３０５は、スケジュールを初期化する。その後、ステップ１１１０３で、プロセッサ２３０５は、タイマー・イベントを待つ。その後、ステップ１１１０５で、プロセッサ２３０５は、現在のカメラ・スケジュールを処理する。スケジュールを処理した後、制御の流れはステップ１１１０３に戻り、次のタイマー・イベントを待つ。
【０５１１】
図１１２は、初期化されたスケジュール・プロセス１１２００を示す流れ図である。プロセス１１２００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。ステップ１１２０１で、プロセッサ２３０５は、カメラ・スケジュールがアクティブ化されないかどうかをチェックする。カメラ・スケジュールがアクティブ化されていない場合（ステップ１１２０１のＮｏオプション）、プロセス１１２００は終了する。しかし、カメラ・スケジュールがアクティブ化されていない場合、ステップ１１２０３で、プロセッサ２３０５は、非アクティブ化スケジュールにより次のカメラを取得する。その後、ステップ１１２０５で、現在のスケジュールが処理される。その後、制御の流れはステップ１１２０１に戻り、アクティブ化されていない他のカメラ・スケジュールをチェックする。
【０５１２】
図１１３は、現在のスケジュールを処理するプロセス１１３００を示す流れ図である。プロセス１１３００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。ステップ１１３０１で、プロセッサ２３０５は、現在の時刻に対応するカメラ・スケジュール・アイテムを特定する。その後、ステップ１１３０３で、適当なスケジュール・アイテムが見つかったかどうかを決定するチェックが実行される。スケジュール・アイテムが見つからなかった場合（ステップ１１３０３のＮｏオプション）、ステップ１１３０５で、デフォルト設定を使用してスケジュール・アイテムが作成される。その後、プロセス１１３００は、ステップ１１３０７に進む。適当なスケジュール・アイテムが見つかった場合（ステップ１１３０３のＹｅｓオプション）、プロセス１１３００はステップ１１３０７に直接進み、ステップ１１３０５をバイパスする。
【０５１３】
ステップ１１３０７で、カメラ設定が更新される。その後、ステップ１１３０９で、現在のカメラ１１２〜１１５のスケジュール・タイマーは終了される。その後、次のステップ１１３１１で、プロセッサ２３０５は、スケジュール・アイテムの終わりまでの時間を決定する。次に、ステップ１１３１３で、ステップ１１３１１で計算された時間の後タイムアウトになるようにタイマーを設定する。その後、プロセス１１３００は終了する。
【０５１４】
図１１４は、カメラ設定を更新するプロセス１１４００を示す流れ図である。プロセス１１４００は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ２３０５により実行に際して制御される。プロセス１１４００は、１つのカメラに対し新しいスケジュール・アイテムが起動されるか、またはセンサ、運動またはオペレータ・イベントが発生した場合に実行される。
【０５１５】
以下で詳しく説明するように、第１のステップでは、カメラ１１２〜１１５に対する現在アクティブなスケジュール・アイテムが得られ、関連付けられたカメラ・サーバ１０９〜１１１に格納されたカメラ設定が一時的構造内にコピーされる。センサ、運動、またはオペレータ・イベントが現在トリガされている場合、それらのイベントの最高優先度が特定される。同じ優先度を持つ複数のイベントが見つかった場合、オペレータ・オーバーライド・イベントは、他のイベントを自動的にオーバーライドし、運動イベントは、センサ・イベントをオーバーライドする。２つのセンサ・イベントが存在し、同じ優先度を持つ場合、第１のセンサ・イベントは、第２のセンサ・イベントをオーバーライドする。イベントが選択されると、すでに説明されているデフォルト・カメラ設定は、現在アクティブなスケジュール・アイテム内のそのイベントに関連付けられている設定でオーバーレイされる。
【０５１６】
現在のカメラ設定が確立されると、関連付けられている事前イベント記録期間を持つ未トリガ・イベントについて必要な記録速度、運動検出速度、および記録速度のうちの最も高い値を取ることにより必要なフレーム取得速度が計算される。その後、プロセッサ２３０５は、必要な品質および解像度設定がカメラにより現在使用されている設定に等しいかどうかを決定する。等しくない場合、プロセッサ２３０５は、次のコマンドを送信するプロセスを使用して制御ソケット上で要求を発行し、それにより、一連の要求をトリガし、その結果、カメラに対する品質および解像度が変更される。
【０５１７】
その後、プロセッサ２３０５は、必要なパン、傾斜、リズム（ＰＴＺ）設定がカメラ１１２〜１１５により現在使用されている設定に等しいかどうかを決定する。等しくない場合、プロセッサ２３０５は、次のコマンドを送信するプロセスを使用して制御ソケット上で要求を発行し、それにより、一連の要求をトリガし、その結果、カメラ１１２〜１１５に対するＰＴＺが変更される。
【０５１８】
その後、プロセッサ２３０５は、必要な取得フレーム速度がカメラ１１２〜１１５に関連付けられている画像ソケットにより現在使用されている設定に等しいかどうかを決定する。等しくない場合、プロセッサ２３０５は、画像ソケットを再接続し、これにより、ソケットが接続されるとすぐに正しい速度でフレーム取得が自動的に再開される。
【０５１９】
プロセス１１４００は、プロセッサ２３０５が現在のスケジュールからデフォルト設定を取り出す第１のステップ１１４０１から始まる。そのようなデフォルト設定は、ストレージ・デバイス２３０９内に格納することができる。
【０５２０】
次に、ステップ１１４０３で、プロセス１１４００は、センサ、運動、またはオペレータ・イベントがトリガされるかどうかを決定する。イベントがトリガされない場合（ステップ１１４０３のＮｏオプション）、プロセス１１４００は、ステップ１１４０９に進み、ステップ１１４０５および１１４０７をバイパスする。
【０５２１】
トリガされたセンサ、運動、またはオペレータ・イベントがある場合（ステップ１１４０３のＹｅｓオプション）、ステップ１１４０５で、最高優先度を持つトリガされたイベントが見けられる。その後、ステップ１１４０７で、プロセス１１４００は、トリガされたイベントに関係する現在のスケジュールからの設定でデフォルト設定をオーバーレイする。その後、ステップ１１４０９で、プロセス１１４００は、必要なフレーム取得速度を決定する。その後、ステップ１１４１１は、新しい品質／解像度設定がカメラ１１２〜１１５とマッチするかどうかを決定する。設定がマッチしない場合（ステップ１１４１１のＮｏオプション）、ステップ１１４１５は、次の制御要求を送信する。
【０５２２】
しかし、新しい品質／解像度設定がカメラとマッチした場合（ステップ１１４１１のＹｅｓオプション）、ステップ１１４１３で、新しいパン、傾斜、およびズーム（ＰＴＺ）設定が１１２〜１１５とマッチするかどうかをチェックする。ＰＴＺ設定がマッチしない場合（ステップ１１４１３のＮｏオプション）、プロセス１１４００は、ステップ１１４１５に進む。
【０５２３】
新しいＰＴＺ設定がカメラとマッチする場合（ステップ１１４１３のＹｅｓオプション）、ステップ１１４１７では、新しい取得速度設定がカメラとマッチするかどうかをチェックする。その場合（ステップ１１４１７のＹｅｓオプション）、カメラ設定更新プロセス１１４００は終了する。しかし、新しい取得速度設定がカメラ１１２〜１１５とマッチしない場合（ステップ１１４１７のＮｏオプション）、ルーチン１１４００を終了するのに先立って、ステップ１１４１９は、画像ソケットを再接続する。カメラ情報更新スレッドでは、カメラ・サーバ１０９〜１１１上の様々な設定を定期的にチェックする。カメラおよびセンサ名およびプリセット位置などのいくつかの設定は、記録エンジン２０１の制御下にはなく、現在値を記録エンジン２０１が必ず認識するように定期的にチェックされる。画質および解像度などの他の設定は、記録エンジン２０１の制御下にあり、設定が変更されたことを記録エンジン２０１が検出した場合にカメラ・サーバ１０９〜１１１上で変更される。
【０５２４】
４．０  アクセス・エンジン
アクセス・エンジン２０３は、ビデオおよびイベント・ファイルの照合および提供を処理するシステム１００のコンポーネントである。アクセス・エンジン２０３は、完了およびアクティブ・ビデオおよびイベント・ファイルとしてストレージ・サーバ２３００（または上述のように周辺ストレージ・デバイスおよびネットワーク接続ストレージ・デバイスなどの外部ストレージ・デバイス）のハード・ディスク・ドライブ２３１０内に記録エンジン２０１が格納するデータ・ファイル２０９を監視する。アクセス・エンジン２０３は、データ・ファイル２０９のレコードを保持し、ビューア２２００が個々のデータ・ファイル２０９のサイズおよび時間範囲を意識しないようにビューア２２００を使用してデータ・ファイル２０９へのアクセス権を提供する。この方法で、アクセス・エンジン２０３は、ビューア２２００に、格納されているビデオおよびイベント・データに対する継ぎ目のないアクセスを提供する。
【０５２５】
アクセス・エンジン２０３は、図２に例示されているように、ストレージ・サーバ２３００の一要素である。アクセス・エンジン２０３は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図２３に示されているように、実行はプロセッサ２３０５により制御される。
【０５２６】
４．１  アクセス・エンジンの構造
図５２は、アクセス・エンジン２０３の５つの機能単位を示している。図５２で、実線矢印は、ビデオをまたはイベント・ファイル・ペアからのデータの移動を示すが、波線矢印は、ファイル名からのデータの移動を示す（つまり、波線矢印の目標のユニットがデータ・ファイル２０９のファイル名を読み込む）。ビデオおよびイベント・ストレージ２０９を監視しているときに、アクセス・エンジン２０３は、実際のファイルにアクセスすることに優先して、できるならばファイル名解析を使用する。ファイル名解析を使用することにより、ハード・ディスク２３１０およびプロセッサ２３０５の負荷を低減できる。
【０５２７】
ビデオ・ファイル・スティッチング・ユニット５２００は、データ・ファイル２０９を含むデータ・ディレクトリ内のビデオ・ファイル・ペア（つまり、メディア・ファイル１８００および関連付けられたインデックス・ファイル１８０５）のファイル名を監視し、スティッチングされたビデオ・ファイル・リストを保持する。ビデオ・ファイル・スティッチング・ユニット５２００により保持されるスティッチングされたリストで、個々のビデオ・ファイルをスティッチングしてまとめ、ビューア２２００への連続ストリームとして提供されるようにできる。
【０５２８】
様々なビデオ情報に対する要求が受信されると、アクセス・エンジン２０３は、スティッチングされたビデオ・ファイル・リストを使用して、この要求を満たすためにどのビデオ・ファイルが要求されるかを識別する。このように識別されたファイルは、一般に、要求された範囲の先頭の前からのビデオ・サンプル・データ、およびその範囲の終わりの後からのいくつかのビデオ・サンプル・データを含む。このようなビデオ・サンプル・データがデータ・ファイル２０９内に格納されていなかった場合にファイル・スティッチング・ユニット５２００により返されるビデオ・サンプル・データの範囲内にギャップがありうる（例えば、記録エンジン２０１がスケジュールされた、運動またはセンサ・トリガ記録に合わせて構成されている場合）。
【０５２９】
その後、ビデオ・ファイル・リーダー５２０５は、識別されたビデオ・ファイル・ペアを順に開き、開かれたファイル内のデータをＨＴＴＰストリーミング・インターフェース５２２０に提供し、そこから、ファイルからのデータがＷｅｂサーバ２１３に転送され、そこから、要求を開始したビューア２２００に転送される。
【０５３０】
同様にして、イベント・ファイル・スティッチャ５２１０は、データ・ファイル２０９内に格納されたイベント・レコードを監視し、スティッチングされたイベント・ファイル・リストを保持する。スティッチングされたイベント・ファイル・リストは、イベント・ファイルが互いにどのように関係するかを示す。スティッチングされたリストを使用して、指定された時間範囲内のイベントを要求することができる。ビューア２２００からイベント情報に対する要求が受信されると、アクセス・エンジン２０３は、スティッチングされたイベント・ファイル・リストを使用して、この要求を処理するためにどのイベント・ファイルが必要かを決定する。
【０５３１】
その後、イベント・ファイル・リーダー５２１５は、データ・ファイル２０９から必要なイベント・ファイルにアクセスし、抽出されたイベント・レコードをＨＴＴＰストリーミング・インターフェース５２２０に転送し、そこから、イベント・レコードが、要求を開始したビューア２２００に転送される。
【０５３２】
アクセス・エンジン２０３により新しいイベント・ファイルが通知された場合、アクセス・エンジン２０３は、イベント・ファイル内でのい時間からオフセットへのマッピングを含む、メモリ２３０６内に格納される、新しいインデックスを作成する。
【０５３３】
イベント・ファイルはビデオ・ファイルよりもかなり小さいため、一配列では、イベント・ファイル・スティッチャ５２１０およびイベント・ファイル・リーダー５２１５は、単一の機能ユニットにまとめられる。
【０５３４】
図５３は、アクセス・エンジン２０３により実行されるタスクを示している。ステップ５３００で、システムが起動される。
【０５３５】
アクセス・エンジン２０３の実行中、３つのタスクが並列実行される。ステップ５３１０は、ビデオ・ファイル・スティッチングの維持である。ステップ５３１５は、イベント・ファイル・スティッチングの維持である。ステップ５３０５では、アクセス・エンジン２０３は、ビューア２２００から受信された要求を処理する。
【０５３６】
アクセス・エンジン２０３は、システムがステップ５３２０でシャットダウンされるまでタスク５３０５、５３１０および５３１５を実行し続ける。
【０５３７】
４．１．１  アクセス・エンジンと記録エンジンとの相互作用
アクセス・エンジン２０３および記録エンジン２０１は、両方ともデータ・ファイル２０９にアクセスするので、緩く統合されている。アクセス・エンジン２０３がデータ・ファイル２０９を含むディレクトリ内のファイルを開いた場合、アクセス・エンジン２０３は、記録エンジン２０１の活動に干渉する場合があるが、それは、記録エンジン２０１は開いているファイルのリネームまたは削除を行えないからである。ファイルは、アクセス・エンジン２０３によりファイルが使用されている間、またはファイルが必要になるすぐ前にしか開かれない。これは、記録エンジン２０３のオペレーションが必要以上に干渉を受けないようにするために重要である。
【０５３８】
上の第３節で説明されているように、記録エンジン２０１は、データをファイルのマッチしたペアに書き込み、それぞれのペアは、メディア・ファイル１８００およびインデックス・ファイル１８０５からなる。それぞれのメディア・ファイル１８００およびインデックス・ファイル１８０５は、３段階ライフ・サイクルを辿る。非アクティブ・スタンバイ・ファイルは、アクティブ・ファイルになり、次に、これは、完了ファイルになる。イベント・ファイルのライフ・サイクルについては、４．２．２節で説明される。
【０５３９】
前述のように、非アクティブ・スタンバイ・ファイルは、カメラ（１１２〜１１５）が記録エンジン２０１の制御に加えられるとすぐに記録エンジン２０１により作成される。カメラ１１２〜１１５に関連付けられた非アクティブ・スタンバイ・ファイルは、カメラが関連付けられた記録スケジュールを持つかどうかに関係なく作成される。結果として、記録エンジン２０１は、ファイルが作成されるのを待たずに、ビデオ情報が受信されるとすぐにファイルへの記録を開始する。ビデオ記録を開始するのは、スピードが重視されるタスクであり、記録の前にファイル作成により生じる遅延があるのは望ましくない。
【０５４０】
非アクティブ・スタンバイ・ファイルは、ビデオ・サンプルを含まず、またその結果、データ・ディレクトリ２０９を監視するときにアクセス・エンジン２０３により無視される。
【０５４１】
サンプル（つまり、フレーム）がメディア・ファイル１８００に書き込まれると、非アクティブ・スタンバイ・ファイルがアクティブ・ファイルになる。３．３．４．１節で説明されているように、非アクティブ・スタンバイまたはアクティブ・ファイルのファイル名形式はファイルの作成時刻（つまり、タイムスタンプ）を含む。作成時刻は、一般に、実際に使用される前にファイルが作成されるときにファイルに格納されるビデオ・サンプル・データの開始時間と異なる
アクティブ・ファイルは、記録エンジン２０１により現在更新中のファイルである。図１８からわかるように、アクティブ・ファイルは、通常、２つの関連付けされたファイル、インデックス・ファイル１８０５とメディア・ファイル１８００からなる構造である。アクティブ・ファイル・ペアの場合、メディア・ファイル１８００およびインデックス・ファイル１８０５は両方とも、開いており、ビデオ・サンプル・データを記録中に記録エンジン２０１により追加される。
【０５４２】
アクセス・エンジン２０３は、インデックス・ファイル１８０５を使用して、抽出すべき正しいサンプルを見つける。インデックス・ファイル１８０５は、現在のサンプル・データで定期的に（例えば、１０秒に１回）更新されるだけである、つまり、インデックス・ファイル１８０５内のデータは、メディア・ファイル１８００内のデータを忠実に表さない場合があるということである。最初にファイルを開くと、アクセス・エンジン２０３は、アクティブ・ファイルの状態のスナップショットを取得する。アクセス・エンジン２０３がメディア・ファイル１８００からビデオ・データをストリーミングしている間に、アクセス・エンジン２０３は、ファイルの現在状態を定期的にチェックし、メディア・ファイル１８００に記録されたビデオ・サンプル・データの量についてアクセス・エンジン２０３が得ている情報を更新する。
【０５４３】
アクティブ・ファイルでは、ファイル名はファイル作成時刻を示す。しかし、作成時刻は第１のサンプルと一致しない場合があるので、メディア・ファイル１８００内のサンプルの開始時刻をそのファイルから取り出す必要があることがある。
【０５４４】
記録エンジン２０１がファイルへの記録をいったん終了すると、記録エンジン２０１はファイルを閉じて完了する。完結したファイルは、ファイル作成時刻ではなく、メディア・ファイル１８００内のサンプルの開始および停止時刻を示すようにリネームされる。
【０５４５】
ファイルが完了すると、メディア・ファイル１８００およびインデックス・ファイル１８０５は両方とも、整合し、ファイル・ペアへのさらなる更新はできなくなる。
【０５４６】
アクセス・エンジン２０３が実行中でない場合、記録エンジン２０１により監視されているそれぞれのカメラは、１つの非アクティブ・スタンバイ・ファイル、１つのアクティブ・ファイル、および多数の完了したファイルを持つ。いくつかのオペレーティング・システムの制限のせいで、ファイルのリネームは、そのファイルが現在他のプロセスによって使用されている間は、不可能な場合がある。したがって、アクセス・エンジン２０３が現在、アクティブ・ファイル内のビデオ・サンプル・データをビューア２２００に現在ストリーミングしており、記録エンジン２０１が現在ストリーミングされているファイルを終了した場合、記録エンジン２０１は、アクセス・エンジン２０３がファイルのストリーミングを終了するまでファイルをリネームすることはできない。この制限により、まだリネームされていない完了したファイルを持つ可能性があるため、ファイル命名スキームが複雑なものになる。したがって、カメラ１１２〜１１５は、データ・ファイル２０９を含むディレクトリ内にカメラ１１２〜１１５と関連付けられた複数のアクティブ・ファイルを持つ場合があるが、サンプル・データで記録エンジン２０１により更新されているのは１つだけである。
【０５４７】
４．２  ファイル・スティッチング
データ２０９に対する継ぎ目のないアクセスを可能にするために、アクセス・エンジン２０３は、カメラ１１２〜１１５毎に現在のファイル集合の２つの順序付きリストを保持する。アクセス・エンジン２０３により保持される順序付きリストに使用されるデータ構造は、図５４に示されている。ビデオ・ファイルに関係する複数のリストとイベント・ファイルに関係するリストがある。
【０５４８】
図に示されているような順序付きスティッチング・リスト５４００は、４つのカメラ・レコード５４０２、５４０５、５４１０、および５４１５を含む。しかし、実際には、順序付きリスト５４００内のカメラ・レコードの個数は、データ・ファイル２０９として格納されているアクティブまたは完了したファイルを持つカメラ１１２〜１１５の個数に依存する。
【０５４９】
示されている実施例では、カメラ・レコード５４０２は、ファイル５４２０、５４２５、および５４３０のシーケンスに関連付けられている。ファイル５４２０は、９から１０時までの間のデータに関係し、ファイル５４２５は、１０から１１時までの間のデータに関係し、ファイル５４３０は、１１から１２時までの間のデータに関係する。ファイル・データ構造５４２０、５４２５、および５４３０は、開始時刻順に格納される。順序付きリスト５４００を組み立てる際に、ファイル名が開始および終了時刻について解析される。ファイル名を使用するのは、それぞれのファイルを開き、ファイル内のデータ構造から時刻を取り出すのよりも高速である。スティッチング・リスト内で参照されているファイルは、アクティブ・ファイルおよび完了したファイルを含む。
【０５５０】
図５４の実施例では、カメラ・レコード５４０２は、任意の関連付けられたデータ・ファイル２０９を持つ唯一のカメラ・レコードである。カメラ・レコード５４０２は、３つの関連付けられたデータ・ファイルを持つものとして示されている。しかし、これは、例示することのみを目的としており、関連付けられたデータ・ファイルの個数は、システム１００の現在のオペレーションに依存する。
【０５５１】
一番最近に作成されたアクティブ・ファイルは、現在使用中のアクティブ・ファイルであり、同じカメラ１１２〜１１５に関連付けられた他のアクティブ・ファイルは、まだリネームされていないファイルである。上述のように、まだリネームされていないアクティブ・ファイルのファイル名内の時刻は、ファイルの実際の記録開始時刻ではなく、その代わりに、ファイルの作成時刻である。データ・ファイル２０９のアクティブ・ファイル（または上述のように使用中であったためまだリネームされていない完了したファイル）を順序付きスティッチング・リスト５４００に追加した場合、メディア・ファイル内の第１のテキスト・サンプルの時刻データを読み取ることにより第１のイベントの実際の時刻を読み出す必要がある。
【０５５２】
アクセス・エンジン２０３は、記録エンジン２０１がデータを記録するドライブ２３１０のそれぞれの中のデータ・ファイル２０９をチェックする。
【０５５３】
４．２．１  ビデオ・ファイル・スティッチング
ビデオ・ファイル・スティッチングを保持するステップ５３１０は、図５５にさらに詳しく示されている。ステップ５３１０は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図２３に示されているように、実行はプロセッサ２３０５により制御される。
【０５５４】
ビデオ・ファイル・スティッチングは、ステップ５５００で開始する。初期ビデオ・ファイル・スティッチングは、アクセス・エンジン２０３が起動したときに実行される。これ以降、ビデオ・ファイル・スティッチングは、新しいデータ・ファイル２０９があるか、またはデータ・ファイル２０９がリネームされると必ず、または記録エンジン２０１がアクセス・エンジン２０３に、プロセス間通信を介してデータ・ファイル２０９のステータスに対する変更を通知した場合に実行される。
【０５５５】
一実装では、アクセス・エンジン２０３は、データ・ファイル２０９を含むディレクトリ内で何らかの変更が生じた場合にＷｉｎｄｏｗｓ（登録商標）ファイル変更通知を使用してそのことを知らせる。通知されると、アクセス・エンジン２０３は、データ・ファイル２０９の現在の集合に基づきメモリ内ファイル・リスト５４００を再構築する。上述のように、アクセス・エンジン２０３は、必要ならば複数のディレクトリを監視することができる。
【０５５６】
他の実装では、アクセス・エンジン２０３は、データ・ファイル２０９のディレクトリ構造内の変更を定期的にチェックする。
【０５５７】
次に、アクセス・エンジン２０３は、ループ５５０５に入り、データ・ファイル２０９内のアクティブ・ファイルおよび完了したファイルのそれぞれを調べる。ステップ５５１０、ループ５５０５の第１のステップでは、アクセス・エンジン２０３が、現在調査中のビデオ・ファイルのファイル名を解析する。３．３．４．１節で説明されているように、ファイル名は、調査中のファイルの内容に関係する時刻情報とともに、ファイルが関連付けられているカメラ１１２〜１１５に関係する情報を持つ。
【０５５８】
ステップ５５１５で、解析されたカメラ識別子に対応するカメラ・レコード５４０２〜５４１５が順序付きリスト５４００内にすでに存在しているかどうかをチェックする。カメラ・レコードが存在している場合（つまり、ステップ５５１５のＹｅｓオプション）、制御の流れは直接、ステップ５５２５に進み、ステップ５５２０をバイパスする。カメラ・レコードが順序付きリスト５４００内に存在していない場合（つまり、ステップ５５１５のＮｏオプション）、ステップ５５２０で、アクセス・エンジン２０３は、適切なカメラ・レコードを作成し、順序付きスティッチング・リスト５４００に追加する。
【０５５９】
その後、制御の流れは、ステップ５５２５に進み、そこで、調査中のデータ・ファイル２０９に関する必要な情報が、図５４に例示されているように、時刻順に、カメラ・レコードに追加される。
【０５６０】
順序付きリスト５４００は、ビデオ・ファイルの内容を含まない。順序付きリスト５４００内に存在するデータ・ファイル情報５４２０、５４２５、５４３０は、単に、開始時刻、停止時刻（知られている場合）、およびカメラ識別子を含むファイル名から導かれた情報を含むだけであり、開始時刻に応じて順序付けられる。
【０５６１】
次に、ステップ５５３０で、アクセス・エンジン２０３は、順序付きスティッチング・リスト５４００にまだ組み込まれていないさらに多くのデータ・ファイル２０９があるかどうかをチェックする。順序付きリスト５４００に含める必要があるファイルがまだある場合、制御の流れは、ステップ５５１０に戻り、そこで、次のデータが調べられる。
【０５６２】
調べるデータ・ファイルがもうない場合（つまり、ステップ５５３０のＮｏオプション）、制御の流れは、ループ５５０５内に存在し、リクエスト・ハンドラ５３０５により現在使用されている順序付きスティッチング・リストがループ５５０５により更新された新しい順序付きスティッチング・リスト５４００で置き換えられるステップ５５３５に進む。
【０５６３】
新しい順序付きスティッチング・リスト５４００がアクセス・エンジン２０３の他の要素で利用できるようになると、制御の流れは、ステップ５５４０に進み、そこで、アクセス・エンジン２０３がまだ実行中かどうかをチェックする。アクセス・エンジン２０３がシャットダウンのプロセスに入っていない場合（つまり、ステップ５５４０のＹｅｓオプション）、ステップ５５４５で、アクセス・エンジン２０３は、データ・ファイル２０９への変更の通知を待つ。上述のように、ステップ５５４５の他の実装では、アクセス・エンジン２０３は、データ・ファイル２０９のディレクトリ構造への変更を定期的にチェックすることができる。アクセス・エンジン２０３がデータ・ファイル２０９への変更に気づくと、ループ５５０５が再び開始される。
【０５６４】
アクセス・エンジン２０３がシャットダウンのプロセスに入っている場合（つまり、ステップ５５４０のＮｏオプション）、ステップ５５５０で、アクセス・エンジン２０３は、順序付きスティッチング・リスト５４００を空にし、解放する。
【０５６５】
４．２．２  イベント・ファイル・スティッチング
イベント・ファイル・スティッチングを保持する、ステップ５３１５では、ビデオ・ファイル・スティッチングの保持に類似の手順を使用して、様々なイベントへの継ぎ目のないアクセスを可能にする（ステップ５３１０）。イベント・ファイル・スティッチングは、イベント・ファイルがビデオ・ファイルの３段階ライフ・サイクルを通過しないという点でいくぶん単純である。イベント・ファイルは、アクティブと完了の２つの段階しか持たない。
【０５６６】
ファイル名は、両方の段階とも同じである。したがって、ビデオ・ファイルがリネームされたときに生じる問題点は、イベント・ファイルの場合には生じない。
【０５６７】
それぞれのイベント・ファイルは、ファイルが作成された時刻である、単一の日付を持つ。これにより、イベント・ファイルの厳密な順序付けが可能になる。ビデオ・ファイルとは異なり、イベント・ファイルは必要になるまで作成されない。ビデオ・サンプルに比べてイベント・レコードのデータ・サイズが小さいということは、イベント・ファイルがファイル・スワップオーバーの後に作成されている間にイベント・レコードをメモリ内のキューに入れることができるということを意味する。キューに入れられているイベント・レコードは、ファイル作成が完了した後、記録エンジン２０１により新しいファイルに書き込むことができる。
【０５６８】
ファイル内の最後のイベントから終了時刻を抽出するには、イベント・ファイルを解析する必要がある。同じカメラ１１２〜１１５からのどのイベント・ファイルも、オーバーラップする期間を持たない。しかし、時間順序に関して隣接する２つのイベント・ファイルが、同じ瞬間に（つまり、記録エンジン２０１により使用される時間の精度である１ミリ秒以内に）発生するイベントに関連付けられた異なるイベント・レコードを含むことは可能である。つまり、与えられたイベント・ファイルは、イベント・ファイルのシーケンスにおける前のファイルの中にあるイベント・レコードと同じ時刻を持つイベント・レコードを含むことができる。しかし、後のイベント・ファイルは、前のイベント・ファイルの中のイベント・レコードよりも早い時刻を持つイベント・レコードを含むことはできない。したがって、時刻の早いファイル内のすべてのイベント・レコードの時刻は、続くファイル内のすべてのイベント・レコードの時刻以内である必要がある。すべてのイベント・レコードは、時間順序で格納される。
【０５６９】
アクセス・エンジン２０３は、イベント・ファイルのインデックスをメモリ２３０６内に構築し、要求が受信されたときにファイルを次々に探索するのにかかる時間を短縮する。アクセス・エンジン２０３が、正しいイベントを見つけるまでファイル内のすべてのレコードを探索しなくてもファイル内の特定のイベントを探し出すことができるように、格納されているインデックスではイベント時刻によりインデックスを付けたオフセットを備える。したがって、インデックスを探索することで、必要なオフセットまたは所望のイベント近くのポイントが得られる。
【０５７０】
イベント・ファイル・スティッチング・リスト５４００（ビデオ・ファイル・スティッチング・リストと同じ構造を持つデータ構造である）は、ビデオ・ファイル・スティッチング保持５３１０に関して図５５に示されているのと同じステップを使用して保持できる。データ・ファイル情報を適切なカメラ・レコードに追加するステップ５５２５は、イベント・ファイルのライフ・サイクルが比較的直接的あるため、いくぶん単純である。アクセス・エンジン２０３がイベント・ファイル情報をカメラ・レコードに追加する場合、ファイル名に格納されているように、イベント・ファイルの作成時刻により、イベント・ファイル・リストを単純に順序付けすることができる。
【０５７１】
ファイルの終わりに到達すると、次のファイルがその特定のカメラ・サーバ１０９〜１１１に対するファイルのリストから読み込まれる。その後、イベントを、新しいファイルから読み込み、要求を開始したビューア２２００にストリーミングすることができる。このプロセスは、要求の終了時刻まで続行する。
【０５７２】
イベント要求は、さらに、イベント要求が記録エンジン２０１により行われるときにイベントの連続するストリームを求めることができる。アクセス・エンジン２０３が格納されているイベントの終わりに到達した後ストリームを終了する代わりに、アクセス・エンジン２０３は、さらに更新がないかイベント・ファイルを監視し続け、更新が発生したときにそのような更新をビューア２２００に送信する。
【０５７３】
アクセス・エンジン２０３は、データ・ファイル２０９を含むデータ・ディレクトリ内に作成される新しいイベント・ファイルを監視する。新しいイベント・ファイルは、一般に、記録エンジン２０１が新しいイベント・ファイルにスワップオーバーする際に作成されるが、これは、外部ソフトウェア・アプリケーションがすでに削除されているビデオおよびイベント・ファイルを復元するせいである場合がある。
【０５７４】
一実装では、アクセス・エンジン２０３は、データ・ファイル２０９を含むディレクトリ内で何らかの変更が生じた場合にＷｉｎｄｏｗｓ（登録商標）ファイル変更通知を使用してそのことを知らせる。通知されると、アクセス・エンジン２０３は、データ・ファイル２０９の現在の集合に基づきメモリ内ファイル・リスト５４００を再構築する。上述のように、アクセス・エンジン２０３は、必要ならば複数のディレクトリを監視することができる。
【０５７５】
他の実装では、アクセス・エンジン２０３は、データ・ファイル２０９のディレクトリ構造内の変更を定期的にチェックする。
【０５７６】
４．３  要求の処理
アクセス・エンジン２０３の主タスクの１つは、データ・ファイル２０９内に格納されているビデオ・サンプルおよびイベント・レコードに対する要求を処理することである。要求処理ステップ５３０５は、図５６にさらに詳しく示されている。
【０５７７】
このプロセスは、ステップ５６００で開始され、そこで、ビューア２２００は、ビデオ・サンプルまたはイベント・レコードに対する要求をＷｅｂサーバ２１３に送信し、Ｗｅｂサーバ２１３はアクセス・エンジン２０３に要求を渡す。要求の中で使用されているデータについては、本明細書の後の方で説明する。
【０５７８】
システム１００より使用されるファイルは、データ・ファイル２０９を含むディレクトリにファイルが置かれると、ビューア２２００によりアクセス可能になる。同様に、ファイルがデータ・ファイル２０９を含むディレクトリから削除されると、アクセス・エンジン２０３は、削除されたビデオ情報に対する他の要求に応じない。オペレーティング・システムの制限により、ファイルがアクセス・エンジン２０３により現在アクセス中のときにファイルを削除することが妨げられる場合がある。
【０５７９】
次に、ステップ５６０５で、ストリーミング・インターフェース５２２０は、その要求を復号化する。その要求がイベント・レコードに対するものであれば、アクセス・エンジン２０３は、ステップ５６１０に従って要求を処理する。その要求がビデオ・サンプルに対するものであれば、要求は、ステップ５６１５で処理される。適切なステップ５６１０または５６１５が完了すると、要求処理手順がステップ５６２０で終了する。
【０５８０】
ビューア２２００の便宜上、逆方向再生により要求の先頭の前から情報を再生することが可能である（つまり、アクセス・エンジン２０３が再生速度を負の値に設定することにより行うのであるが、これは、例えば、ビューア２２００のユーザが巻き戻しボタンを押すことにより行うことができる）。この以前の情報を読み込むために、アクセス・エンジン２０３は、現在のファイルが与えられた場合に、順序付けファイル・スティッチング・リスト５４００を使用して、シリーズの中の前のファイルを識別する。その後、ファイル・スティッチング・ユニット５２００は、完了後ファイル名が変更されたかもしれない可能性を考慮して、識別された前のファイルを探索する。その後、ファイル・スティッチング・ユニット５２００は、シーケンス内の前のファイル、または前のファイルが見つからない場合には、ｎｏ−ｆｉｌｅ値を返す。
【０５８１】
アクセス・エンジン２０３は、同様にして未来のサンプル・データに対する要求も処理する。例えば、ビューア２２００は、１時間後に開始し、翌朝まで続くビデオ・サンプル・データを要求することができる。明らかに、要求されたデータの最初の時間のみが、データ・ファイル２０９の集合内で使用可能である。しかし、アクセス・エンジン２０３がビデオ・サンプル・データの使用可能な時間分を実時間でストリーミングするときまで使用可能なビデオ・サンプル・データの他の時間分があるが、ただし、記録エンジン２０１がその期間内に記録していた場合である。ビデオ・ファイル・リーダー５２０５は、その後、現在順序付けスティッチング・リスト５４００内にある、次のファイルの名前についてビデオ・ファイル・スティッチング・ユニット５２００に問い合わせし、それから、ビューア２２００へのストリーミングを続けることができる。再生速度が通常送りの実時間よりも速い場合（例えば、ビューア２２００のユーザが早送りボタンを押した場合）、その要求では、最終的に、「ライブ」に追いつき、アクセス・エンジン２０３は、その要求を完了する（つまり、「ｅｎｄ  ｓｔｒｅａｍ」ブロブを送信する）。
【０５８２】
したがって、ビューア２２００が、データ・ファイル２０９内に現在入っていない一定範囲のビデオ・サンプル・データを要求することが可能である。
【０５８３】
４．３．１  ビデオ・ファイル・ストリーミング
図５７は、ビデオ要求処理ステップ５６１５をさらに詳しく示している。ビデオ要求処理ステップ５６１５は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図２３に示されているように、実行はプロセッサ２３０５により制御される。
【０５８４】
ステップ５７００では、ビデオ・ファイル・リーダー５２０５は、現在の要求を満たすために必要な範囲のファイルを決定するために順序付けビデオ・スティッチング・リスト５４００にクエリを実行する。
【０５８５】
次に、ステップ５７０５で、ビデオ・ファイル・リーダー５２０５は、ステップ５７００で識別されたファイルの集合内の第１のファイルを開く。その後、ステップ５７１０で、ビデオ・ファイル・リーダー５２０５は、要求された期間の先頭を見つけるために開かれているファイルを探索する。これは、ファイルの開始時刻よりもむしろ正しい時刻にビデオ・ストリーミングを開始するために実行される。リーダー５２０５は、関連付けられたインデックス・ファイル１８０５を使用して、メディア・ファイル１８００内の必要なオフセットを見つける。
【０５８６】
次に、ステップ５７１５で、アクセス・エンジンは、ビデオ・サンプルを開かれているメディア．ファイル１８００からビューア２２００にストリーミングする。ステップ５７２０では、要求が満たされる前にファイルの終わり（ＥＯＦ）に到達するかどうかをチェックする。ファイルの終わりが見つからず、要求が満たされていた場合（つまり、ステップ５７２０のＮｏオプション）、ステップ５７３０で、アクセス・エンジン２０３は、「ｅｎｄ  ｓｔｒｅａｍ」通知をビューア２２００に送信する。
【０５８７】
しかし、ファイルの終わりに到達し、要求がまだ満たされていない場合（つまり、ステップ５７２０のＹｅｓオプション）、制御の流れはステップ５７２５に進み、そこで、ビデオ・ファイル・リーダー５２０５が順序付けされたスティッチング・リスト５４００により決定されたとおりに次のファイルを開く。
【０５８８】
ファイルは、ファイルが開かれていない場合に任意の時点においてリネームできる。その結果、ビデオ・ファイル・リーダー５２０５は、ファイルが順序付けファイル・リスト５４００の要求とファイルのオープンとの間にファイルが完了した場合、完了したファイル名ではなくビデオ・サンプル・データの一セクションのアクティブ・ファイル名を開こうとする。この問題に対処するために、ビデオ・ファイル・リーダー５２０５は、ファイル・スティッチング・ユニット５２００に、そのファイル名が変更されたか、または新しいファイル名はどのようなものかを問い合わせる。
【０５８９】
次のファイルが開かれると、制御の流れはステップ５７１５に戻り、そこで、ビデオ・サンプル・データがＷｅｂサーバ２１３を介して開いているメディア・ファイル１８００からビューア２２００にストリーミングされる。
【０５９０】
上記のプロセスは、要求が満たされるまで繰り返される。
【０５９１】
４．３．２  イベント・ファイル・ストリーミング
図５８は、イベント要求処理ステップ５６１０をさらに詳しく示している。イベント要求処理ステップ５６１０は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図２３に示されているように、実行はプロセッサ２３０５により制御される。
【０５９２】
ステップ５８００で、イベント・ファイル・リーダー５２１５は、イベント・ファイル・スティッチング・ユニット５２１０により確定された順序付きイベント・ファイル・リストにクエリを実行する。このクエリにより、現在処理されている要求を満たすために必要なイベント・ファイルの集合が確立される。
【０５９３】
次に、ステップ５８０５で、イベント・ファイル・リーダー５２１５は、ステップ５８００で識別された集合内の第１のファイルを開く。次に、ステップ５８１０で、リーダー５２１５は、イベント・インデックスを使用して要求の先頭まで開いているファイルを探索する。イベント・インデックスの粒度のため（つまり、ファイル内のすべてのレコードへの直接インデックス・エントリがない）、ステップ５８１０で識別された開かれているイベント・ファイル内の位置は、要求された時間範囲の前にある可能性があり、そのため、アクセス・エンジン２０３は要求された時間範囲の開始を見つけるためイベント・レコードを１ステップずつ辿り続ける必要がある。
【０５９４】
その後、ステップ５８１５で、イベント・ファイル・リーダー５２１５は、開いているイベント・ファイルから１行を読み込む。ステップ５８２０では、読み込まれた行がファイルの終わりかどうかをチェックする。これがその場合でなければ（ステップ５８２０のＮｏオプション）、ステップ５８２５で、リーダー５２１５は、その行を解析して、イベント時刻およびサンプル・データを取得する。次に、ステップ５８６５で、リーダー５２１５は、イベントの時刻が要求された範囲の開始よりも前かどうかをチェックする。時刻が早すぎる場合（つまり、ステップ５８６５のＹｅｓオプション）、リーダーはその行をスキップし（ステップ５８７０）、プロセスの流れはステップ５８１５に戻り、そこで、次の行が開いているイベント・ファイルから読み込まれる。
【０５９５】
イベントの時刻が要求範囲の開始よりも後であれば（つまり、ステップ５８６５のＮｏオプション）、ステップ５８７５で、リーダー５２１５は、その時刻が要求された範囲の終わりよりも後かどうかをチェックする。そうであれば（つまり、ステップ５８７５のＹｅｓオプション）、ステップ５８４５で、ストリーミング・インターフェース５２２０は、「ｅｎｄ  ｓｔｒｅａｍ」指示をビューア２２００に送信する。
【０５９６】
イベント時刻が要求された時間範囲内にある場合（つまり、ステップ５８７５のＮｏオプション）、ステップ５８８０で、ストリーミング・インターフェース５２２０は、イベントをビューア２２００に送信する。イベントが送信された後、プロセスの流れはステップ５８１５に戻り、そこで、次の行がイベント・ファイルから読み込まれる。
【０５９７】
ファイルの終わりが見つかった場合（ステップ５８２０のＹｅｓオプション）、ステップ５８３０で、イベント・ファイル・リーダー５２１５は、使用可能な次のイベント・ファイルがあるかどうかをチェックする。もしそうであれば（つまり、ステップ５８３０のＹｅｓオプション）、ステップ５８３５でリーダー５２１５は次のファイルを開き、プロセスの流れはステップ５８１５に戻り、そこで、１行が新しく開かれたファイルから読み込まれる。
【０５９８】
ファイルの終わりが見つかったが、使用可能な次のファイルがない場合（つまり、ステップ５８３０のＮｏオプション）、ステップ５８４０で、アクセス・エンジン２０３は、現在の要求が「Ｌｉｖｅ」要求かどうかを決定する（つまり、その要求で、開始時刻を指定するが、終了時刻は、指定していない）。要求がＬｉｖｅ要求でない場合（つまり、ステップ５８４０のＮｏオプション）、ステップ５８４５で、ストリーミング・インターフェース５２２０は、「ｅｎｄ  ｏｆ  ｓｔｒｅａｍ」指示をビューア２２００に送信する。
【０５９９】
要求がＬｉｖｅ要求である場合（つまり、ステップ５８４０のＹｅｓオプション）、ステップ５８５０で、アクセス・エンジン２０３は、タスクを適切なカメラ・レコードに追加する。次に、ステップ５８５５で、アクセス・エンジン２０３は、それぞれのカメラに関連付けられた最終のイベント・ファイルを監視する。アクセス・エンジン２０３は、最後のイベント・ファイルがそれぞれのカメラ１１２〜１１５に対する唯一のアクティブ・イベント・ファイルであると想定する。アクセス・エンジン２０３は、現在のファイル・サイズをすでに知られているファイル・サイズと比較することにより、または使用されているオペレーティング・システムに特有の他の方法により、ファイルに対する変更を認識する。
【０６００】
新しいイベント・レコードがイベント・ファイルに追加されると、新しいイベントは、その特定のカメラ１１２〜１１５についてＬｉｖｅイベント要求を持つビューア２２００に送信される（ステップ５８６０）。
【０６０１】
記録エンジン２０１によるイベント・レコードのイベント・ファイルへの書き込みは、アトミックであることを保証されない、つまり、オペレーティング・システムのキャッシュ機能および入出力優先度のせいで、イベントの半分がファイルに書き込まれ、それから残り半分が後から送信される場合がある。したがって、アクセス・エンジン２０３は、１つまたは複数の完了イベントがイベント・ファイルに追加された場合にのみ、Ｌｉｖｅイベントを傾聴ビューア２２００に送信する。
【０６０２】
４．４  相互非関連ビデオのストリーミング
データ・ファイル２０９として格納されているビデオ・データは、ギャップを含む場合がある。これらのギャップは、記録がまったく行われていない期間から生じうる。さらに、ビデオ記録が運動検出または所定のイベントによりトリガされた場合、ビデオ記録がトリガされていない期間からの記録済みデータ内に中断がありうる。
【０６０３】
相互非関連ビデオ・サンプル・データをビューア２２００にストリーミングする場合、ストリームが間断なく継続できるようにビューア２２００にビデオ・サンプル・データが存在していないことを知らせるという問題が生じる。
【０６０４】
格納されたビデオ・サンプル・データ内にギャップがある場合、アクセス・エンジン２０３は、フレーム・マーカーを送信して、格納されているビデオ・サンプル・データ内にギャップがあることを示す。４．５．１節でさらに詳しく説明されているように、フレーム・マーカーは、「ｎｏ  ｖｉｄｅｏ」ブロブの形式をとる。「ｎｏ  ｖｉｄｅｏ」ブロブは、２つの時間情報断片を含む。第１の情報断片は、サンプル・データ・ストリーム内現在時刻であり、第２の情報断片は、送信される次のサンプル・データの時刻である（送信すべき次のサンプルがある場合）。
【０６０５】
ネットワーク・オーバーヘッドを低減するため、「Ｎｏ  ｖｉｄｅｏ」ブロブは、それらが置き換えるビデオよりも遅い速度で送信される。「ｎｏ  ｖｉｄｅｏ」ブロブを送信する決定は、所定のシステム規模の定数に基づくか（例えば、「ｎｏ  ｖｉｄｅｏ」ブロブは、次の５秒間にビデオ・サンプル・データがない場合に送信できる）、またはビデオ・ストリームの属性から値を計算することに基づくことが可能なしきい値に基づく。例えば、このしきい値は、ビデオ・ストリームの現在のフレーム速度に基づいて計算することが可能である（例えば、「ｎｏ  ｖｉｄｅｏ」ブロブは、ビデオの現在のセグメントのフレーム速度が毎秒１５フレームであり、次の３０フレーム（つまり、サンプル）について送信されるビデオ・サンプル・データがない場合に送信することができる）。使用されるしきい値は、「ｎｏ−ｖｉｄｅｏ」しきい値と呼ばれ、送信速度は、「ｎｏ−ｖｉｄｅｏ」再送速度と呼ばれる。
【０６０６】
「ｎｏ  ｖｉｄｅｏ」ブロブが送信される速度も、同様にして指定することができる。固定値を設定するか（例えば、「ｎｏ−ｖｉｄｅｏ」ブロブは、毎秒２回の速度で送信することができ）、または送信速度を生成することができる（例えば、「ｎｏ−ｖｉｄｅｏ」ブロブは、ビデオ・ストリームのフレーム速度の１／４で送信することができる）。
【０６０７】
図５９Ａは、メディア・ファイル１８００からビューア２２００にサンプル・データをストリーミングするステップ５７１５をさらに詳しく示している。ステップ５７１５は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図２３に示されているように、実行はプロセッサ２３０５により制御される。サンプル・データ・ストリームは、ステップ５９００で開始する。ビューア２２００とアクセス・エンジン２０３との間の接続を確立する手順については、４．５．２節でさらに詳しく説明される。
【０６０８】
次に、ステップ５９０５で、アクセス・エンジン２０３は、サンプル・データ・ストリームが開始したときに現在のクロック時刻ｔｓを格納する。さらに、アクセス・エンジン２０３は、要求された範囲のビデオの開始時刻ｔｒを格納する。
【０６０９】
ステップ５９１０で、現在のストリームに関してディレクトリ２０９内の開いているファイルから読み込まれるそれぞれのサンプルを順に考察するループが開始する。ループ５９１０の第１のステップである、ステップ５９１５は、現在のクロック時刻を取得する。次のステップ５９２０で、現在時刻とストリームの開始時刻ｔｓとの差を計算する。
【０６１０】
次に、ステップ５９２５で、アクセス・エンジン２０３は、現在のサンプルの時刻（つまり、タイムスタンプ）とストリーム内の第１のサンプルの時刻ｔｒとの差を計算する。したがって、ステップ５９２０では、実時間の受け渡しを計算するが、ステップ５９２５では、サンプル時刻で経過した時間、つまり、メディア・ファイル１８００内に格納されているサンプルの間の時刻を計算する。
【０６１１】
次に、ステップ５９３０で、アクセス・エンジン２０３は、ステップ５９２０と５９２５でそれぞれ計算されるように、サンプル時間よりも実時間のほうが経過しているかをチェックする。サンプル時間よりも実時間のほうが経過していた場合（つまり、ステップ５９３０のＹｅｓオプション）、ステップ５９４０で、ストリーミング・インターフェース５２２０が現在のサンプルを送信する。その後、プロセスの流れは、ループ５９１０の先頭に戻り、開いているメディア・ファイル１８００からの次のサンプルを調べる。
【０６１２】
しかし、実時間よりもサンプル時間のほうが経過している場合（つまり、ステップ５９３０のＮｏオプション）、現在のサンプルはまだ送信されていない（つまり、概念ステップ５９３５）。現在のサンプルはまだ送信されていないので、ステップ５９４５で、アクセス・エンジン２０３は、「ｎｏ−ｖｉｄｅｏ」ブロブを送信する必要があるかどうかを決定する。この決定を下す手順については、図５９Ｂを参照しつつ以下で説明する。
【０６１３】
ステップ５９４５が実行された後、制御の流れはステップ５９１５に戻る。
【０６１４】
図５９Ｂは、「ｎｏ−ｖｉｄｅｏ」ブロブが送信されるべきかどうかを決定するためにステップ５９４５で実行されるサブステップを示している。ステップ５９４５は、ハード・ディスク・ドライブ２３１０上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図２３に示されているように、実行はプロセッサ２３０５により制御される。
【０６１５】
ステップ５９５０で、アクセス・エンジン２０３は、現在のクロック時刻を取得する。次に、ステップ５９５５で、アクセス・エンジン２０３は、メディア・ファイル１８００内の次のサンプルの時刻を取得する。ステップ５９６０で、次のサンプルまでの時間が「ｎｏ−ｖｉｄｅｏ」しきい値（上述のようにプリセット値または計算値）よりも大きいかどうかを決定する。そうである場合（つまり、ステップ５９６０のＹｅｓオプション）、ステップ５９６５で、さらにチェックを行い、最後の「ｎｏ−ｖｉｄｅｏ」ブロブが送信された以降の時間が指定された「ｎｏ−ｖｉｄｅｏ」再送時間よりも大きいかどうかを調べる。
【０６１６】
最後の「ｎｏ  ｖｉｄｅｏ」ブロブ以降の経過時間が「ｎｏ−ｖｉｄｅｏ」再送時間よりも大きい場合（つまり、ステップ５９６５のＹｅｓオプション）、ステップ５９７０で、アクセス・エンジン２０３は、「ｎｏ−ｖｉｄｅｏ」ブロブを送信する。
【０６１７】
サンプルが指定された時間内に使用可能であるか（つまり、ステップ５９６０のＮｏオプション）、または「ｎｏ−ｖｉｄｅｏ」ブロブが十分最近に送信されている場合（つまり、ステップ５９６５のＮｏオプション）、制御の流れは、ステップ５９１５に直接進み、現在のサンプルを送信する時間かどうかを決定する。
【０６１８】
「ｎｏ−ｖｉｄｅｏ」ブロブがステップ５９７０で送信された後、制御の流れは、ステップ５９１５に進む。
【０６１９】
４．５  ストリーミング・アクセスのための接続
アクセス・エンジン２０３は、ＨＴＴＰ（ハイパーテキスト・トランスポート・プロトコル）の上に層をなすプロトコル（アクセス・エンジン・プロトコルと呼ばれる）を使用して、データ・ファイル２０９内に格納されたビデオおよびイベント・データにアクセスできるようにする。このようなプロトコルを使用することにより、アクセス・エンジン２０３およびビューア２２００がＨＴＴＰプロキシの反対側にある場合にデータにアクセスすることができる。このプロトコルを使用すると、通常、非ＨＴＴＰトラフィックを使用できるようにファイヤウォールを再構成しなくても、ファイヤウォールを通じてストレージ・サーバ２３００上でビューア２２００からアクセス・エンジン２０３にアクセスすることができる。このプロトコルは、（１９９９年６月にインターネット・エンジニアリング・タスク・フォース（ＩＥＴＦ）により公開されているような）ＨＴＴＰ  １．１規格に完全準拠している。アクセス・エンジン・プロトコルの目標は、ビデオおよびイベント・データを要求する待ち時間をできる限り短縮することであり、また時間に厳しいデータ（ビデオなど）に、時間にあまり厳しくないデータと異なる優先度を与えられるようにすることである。
【０６２０】
図６０は、アクセス・エンジン２０３のＨＴＴＰストリーミング・インターフェース５２２０とビューア２２００との接続を示している。これらの接続は、Ｗｅｂサーバ２１３を通じて行われる。しかし、Ｗｅｂサーバ２１３は、図６０には示されていない。ビューア２２００は、さらに、クライアントと呼ぶこともできる。
【０６２１】
アクセス・エンジン２０３にアクセスするために、ビューア２２００は２つのＨＴＴＰ接続を行う。１つは、制御接続６００５であり、他は、データ接続６０１５である。制御接続６００５は、ビューア２２００から送信されたデータ６００６ａの要求をアクセス・エンジン２０３に送信し、ビューア２２００に対し短い応答６００６ｂで応答する。応答６００６ｂは、速度上の理由から短く保持される。
【０６２２】
データ接続６０１５では、ビューア２２００からアクセス・エンジン２０３に単一の初期要求６０２０ａを送信し、その後、ビューア２２００により行われる要求に対応するデータ・ファイル２０９からのデータを含む連続ストリーム６０２０ｂをサポートする。
【０６２３】
制御接続６００５が行われ、その後、ビューア２２００が接続をセットアップするために必要な情報を含むＨＴＴＰ  ＧＥＴ要求を制御接続６００５で送信する。ファイル・ストリーミング・インターフェース５２２０は、制御接続６００５およびデータ接続６０１５の両方に対する識別子番号を含む識別情報を含む応答６００６ｂを送信する。これらの識別子は、アクセス・エンジン２０３のレルム内の接続を一意に識別し、またＨＴＴＰがステートレス・プロトコルであるので必要である。必要な機能を備えるために、通信の現在状態に関する情報がアクセス・エンジン・プロトコル内に実装される（つまり、プロトコルは、同じセッションの一部であるすべてのメッセージに含まれるセッション識別子を含む）。
【０６２４】
次に、ビューア２２００は、セットアップコマンドから返された情報で第２の接続６０１５を行う。通常のＨＴＴＰトランザクションとは異なり、応答が終了した後、ビューア２２００のデータ接続６０１５は終了しない。その代わりに、データ接続６０１５は、制御接続６００５を介して要求されたデータを送信するために使用され、実際のデータが送信されていない場合に定期的な「ｋｅｅｐ  ａｌｉｖｅ」ブロブにより開いたままにされる。データ接続６０１５を開いたままにする利点は、ビューア２２００が新しいビデオ・データを要求する、または既存のビデオ要求を修正する必要があるたび毎にビューア２２００側で新しい接続を行う必要がないという点である。
【０６２５】
一実装では、制御接続６００５およびデータ接続６０１５は両方とも、複数の要求にまたがって永続的である。このような実装では、データ接続６０１５も制御接続６０１０も、ビューア２２００とアクセス・エンジン２０３との間のセッションの存続期間中に閉じなくてよい。システム１００は、制御接続６００５が閉じられるのに耐えられるが、データ接続６０１５は、セッションが持続する時間中接続されたままである必要があるか、またはアクセス・エンジン２０３側で、セッションの終了を考慮し、接続６０１５に関連付けられているリソースを解放する。接続が、オペレーティング・システムまたは介在するプロキシ・サーバにより早い時期に閉じられないようにするために、制御接続６００５およびデータ接続６０１５の両方が、定期的に送信される「ｋｅｅｐ  ａｌｉｖｅ」メッセージを持つ。ビューア２２００は、制御接続を開いておくために定期的「ｋｅｅｐ  ａｌｉｖｅ」要求を出すことが予想される。ＨＴＴＰストリーミング・モジュール５２２０も、データ接続を開いておくために「ｋｅｅｐ  ａｌｉｖｅ」要求を送信する。
【０６２６】
図６１は、Ｗｅｂサーバ２１３を含む特定の構成を示している。図６１に示されている実装では、Ａｐａｃｈｅ  Ｗｅｂサーバ６１１０および通信ライブラリ６１０５（ＦａｓｔＣＧＩ（登録商標））を使用する。図６１の配列では、ＨＴＴＰ通信の詳細を専用アプリケーション・ソフトウェアにより処理することができ、これにより、アクセス・エンジン２０３側でＨＴＴＰサーバを実装しなくてすむ。他の実装では、Ｗｅｂサーバは、アクセス・エンジン２０３内に実装される。異なるＷｅｂサーバおよび通信ライブラリを使用する他の実装も可能である。すべての場合において、インターフェースおよびプロトコルは実質的に同じままである。
【０６２７】
ビューア２２００にとっては、アクセス・エンジン２０３により提示されるインターフェースは従来の共通ゲートウェイ・インターフェース・ページに似て見える。それぞれのコマンドは、サーバ２３００上の「リソース」を要求し、ＩＥＴＦにより公開されているＲＦＣ１７３８（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒｓ）で説明されている構文を使用して要求に対するパラメータを指定する（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒのクエリ部を使用して）。コマンドの形式は、付録Ｂで説明する。その要求について要求されるファイルは、すべての要件について同じである。パラメータは、アクセス・エンジン２０３で実行すべきコマンドを決定するために使用される。本発明の説明では、「アクセス・エンジン２０３に接続する」というフレーズは、「Ｗｅｂサーバ２１３に接続し、アクセス・エンジンに「リソース」を要求する」ということを意味する（つまり、要求は、アクセス・エンジンを指定するパスを含む）。さらに、「Ｘコマンド」の参照は、コマンド・パラメータがＸに設定されているアクセス・エンジン・リソースを要求することを示す。
【０６２８】
４．５．１  データ接続の形式
ブロブは、ブロブ・ヘッダとオプションによりブロブ・データの一部分とからなる。ブロブが接続を介して送信される場合、それらは、次々に送信される。
【０６２９】
図６３は、データ接続６０１５上で送信されるいくつかのデータの形式の一実施例を示している。図６３の実施例では、ブロブ・ヘッダ６３０５の後に、関連付けられたブロブ・データ６３１０が続き、順に、関連付けられたブロブ・データを持たないブロブ・ヘッダ６３１５、ブロブ・ヘッダ６３２０および関連付けられたブロブ・データ６３２５と続く。
【０６３０】
ブロブ・ヘッダ（例えば、６３０５、６３１５、および６３２０）は、それぞれ、ストリーム識別子、ブロブ・データ長さ値、およびブロブ型値からなる。ブロブ・データ・セクション（例えば、６３１０、６３２５）は、ブロブの型に依存するそれ専用の形式を持つが、それについて以下で説明する。ブロブ・データ長の値が０の場合、ブロブ・データはない。
【０６３１】
それぞれのブロブは、データのさらに大きなストリームの一部である場合がある（ビデオ・データ・サンプル・ストリームなど）。ストリーム識別子は、そのブロブが一部であるストリームを識別する識別子であり、これにより、ビューア２２００により、ブロブを別々のストリームに逆多重化することができる。それぞれのストリーム内のブロブは順番に送信され（例えば、ストリームがビデオ・ストリームの場合には、フレームが順に送られる）、ストリームは、もしあればデータの他のストリームと多重化することができる。ビューア２２００は、要求されたすべてのストリームを追跡する。ビューア２２００は、ビューア２２００側で理解できない型のブロブを受け取ると、そのブロブを無視する。
【０６３２】
４．５．１．１  ブロブの型
付録Ａには、ブロブの使用可能な型のリストをまとめた。
【０６３３】
画像ブロブ（またはビデオ・ブロブ）は、単一のＪＰＥＧ画像およびその画像に関連する時刻（通常は、画像取得時刻）を指定するデータを含む。
【０６３４】
イベント・ブロブは、改行文字でそれぞれ区切られた多数のイベントを含む。イベント・ブロブ構造は、ブロブに含まれるイベントの個数を定義する。
【０６３５】
開始ブロブは、データ接続６０１５を介して送信される第１のブロブである。開始ブロブは、データ・ストリームの接続ＩＤを含む。ブロブのストリームＩＤは、０に設定される。
【０６３６】
「ｋｅｅｐ  ａｌｉｖｅ」ブロブは、タイムアウトにより介在するプロキシ・サーバがデータ接続６０１５を閉じるのを防ぐために一定の不活動期間の後にビューア２２００に送信される。接続に、ストリーミング・ビデオなどの他の活動がある場合、「ｋｅｅｐ  ａｌｉｖｅ」ブロブは送信されない。ビューア２２００は、タイミング情報に対する「ｋｅｅｐ  ａｌｉｖｅ」ブロブに依存すべきでない。「Ｋｅｅｐ  ａｌｉｖｅ」ブロブには付加データはない。
【０６３７】
「Ｅｎｄ  ｓｔｒｅａｍ」ブロブは、ストリームが終了したときに送信され、アクセス・エンジン２０３がストリームを終了しつつあることを示す。ビューア２２００は、もはや、ストリームからブロブを受信しない。ストリームを修正する（付録Ｂで説明されているようにビデオ・ストリーム修正コマンドを使用して）他のすべての要求は、「ｅｎｄ  ｓｔｒｅａｍ」ブロブが送信された後、失敗する。
【０６３８】
「ｃｌｏｓｅ  ｓｔｒｅａｍ」ブロブは、データ接続上の最後のブロブとして送信される。ビューア２２００は、ビューア２２００がストリームを閉じるブロブを受信すると、接続をきれいに閉じることができる。ストリームを閉じるブロブには付加データはない。
【０６３９】
図５９を参照しつつ説明されているように、「ｎｏ−ｖｉｄｅｏ」ブロブは、まだストリーミングされるビデオ・サンプル・データが格納されているが、ストリーム内で現在の時刻に使用可能な現在ビデオ・サンプル・データがない場合にビューア２２００に送信される。
【０６４０】
応答ブロブは、制御接続６００５上で送信されるコマンドからの応答を含む。
【０６４１】
４．５．２  アクセス・エンジンとビューアとの間の接続の確立
図６２は、ビューア２２００とアクセス・エンジン２０３との間の接続を確立する手順のまとめである。
【０６４２】
初期ステップ６２００で、ビューア２２００は、Ｗｅｂサーバ２１３に接続し、セットアップ・コマンドを発行する。このコマンドは、アクセス・エンジン２０３に渡される。ステップ６２０５で、アクセス・エンジン２０３は、制御接続６００５の接続識別子を返し、ステップ６２１０で、アクセス・エンジン２０３は、データ接続６０１５の接続識別子を送信する。アクセス・エンジン２０３により送信される識別子は、システム１００において一意であり、これらを使用してアクセス・エンジン２０３により、システム１００内の多数の潜在的ビューア、例えば、ビューア２２００Ａ〜Ｄから受信されたコマンドのソースを識別する。
【０６４３】
制御接続６００５が確立されると、ビューア２２００は、データ接続を確立する単一の要求を発行する（ステップ６２１５）。データの要求は、データ接続６０１５で行われる唯一の要求である。単一要求は、ビューア２２００がシャットダウン・コマンドを発行するまで終了しない（ステップ６２３５）。データ接続６０１５が、ビューア２２００によりシャットダウン要求が発行されたとき以外のときに閉じられた場合、アクセス・エンジン２０３は、データ接続６０１５はすでに終了しており、すべての関連付けられたリソースを解放する。これは、制御接続６００５およびデータ接続６０１５に発行された識別子がクリアされることを意味する。したがって、ビューア２２００は、アクセス・エンジン２０３にサンプル．データを要求し続けることをビューア２２００側で望んでいる場合にセットアップ要求を再発行する必要がある。前の識別子を再接続し、再利用することを試みると、アクセス・エンジン２０３からエラーを発生する。
【０６４４】
データ接続６０１５が確立された後、ステップ６２２０で、ビューア２２００は、アクセス・エンジン２０３にビデオ・サンプル・データおよびイベント・レコードを要求することを開始できる。そのような要求は、制御接続６００５を介して送信される。制御接続６００５を介したそれぞれの要求は、コマンド識別子およびセットアップ要求により返されたデータ接続識別子を含む。
【０６４５】
ステップ６２２５で、アクセス・エンジン２０３は、要求されたデータをデータ接続６０１５を介してビューア２２００に送信する。ステップ６２３０で、データ送信エラーが発生したかどうかをチェックする。エラーが発生した場合（つまり、ステップ６２３０のＹｅｓオプション）、ステップ６２４０で、アクセス・エンジンは、接続６００５、６０１５を閉じる。データ送信エラーがない場合（ステップ６２３０のＮｏオプション）、アクセス・エンジン２０３は、ビューア２２００にデータを送信し続ける。
【０６４６】
４．６  他の情報
アクセス・エンジン２０３が記録エンジン２０１とは別のソフトウェア・アプリケーションである利点の１つは、システムが記録機能のみを実行する場合に、記録エンジン２０１のみが実行する必要があり、またこれにより、ストレージ・サーバ２３００上の記録のパフォーマンスが向上しうる。逆に、システムがアクセス機能のみを実行する必要がある場合（例えば、システムがアーカイブされたビデオのみを表示できるようにセットアップされている場合）、アクセス・エンジン２０３だけを実行すればよく、このため、アクセス・パフォーマンスが向上しうる。一実装では、アクセス・エンジン２０３は、記録エンジン２０１とは異なるストレージ・サーバ２３００上で実行される。このような配列では、記録エンジン２０１が一連のビデオおよびイベント・データ・ファイル２０９を閉じた後（つまり、スワップオーバーの後）、ソフトウェア・アプリケーションは、ネットワーク２２２０を介して、第１のストレージ・サーバ２３００Ａから第２のストレージ・サーバ２３００Ｂにビデオおよびイベント・データ・ファイルを移動する。この配列では、アクセス・エンジン２０３は、第２のストレージ・サーバ２３００Ｂ上で実行され、これにより、ビデオおよびイベント・データがビューア２２００から使用できるようになる。さらに他の代替え配列では、アクセス・エンジン２０３は、未完了の（つまり、アクティブ）ファイルからデータを提供する第１のストレージ・サーバ２００３Ａ上で実行している可能性があり、他のアクセス・エンジン２０３は、上述のようにネットワーク２２２０を介してコピーされた完了したファイルからデータを提供する第２のストレージ・サーバ２００３Ｂ上で実行している可能性がある。
【０６４７】
５．０  ビューア
５．１  ビューアの概要
ビューア２２００は、ハード・ディスク・ドライブ２２０５上に常駐するビューア・アプリケーション・ソフトウェアを含み、またプロセッサ２２０５によりその実行に際して制御される。ビューア・アプリケーション・ソフトウェアは、通常、Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システムの下で実行される。ビューア・アプリケーション・ソフトウェアは、カメラ１１２〜１１５により取り込まれ、カメラ・サーバ１０９〜１１１によりネットワーク経由で提供されるライブおよび記録済みサンプル・データ（つまり、ビデオ画像およびイベントを表す）の両方へのローカルまたはリモートでのアクセスを、コンピュータ・ネットワーク２２２０上で可能にする。
【０６４８】
ビューア２２００およびそこに常駐し実行されるビューア・アプリケーション・ソフトウェアは、これ以降、特に断りのない限り、ビューア２２００と総称される。
【０６４９】
ビューア２２００は、以下の機能を実行するために使用できる。
【０６５０】
（ｉ）カメラ１１２〜１１５、カメラ・サーバ１０９〜１１１、およびストレージ・サーバ２３００の登録およびスケジュールの設定を含むローカルまたはリモート・ストレージ・サーバ２３００の構成。この文脈で、ローカル・ストレージ・サーバは、ビューア２２００およびストレージ・サーバ２３００が同じコンピュータ・モジュール（例えば、コンピュータ・モジュール２３０１）上に実装される実装を指す。対照的に、リモート・ストレージ・サーバ２３００は、図１に示されているように、ストレージ・サーバ２３００から離れた場所にある、コンピュータ・モジュール２２０１などのコンピュータ・モジュール上でビューア２２００が実行される実装を指す。
【０６５１】
（ｉｉ）ビューア２２００機能のプリファレンスの構成。
【０６５２】
（ｉｉｉ）コンピュータ・ネットワーク２２２０を介した、リモート・カメラ・サーバ１０９〜１１１からのライブ・ビデオ・サンプル・データ・ストリームのビューイング、およびカメラ・サーバ１０９〜１１１に関連付けられているカメラ１１２〜１１５のパン、傾斜、ズーム、およびバックライト調整を含むそれらのカメラ・サーバ１０９〜１１１の制御。
【０６５３】
（ｉｖ）ローカルまたはリモート・ストレージ・サーバ２３００からの記録済みビデオ・サンプル・データ・ストリームのビューイング。
【０６５４】
（ｖ）ローカルまたはリモート・ストレージ・サーバ２３００からのイベントのビューイング。
【０６５５】
（ｖｉ）ローカルまたはリモート・ストレージ・サーバ２３００からのイベントの検索。
【０６５６】
（ｖｉｉ）１つまたは複数のカメラ１１２〜１１５に関連付けられた既存のスケジュールをオーバーライドするための記録の開始。
【０６５７】
以下の説明では、多数の画面（例えば、図６４および６５）が示され、説明されている。画面（例えば、６４００）のうちの１つまたは複数が、ビューア・アプリケーション・ソフトウェアによりユーザに対しビューア２２００のディスプレイ２２１４上に表示され、これは、システム１００上で様々な機能を実行するためのグラフィカル・ユーザ・インターフェースをユーザに提供する。多数のダイアログ・ウィンドウまたはダイアログは、さらに、いくつかのユーザ・アクションに対する応答としてビューア・アプリケーション・ソフトウェアによりディスプレイ２２１４上にも表示される、メニュー・アイテムとともに記述される。さらに、応答を開始するためにユーザが選択できる多数のボタンが記述される。このような画面、ボタン、ダイアログ、およびメニュー・アイテムは、通常、Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システムの下で実行される他のそのような画面、ダイアログ、およびメニュー・アイテムと従来の類似の方法でユーザがマウス２２０３または他の類似のデバイス（例えば、トラックボール、ジョイスティック、キーボード２２０２上の矢印など）を使用することにより選択できる。しかし、当業者であれば、他の適当なオペレーティング・システムを使用して、システム１００のユーザに後述の機能を備えるグラフィカル・ユーザ・インターフェースを実現することができることも理解するであろう。
【０６５８】
ビューア２２００は、ＨＴＴＰ上で動作するカスタム・プロトコルを介してストレージ・サーバ２３００に接続する。ビューア２２００は、ＨＴＴＰ上で動作する異なるカスタム・プロトコルを使用してカメラ・サーバ１０９〜１１１に接続する。ＨＴＴＰ上で操作することにより、システム１００は、ファイヤウォールまたはゲートウェイをさらに構成しなくてもネットワーク・ゲートウェイ機能を実行するふつうに構成されたファイヤウォールまたは他の形態の機器とともに使用することができる。ファイヤウォールおよび類似のゲートウェイは、通常、他の何らかのプロトコルを禁止する一方で、ＨＴＴＰトラフィックを通すように構成される。監視システム１００がＨＴＴＰに従ってコンピュータ・ネットワーク２２２０上ですべてのトラフィックの送信および受信を行うことにより、複雑なネットワーク・システム構成を行うことなくシステム１００をインストールすることができる。
【０６５９】
インストール時に、管理者（つまり、管理者権限を持つユーザ）は、ストレージ・サーバ２３００と同じコンピュータ・モジュール（例えば、コンピュータ・モジュール２３０１）または異なるコンピュータ・モジュール（例えば、コンピュータ・モジュール２２０１）上でビューア２２００を実装する（つまり、ビューア・アプリケーション・ソフトウェアをインストールする）ことを選択できる。ストレージ・サーバ２３００上にインストールされるビューア２２００は、同じコンピュータ・モジュール上に実装されたストレージ・サーバ２３００にアクセスし、さらに他のストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、２３００Ｄ）にもアクセスすることができる。他のビューア（例えば、２２００Ａ、２２００Ｂ、２２００Ｃ、２２００Ｄ）も、ビューア２２００と同じコンピュータ・モジュール（例えば、コンピュータ・モジュール２２０１）上に実装されたストレージ・サーバ２３００にアクセスすることができる。
【０６６０】
システム１００は、カメラ・サーバ１０９〜１１１およびセンサ（図に示されていない）をＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓという名前の階層に編成し、これにより、ユーザは多数のビデオ・ファイルおよびイベント・ファイルを効率よく探索できる。カメラ・セレクタはビューア２２００により、すべてのカメラ・サーバ１０９〜１１１のソートされたメニューとともにディスプレイ・デバイス２２１４上に表示されるユーザに提示することができる。
【０６６１】
ディスプレイ・デバイス２２１４上に提示されるビューイング・ウィンドウ７６００（図７６を参照）では、ビューポートを、ビューポートの実行中に、追加、削除、再配置、およびサイズ変更できる。ディスプレイ２２１４上に表示される異なるビデオ・ウィンドウ（例えば、図７６の７６２５）は、ライブ・ビデオ・サンプル・データ・ストリームと、ハード・ディスク・ドライブ２２１０またはストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０上に格納されているビデオ・ファイルからの記録の再生の組合せを含むことができる。有用なビューイング組合せを含むビデオ・ウィンドウ・レイアウトは、後から再利用されるように、ハード・ディスク・ドライブ２２１０上に保存することができる。
【０６６２】
以下で詳しく説明されるように、ビューア２２００によりディスプレイ・デバイス２２１４上に提示されるイベント・ビュー内で、対話式時刻表７６０７（図７６を参照）は、定義済みの時間範囲内に発生したイベントのフィルタ処理可能なビューを提示する。ユーザは、時刻表７６０７からイベント（例えば、８９１９）を選択することができ、そのイベントの周りのビデオ・サンプル・データのセグメントを自動的に再生できる。
【０６６３】
５．２  ビューアの起動およびログイン
ビューア２２００が起動されると、ダイアログ・ウィンドウがディスプレイ・デバイス２２１４上に表示される。ダイアログ・ウィンドウは、通常、ビューア・アプリケーション・ソフトウェアに関する情報および「ｃａｎｃｅｌ」ボタンを含む。ダイアログが表示されている間、ビューア２２００は、マスタ・ストレージ・サーバ（ＭＳＳ）（例えば、ストレージ・サーバ２３００Ａ、２３００Ｂ、２３００Ｃ、または２３００Ｄのいずれか１つ）に接続を試みる。マスタ・ストレージ・サーバは、本明細書では、マスタ・ストレージ・サーバ２３００Ａと呼ばれる。マスタ・ストレージ・サーバ２３００Ａは、ビューア２２００がシステム１００の様々な設定を取り出す、取り出し元のストレージ・サーバである（カメラ１１２〜１１５、カメラ・サーバ１０９〜１１１、Ｚｏｎｅｓ、Ｌｏｃａｔｉｏｎｓ、およびビデオ・ウィンドウ・レイアウト情報など）。これらの設定は、ネットワーク・ビデオ・レコーダ構成データと呼ばれる。
【０６６４】
ビューア２２００が最初に実行されたときに、ビューア２２００は、実行されているビューア２２００と同じコンピュータ・モジュール２２０１上でホスト「ｌｏｃａｌｈｏｓｔ」に接続を自動的に試みる。「ｌｏｃａｌｈｏｓｔ」は、ビューア・アプリケーション・ソフトウェアが実行されているのと同じコンピュータ・モジュール（例えば、２２０１）に解決するホスト名を指すために通常使用される名前である。
【０６６５】
「ｃａｎｃｅｌ」ボタンをクリックすると、ダイアログ・ウィンドウが閉じて、「ｃｏｎｎｅｃｔ  ｔｏ  ｍａｓｔｅｒ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｄｉａｌｏｇ」ウィンドウを起動する。「ｃｏｎｎｅｃｔ  ｔｏ  ｍａｓｔｅｒ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｄｉａｌｏｇ」ウィンドウを使用することで、ユーザは、マスタ・ストレージ・サーバ２３００Ａにアクセスするために使用されるホスト名またはＩＰアドレスを変更し、マスタ・ストレージ・サーバ２３００Ａにアクセスするために使用されるポート番号を変更することができる。「ｃｏｎｎｅｃｔ  ｔｏ  ｍａｓｔｅｒ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｄｉａｌｏｇ」ウィンドウは、さらに、「ｃｏｎｎｅｃｔ  ｂｕｔｔｏｎ」および「ｃａｎｃｅｌ  ｂｕｔｔｏｎ」も含む。ユーザが「ｃｏｎｎｅｃｔ  ｂｕｔｔｏｎ」を選択した場合、ビューア２２００は、指定されたポート番号を使用して指定されたマスタ・ストレージ・サーバ２３００Ａに接続を試みる。
【０６６６】
「ｃｏｎｎｅｃｔ  ｔｏ  ｍａｓｔｅｒ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｄｉａｌｏｇ」ウィンドウ上の「ｃａｎｃｅｌ」をクリックすると、ダイアログ・ウィンドウが閉じて、ビューア２２００は終了する。
【０６６７】
ビューア２２００によるマスタ・ストレージ・サーバ２３００Ａへの接続の試みは、上述のように、ビューアがＮＶＲ＿ＵｓｅｒＧｅｔコマンドをマスタ・ストレージ・サーバ２２００Ａに送信して、ネットワーク・ビデオ・レコーダ構成データを取得することを伴う。ネットワーク・ビデオ・レコーダ構成データは、通常、「ｃｏｎｆｉｇ．ｃｕｉ．ＳＳ」という名前のファイルとしてマスタ・ストレージ・サーバ２２００Ａ上に格納され、知られているストレージ・サーバ２３００およびカメラ・サーバ１０９〜１１１の集合を含み、後述のように、それらの知られているストレージ・サーバ２３００上のカメラ・サーバ１０９〜１１１をＺｏｎｅｓおよびＬｏｃａｔｉｏｎｓの集合に関係付ける。
【０６６８】
ネットワーク・ビデオ・レコーダ構成データの構造は、以下のとおりである。
【０６６９】
−  ファイル形式のバージョン
−  それぞれのエントリは、名前、そのＬｏｃａｔｉｏｎ内のＺｏｎｅｓのリストを含み、それぞれのＺｏｎｅエントリは、それぞれそのカメラに関連付けられているデータを含むカメラ識別子のリストを含む、Ｌｏｃａｔｉｏｎｓのリスト。
【０６７０】
−  それぞれのストレージ・サーバ・エントリは、そのストレージ・サーバに関連付けられたデータ、そのストレージ・サーバに関連付けられたカメラ・サーバのリストを含み、それぞれのカメラ・サーバ・エントリは、そのカメラ・サーバに関連付けられたカメラのリストを含む、ストレージ・サーバのリスト。
【０６７１】
−  それぞれのエントリは、カメラ・サーバに関連付けられたカメラのリストを含む、ストレージ・サーバに関連付けられていないカメラ・サーバのリスト。
【０６７２】
構成ファイルの実施例を以下に示す。
【０６７３】
V1.1
[Location 1] Sydney
%[Zone 1] Bronte: 111111, 222222, 333333
%[Zone 2] Coogee: 444444
[Location 2] Melbourne
%[Zone 1] St Kilda: 555555
[Storage Server 1]
%Name: cupboard; Hostname: server; Port: 80
%[Camera Server 1]
%%Name: koal; Hostname: koal; Port: 80; Username: root; Password: VB
%%Remote Hostname: koal; Remote Port: 80
%%[Camera 1]
%%%Name (English): koal1; Name (Japanese): jkoal2; Camera ID: 111111
%%%Cam #: 1; Drive: D:; Thumbnail: abbbbba123212412434... (１６進数データ)
%[Camera Server 2] ...
[Camera Server S]...／／ ストレージ・サーバに関連付けられていないカメラ・サーバ
ＮＶＲ＿ＵｓｅｒＧｅｔコマンドは、構成され、上述のようにＨＴＴＰ  Ｇｅｔメソッドを使用して要求としてマスタ・ストレージ・サーバ２３００Ａに送信される。メッセージを送信するために、ビューア２２００は、指定されたポートで指定されたホスト名またはＩＰアドレスに接続することを試み、以下のリソース（１４）についてＨＴＴＰ  ＧＥＴメッセージを送信する。
【０６７４】
／webview-nvr／nvr_userget.fcgi?file=config                （１４）
マスタ・ストレージ・サーバ２３００Ａが認証を必要とするように構成されていない場合、マスタ・ストレージ・サーバ２２００Ａ上のＨＴＴＰサーバは、ネットワーク・ビデオ・レコーダ構成データをビューア２２００に返す。この場合、後述の「ｌｏｇｉｎ  ｄｉａｌｏｇ」ウィンドウは、ユーザに対し示されず、ビューア２２００が、ビューイング画面７６００とともに提示されるが、これについては、図７６を参照しつつ以下で詳しく説明する。
【０６７５】
しかし、通常、マスタ・ストレージ・サーバ２３００Ａは、マスタ・ストレージ・サーバ２３００Ａ上のネットワーク・ビデオ・レコーダ構成データにアクセスするためにＨＴＴＰ認証が必要になるように構成されている。この場合、ネットワーク・ビデオ・レコーダ構成データを取り出す試みにより、ＨＴＴＰ「Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｒｅｑｕｉｒｅｄ」メッセージがマスタ・ストレージ・サーバ２３００Ａからビューア２２００に送信される。このメッセージは、システム１００に対し指定されたレルムに対する値を含む（例えば、「ＣＯＭＰＡＮＹＮＡＭＥ」）。ＨＴＴＰ  Ｄｉｇｅｓｔ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎが使用されている場合、ｎｏｎｃｅ（つまり、ランダム文字列）もメッセージに含まれる。
【０６７６】
ビューア２２００が最初に「Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｒｅｑｕｉｒｅｄ」メッセージを受信すると、「ｌｏｇｉｎ  ｄｉａｌｏｇ」ウィンドウがディスプレイ・デバイス２２１４上でユーザに対し提示される。「ｌｏｇｉｎ  ｄｉａｌｏｇ」ウィンドウは、通常、「Ｕｓｅｒ  ｎａｍｅ」および「Ｐａｓｓｗｏｒｄ」、「ｌｏｇｉｎ」ボタンおよび「ｃａｎｃｅｌ」ボタンのフィールドを含む。ユーザは、通常、ユーザ名およびパスワード詳細を入力し、「ｌｏｇｉｎ」ボタンを選択する。応答として、ログイン・プロセスがプロセッサ２２０５により実行される。ユーザが「ｌｏｇｉｎ  ｄｉａｌｏｇ」ウィンドウの「ｃａｎｃｅｌ」ボタンを選択すると、ビューア２２００は終了する。
【０６７７】
ビューア２２００は、指定されたマスタ・ストレージ・サーバ２３００Ａに接続できない場合（例えば、指定されたホスト名またはＩＰアドレスおよびポート番号を持つホストが見つからない場合、またはそのホストがストレージ・サーバ２３００として構成されていない場合）、ユーザは、ビューア２２００が接続できなかったということを示すメッセージを含むダイアログ（つまり、「ｆａｉｌｅｄ」ダイアログ）を提示される。「ｆａｉｌｅｄ」ダイアログは、さらに、「ｈｏｓｔｎａｍｅ  ｏｒ  ＩＰ  ａｄｄｒｅｓｓ」およびポート番号の編集可能なフィールドだけでなく「ｃｏｎｎｅｃｔ」および「ｃａｎｃｅｌ」ボタンを含む。「ｆａｉｌｅｄ」ダイアログは、最初、これらの値がビューア２２００について設定され、接続しようとして失敗した試みで使用されていた現在値に設定される。ユーザは、これらの値を修正し、「ｆａｉｌｅｄ  ｄｉａｌｏｇ」ウィンドウの「ｃｏｎｎｅｃｔ」ボタンを選択することにより代替えストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、または２３００Ｄ）に接続することを試みることができる。それとは別に、ユーザは、ビューア２２００に終了させる「ｆａｉｌｅｄ  ｄｉａｌｏｇ」ウィンドウの「ｃａｎｃｅｌ」ボタンを選択することができる。
【０６７８】
ユーザが「ｌｏｇｉｎ  ｄｉａｌｏｇ」ウィンドウの「ｌｏｇｉｎ」ボタンを選択すると、前のＨＴＴＰメッセージを修正してネットワーク・ビデオ・レコーダ構成データを取り出すために、すでに入力されているユーザ名およびパスワードが使用される。ストレージ・サーバ２３００上のＷｅｂサーバ２１３がＨＴＴＰ基本認証を使用するように構成されている場合、ユーザ名およびパスワードが、ビューア２２００からＷｅｂサーバ２１３に送信される新しいメッセージに含まれる。ストレージ・サーバ２３００がＨＴＴＰダイジェスト認証を使用するように構成されている場合、ビューア２２００は、Ｗｅｂサーバ２１３から送信されたｎｏｎｃｅ、要求の中のユーザ名、パスワード、ＨＴＴＰメソッド、およびリソースの集合からチェックサムを（例えば、ＭＤ５を使用して）生成する。このチェックサムは、新しいメッセージに含まれる（ＨＴＴＰメソッド、要求されたリソース、およびユーザ名のような）。Ｗｅｂサーバ２１３が新しいメッセージを受信した場合、Ｗｅｂサーバ２１３は、ストレージ・サーバ・ユーザ・ファイル内の情報を使用してユーザを認証しようと試みる。Ｗｅｂサーバ２１３は、情報の同じ集合に同じチェックサム手法を適用することによりこれを実行する（つまり、ビューア２２００に送信されたｎｏｎｃｅ、ストレージ・サーバ・ユーザ・ファイルからのユーザ名、パスワード、およびレルム、使用されているＨＴＴＰメソッド、および要求されているリソース）。認証が成功した場合、要求は成功し、ネットワーク・ビデオ・レコーダ構成データがＷｅｂサーバ２１３により返される。
【０６７９】
ストレージ・サーバ２３００の典型的な構成によれば、Ｗｅｂサーバ２１３とのすべてのトランザクションに関して上述の種類の認証が必要である。これは、Ｗｅｂサーバ２１３を通じてのすべての要求を含み、また記録エンジン２０１へのデータのアクセスおよび設定の要求、アクセス・エンジン２０３へのクエリ（ビデオまたはイベント・データのクエリを含む）を含み、さらに、記録エンジン２０１に送信される手動記録の要求も含む。ユーザがパスワードを入力した後、認証情報（ＨＴＴＰ基本認証がＷｅｂサーバ２１３上で構成されているユーザ名およびパスワード、およびＨＴＴＰダイジェスト認証が構成されているチェックサムである）は、通常、同じストレージ・サーバ２３００へのすべての後続のメッセージに含まれる。認証に対する要求間のトランザクションの時間的長さまたは個数に対するポリシーは、通常、Ｗｅｂサーバ２１３について構成される。
【０６８０】
ビューア２２００は、ネットワーク・ビデオ・レコーダ構成データを受信すると、メモリ２２０６内にこのデータのコピーを作成する。ビューア２２００は、ユーザが「Ｓｔｏｒａｇｅ  ａｎｄ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ  Ｓｕｍｍａｒｙ」画面を使用しているときに修正が構成に加えられる場合にメモリ内のこの構成データを使用する。
【０６８１】
ビューア２２００がネットワーク・ビデオ・レコーダ構成データを受信した後、ビューア２２００は、マスタ・ストレージ・サーバ２３００Ａのハード・ディスク・ドライブ２３１０から「ｓｈａｒｅｄ  ｖｉｄｅｏ  ｗｉｎｄｏｗｓ（登録商標）  ｌａｙｏｕｔｓ  ｄａｔａ」および「ｐｅｒｓｏｎａｌ  ｖｉｄｅｏ  ｗｉｎｄｏｗ  ｌａｙｏｕｔｓ  ｄａｔａ」を取り出すために追加ＨＴＴＰメッセージを定式化する。
【０６８２】
共有ビデオ・ウィンドウ・レイアウト・データおよびパーソナル・ビデオ・ウィンドウ・レイアウト・データは、それぞれ、ビューア２２００により提示されるビューイング画面７６００上にビデオ・ウィンドウ（例えば、７６０５）をレイアウトし、ディスプレイ・デバイス２２１４上に表示されるようにするために使用可能な共有ビデオ・ウィンドウ・レイアウトおよびパーソナル・ビデオ・ウィンドウ・レイアウトに関係するデータである。ビデオ・ウィンドウ・レイアウト・データは、レイアウトの種類を指定するデータ（例えば、レイアウトが位置揃えグリッド、小グリッド、中グリッド、またはグリッドなしであるかどうか）、およびビデオ・ウィンドウ・レイアウト・エリア７６０５（図７６を参照）のビデオ・ウィンドウ（例えば、７６２５）毎に、そのビデオ・ウィンドウ（例えば、７６２５）に関連付けられている位置、サイズ、およびカメラ１１２〜１１５を指定するデータを含む。
【０６８３】
共有ビデオ・ウィンドウ・レイアウト・データは、通常、マスタ・ストレージ・サーバ２３００Ａ上に、「ｐｌａｙｏｕｔ．ｃｕｉ．ＳＳ」という名前のファイルとして格納され、パーソナル・ビデオ・ウィンドウ・レイアウト・データは、通常、マスタ・ストレージ・サーバ２３００Ａ上に、「ｕｌａｙｏｕｔ．ｃｕｉ．［ｕｓｅｒｎａｍｅ］．ＳＳ」という名前のファイルとして格納されるが、ただし、［ｕｓｅｒｎａｍｅ］は、「ｌｏｇｉｎ  ｄｉａｌｏｇ」ウィンドウに入力され、ストレージ・サーバ２３００ＡにＨＴＴＰメッセージ内のヘッダとして渡されるユーザの名前である（例えば、ユーザ「ｂｏｂ」の場合、ヘッダは、「ｕｓｅｒｎａｍｅ：ｂｏｂ」となる）。
【０６８４】
レイアウト・データの構造は以下のとおりである。
【０６８５】
−  ファイル形式のバージョン
−  フォルダ内のレイアウトがレイアウトの入っているフォルダ内にネストされて表されるレイアウトおよびレイアウトのフォルダのリスト。レイアウト毎に、名前およびグリッド・タイプおよび、カメラｉｄ、位置、およびサイズのリストがある。
【０６８６】
レイアウト・ファイルの実施例を以下に示す。
【０６８７】
V1.1
[Layout 1]
%Name: Carpark
%Gridtype: alignment
%Window: x:24; y:26; width:320; height 240; camera:111111
%Window: x:38; y:128; width:320; height 240; camera:222222
[Layout Folder 1]
%Name: Andrew's layouts
%[Layout 2]
%Name: Kitchen
%Gridtype: none
%Window: x:23; y:25; width:320; height 240; camera:333333
%Window: x:38; y:127; width:320; height 240; camera:444444
%[Layout 2]...
共有ビデオ・ウィンドウ・レイアウトは、管理者により作成され、任意のユーザによって読み出すことができる。共有ビデオ・ウィンドウ・レイアウトは、管理者（つまり、管理者権限を有するユーザ）しか修正できない。パーソナル・ビデオ・ウィンドウ・レイアウトは、特定のユーザ名に関連付けられており、そのユーザ名でログインしたユーザしか読み取り、作成、または修正を行うことができない。
【０６８８】
共有ビデオ・ウィンドウ・レイアウトを取得するために、ビューア２２００は、ＨＴＴＰ  Ｇｅｔメソッドを使用して他のＮＶＲ＿ＵｓｅｒＧｅｔコマンドを要求としてマスタ・ストレージ・サーバ２３００Ａに送信する。この場合、ビューア２２００は、特定のポートで指定されたホスト名またはＩＰアドレスに接続することを試み、以下のリソース（１５）についてＨＴＴＰ  ＧＥＴメッセージを送信する。
【０６８９】
／webview-nvr／nvr_userget.fcgi?file=ulayout                  （１５）
マスタ・ストレージ・サーバ２３００Ａ上の記録エンジン２０１は、上述のように、ビューア２２００から受信されたＧＥＴメッセージを処理し、ハード・ディスク・ドライブ２３１０内に構成された共有ビデオ・ウィンドウ・レイアウトを含むファイル（つまり、「共有レイアウト・ファイル」）を読み込み、コンピュータ・ネットワーク２２２０を介して共有レイアウト・ファイルからビューア２２００にデータを返す。
【０６９０】
パーソナル・ビデオ・ウィンドウ・レイアウトは、以下のリソース（１６）上でメッセージを送信することにより同様の方法でアクセスされる。
【０６９１】
／webview-nvr／nvr_userget.fcgi?file=layout                （１６）
パーソナル・ビデオ・ウィンドウ・レイアウトの場合、マスタ・ストレージ・サーバ２３００Ａ上の記録エンジン２０１は、上述のように、ビューア２３００から受信されたＧＥＴメッセージを処理し、要求で使用されるユーザ名に基づいてファイル名を構築し、ハード・ディスク・ドライブ２３１０内に構成されたパーソナル・ビデオ・ウィンドウ・レイアウトを含むファイル（つまり、「パーソナル・レイアウト・ファイル」）を読み込み、コンピュータ・ネットワークを介して、パーソナル・レイアウト・ファイルからビューア２２００にデータを返す。
【０６９２】
ビューア２２００がマスタ・ストレージ・サーバ２３００Ａに接続し、ログインできる場合（つまり、マスタ・ストレージ・サーバ２３００Ａがビューア２２００と同じコンピュータ・モジュール上に実装される場合を含む）、ユーザは、ビューイング画面７６００を提示されるが、これについては、以下で説明する。
【０６９３】
５．３  ビューアのメニュー
ビューア２２００は、ディスプレイ・デバイス２２１４上に表示され、２つの主画面を含むユーザ・インターフェースを備える。第１の画面は、図６４に示されているように、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１であり、第２の画面は、図７６に示されているように、ビューイング画面７６００である。
【０６９４】
アプリケーション・メニュー・アイテムの共通集合は、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１とビューイング画面７６００の両方から使用することができる。これら共通のメニュー・アイテムは以下のとおりである。
【０６９５】
（ｉ）アイテム「Ｅｘｉｔ」を含む「Ｆｉｌｅ」メニュー。
【０６９６】
（ｉｉ）アイテム「Ｄｅｌｅｔｅ」、「Ｃｕｔ」、「Ｃｏｐｙ」、「Ｐａｓｔｅ」、および「Ｓｅｌｅｃｔ  Ａｌｌ」を含む「Ｅｄｉｔ」メニュー
（ｉｉｉ）アイテム「Ｖｉｅｗｉｎｇ  ｓｃｒｅｅｎ」、「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」、および「Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ」を含む「Ｖｉｅｗ」メニュー
（ｉｖ）アイテム「Ａｂｏｕｔ」を含む「Ｈｅｌｐ」メニュー
以下では、メニュー・アイテムについて説明する。
【０６９７】
５．３．１  Ｅｘｉｔ
「Ｅｘｉｔ」アイテムは、ビュー・アプリケーション・ソフトウェアを閉じる。
【０６９８】
５．３．２  Ｄｅｌｅｔｅ
ビューイング画面７６００で、「Ｄｅｌｅｔｅ」アイテムは、ディスプレイ・デバイス２２１４上に表示されるビューイング画面７６００上のビデオ・ウィンドウの現在のレイアウトから選択されたビデオ・ウィンドウ（例えば、７６２５）を削除する。「Ｓｔｏｒａｇｅ」および「Ｃａｍｅｒａ  Ｓｅｒｖｅｒ  Ｓｕｍｍａｒｙ」ダイアログと呼ばれるビューア２２００が備える他のダイアログでは、「Ｄｅｌｅｔｅ」アイテムは、ストレージ・サーバ２３００、Ｌｏｃａｔｉｏｎｓ、Ｚｏｎｅｓ、またはカメラ・サーバ１０９〜１１１を削除するために使用される。「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅ」ダイアログ６４０３で、「Ｄｅｌｅｔｅ」アイテムは、通常のスケジュールまたは特別日記録スケジュールから選択された記録スケジュール・アイテムを削除する。「Ｄｅｌｅｔｅ」アイテムは、削除可能なディスプレイ２２１４上に表示される特定のアイテムが選択されていない限り無効である。
【０６９９】
５．３．３  Ｃｕｔ
ビューイング画面７６００で、「Ｃｕｔ」メニュー・アイテムは、レイアウトから選択されたビデオ・ウィンドウ（例えば、７６２５）を削除し、コピーをクリップボード内に置いて、これを同じまたは別のレイアウト内に貼り付ける。「Ｃｕｔ」メニュー・アイテムは、ビューイング画面７６００内で選択されたビデオ・ウィンドウがない場合には無効である。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３では、「Ｃｕｔ」メニュー・アイテムは無効である。
【０７００】
５．３．４  Ｃｏｐｙ
ビューイング画面７６００で、「Ｃｏｐｙ」メニュー・アイテムは、選択されたビデオ・ウィンドウ（例えば、７６２５）のコピーをクリップボード内に置く。「Ｃｏｐｙ」メニュー・アイテムは、ビューイング画面７６００内で選択されたビデオ・ウィンドウがない場合には無効である。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３では、「Ｃｏｐｙ」メニュー・アイテムは無効である。
【０７０１】
５．３．５  Ｐａｓｔｅ
ビューイング画面７６００で、「Ｐａｓｔｅ」メニュー・アイテムは、ビデオ・ウィンドウ（例えば、７６２５）をクリップボード内に現在のレイアウトに貼り付ける。「Ｐａｓｔｅ」メニュー・アイテムは、ビデオ・ウィンドウ（例えば、７６２５）が切り取り、またはコピーされない限り無効である。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３では、「Ｐａｓｔｅ」メニュー・アイテムは無効である。
【０７０２】
５．３．６  Ｓｅｌｅｃｔ  Ａｌｌ
ビューイング画面７６００で、「Ｓｅｌｅｃｔ  Ａｌｌ」メニュー・アイテムは、現在のレイアウト内のすべてのビデオ・ウィンドウを選択する。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３では、「Ｓｅｌｅｃｔ  Ａｌｌ」メニュー・アイテムは無効である。
【０７０３】
５．３．７  Ｖｉｅｗｉｎｇ  ｓｃｒｅｅｎ
「Ｖｉｅｗｉｎｇ  Ｓｃｒｅｅｎ」メニュー・アイテムは、ビューイング画面７６００へのビューを変更する。「Ｖｉｅｗｉｎｇ  Ｓｃｒｅｅｎ」メニュー・アイテムは、ユーザが現在「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１を表示している場合にのみアクティブである。
【０７０４】
５．３．８  Ｃｏｎｆｉｇｕｒａｔｉｏｎ
「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」メニュー・アイテムは、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の「ｃａｍｅｒａ  ｓｕｍｍａｒｙ」ダイアログ６４００へのビューを変更する。「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」メニュー・アイテム・オプションは、ユーザがビューイング画面７６００を表示している場合にのみアクティブである。
【０７０５】
５．３．９  Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ
ビューイング画面７６００で、「Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ」メニュー・アイテムは、ライブ・イベント・ログ７６１９が最後に開かれた位置およびサイズで、図７６に示されているように、ライブ・イベント・ログ７６１９を開く。ライブ・イベント・ログ７６１９がすでに開いている場合、ライブ・イベント・ログ７６１９が表示されたときに、「Ｌｉｖｅ  Ｅｖｅｎｔｓ」メニュー・アイテムの隣にチェックマークが示される。ライブ・イベント・ログ７６１９がすでに開いている場合に「Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ」メニュー・アイテムを選択すると、ライブ・イベント・ログ７６１９は閉じて、そのチェックマークが消える。
【０７０６】
５．３．１０  Ａｂｏｕｔ
「Ａｂｏｕｔ」メニュー・アイテムは、製品情報をユーザに提供する「Ａｂｏｕｔ」ダイアログを開く。「Ａｂｏｕｔ」メニュー・アイテムは、「ＯＫ」ボタンを持ち、ユーザがこのボタンを選択すると、「Ａｂｏｕｔ」ダイアログは消える。
【０７０７】
５．４  ビューアと構成プリファレンス
「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１は、管理者（つまり、管理者権限を持つユーザ）しかアクセスできない。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１にアクセスするには、ユーザは、「Ｖｉｅｗ」メニューから「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」メニュー・アイテムを選択する。ユーザが管理者特権を持たない場合、「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」メニュー内で「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」メニュー・アイテムは無効になっている。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１は、１つまたは複数のストレージ・サーバ２３００を構成し、ローカル・プリファレンスを設定するために使用される。このようなストレージ・サーバ２３００は、使用されているローカル・コンピュータ・モジュール２２０１、ローカル・エリア・ネットワーク（ＬＡＮ）上の他のコンピュータ・モジュール（例えば、コンピュータ・モジュール２２０１）、またはネットワーク２２２０上のリモート・コンピュータ・モジュールに実装することができる。
【０７０８】
「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１は、以下のために使用される。
【０７０９】
（ｉ）ストレージ・サーバ２３００およびカメラ・サーバ１０９〜１１１をシステム１００に登録する。
【０７１０】
（ｉｉ）記録をトリガするイベントを指定することを含む、カメラ・サーバ１０９〜１１１に対し記録スケジュールを設定する。
【０７１１】
（ｉｉｉ）ビューア設定を構成する。
【０７１２】
「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１は、通常、図６４に示されているように、タブ付きインターフェースを備える。「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１」に入ると、ビューア２２００は、マスタ・ストレージ・サーバ２３００Ａから取り出されたネットワーク・ビデオ・レコーダ構成データで指定されているように知られているすべてのストレージ・サーバ２３００に接続を試みる。ビューア２２００は、ログイン・ダイアログで入力されたのと同じユーザ名およびパスワードを使用してそれぞれのストレージ・サーバ２３００上でＷｅｂサーバ２１３への認証を試みることによりこれを実行する。ビューア２２００がストレージ・サーバ２３００に接続できない場合、接続警告が表示される。
【０７１３】
５．４．１  Ｓｔｏｒａｇｅ  ａｎｄ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ  Ｓｕｍｍａｒｙ
「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の図６４に示されているような「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」６４００では、管理者は、システム１００が認識するすべてのストレージ・サーバ２３００およびカメラ・サーバ１０９〜１１１の要約を表示することができる。「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」６４００では、さらに、ユーザは、システム１００に認識されているストレージ・サーバ２３００またはカメラ・サーバ１０９〜１１１の、メモリ２２０６内に構成されたリストを修正することができる。
【０７１４】
「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ダイアログ６４００を使用することで、カメラ・サーバ１０９〜１１１を登録し、カメラ・サーバ１０９〜１１１からのサンプル・データが記録される特定のストレージ・サーバ２３００に関連付けることができる。さらに、カメラ・サーバ１０９〜１１１は、特定のロケーションおよびゾーンに関連付けることができる。
【０７１５】
ビューア２２００では、ロケーションおよびゾーンの概念を使用することで、システム１００に認識されているカメラ・サーバ１０９〜１１１を階層構造に編成することができる。このような階層構造を使用すると、それぞれが任意の数のＺｏｎｅｓを含む複数のロケーションをセットアップすることができる。それぞれのＺｏｎｅは、カメラ・サーバ１０９〜１１１をいくつでも含むことができる。
【０７１６】
Ｌｏｃａｔｉｏｎは、特定の物理的ロケーションに対応するようにセットアップできる（例えば、一方のＬｏｃａｔｉｏｎを「Ｓｙｄｎｅｙ  Ｏｆｆｉｃｅ」とし、他方のＬｏｃａｔｉｏｎを「Ｍｅｌｂｏｕｒｎｅ  Ｏｆｆｉｃｅ」とすることができる）。Ｚｏｎｅｓは、Ｌｏｃａｔｉｏｎ内の特定の物理的ゾーンを参照するようにセットアップできる（例えば、一方のＺｏｎｅを「Ｌｅｖｅｌ  ５」とし、他方のＺｏｎｅを「Ｌｅｖｅｌ  ７」とすることができる）。
【０７１７】
ＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓは、上述のように使用できるが、ＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓは、カメラ・サーバ１０９〜１１１の階層を作成するために管理者がそれらを使用することを選択する任意の方法で使用できる。例えば、管理者は、特定の国を参照するようにＬｏｃａｔｉｏｎｓを構成し、その国の特定の市を参照するようにＺｏｎｅｓを構成することができる。他の実施例では、すべてのカメラ・サーバ１０９〜１１１が１つのビル内にある場合、管理者は、Ｌｏｃａｔｉｏｎｓがそのビルのレベルを参照し、Ｚｏｎｅｓはそれぞれのレベル内のエリアを参照するようにＬｏｃａｔｉｏｎｓとＺｏｎｅｓとを構成することを選択できる。
【０７１８】
ＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓの階層構造は、特定のストレージ・サーバ２３００が記録のため関連付けられた多数のカメラ・サーバ１０９〜１１１を備える階層構造から独立している。例えば、特定のストレージ・サーバ２３００は、記録のためストレージ・サーバに関連付けられている複数のカメラ・サーバ１０９〜１１１を備えることができ、その場合、それらのカメラ・サーバ１０９〜１１１は、異なるＺｏｎｅｓまたはさらにはＬｏｃａｔｉｏｎｓにも関連付けられる。例えば、それぞれのＬｏｃａｔｉｏｎが特定の国に関連付けられている構成では、ストレージ・サーバ２３００は、異なる国にあり、異なるＺｏｎｅｓ内に置かれるように構成されている、カメラ・サーバ１０９〜１１１からサンプル・データを記録するように構成することができる。同様に、特定のＺｏｎｅは、異なるストレージ・サーバ２３００にそれぞれ記録されるカメラ・サーバ１０９〜１１１で構成できる。
【０７１９】
「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ダイアログ６４００では、ユーザは、ストレージ・サーバ階層に従って、またはＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓ階層に従って、カメラ・サーバ６４０５のリストを表示することができる。ダイアログ６４００の左側には、タブ付きパネル６４０７があり、「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒｓ」ボタン６４０９および「Ｌｏｃａｔｉｏｎｓ／Ｚｏｎｅｓ」ボタン６４１１が配置されている。
【０７２０】
ユーザが「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ボタン６４０９をクリックすると、「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒｓ」ダイアログが表示される。左側パネル６４０７内の特定のストレージ・サーバ（例えば、６４１３）を選択することにより、そのストレージ・サーバ６４１３に関連付けられているカメラ・サーバ６４０５のリストが、右側パネル６４１５に表示される。「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ダイアログが表示されている場合、管理者は、ストレージ・サーバ２３００を登録または削除することができる。
【０７２１】
同様に、図６５に示されているように、「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ウィンドウ６４００の「Ｌｏｃａｔｉｏｎｓ／Ｚｏｎｅｓ」ボタン６４１１上で選択した場合に、「Ｌｏｃａｔｉｏｎｓ／Ｚｏｎｅ」ダイアログが表示される。左側パネル６５０１内の特定のＬｏｃａｔｉｏｎ（例えば、「Ｓｈｏｐｐｉｎｇ  ｃｅｎｔｅｒ」６５０２）を選択することにより、そのＬｏｃａｔｉｏｎ（例えば、「Ｓｈｏｐｐｉｎｇ  ｃｅｎｔｅｒ」６５０２）内のすべてのＺｏｎｅｓに関連付けられているカメラ・サーバ６５０３のリストが、右側パネル６５０９に表示される。左側パネル６５０１内の特定のＺｏｎｅ（例えば、１ｓｔ  Ｆｌｏｏｒ）６５０７を選択することにより、そのＺｏｎｅに関連付けられているカメラ・サーバ１０９〜１１１が、右側パネル６５０９に表示される。ＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓの階層表示は、通常、展開されていないＬｏｃａｔｉｏｎ要素をダブルクリックするとそのＬｏｃａｔｉｏｎ内にあるＺｏｎｅｓを表示することによりその要素を展開するように従来のツリー・ユーザ・インターフェース要素を使用して表示される。同様に、展開されたＬｏｃａｔｉｏｎをダブルクリックすると、そのＬｏｃａｔｉｏｎ内にあるＺｏｎｅｓが隠される。
【０７２２】
「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」または「Ｌｏｃａｔｉｏｎ／Ｚｏｎｅ」のいずれかのダイアログがアクティブである場合に表示される「Ｃａｍｅｒａ  Ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ダイアログから、ユーザは、システム１００上ですでに登録されていないカメラ・サーバ１０９〜１１１を探索し、カメラ・サーバ１０９〜１１１のリスティングを追加、編集、または削除することができる。
【０７２３】
カメラ・サーバ・リスト６４０５は、以下を表示する。
【０７２４】
（ｉ）カメラ・サーバ名。
【０７２５】
（ｉｉ）ストレージ・サーバ名（つまり、「Ｌｏｃａｔｉｏｎ／Ｚｏｎｅ」ダイアログがアクティブの場合）、またはロケーション／ゾーン（つまり、「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ダイアログがアクティブの場合）。
【０７２６】
（ｉｉｉ）カメラ・サーバの種類、記録ステータス（つまり、アイドルまたは記録中）。
【０７２７】
（ｉｖ）記録モード（つまり、記録している場合）。
【０７２８】
（ｖ）解像度。
【０７２９】
（ｖｉ）毎秒フレーム。
【０７３０】
（ｖｉｉ）記録品質。
【０７３１】
知られているストレージ・サーバおよびカメラ・サーバのリスト６４０５に変更が加えられた後、それらの変更をマスタ・ストレージ・サーバ２３００Ａに保存するために「Ｓａｖｅ  Ｃｈａｎｇｅｓ」ボタン６４１７を選択できる。ユーザが保存の前に他のダイアログに移るか、またはビューイング画面７６００に戻ろうとすると、ユーザに対し保存を求めるダイアログを表示する。
【０７３２】
ストレージ・サーバ２３００およびカメラ・サーバ１０９〜１１１の追加および削除、さらにそのプロパティの修正を含む、加えられる修正は、最初に、前に説明されているように構成データを保持するビューア２２００のメモリ２２０６内に構成されたデータ構造に対し実行される。変更は、「Ｓａｖｅ  Ｃｈａｎｇｅｓ」ボタン６４１７が選択されるまで、マスタ・ストレージ・サーバ２３００Ａまたは他のストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、または２３００Ｄ）上のデータに加えられない。
【０７３３】
「Ｓａｖｅ  Ｃｈａｎｇｅｓ」ボタン６４１７が選択されると、ビューア２２００は、上述のように、ＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドを構築し、上述のようにＨＴＴＰ  ＰＯＳＴメソッドを使用してＮＶＲ＿ＡｄｍｉｎＳｅｔを要求としてマスタ・ストレージ・サーバ２３００Ａに送信する。このような要求を送信するために、ビューア２２００は、指定されたポートでマスタ・ストレージ・サーバ２３００Ａのホスト名またはＩＰアドレスに接続することを試み、以下のリソース（１６）についてＨＴＴＰ  ＰＯＳＴメッセージを送信する。
【０７３４】
／webview-nvr／nvr_adminset.fcgi?file=config                  （１６）
このメッセージは、メモリ２２０６内に格納されている構成データから生成され、ＰＯＳＴメッセージの一部としてＷｅｂサーバ２１３に送信され、構成データをディスク２３１０に書き込む記録エンジン２０１に渡される、新しいネットワーク・ビデオ・レコーダ構成データを含む。
【０７３５】
管理者が「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ダイアログ６４００に表示される「Ｄｉｓｃａｒｄ  Ｃｈａｎｇｅｓ」ボタン６４１９を選択した場合、マスタ・ストレージ・サーバ２３００Ａにコミットされていない変更は、ローカル・メモリ２２０６から破棄される。
【０７３６】
５．４．１．１  ストレージ・サーバの追加および削除
ユーザが「Ａｄｄ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ボタン６４２１を選択すると、ディスプレイ２２１４上にダイアログが表示され、そこで、ユーザは、ストレージ・サーバ２３００のホスト名またはＩＰアドレスおよびストレージ・サーバ２３００にアクセスするためのポート番号を入力することができる。「Ａｄｄ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ダイアログには、さらに、「ＯＫ」ボタンおよび「ｃａｎｃｅｌ」ボタンもある。ユーザが「ＯＫ」ボタンを選択すると、ビューア２３００は、指定されたポートを使用してホスト名またはＩＰアドレスに接続しようと試みる。このような接続が成功しない場合、エラー・メッセージがディスプレイ・デバイス２２１４上に表示される。ユーザが「ｃａｎｃｅｌ」ボタンを選択すると、オペレーションはキャンセルされ、ダイアログが消える。
【０７３７】
「追加（する）」という用語が使用されるが、ストレージ・サーバ２３００を「追加」するためには対応するストレージ・サーバ２３００がすでにネットワーク２２２０に接続され、すでにストレージ・サーバ２３００として構成されているため、このアクションは、システム１００にストレージ・サーバ２３００を「登録」するという言い方で、より正確に記述することができる。
【０７３８】
ストレージ・サーバ２３００は、対応する「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ダイアログから削除すべきストレージ・サーバ２３００を選択し、「Ｅｄｉｔ」アプリケーション・メニューから「Ｄｅｌｅｔｅ」を選択するか、またはキーボード２２０２上のｄｅｌｅｔｅキーを選択することにより削除される（つまり、登録解除される）。「Ｃｏｎｆｉｒｍａｔｉｏｎ」ダイアログは、「Ｙｅｓ」ボタンを選択することにより対応するストレージ・サーバ２３００の削除を続行するか、または「Ｎｏ」ボタンを選択してオペレーションをキャンセルするオプションとともに表示される。
【０７３９】
ストレージ・サーバ２３００を削除すると、メモリ２２０６内の構成データの中の知られているストレージ・サーバのリストからストレージ・サーバ２３００が削除される。上述のように、「ｓａｖｅ  ｃｈａｎｇｅｓ」ボタン６４１７が、ユーザにより選択されると、ネットワーク・ビデオ・レコーダ構成データは、メモリ２２０６内の構成データから生成され、ＮＶＲ＿ＡｄｍｉｎＳｅｔメッセージでストレージ・サーバ２３００に送信され、マスタ・ストレージ・サーバ２３００Ａのハード・ディスク・ドライブ２３１０に書き込まれる。ハード・ディスク・ドライブ２２１０内に構成されたリストから削除されたときに削除されたストレージ・サーバが実行中であった場合、ストレージ・サーバ２３００は前のように実行を続ける。削除されたストレージ・サーバは、カメラ・サーバとの対応するすべての関連付けが存在しているまま、システム１００に再追加することができる。削除されたストレージ・サーバは、さらに、メモリ２２０６内の構成データ内の知られているストレージ・サーバのリストに追加することもできる。
【０７４０】
５．４．１．２  ロケーションの追加、編集、および削除
図６５に示されているようにユーザが「ｓｔｏｒａｇｅ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」６４００上の「Ａｄｄ  Ｌｏｃａｔｉｏｎ」ボタン６５１１を選択すると、ユーザが追加すべきロケーションに対する名前を入力するためのダイアログが表示される。このダイアログには、さらに、「ＯＫ」ボタンおよび「Ｃａｎｃｅｌ」ボタンもある。
【０７４１】
位置は一意である必要がある。ユーザがすでに存在している名前を使用してＬｏｃａｔｉｏｎを追加しようとすると、ユーザは、警告を表示され、別の名前を使用するよう求められる。追加できるＬｏｃａｔｉｏｎｓの数に固定された制限はない。
【０７４２】
ユーザが「ＯＫ」ボタンを選択すると、Ｌｏｃａｔｉｏｎが、ビューア２２００のメモリ２２０６内に格納される構成データ内に追加される。「Ｓａｖｅ  Ｃｈａｎｇｅｓ」ボタンが選択された場合にマスタ・ストレージ・サーバ２３００Ａへの構成の変更が更新される。
【０７４３】
Ｌｏｃａｔｉｏｎｓは、「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ダイアログ６４００内のＬｏｃａｔｉｏｎの名前をダブルクリックし、「Ｅｄｉｔ  Ｌｏｃａｔｉｏｎ」ダイアログ内の設定を編集することにより編集される。「Ｅｄｉｔ  Ｌｏｃａｔｉｏｎ」ダイアログは、「Ｅｄｉｔ  Ｌｏｃａｔｉｏｎ」ダイアログが「Ｅｄｉｔ  Ｌｏｃａｔｉｏｎ」というタイトルを使用することを除き、「Ａｄｄ  Ｌｏｃａｔｉｏｎ」ダイアログと同じダイアログである。
【０７４４】
「Ｌｏｃａｔｉｏｎｓ」は、「Ｌｏｃａｔｉｏｎｓ／Ｚｏｎｅ」ダイアログ内で「Ｌｏｃａｔｉｏｎ」という名前を選択し、「Ｅｄｉｔ」アプリケーション・メニュー６５１３から「Ｄｅｌｅｔｅ」を選択するか、またはキーボード２２０２上のｄｅｌｅｔｅキーを選択することにより、「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」６４００から削除される。「Ｌｏｃａｔｉｏｎｓ」は、「Ｌｏｃａｔｉｏｎ」が削除されるときに「Ｌｏｃａｔｉｏｎｓ」に関連付けられた「Ｚｏｎｅｓ」を持たないのが好ましい。ユーザが「Ｚｏｎｅｓ」を含む「Ｌｏｃａｔｉｏｎ」を削除しようと試みた場合、ユーザは、ディスプレイ２２１４上に警告を表示され、ユーザは、Ｚｏｎｅｓを最初に削除するよう求められる。
【０７４５】
５．４．１．３  ゾーンの追加、編集、および削除
ユーザが「Ａｄｄ  Ｚｏｎｅ」ボタン６５１７を選択した場合、ユーザがそのＺｏｎｅに対する名前を入力するためのダイアログが表示される。「Ａｄｄ  Ｚｏｎｅ」ダイアログは、追加すべきＺｏｎｅを入れるＬｏｃａｔｉｏｎを選択するためのプルダウン・メニューを含む。プルダウン・メニューは、ネットワーク２２２０に接続されたカメラ・サーバ１０９〜１１１の知られているすべてのＬｏｃａｔｉｏｎｓのリストを含む。「Ａｄｄ  Ｚｏｎｅ」ダイアログには、さらに、「ＯＫ」ボタンおよび「Ｃａｎｃｅｌ」ボタンもある。
【０７４６】
Ｚｏｎｅｓは、ロケーションの中で一意である必要がある。ユーザが対応するＬｏｃａｔｉｏｎ内にすでに存在している名前を使用してＺｏｎｅを追加しようとすると、ユーザは、警告を表示され、別の名前を使用するよう求められる。追加できるＬｏｃａｔｉｏｎにＺｏｎｅｓの数に固定された制限はない。異なるＬｏｃａｔｉｏｎｓ内にある、同じ名前を持つＺｏｎｅｓがありえる（例えば、Ｌｏｃａｔｉｏｎ「Ｓｙｄｎｅｙ」はＺｏｎｅｓ「Ｌｅｖｅｌ５」および「Ｌｅｖｅｌ７」を持ち、Ｌｏｃａｔｉｏｎ「Ｍｅｌｂｏｕｒｎｅ」は、Ｚｏｎｅｓ「Ｌｅｖｅｌ５」および「Ｌｅｖｅｌ７」を持つことができる）。同じ名前を持つが、異なるＬｏｃａｔｉｏｎｓ内にある、Ｚｏｎｅｓ間にシステム１００内での関係はない。
【０７４７】
ユーザが「Ａｄｄ  Ｚｏｎｅ」ダイアログの「ＯＫ」ボタンを選択すると、Ｚｏｎｅが、ビューア２２００のメモリ２２０６内に格納される構成データ内に追加される。図６５に示されているように、「Ｓａｖｅ  Ｃｈａｎｇｅｓ」ボタン６５１９がユーザにより選択された場合にマスタ・ストレージ・サーバ２３００Ａへの構成の変更が更新される。
【０７４８】
Ｚｏｎｅｓは、Ｚｏｎｅ（例えば、６５２１）の名前をダブルクリックして、Ｚｏｎｅを選択し、その後、「Ｅｄｉｔ  Ｚｏｎｅ」ダイアログ内の選択された「Ｚｏｎｅ」の設定を編集することにより編集される。「Ｅｄｉｔ  Ｚｏｎｅ」ダイアログは、「Ｅｄｉｔ  Ｚｏｎｅ」ダイアログは「Ｅｄｉｔ  Ｚｏｎｅ」というタイトルを使用することを除き、「Ａｄｄ  Ｚｏｎｅ」ダイアログと同じダイアログである。
【０７４９】
Ｚｏｎｅは、「Ｌｏｃａｔｉｏｎｓ／Ｚｏｎｅｓ」ダイアログ内の「Ｚｏｎｅ」の名前を選択し、編集アプリケーション・メニュー６５１３から「Ｄｅｌｅｔｅ」を選択するか、またはキーボード２２０２上のｄｅｌｅｔｅキーを選択することにより削除される。Ｚｏｎｅｓは、削除される場合にカメラ・サーバ１０９〜１１１を中に持たない。ユーザは、カメラ・サーバ１０９〜１１１を含むＺｏｎｅを削除しようとした場合、警告を表示され、ユーザは、カメラ・サーバ１０９〜１１１を他のＺｏｎｅに関連付けるか、または関連付けられているカメラ・サーバ１０９〜１１１を削除するよう求められる。
【０７５０】
５．４．１．４  カメラ・サーバの探索
図６５に示されているように、「ｆｉｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ボタン６５２３がユーザによって選択された場合、ビューア２２００は、ブロードキャスト・メッセージをネットワーク２２２０上に送信する。そのようなブロードキャスト・メッセージに応答するように構成されているネットワーク２２２０上のカメラ・サーバ１０９〜１１１は、ビューア２２００に応答する。ブロードキャスト・メッセージがビューア２２００によって送信された後、ビューア２２００は、ディスプレイ２２１４上で図６６に示されているように検索結果ダイアログ６６００を表示する。カメラ・サーバ１０９〜１１１がブロードキャストに応答した場合、ビューア２２００は、名前、ＩＰアドレス、および型をダイアログ６６００内のリストに配置する。結果は、ネットワーク２２２０に接続されたカメラ・サーバ１０９〜１１１のすべてのリストである。
【０７５１】
ユーザは、システム１００に、検索結果ダイアログ６６００にリストされているカメラ・サーバ１０９〜１１１を登録することができる。カメラ・サーバ１０９〜１１１を追加するには、ユーザは、検索結果ダイアログ６６００から特定のカメラ・サーバ１０９〜１１１を選択し、「Ａｄｄ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ボタン６６２５をクリックするか、またはダイアログ６６００内の特定のカメラ・サーバ上をダブルクリックすると、図６７に示されているように、「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００がディスプレイ２２１４上に表示される。
【０７５２】
５．４．１．５  カメラ・サーバの追加
「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００では、ユーザは、新しいカメラ・サーバ１０９〜１１１またはカメラ１１２〜１１５をシステム１００に登録することができる。ユーザが「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００にどのようにして辿り着いたかに応じて、フィールドのいくつかが事前に選択されているか、または事前に初期値が入力されている場合がある。「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｕｍｍａｒｙ」ダイアログ６４００から来た場合には、「Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」ダイアログがアクティブであれば、対応するストレージ・サーバ設定が、現在選択されているストレージ・サーバとして事前に選択されている。「Ｌｏｃａｔｉｏｎｓ  ／  Ｚｏｎｅｓ」ダイアログがアクティブであれば、「Ｌｏｃａｔｉｏｎ  ａｎｄ／ｏｒ  Ｚｏｎｅ」設定が、現在選択されている「Ｌｏｃａｔｉｏｎ  ａｎｄ／ｏｒ  Ｚｏｎｅ」として事前に選択されている。
【０７５３】
「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００が「ｆｉｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒｓ  ｓｅａｒｃｈ  ｒｅｓｕｌｔｓ」ダイアログ６６００から起動された場合、「Ｆｉｎｄ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒｓ」ボタン６５２３が選択されたときに「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ａｎｄ  ｃａｍｅｒａ  ｓｕｍｍａｒｙ」ダイアログ６４００内でどのダイアログがアクティブになっていたかに応じて、ホスト名およびストレージ・サーバ２３００または「Ｌｏｃａｔｉｏｎ」および「Ｚｏｎｅ」フィールドに事前に初期値が入力される。
【０７５４】
「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００が起動されたのに応じて、ユーザは、すでに初期値が入っていなければホスト名またはＩＰアドレスおよびポート番号を、その後、追加されるカメラ・サーバ１０９〜１１１に対応して、図６７に示されているように、ユーザ名およびパスワードをフィールド６７０１に入力することができる。入力されるユーザ名およびパスワードは、通常、マスタ・ストレージ・サーバ２３００Ａにアクセスするためにログイン・ダイアログに入力されたユーザと同じユーザ名およびパスワードではなく、管理者アクセスのために必要とするように特定のカメラ・サーバ１０９〜１１１が構成されているユーザ名およびパスワードである。
【０７５５】
本明細書で説明されている実装では、カメラ・サーバ・ユーザ名およびパスワードは、システム１００内のカメラ・サーバ１０９〜１１１に接続するために必要である。ユーザ名およびパスワードを要求することで、ユーザ側で公開表示可能であるが、記録する許可をユーザ側で持たないカメラ・サーバ１０９〜１１１から記録することができなくなる。
【０７５６】
他の実装では、カメラ・サーバ・ユーザ名およびパスワードは、特定のカメラ・サーバ１０９〜１１１に接続するために必要ではない。この場合、誰でも、公開表示可能なカメラ・サーバからビデオを記録することが可能である。
【０７５７】
ユーザは、接続設定を入力した後、「ｃｏｎｎｅｃｔ」ボタン６７０３を押すことができる。応答として、ビューア２２００は、カメラ・サーバ・プロトコルを使用して、ＨＴＴＰ上で指定カメラ・サーバに接続する。
【０７５８】
特定のカメラ・サーバ１０９〜１１１から応答が受信されると、ネットワーク２２２０上でカメラ・サーバから受信されたビデオ・サンプルが表示され、「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００のプレビュー・ウィンドウ６７０５内で連続的に更新される。また、ビューア２２００は、カメラ・サーバ１０９〜１１１によりカメラ１１２〜１１５から返された第１のビデオ・サンプルを受け取り、対応するビデオ・ウィンドウ（例えば、７６２５）をサムネイル・サイズにリサイズし、そのサムネイル・ウィンドウをプレビュー・エリア６７０５の隣のサムネイル・エリア６７０７に置く。
【０７５９】
さらに、カメラ・サーバとの接続が行われるときに、「ｓａｖｅ  ｒｅｃｏｒｄｅｄ  ｖｉｄｅｏ  ｏｎ」グループ６７１３内のホスト名６７０９およびポート６７１１の入力ボックスに、フィールド６７０１内のホスト名およびポート入力ボックスと同じ値が自動的に初期化値として入力される。
【０７６０】
「ｃｏｎｎｅｃｔ」ボタン６７０３が選択されず、「ＯＫ」ボタン６７１５が選択され、登録プロセスが完了する場合、ビューア２２００が特定のカメラ・サーバ１０９〜１１１に接続を行うことなく、特定のカメラ・サーバがそのまま登録される。このような登録により、まだ使用可能でない、またはまだ構成されていないカメラ・サーバ１０９〜１１１をシステム１００内で部分的にセットアップすることができる。
【０７６１】
特定のカメラ・サーバとの接続の後、ダイアログ６７００の右側にある多数の「Ｃａｍｅｒａ」ダイアログが選択されたカメラ・サーバ１０９〜１１１上で有効にされているカメラの個数に設定される。例えば、Ｃａｎｏｎ（登録商標）ＶＢ１０１、シングル・モードで動作しているＣａｎｏｎ（登録商標）ＶＢ１５０、Ｃａｎｏｎ（登録商標）ＶＢ−Ｃ１０、またはＣａｎｏｎ（登録商標）ＶＢ−Ｃ１０Ｒに接続する場合、「Ｃａｍｅｒａ  Ｓｅｔｔｉｎｇｓ」というタイトルを持つ１つのダイアログのみが表示される。マルチプル・モードでＣａｎｏｎ（登録商標）ＶＢ１５０に接続する場合（つまり、複数のカメラ１１２〜１１５を同時に別々に表示できるカメラ・サーバ１０９−１１１）、カメラ１１２〜１１５いくつ有効になっているかに応じて、追加ダイアログが表示される。これらのカメラに対応するダイアログは、Ｃａｍ１、Ｃａｍ２などのラベルが付けられる。
【０７６２】
ユーザは、プルダウン・メニューを使用して、カメラ１１２〜１１５を特定のＬｏｃａｔｉｏｎおよびそのＬｏｃａｔｉｏｎ内のＺｏｎｅに関連付けることができる。ユーザが新しいＬｏｃａｔｉｏｎを追加することを望んでいる場合、ユーザは、「Ｌｏｃａｔｉｏｎ」フィールド６７１９の隣の「ａｄｄ」ボタン６７１７を押すと、上述の「Ａｄｄ  Ｌｏｃａｔｉｏｎ」ダイアログを表示することができる。ユーザがＬｏｃａｔｉｏｎ内に新しいＺｏｎｅを追加することを望んでいる場合、ユーザは、「Ｚｏｎｅ」フィールド６７２５の隣の「ａｄｄ」ボタン６７２３を押すと、上述の「Ａｄｄ  Ｚｏｎｅ」ダイアログを表示することができる。
【０７６３】
プレビュー・エリア６７０５は、カメラ１１２〜１１５が登録されるユーザに視覚的フィードバックを送るために使用され、これにより、プレビュー・エリア６７０５に基づき、ビューア２２００内のサムネイル画像６７０７を更新することができる。ユーザが「ｕｐｄａｔｅ」ボタンを押すと、ビューア２２００は、プレビュー・エリア内に現在表示されているフレームをメモリ２２０６内の他のロケーションにコピーし、保存されているフレームをプレビュー・エリア６７０５のそばのサムネイル・エリア６７０７内にサムネイルとして表示する。いくつかの実装では、メモリ２２０６内のフレームを保存する前に、ビューア２２００は、解像度を下げてそのフレームを変換し、完全なフレームではなくフレームの解像度縮小バージョンを保存する。
【０７６４】
サムネイルは、カメラ１１２〜１１５の表現を形成することを意図されており、ビューイング画面７６００上のカメラ・セレクタ内のカメラ１１２〜１１５を表すために使用される管理者は、通常、そのカメラ１１２〜１１５に対する表示可能エリアの適切な表現となるサムネイルに基づき特定のカメラ１１２〜１１５を表す特定のサムメイルを選択する。例えば、管理者は、カメラが監視に使用される典型的ビューとなるようにサムネイルを選択することができる。他の実施例では、管理者は、特定のカメラが通常、そのエリア内の特定の領域上でズームインするように操作されているとしても監視されている（つまり、ズームアウトされているカメラでとる）エリアのワイド・ビューを持つサムネイルを選択することができる。
【０７６５】
管理者がビデオ・ウィンドウ（例えば、７６２５）内のプレビュー６７０５のフレーミングに満足しない場合、管理者は、「Ｓｔａｒｔ  Ｃｏｎｔｒｏｌ」ボタンをクリックするか、またはプレビュー・ビデオ・ウィンドウ６７０５内でダブルクリックすることにより対応するカメラ１１２〜１１５のパン、傾斜、および／またはズーム設定を変更することができる。その結果、図６８に示されているように、パン、傾斜コントロール・ツール６８００がビデオ・ウィンドウ６７０５上に表示される。ビューア２２００が特定のカメラ１１２〜１１５の制御権を持つと、ビデオ・ウィンドウ６７０５の様々な領域上で異なるカーソルを使用することで視覚的フィードバックが与えられる。６８に示されているように、矢印（例えば、６８０１）は、カーソル位置（つまり、ディスプレイ２２１４上のマウス矢印の位置）をクリックすると、対応するカメラ１１２〜１１５のパンおよび／または傾斜設定を変更することができるかどうかを示すために使用することができ、拡大鏡６８０３は、カーソル位置でクリックすると、特定のカメラ１１２〜１１５がズームインまたはズームアウトするかどうかを示すために使用できる。さらに、ズームは、マウス２２０３のホイール（つまり、マウス・ホイール）を使用して制御することもできる。
【０７６６】
ユーザは、マウス２２０２を通常の方法で使用する場合に、クリックを使用するか、またはカーソルを異なる領域にドラッグすることにより特定のカメラ１１２〜１１５を制御することができる。ユーザがパンおよび傾斜を制御する場合、領域拡大は無効にされ、カーソルはズームすることなくビデオ・ウィンドウ６７０５の中心を横切って移動することができる。対応するカメラ１１２〜１１５のパンおよび傾斜設定を変更する場合、移動の量は、カーソルがビデオ・ウィンドウの中心からどのくらい離れているかにより決定される。パン、傾斜コントロール・ツール６８００は、マウス２２０３、小さなトラックボール、ジョイスティック、タッチスクリーン、またはその他の類似のポインティング・デバイスだけでなく、キーボード２２０２を使用したカーソルの制御に適している。
【０７６７】
ユーザは、さらに、プリセットのリストからプリセット角度を選択することにより対応するカメラ１１２〜１１５を制御することもできる。「Ｃｏｎｎｅｃｔ  Ｂｕｔｔｏｎ」が選択されたときに関連付けられたカメラ・サーバ１０９〜１１１から取り出される、使用可能なプリセットは、ユーザが選択できるプルダウン・メニュー内にリストされる。プルダウン・メニューからプリセットが選択された場合、対応するカメラ１１２〜１１５は、対応するプリセット位置に進むように制御される。
【０７６８】
ユーザが上述のコントロール・ツール６８００を使用して対応するカメラ１１２〜１１５の位置を修正した場合、プリセット位置は、対応するカメラ１１２〜１１５の現在位置が知られているプリセット位置に対応しないことを示す「カスタム」として表示される。ユーザは、さらに、「ｂａｃｋｌｉｇｈｔ  ｃｏｍｐｅｎｓａｔｉｏｎ」ボタンを押して、バックライト補正のオン、オフを切り替えることもでき、これにより、関連付けられているカメラ１１２〜１１５を制御する。
【０７６９】
ユーザが、ある位置、あるズーム設定、あるバックライト補正設定、およびユーザが関連付けられているカメラを表したい現在のビューで、対応するカメラ１１２〜１１５を持つ場合、上述のように、ユーザは、「ｕｐｄａｔｅ」ボタン６７２７を押して、サムネイル６７０７を更新することができる。
【０７７０】
上記の説明では、カメラ１１２〜１１５を表すために使用されるサムネイル６７０７がそのカメラ１１２〜１１５から取り込まれる場合を説明している。管理者は、上述のように、カメラ・サーバ１０９〜１１１に接続し、フィールド６７０１グループ内のホスト名またはＩＰアドレスおよび／またはポート番号のフィールドの値を修正し、「ＯＫ」を押すことにより、一方のカメラ１１２〜１１５から他のカメラ１１２〜１１５の表現として取り込まれるサムネイル６７０７を使用することさえできる。カメラ・サーバ１０９〜１１１に対する新しい接続が行われないため、サムネイル６７０７は置き換えられず、前のカメラ・サーバからのサムネイル６７０７は一表現として保持される。
【０７７１】
管理者は、例えば、ユーザが特定のカメラ１１２〜１１５の環境コンテクスト内の特定のカメラ１１２〜１１５自体の画像または他のカメラ１１２〜１１５から見たとおりに特定のカメラ１１２〜１１５によりカバーされるエリアの画像となるように特定のカメラ１１２〜１１５の表現を望んでいる場合に、そのような接続を使用することができる。管理者は、さらに、単一のカメラ１１２〜１１５に関連付けられているすべてのカメラ１１２〜１１５に対するすべてのサムネイルをセットアップするため上記の接続を使用することもできる（例えば、管理者のオフィス内で）。この場合、管理者は、例えば、それぞれのカメラ１１２〜１１５の番号または他の何らかの表現を持つカードのシーケンスを物理的に順に保持することができる。この実施例では、管理者は、それぞれのカードの画像を順次取り込み、それぞれの画像をそれぞれの異なるカメラ１１２〜１１５に関連付けられたサムネイルとして関連付けることが可能である。
【０７７２】
「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００から、管理者は、さらに、特定のカメラ１１２〜１１５からのサンプル・データの記録にどのストレージ・サーバ２３００を使用すべきかを選択することもできる。ビューア２２００に認識されているストレージ・サーバ２３００は、プルダウン・メニュー内に置かれ、管理者はどれかを選択することができる。デフォルトでは、プルダウン・メニューには、「Ｄｏ  Ｎｏｔ  Ｒｅｃｏｒｄ」があり、これは、特定のカメラ１１２〜１１５がストレージ・サーバ２３００に関連付けられていないことを意味する。
【０７７３】
「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００では、管理者は、対応するカメラ１１２〜１１５からのビデオの記録に、ストレージ・サーバ２３００のストレージ・デバイス２３０９内に構成された使用すべきドライブを構成することができる。ストレージ・サーバ２３００上で使用可能なすべてのドライブのリストをプルダウン・メニュー内にリスト表示することができ、管理者はそれらのうちから１つ選択することができる。
【０７７４】
カメラ・サーバ１０９〜１１１からの複数の同時表示可能ストリームがある場合（例えば、マルチプル・モードでＶＢ１５０の場合）、ストレージ・サーバ２３００上の異なるドライブ上に記録される特定のカメラ・サーバ１０９〜１１１に関連付けられたカメラ１１２〜１１５のそれぞれを構成することが可能である。それぞれのカメラ１１２〜１１５は、さらに、ストレージ・サーバ２３００上の同じドライブに記録することもできる。
【０７７５】
ユーザが「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００上の「ＯＫ」ボタン６７１５を押すと、ホスト名、ポート、およびストレージ・サーバ（記録するに設定されている場合）がチェックされ、カメラ１１２〜１１５が選択されたストレージ・サーバ２３００上ですでに登録されているかどうかが調べられる。この場合、そのようなことは許可されないということを知らせる警告メッセージがユーザーに対して提示される。
【０７７６】
上記の警告条件が発生しない場合、「ＯＫ」ボタン６７１５を押すと、ビューアのメモリ２２０６内で構成データが更新される。上述のように、構成データに対するこれらの変更は、「Ｓａｖｅ  Ｃｈａｎｇｅｓ」ボタン６５１９が押されるまで、マスタ・ストレージ・サーバに書き込まれない。
【０７７７】
５．４．１．６  カメラ設定の編集
カメラ１１２〜１１５は、カメラ・サーバ・リスト上でカメラ１１２〜１１５を選択し、「Ｅｄｉｔ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ボタンをクリックするか、または特定のカメラ・サーバの名前をダブルクリックすることにより、編集される。その応答として、ビューア２２００は、特定のカメラ１１２〜１１５のカメラ・サーバ設定を編集することができる「Ｅｄｉｔ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ダイアログを開く。「Ｅｄｉｔ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ダイアログは、「Ｅｄｉｔ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ダイアログが「Ｅｄｉｔ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」というタイトルを使用することを除き、「Ａｄｄ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ダイアログと同じダイアログである。
【０７７８】
５．４．１．７  カメラ・サーバの削除
カメラ１１２〜１１５またはカメラ・サーバ１０９〜１１１は、「ｓｔｏｒａｇｅ  ａｎｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｓｕｍｍａｒｙ」ダイアログ６４００の右パネル６５０９内の特定のカメラまたはカメラ・サーバの名前（例えば、６５２１）を選択し、「Ｒｅｍｏｖｅ  Ｃａｍｅｒａ  Ｓｅｒｖｅｒ」ボタンをクリックするか、「ｅｄｉｔ」アプリケーション・メニュー６５１３から「ｄｅｌｅｔｅ」を選択するか、またはキーボード２２０２上のｄｅｌｅｔｅキーを押すことにより、システム１００から削除される。「Ｃｏｎｆｉｒｍａｔｉｏｎ」ダイアログは、「Ｙｅｓ」ボタンを押すことによりカメラ・サーバの削除を続行するか、または「Ｎｏ」ボタンを押すことによりオペレーションをキャンセルするオプションとともに表示される。
【０７７９】
５．４．２  スケジュールの記録
図６９に示されているように、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１上の「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３は、それぞれの知られているカメラ１１２〜１１５について、イベントおよびセンサ・ベースの記録を含む、記録スケジュールを構成するために使用できる。「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３は、毎日、および指定された日の通常スケジュールをオーバーライドする祝祭日などの特別日に、システム１００の通常記録オペレーションをセットアップするために使用することができる。
【０７８０】
「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３は、一度に１つのストレージ・サーバ２３００に関連付けられたカメラ１１２〜１１５を示す。管理者は、「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ」プルダウン・メニューを使用することにより構成するストレージ・サーバを選択することができる。「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ」プルダウン・メニューは、システム１００に認識されるすべてのストレージ・サーバ２３００を初期値として表示する。管理者がストレージ・サーバ２３００を選択した場合、「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３は、選択されたストレージ・サーバ２３００に関連付けられたスケジュール・アイテム（例えば、１１１５）を示すように更新される。デフォルトでは、リスト６９０１内の第１のストレージ・サーバ（例えば、「ｓｈｏｐｐｉｎｇ  ｃｅｎｔｅｒ」ストレージ・サーバ）は、表示されるその第１のストレージ・サーバに関連付けられているそれぞれのカメラ１１２〜１１５に対するスケジュールとともに選択される。
【０７８１】
異なるストレージ・サーバを選択すると、表示されているカメラ１１２〜１１５のリスト６９０１が変更され、ユーザは同じスケジュール・タイプ（つまり、通常または特別日）に保持される。
【０７８２】
ストレージ・サーバ２３００に記録するようにセットアップされたカメラ１１２〜１１５のみが、「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３内に表示される。
【０７８３】
５．４．２．１  Ｎｏｒｍａｌ  Ｓｃｈｅｄｕｌｅｓ
「ｎｏｒｍａｌ  ｓｃｈｅｄｕｌｅ」は、それぞれのストレージ・サーバ２３００の標準的な毎日の記録設定をセットアップするために使用される。ストレージ・サーバ２３００は、指定日の設定をオーバーライドするように代替え「Ｓｐｅｃｉａｌ  Ｄａｙ」スケジュールがセットアップされていない限り、これらの通常のスケジュール設定を使用する。通常のスケジュールは、ストレージ・サーバ２３００に関連付けられているそれぞれのカメラ１１２〜１１５についてスケジュール・アイテム１１１５（例えば、図１３）を作成することによりセットアップされる。
【０７８４】
５．４．２．１．１  スケジュール・アイテム
スケジュール・アイテム１１１５は、「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３上に個々のカメラ１１２〜１１５に対する期間をドラッグすることにより追加される。例えば、図６９に示されているように、「Ｉｎｆｏｒｍａｔｉｏｎ  Ｄｅｓｋ」カメラ・サーバ６９０７について、スケジュール・アイテム１１１５の期間は、図６９に示されているように、従来の方法でダイアログ６４０３上の行６９０９を選択し、その行をダイアログ６４０３に関して左または右にドラッグすることにより変更することができる。ユーザがマウス２２０３を離すと、「ａｄｄ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００がディスプレイ２２１４上に表示される。ユーザは、さらに、スケジュール・エリア６９０５内でクリックして、「ａｄｄ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００を開くこともできる。スケジュール・アイテム１１１５の詳細は、スケジュール・アイテム・ダイアログ７０００を使用して設定できる。デフォルトでは、コンテクスト・メニューを通じて追加されるときのスケジュール・アイテム１１１５の持続時間は、他のスケジュール・アイテムに干渉しない場合に可能な限り長く取られる。それぞれのスケジュール・アイテムの長さは、最大２４時間とすることができる。
【０７８５】
ユーザがスケジュール・アイテム１１１５に対する期間をドラッグ・アウトした場合、ドラッグアウトされる持続時間が２４時間よりも長くない限り、関連付けられている選択ボックス（例えば、６９１１）の左辺が開始時刻として使用され、右辺が終了時刻として使用される。この場合、左辺は、開始時刻として使用され、終了時刻は、開始時刻の後２４時間に設定される。ユーザがスケジュール・エリア６９０５内でクリックすると、ユーザがクリックした位置が開始時刻として使用される。
【０７８６】
管理者は、「ａｄｄ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００のそれぞれ「Ｓｔａｒｔ」および「Ｅｎｄ」フィールド７００１および７００３にスケジュール・アイテム１１１５の開始時刻および終了時刻を設定することができる。「ａｌｌ  ｄａｙ」ボタン７００５をクリックすると、自動的に、開始時刻フィールド７０００に「００００」、終了時刻フィールド７００３に「００００」が埋められる。「００００」は、午前０時に始まり、次の日の午前０時まで続くスケジュール・アイテム１１１５に対応する。管理者は、特定のスケジュール・アイテム１１１５が適用される週の曜日を選択することができる。
【０７８７】
ある日に開始し、次の日に終了する（例えば、月曜２２００から火曜０３００までの）スケジュール・アイテム１１１５をセットアップするために、ユーザは、Ｍｏｎｄａｙが、セットアップするスケジュール・アイテムが開始する曜日であるため「Ｍｏｎｄａｙ」チェックボックス７００７をチェックし、２２００の開始時刻および０３００の終了時刻を入力しなければならない。この場合、終了時刻は開始時刻よりも早く、これは、スケジュール・アイテム１１１５は前の日から次の日まで続くことを示す。
【０７８８】
管理者は、スケジュール・アイテム１１１５の特定の時刻に対する特定のカメラ１１２〜１１５について記録モードを選択することができる。このような記録モードは、以下の１つまたは複数とすることができる。
【０７８９】
（ｉ）「ｃｏｎｔｉｎｕｏｕｓ  ｒｅｃｏｒｄｉｎｇ」：ストレージ・サーバ２３００は、スケジュールされた時間内のすべての時間に特定のカメラ１１２〜１１５からサンプル・データを記録する。
【０７９０】
（ｉｉ）「ｏｎ  ｍｏｔｉｏｎ  ｄｅｔｅｃｔｉｏｎ」：ストレージ・サーバ２３００は、運動が検出されたときにその特定のカメラ・サーバからビデオを記録する。
【０７９１】
（ｉｉｉ）「ｏｎ  ｓｅｎｓｏｒ  ｅｖｅｎｔ」：ストレージ・サーバ２３００は、特定のカメラ・サーバに関連付けられたセンサからイベントが受信された場合にビデオを記録する。
【０７９２】
複数の記録モードを選択することにより、単一スケジュール・アイテム１１１５内に複数記録モードをセットアップすることができる。例えば、カメラは、１フレーム／秒（ｆｐｓ）のフレーム速度でいつでも「記録」することができ、同時に３０ｆｐｓのフレーム速度でいつでも「運動検出」にできる。このようなことにより、低いフレーム速度で、運動活動の時間に関連付けられている高いフレーム速度でカメラ画像の完全な記録をとることができる。
【０７９３】
運動検出およびセンサ・イベント記録モードから、対応する設定ボタン（例えば、７００９）を押すことにより起動される、「Ｓｅｔｔｉｎｇｓ」ダイアログがある。これらのモードにより、「Ａｄｄ／Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログ内の設定をオーバーライドするリセット位置およびフレーム速度を含む記録パラメータを設定することができる。「ｓｅｔｔｉｎｇｓ」および「Ａｄｄ／Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログについて後述する。
【０７９４】
管理者は、サンプル・データを連続的に記録するように使用するフレーム速度を構成することができる。フレーム速度設定は、使用可能なフレーム速度（つまり、フレーム個数／秒）でプルダウン・メニューから行うことができる。通常のフレーム速度は、０．１、０．２、０．５、１、２、５、１０、１５、２０、２５、および３０を含む。他の実装では、フレーム速度をある範囲（例えば、０．１から３０．０）内の最大小数点第１位までの数として指定することができる。
【０７９５】
デフォルトで、スケジュール・アイテム１１１５に関連付けられたプリセット・カメラ１１２〜１１５位置は、「Ｎｏｔ  ｓｐｅｃｉｆｉｅｄ」に設定される。その結果、スケジュール・アイテム１１１５が開始すると、ストレージ・サーバ２３００上の記録エンジン２０１は、カメラ・サーバ１０９〜１１１を介してカメラの位置変更を試みない。記録エンジン２０１は、特定のカメラ１１２〜１１５を現在位置および開始記録のままに残す。
【０７９６】
値「Ｎｏｔ  Ｓｐｅｃｉｆｉｅｄ」だけでなく、プリセット選択のプルダウン・メニューは特定のカメラ・サーバ１０９〜１１１から取り出された使用可能なプリセット位置のリストを含む。管理者は、特定のカメラ・サーバ１０９〜１１１に関連付けられている特定のカメラ１１２〜１１５の位置を変更するために特定のカメラ・サーバ１０９〜１１１にメッセージを送信させることになるプリセット位置を選択することができる。バックライト補正ボタンは、カメラ１１２〜１１５のバックライト補正設定を切り替えるために特定のカメラ・サーバ１０９〜１１１にメッセージを送信するために使用される。
【０７９７】
プレビュー・ウィンドウ６７０５は、図６７に示されているように、特定のカメラ・サーバ１０９〜１１１からライブ画像を表示するために上述のように使用することができ、また上述のようにコントロール・ツール６８００を使用して特定のカメラ１１２〜１１５（例えば、パン、傾斜、およびズーム）を制御するために使用することができる。
【０７９８】
ユーザが上述のコントロール・ツール６８００を使用してカメラ１１２〜１１５の位置設定を修正した場合、プリセット位置は、カメラ・サーバ１０９〜１１１に関連付けられているカメラ１１２〜１１５の現在位置が知られているプリセット位置に対応しえないことを示す「Ｃｕｓｔｏｍ」として表示される。
【０７９９】
「ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００および「Ｓｅｎｓｏｒ  Ｓｅｔｔｉｎｇｓ」ダイアログに関連付けられている特定のカメラ・サーバ１０９〜１１１を制御しようと試みるときにビューア２２００のカメラ・サーバ１０９〜１１１を介してカメラを制御する権限（つまり、「制御権限」）は、記録エンジン２０１の特定のカメラ・サーバ１０９〜１１１を制御する権限よりも高い。その結果、管理者は、記録が実行される実際の角度でカメラ１１２〜１１５を見ることができる。制御権限のレベルは、ビューイング画面７６００内に用意されているオペレータ・オーバーライド機能ほどは高くない。オペレータがビューア２２００を使用し、またオペレータ・オーバーライドを使用している場合、「ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００または「ｓｅｎｓｏｒ  ｓｅｔｔｉｎｇｓ」ダイアログが表示されているビューア２２００が制御権限を持つことは必ずしも可能ではない。このような場合、管理者は、制御権限を受け取るまで待つ必要がある。
【０８００】
管理者は、「ｒｅｓｏｌｕｔｉｏｎｓ」プルダウン・メニューを使用することにより、特定のスケジュール・アイテムに関連付けられた期間、特定のカメラ１１２〜１１５の解像度設定を変更することができる。解像度設定は、通常、１６０×１２０、３２０×２４０、６４０×２４０、または６４０×４８０の集合から選択することができる。使用可能な解像度は、カメラ・サーバのタイプによって異なる。例えば、Ｃａｎｏｎ（登録商標）ＶＢ１５０では１６０×１２０、３２０×２４０、および６４０×２４０をサポートするが、Ｃａｎｏｎ（登録商標）ＶＢ−Ｃ１０では１６０×１２０、３２０×２４０、および６４０×４８０をサポートする。表示される解像度オプションは、使用されているカメラ・サーバ１０９〜１１１の特定のタイプで使用可能なオプションである。さらに、プルダウン・メニューは、オプション「Ｎｏｔ  Ｓｐｅｃｉｆｉｅｄ」を持つ。管理者が解像度を「Ｎｏｔ  Ｓｐｅｃｉｆｉｅｄ」に設定した場合、ストレージ・サーバ２３００上の記録エンジン２０１は、スケジュール・アイテムの持続時間について、カメラ１１２〜１１５の解像度を変更することを試みない。
【０８０１】
管理者は、「ｑｕａｌｉｔｙ」プルダウン・メニューを使用して、特定のスケジュール・アイテム１１１５に関連付けられた期間、特定のカメラ１１２〜１１５の品質設定（つまり、圧縮レベル）を変更することができる。品質設定は、通常、以下の集まりから選択できる。
【０８０２】
（ｉ）Ｌｏｗｅｓｔ：圧縮比１０％に対応する。
【０８０３】
（ｉｉｉ）Ｌｏｗ：圧縮比３０％に対応する。
【０８０４】
（ｉｖ）Ｍｅｄｉｕｍ：圧縮比５０％に対応する。
【０８０５】
（ｖ）Ｈｉｇｈ：圧縮比７０％に対応する。
【０８０６】
（ｖｉ）Ｈｉｇｈｅｓｔ：圧縮比９０％に対応する。
【０８０７】
さらに、「ｑｕａｌｉｔｙ」プルダウン・メニューは、オプション「Ｎｏｔ  Ｓｐｅｃｉｆｉｅｄ」を持つ。管理者が品質を「Ｎｏｔ  Ｓｐｅｃｉｆｉｅｄ」に設定した場合、ストレージ・サーバ２３００上の記録エンジン２０１は、スケジュール・アイテム１１１５の持続時間について、カメラ１１２〜１１５の品質を変更することを試みない。
【０８０８】
スケジュール・アイテム１１１５に対する設定が設定された後（つまり、すべての適用可能な記録モード設定を含む）、「ＯＫ」ボタンをクリックすることにより、スケジュール・アイテム１１１５がスケジュールに追加される。「ＯＫ」ボタンをクリックすると、ビューア２２００のメモリ２２０６内のデータ構造が更新される。しかし、ストレージ・サーバ２３００内の対応するスケジュールは更新されない。ストレージ・サーバ２３００内のスケジュールは、後述のように管理者が「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅ」ボタン６９１３を選択した場合にのみ更新される。
【０８０９】
更新されたデータ構造から、ビューア２２００は、「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅ」ダイアログ６４０３上のスケジュール・ビュー６０９５内のスケジュール・アイテム１１１５の視覚的表現を更新する。視覚的表現の更新は、さらに日が追加または削除されたか、時刻が変更されたか、またはモードが変更された場合にのみ必要である。
【０８１０】
ユーザが他のスケジュール・アイテムとオーバーラップするスケジュール・アイテム１１１５をセットアップしようとした場合、スケジューリング上の問題が生じていることを説明するエラー・メッセージが表示される。
【０８１１】
従来の方法でマウスをクリックしてドラッグすることにより、スケジュール・アイテムを移動またはサイズ変更できる（つまり、開始および終了時刻を変更する）。スケジュール・アイテムは、削除する特定のアイテムを選択し、キーボード２２０３上のｄｅｌｅｔｅキーを押し、「Ｅｄｉｔ」アプリケーション・メニューから「Ｄｅｌｅｔｅ」を選択するか、または「Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ  Ｃｏｎｔｅｘｔ」メニューから「Ｄｅｌｅｔｅ」を選択することにより削除できる。ユーザが。他の日にも繰り返すスケジュール・アイテムから１日を削除することを望んでいる場合、「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログ上でその日のチェックマークを外す必要がある。
【０８１２】
すべてのスケジュール・アイテムが作成された後、「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅ」ボタン６９１３を押して、スケジュール全体をストレージ・サーバ２３００に保存する。
【０８１３】
上述のように、スケジュール・アイテムの追加、削除、および修正を含む、「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３から行われた修正は、最初に、メモリ２２０６内のデータ構造に対し実行される。変更は、「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅ」ボタン６９１３が選択されるまで、マスタ・ストレージ・サーバ２３００Ａまたは他のストレージ・サーバ２３００上のデータに加えられない。
【０８１４】
「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅ」ボタン６９１３が選択されると、ビューア２２００は、上述のようにＲＥ＿Ｓｅｔコマンドを構築し、これをスケジュール変更が行われた（つまり、ストレージ・サーバが「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ」プルダウン・リスト内で選択された）ストレージ・サーバ２３００に送信する。ＲＥ＿Ｓｅｔコマンドは、上述のようにＨＴＴＰ  ＰＯＳＴメソッドを使用して要求として送信される。ＲＥ＿Ｓｅｔコマンドを送信するために、ビューア２２００は、指定されたポートでストレージ・サーバ２３００のホスト名またはＩＰアドレスに接続することを試み、以下のリソース（１７）についてＨＴＴＰ  ＰＯＳＴメッセージを送信する。
【０８１５】
／webview-nvr／re_set.fcgi?action=scheddetails                （１７）
メモリ２２０６内のスケジュール・データは、ＣＡＭＥＲＡ要素４０９を含むＸＭＬドキュメントに変換され、ＨＴＴＰ  ＰＯＳＴメッセージの一部として送信される。これは、Ｗｅｂサーバ２１３を介して記録エンジン２０１により受信され、ディスク２３１０に書き込まれる。
【０８１６】
管理者が「Ｄｉｓｃａｒｄ  Ｃｈａｎｇｅｓ」ボタン６９１５を押すと、ストレージ・サーバ２３００にコミットされていない変更は、ストレージ・サーバ２３００のハード・ディスク・ドライブ２３１０から破棄され、「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログ６４０３は更新され、変更の前のスケジュールのように変更されたスケジュールを反映する。
【０８１７】
既存のスケジュール・アイテム１１１５を編集するには、ユーザは、色付きバーをダブルクリックするか、または「Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ  Ｃｏｎｔｅｘｔ」メニューから「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ」アイテムを選択して、「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログを開く。「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログは、「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログが「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」というタイトルを使用することを除き、「Ａｄｄ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログと同じダイアログである。
【０８１８】
「Ｅｄｉｔ  Ｓｃｈｅｄｕｌｅ  Ｉｔｅｍ」ダイアログが表示されたときに、プリセットまたはカスタム位置が選択されると、ビューア２２００は、特定のカメラ・サーバ１０９〜１１１の制御権を取得し、そのスケジュール・アイテムに対する既存の設定に対応するように位置を変更することを試みる。この制御権は、管理者が「ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ内でカメラ・サーバ１０９〜１１１の位置を変更するために制御権を取得しようとした際に、上述のと類似の方法で取得される。
【０８１９】
５．４．２．１．２  Ｍｏｔｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｅｔｔｉｎｇｓ
図７１は、「ｍｏｔｉｏｎ  ｄｅｔｅｃｔｉｏｎ  ｓｅｔｔｉｎｇｓ」ダイアログ７１００を示す。「ｍｏｔｉｏｎ  ｄｅｔｅｃｔｉｏｎ  ｓｅｔｔｉｎｇｓ」ダイアログ７１００で、管理者は、カメラ・サーバ１０９〜１１１に関連付けられているセンサにより運動イベントが検出された場合に検出および記録に対する設定をセットアップすることができる。運動検出設定は、「ａｄｄ／ｅｄｉｔ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００で決定されたカメラ・サーバ１０９〜１１１の位置設定とともに使用される。
【０８２０】
使用可能な運動検出設定は以下のとおりである。
【０８２１】
５．４．２．１．２．１  Ａｃｔｉｖｅ  Ｒｅｇｉｏｎ
アクティブ領域設定は、運動のチェックが実行されるビデオ・フレーム（つまり、サンプル）内に領域を設定するために使用できる。アクティブ設定領域の値は、ビデオ・プレビュー・ウィンドウ７１１３上にオーバーレイされる領域の境界を示す矩形として表示される。デフォルトでは、この領域は完全画像エリアであり、表示される矩形の辺は、プレビュー・ウィンドウ７１１３の辺に対応する。管理者は、従来の方法でマウス２２０３を使用し、表示されている矩形の隅または辺をクリックして、マウス・カーソルを所望のロケーションにドラッグすることができる。ビデオ・プレビュー・ウィンドウ上に描画される表示矩形は、継続的に再描画され、カーソルの移動を追跡し、ユーザが従来の方法でカーソルのドラッグを停止したときに現在位置に留まる。選択された領域は、表示矩形の座標および次元に対応する。
【０８２２】
５．４．２．１．２．２  Ｄｅｔｅｃｔ  Ｍｏｔｉｏｎ  Ｕｓｉｎｇ
「ｄｅｔｅｃｔ  ｍｏｔｉｏｎ  ｕｓｉｎｇ」メニューと呼ばれるプルダウン・メニュー７１０７は、運動検出が実行される場所を決定するために使用できる。「ｄｅｔｅｃｔ  ｍｏｔｉｏｎ  ｕｓｉｎｇ」メニュー７１０７に関連付けられる値は、運動検出がストレージ・サーバ２３００上で実行される場合には「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ」に設定し、運動検出がカメラ・サーバ１０９〜１１１上で実行される場合には「ｃａｍｅｒａ  ｓｅｒｖｅｒ」に設定することができる。デフォルトでは、この値は、「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ」であることが好ましい。「ｃａｍｅｒａ  ｓｅｒｖｅｒ」のオプションは、カメラ・サーバ１０９〜１１１のタイプが運動検出をサポートすると知られている場合にのみプルダウン・メニュー７１０７内に提示される（例えば、Ｃａｎｏｎ（登録商標）ＶＢ１５０）。カメラ・サーバ１０９〜１１１上で運動検出を実行することが、ストレージ・サーバ２３００上で運動検出を実行することよりも勝る利点は、ストレージ・サーバ２３００が、通常、多数のカメラ・サーバ１０９〜１１１からビデオを記録し、運動検出はプロセッサ能力を集中的に使用できる点である。しかし、ストレージ・サーバ２３００は、多数のカメラ・サーバ１０９〜１１１から同時にアップロードされたビデオ・サンプル・データに対する運動検出を適切に実行することができない場合がある。この場合、管理者側でカメラ・サーバ１０９〜１１１上で運動検出を実行させるように選択することが好ましいことが多い。しかし、このようなことは、多くのカメラ・サーバ１０９〜１１１が運動検出を直接サポートしていない場合があるため必ずしも可能ではない。
【０８２３】
５．４．２．１．２．３  Ａｎａｌｙｓｉｓ  Ｆｒａｍｅ  Ｒａｔｅ
運動検出の解析が実行されるフレーム速度を選択するための「ａｎａｌｙｓｉｓ  ｆｒａｍｅ  ｒａｔｅ」プルダウン・メニュー７１０５も用意されている。「ａｎａｌｙｓｉｓ  ｆｒａｍｅ  ｒａｔｅ」プルダウン・メニューは、通常、上述のフレーム速度の同じ集まりのうちの１つに設定できる（例えば、０．１から３０の範囲内の速度）。
【０８２４】
５．４．２．１．２．４  Ｓｗｉｔｃｈ  Ｓｅｎｓｉｔｉｖｉｔｙ
図からわかるように「ｓｗｉｔｃｈ  ｓｅｎｓｉｔｉｖｉｔｙ  ｓｅｔｔｉｎｇ」スライダー７１０１を使用して、低から中までの範囲（つまり、Ｌｏｗ〜Ｍｅｄ）を表すように、または中から高までの範囲（つまり、Ｍｅｄ〜  Ｈｉｇｈ）を表すようにスイッチ感度の範囲を変更することができる。
【０８２５】
５．４．２．１．２．５  Ａｒｅａ  Ｒａｔｉｏ
「ａｒｅａ  ｒａｔｉｏ」スライダー７１０３は、運動検出がトリガされる前に変更しなければならないアクティブ領域の割合を指定するために使用される。スケールは、０％から１００％までである。
【０８２６】
５．４．２．１．２．６  Ｄｕｒａｔｉｏｎ
「ｄｕｒａｔｉｏｎ」スライダー７１０９は、運動検出イベントがトリガされる前に運動が生じている時間の長さを指定するために使用することができる。スライダー７１０９は、０〜５秒である。
【０８２７】
５．４．２．１．２．７  Ｅｖｅｎｔ  Ｐｒｉｏｒｉｔｙ
「ｅｖｅｎｔ  ｐｒｉｏｒｉｔｙ」プルダウン・メニュー７１１１は、与えられた運動検出設定で運動検出によりトリガされるイベントの優先度を選択するために使用できる。「ｅｖｅｎｔ  ｐｒｉｏｒｉｔｙ」フルダウン・メニュー７１１１は、以下の値のうちの１つに設定できる。
【０８２８】
（ｉ）Ｈｉｇｈｅｓｔ。
【０８２９】
（ｉｉ）Ｈｉｇｈ。
【０８３０】
（ｉｉｉ）Ｍｅｄｉｕｍ。
【０８３１】
（ｉｖ）Ｌｏｗ。
【０８３２】
（ｖ）Ｌｏｗｅｓｔ。
【０８３３】
５．４．２．１．２．８  Ｍａｘｉｍｕｍ  Ｆｒａｍｅ  Ｒａｔｅ
「ｍａｘｉｍｕｍ  ｆｒａｍｅ  ｒａｔｅ」プルダウン・メニュー７１１５は、運動イベント（つまり、指定された設定を満たすイベント）がトリガされたときに記録される１秒当たりの最大フレーム数を選択するために使用することができる。
【０８３４】
５．４．２．１．２．９  Ｐｒｅ−ｅｖｅｎｔ  ｒｅｃｏｒｄｉｎｇ
「ｐｒｅ−ｅｖｅｎｔ  ｒｅｃｏｒｄｉｎｇ  ｅｎｔｒｙ」フィールド７１１７は、イベントの直前に発生したものを取り込むためにイベントが発生する前に記録を実行すべき秒単位の持続時間を入力するために使用することができる。
【０８３５】
５．４．２．１．２．１０  Ｐｏｓｔ−ｅｖｅｎｔ  ｒｅｃｏｒｄｉｎｇ
「ｐｏｓｔ−ｅｖｅｎｔ  ｒｅｃｏｒｄｉｎｇ  ｅｎｔｒｙ」フィールド７１１９は、イベントが発生した後に記録を実行すべき秒単位の持続時間を入力するために使用することができる。「ｐｏｓｔ−ｅｖｅｎｔ  ｒｅｃｏｒｄｉｎｇ  ｅｎｔｒｙ」フィールド７１１９が０に設定されている場合、ビデオ・サンプル・データは、運動が検出されている持続時間の間のみ記録される。
【０８３６】
「ＯＫ」ボタン７１２１が選択されると、「ｍｏｔｉｏｎ  ｄｅｔｅｃｔｉｏｎ  ｓｅｔｔｉｎｇｓ」ダイアログ７１００による運動検出設定が、ビューア２２００のメモリ２２０６内に構成されたデータ構造に追加される。上述のように、運動検出設定は、管理者が「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅ」ダイアログ６４０３の「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅ」ボタン６９１３を選択するまで、ストレージ・サーバ２３００に送信されない。
【０８３７】
５．４．２．１．３  Ｓｅｎｓｏｒ  Ｅｖｅｎｔ  Ｓｅｔｔｉｎｇｓ
図７２に示されているように、「ｓｅｎｓｏｒ  ｅｖｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログ７２００を使用することにより、ユーザは、カメラ・サーバ１０９〜１１１に関連付けられたセンサのトリガの発生に基づき記録設定を指定できる。カメラ・サーバ１０９〜１１１が複数の関連付けられたセンサを持つ場合、それぞれのセンサは、異なるダイアログ上で表される。
【０８３８】
カメラ・サーバ１０９〜１１１が複数のカメラのビューイング／記録をサポートしている場合（例えば、マルチプル・モードのＣａｎｏｎ（登録商標）ＶＢ１５０）、異なる記録設定を、関連付けられたカメラ・サーバ１０９〜１１１上での単一センサのトリガに基づきそれぞれの関連付けられたカメラ・サーバ１０９〜１１１（つまり、記録なしの設定を含む）について構成できる。
【０８３９】
センサ名７２０１は、関連付けられたカメラ・サーバ１０９〜１１１から取り出され、これは、ダイアログ７２００に関連付けられた特定のセンサに関連付けられるようにカメラ・サーバ１０９〜１１１のメモリ内に構成される名前である。
【０８４０】
「ｒｅｃｏｒｄ  ｏｎ  ｔｈｉｓ  ｅｖｅｎｔ」チェックボックス７２０３は、イベントが特定のセンサからトリガされたときに記録を開始するかどうかを指定するために使用される。「ｒｅｃｏｒｄ  ｏｎ  ｓｅｎｓｏｒ  ｅｖｅｎｔ」チェックボックス７０１１が「ａｄｄ／ｅｄｉｔ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００内でチェックされている場合、システム１００は、「ｓｅｎｓｏｒ  ｅｖｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログ７２００内の「ｒｅｃｏｒｄ  ｅｖｅｎｔｓ  ｏｎ  ｔｈｉｓ  ｓｅｎｓｏｒ」チェックボックス７２０３がチェックされているかを決定する。「ｓｅｎｓｏｒ  ｅｖｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログ７２００内のチェックボックス（例えば、７２０３）のどれもがチェックされていない場合、「Ｓｅｎｓｏｒ  １」ダイアログ７２０５上のチェックボックス７２０３は自動的にチェックされる。チェックボックス７２０３のどれかがチェックされている場合、設定はそのまま残される。ユーザが「ｒｅｃｏｒｄ  ｅｖｅｎｔｓ  ｏｎ  ｔｈｉｓ  ｓｅｎｓｏｒ」チェックボックス（例えば、７２０３）すべてのチェックマークを外し、「ＯＫ」ボタン７２０７をクリックした場合、「ａｄｄ／ｅｄｉｔ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００の「ｒｅｃｏｒｄ  ｏｎ  ｓｅｎｓｏｒ  ｅｖｅｎｔ」チェックボックス７０１１は自動的にチェックマークを外される。「ａｄｄ／ｅｄｉｔ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００の「ｒｅｃｏｒｄ  ｏｎ  ｓｅｎｓｏｒ  ｅｖｅｎｔ」チェックボックス７０１１のチェックマークが外された場合、「ｓｅｎｓｏｒ  ｅｖｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログ７２００内の設定は、そのまま残される。
【０８４１】
「ｐｒｉｏｒｉｔｙ  ｏｆ  ｔｈｉｓ  ｅｖｅｎｔ」プルダウン・メニュー７２０９は、「ｓｅｎｓｏｒ  ｅｖｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログ７２０１に関連付けられている特定のセンサによりトリガされたイベントに関連付けられる優先度を決定するために使用される。「ｐｒｉｏｒｉｔｙ  ｏｆ  ｔｈｉｓ  ｅｖｅｎｔ」プルダウン・メニュー７２０９の値は、上の運動検出設定の場合と同じである。
【０８４２】
プレビュー・ウィンドウ７２１１、プリセット・コントロール７２１３、バックライト補正７２１５、およびプレビュー・ウィンドウ７２１１上のカメラ・コントロール７２１７は、上述の「ａｄｄ／ｅｄｉｔ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００で説明されているように使用される。
【０８４３】
関連付けられたカメラ１１２〜１１５が制御される位置（つまり、プリセット位置を使用するか、またはプレビュー・ウィンドウ上のカーソル・コントロール・ツール６８００を使用してユーザにより制御される）は、メモリ２２０６内に格納され、イベントが特定のセンサからトリガされた場合に関連付けられたカメラ１１２〜１１５が移動される先の位置を表す。したがって、記録スケジュールの構成が完了した後（つまり、設定が行われ、「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅｓ」ボタン６９１３がストレージ・サーバ２３００に変更を保存するために選択された後）、位置は、与えられたスケジュール・アイテムについて関連付けられたカメラ１１２〜１１５に対する特定のセンサに関連付けられるように格納される。
【０８４４】
上述のように、ストレージ・サーバ２３００上の記録エンジン２０１は、構成情報を使用することで、特定のスケジュール・アイテムにおいてイベントが特定のセンサから受信された場合に、特定のカメラ・サーバ１０９〜１１１に関連付けられたカメラ１１２〜１１５を指定された位置をポイントするように再配置する。
【０８４５】
最大フレーム速度７２２１、事前イベント記録７２２１、および事後イベント記録７２２３に対する設定は、上記の運動検出について説明されたものに対応する機能を備える。
【０８４６】
５．４．２．２  Ｓｐｅｃｉａｌ  Ｄａｙ  Ｓｅｔｔｉｎｇｓ
「ｓｐｅｃｉａｌ  ｄａｙ  ｓｃｈｅｄｕｌｅ」は、祝祭日などの特別日に対する異なる記録設定をセットアップするために使用することができる。図７３に示されているように、「Ｓｐｅｃｉａｌ  ｄａｙ  ｓｃｈｅｄｕｌｅ」アイテムは、「Ｄａｙｓ  ｔｏ  ｕｓｅ  ｔｈｉｓ  ｓｃｈｅｄｕｌｅ」リスト７３０１で指定された日付の「ｎｏｒｍａｌ  ｓｃｈｅｄｕｌｅ」アイテムをオーバーライドする。
【０８４７】
５．４．２．２．１  Ｓｃｈｅｄｕｌｅ  Ｔｙｐｅ
ユーザは、異なる種類の特別日に対しスケジュール・タイプを定義することができる。例えば、週末の祝祭日では、その週の祝祭日に対し異なる記録設定を使用することがありえる。このようなスケジュールは、再利用可能であり、編集または削除できる。その後、特別日スケジュールが適用される日が追加される。「Ａｄｄ」ボタン７３０３を選択することにより、管理者向けに、管理者側でスケジュール・タイプの名前を入力できるダイアログが表示される。
【０８４８】
スケジュール・タイプが削除され、削除されたスケジュールに関連付けられている未来の日付がある場合、ユーザに対し警告が与えられ、そのスケジュール・タイプを削除する前にそれらの日付を削除するよう求められる。
【０８４９】
図７３に示されているように、スケジューリング・エリア７３０５は、機能的には、「ｎｏｒｍａｌ  ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅ」ダイアログ７０００のスケジューリング・エリア６９０５と同じである。しかし、スケジューリング・エリア７３０５は、単一の日しかカバーしない。特別日では、特別日スケジュールが、００００ｈｒｓから２４００ｈｒｓまでの通常記録スケジュールをオーバーライドする。特別日スケジュールを長い週末に延ばすには（つまり、Ｆｒｉ、Ｓａｔ、およびＳｕｎ）、３日すべてを日のリストに追加し、スケジュール７３０１を使用するようにする必要がある。
【０８５０】
ユーザが最初に特別日記録スケジュールをセットアップしたときに、「ｓｃｈｅｄｕｌｅ  ｔｙｐｅ」リスト７３０５は空である。
【０８５１】
５．４．２．２．２  Ｄａｙｓ
スケジュール・タイプが使用されるときに日を追加するには、ユーザが「Ａｄｄ」ボタン７３０３をクリックすると、カレンダー・コントロールが表示され、そこで、ユーザは、使用されるスケジュール・タイプに対する日を選択する。カレンダー・コントロールは、日を選択するための従来のカレンダー・コントロールである。スケジュール・タイプは、「Ａｄｄ」ボタン７３０３がクリックされたときに「ｓｃｈｅｄｕｌｅ  ｔｙｐｅ」パネル７３０７内で選択される必要がある。
【０８５２】
カレンダー・コントロール内で、日付をクリックしてその日付を選択し、「ＯＫ」ボタンをクリックしてカレンダー・コントロールを閉じて、選択された日付を「Ｄａｙｓ  ｔｏ  ｕｓｅ  ｔｈｉｓ  ｓｃｈｅｄｕｌｅ」リスト７３０１に追加する。
【０８５３】
ユーザが同じ日を異なる特別日スケジュールに関連付けようとすると、ユーザは警告を与えられ、新しい日を作成する前に他のエントリを削除するよう求められる。
【０８５４】
スケジュールされた特別日が過ぎると、スケジュールされた特別日はイタリック体と灰色でリスト７３０１内に表示される。このような過ぎ去った日をリスト７３０１からクリアするには、ユーザは、それらを選択し、「Ｄｅｌｅｔｅ」ボタン７３０８を使用して削除することができる。
【０８５５】
上述の通常スケジュールと同様に、「Ｓａｖｅ  Ｓｃｈｅｄｕｌｅ」ボタン７３０９が押されるまで、ストレージ・サーバ２３００に変更は加えられない。ストレージ・サーバ２３００に変更が送られる方法は、上述の通常スケジュールの場合と同じである。
【０８５６】
５．４．３  Ｖｉｅｗｅｒ  Ｓｅｔｔｉｎｇｓ
図７４に示されているように、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１の「ｖｉｅｗｅｒ  ｓｅｔｔｉｎｇｓ」ダイアログ７４００は、それぞれビューア（例えば、２２００Ａ、２２００Ｂ、２２００Ｃ、および２２００Ｄ）に特有の設定を構成するために使用することができる。これらの設定は、ビューア２２００のハード・ディスク・ドライブ２２１０内に格納され、ビューア２３００によってのみ使用される。これらの設定は、他のビューア２２００により使用するためマスタ・ストレージ・サーバ２３００Ａ上に格納されない。ビューア設定の値は、通常、ハード・ディスク・ドライブ２２１０内に構成されたファイル・システム上のビューア構成ファイルに、またはビューア２２００のオペレーティング・システムにより保持されているレジストリ内のエントリとして格納される。
【０８５７】
ビューア設定は、以下からなる。
【０８５８】
（ｉ）Ｌｉｖｅ  Ｖｉｄｅｏ  Ｖｉｅｗｉｎｇ  Ｓｅｔｔｉｎｇｓ。
【０８５９】
（ｉｉ）Ｍａｓｔｅｒ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ。
【０８６０】
（ｉｉｉ）Ｅｖｅｎｔ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｓｅｔｔｉｎｇｓ。
【０８６１】
５．４．３．１  Ｌｉｖｅ  Ｖｉｄｅｏ  Ｖｉｅｗｉｎｇ  Ｓｅｔｔｉｎｇｓ
「Ｉｉｖｅ  ｖｉｄｅｏ  ｖｉｅｗｉｎｇ  ｓｅｔｔｉｎｇｓ」プルダウン・メニュー７４０１は、ライブ・ビデオを表示する最大フレーム速度を制御するために使用することができる。フレーム速度は、オプションのリストから選択される。これらのオプションは、通常、上で与えられたフレーム速度の同じリストとなるであろう。デフォルト値は、毎秒５フレームである。
【０８６２】
選択されたフレーム速度は、ビューイング画面７６００上のそれぞれのビデオ・ウィンドウに適用され、これは、カメラ・サーバ１０９〜１１１がネットワーク２２２０上で単一のライブ・ビデオ・サンプル・ストリームをビューア２２００に送信するように構成される最大フレーム速度である。選択されたフレーム速度は、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１内のビデオ・ウィンドウ（例えば、７６２５）のフレーム速度に適用されず、そのフレーム速度は、そのダイアログおよび結果として表示されるダイアログ内の特定の設定に従って選択される。
【０８６３】
５．４．３．２  Ｍａｓｔｅｒ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ
マスタ・ストレージ・サーバ２３００Ａとして使用されている現在のストレージ・サーバ（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、および２３００Ｄ）は、編集不可能テキスト・フィールド７４０３内に表示される。編集不可能テキスト・フィールド７４０３は、管理者の情報用である。このフィールドは、マスタ・ストレージ・サーバ２３００Ａの名前および、マスタ・ストレージ・サーバ２３００Ａにアクセスするために使用されるホスト名またはＩＰアドレスを示す。
【０８６４】
５．４．３．３  Ｅｖｅｎｔ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｓｅｔｔｉｎｇｓ
上述のように、特定の時刻に特定のカメラ１１２〜１１５に関連付けられた運動イベントまたはセンサ・イベントは、ビデオ・サンプル・データの記録をトリガすることができ、特定の優先度レベルに設定できる。イベントは、以下のように、ビューイング画面７６００内で表すために使用される５つの指定優先度に従って分類される。
【０８６５】
（ｉ）Ｈｉｇｈｅｓｔ。
【０８６６】
（ｉｉ）Ｈｉｇｈ。
【０８６７】
（ｉｉｉ）Ｍｅｄｉｕｍ。
【０８６８】
（ｉｖ）Ｌｏｗ。
【０８６９】
（ｖ）Ｌｏｗｅｓｔ。
【０８７０】
それぞれのイベント優先度は、特に「ｌｉｖｅ  ｅｖｅｎｔｓ」ウィンドウ内で、ビューイング画面７６００上のイベントの外観と処理に影響を及ぼす４つの設定を持つ。
【０８７１】
さらに、ビューア２２００は、特定の方法でオペレータに通知し、オプションにより、特定の優先度のイベントの発生に基づくオペレータによるアクションを必要とするように構成することができる。
【０８７２】
図７４に示されているように、特定の優先度に関して「ｏｐｅｒａｔｏｒ  ｎｏｔｉｆｉｃａｔｉｏｎ」チェックボックス（例えば、７４０５）にチャックマークが入っている場合、このチェックマークの入っているチェックボックスは、対応する優先度のイベントが受信されたときに、ハード・ディスク・ドライブ２２１０内に構成されたライブ・イベント・ログ７６１９（図７６を参照）内のイベントの表現が点滅しなければならないことを示している。指定された秒数の値は、イベントの表現が点滅しなければならない持続期間を示す。
【０８７３】
特定の優先度に関して「ｏｐｅｒａｔｏｒ  ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ」チェックボックス（例えば、７４０７）にチェックマークが入った場合、チェックボックス７４０７は、対応する優先度のイベントが受信されたときに、オペレータがライブ・イベント・ウィンドウ上をクリックすることによりイベントを承認するまでライブ・イベント・ウィンドウ内でハイライト表示される。
【０８７４】
特定の優先度に関して「ａｕｄｉｏ  ａｌｅｒｔ」チェックボックス（例えば、７４０９）にチェックマークが入っている場合、チェックボックス７４０９は、対応する優先度のイベントが受信されたときに、オーディオ・アラートが与えられることを示す。オーディオ・アラートは、指定された場合、オペレータ通知持続時間設定７４１１の持続時間の間繰り返される。オペレータ通知持続時間設定７４１１が指定されていない場合、オーディオ・アラートがイベント毎に１回再生される。
【０８７５】
５．４．３．４  Ｖｉｅｗｅｒ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｆｉｌｅ
図７５は、ビューア構成ファイル７５００の一実施例を示す。
【０８７６】
５．５  ビューイング画面
図７６は、ビューイング画面７６００を示す。上述のように、ビューア２２００がマスタ・ストレージ・サーバ２３００Ａに接続し、ログインできる場合、マスタ・ストレージ・サーバ２３００Ａがビューア２２００が実装されるのと同じコンピュータ・モジュール（例えば、２３０１）上に実装される場合を含めて、ユーザは、ビューイング画面７６００を提示される。
【０８７７】
ビューイング画面７６００は、タイトルおよびメニュー・バー７６０１、カメラ選択エリア７６０３、レイアウト・エリア７６０５、および時刻表エリア７６０７である４つのメイン・セクションを含む。ビューア２２００が起動された（つまり、ビューア・アプリケーション・ソフトウェアが実行された）場合、ビューイング画面７６０３を含み、本明細書ではビューイング画面７６００として総称される、メイン・ウィンドウは、現在の画面解像度で最大化される。ユーザは、メイン・ウィンドウを使用可能な解像度にサイズ変更することができる。メイン・ウィンドウをサイズ変更する場合、メニュー・バー７６０１、カメラ選択エリア７６０３、および時刻表７６０７の高さはすべて、同じままであるが、レイアウト・エリア７６０５は、残りの領域を占有するようにスケーリングされる。
【０８７８】
メニュー・バー７６０１は、メイン・ウィンドウのタイトルとともに、標準コンポーネントを使用して構築され、従来の方法により、アプリケーション・アイコン、タイトル、ウィンドウ・コントロール、およびメニューを表示する。
【０８７９】
５．５．１  カメラ選択
カメラ選択エリア７６０３は、監視に使用できるカメラ１１２〜１１５のそれぞれに関連付けられたサムネイルを表示し、レイアウト・エリア７６０５内でユーザが表示することを望んでいるカメラ１１２〜１１５を選択するために使用される。カメラ選択エリア７６０３は、「ｌｏｃａｔｉｏｎ」７６０９および「ｚｏｎｅ」７６１１メニューおよびカメラ・サムネイル・エリア７６１３で構成される。
【０８８０】
マスタ・ストレージ・サーバ２３００Ａから取り出されたネットワーク・ビデオ・レコーダ構成データは、カメラ選択エリア７６０３に初期値を入力するために使用される。
【０８８１】
ビューイング画面７６００が表されると、ビューア２２００は、「ｌｏｃａｔｉｏｎ」メニュー７６０９にネットワーク・ビデオ・レコーダ構成データ内のロケーションのリストを初期値として表示し、「ｚｏｎｅｓ」メニュー７６１１にネットワーク・ビデオ・レコーダ構成データ内のＺｏｎｅｓのリストを初期値として表示する。最初に、ビューア２２００の起動後に、「Ｌｏｃａｔｉｏｎｓ」のリスト内の第１の「Ｌｏｃａｔｉｏｎ」が表示され、その「Ｌｏｃａｔｉｏｎ」に関連付けられた「Ｚｏｎｅｓ」のリスト内の第１の「Ｚｏｎｅ」が表示される。その後、ビューア２２００は、「Ｌｏｃａｔｉｏｎ」内の第１の「Ｚｏｎｅ」が選択された場合に対応する方法で、カメラ・サムネイル・エリア７６１３に「Ｌｏｃａｔｉｏｎｓ」のリスト内の第１の「Ｌｏｃａｔｉｏｎ」内のカメラ１１２〜１１５に関連付けられているサムネイル（例えば、７６１５）を初期値として表示する。
【０８８２】
マスタ・ストレージ・サーバ２３００Ａ上のネットワーク・ビデオ・レコーダ構成データがまだセットアップされていないか、または空になるように構成されている場合、それぞれのメニュー７６０９、７６１１で使用可能なＬｏｃａｔｉｏｎｓまたはＺｏｎｅｓがなく、またカメラ・サムネイル・エリア７６１３にカメラ・サムネイル（例えば、７６１５）がない。
【０８８３】
カメラ・サムネイル（例えば、７６１５）の表示の制御が、「Ｌｏｃａｔｉｏｎ」プルダウン・メニュー７６０９および「Ｚｏｎｅ」プルダウン・メニュー７６１１を通じて行われる。ユーザが「Ｌｏｃａｔｉｏｎ」メニュー内のロケーション・アイテムを選択した場合、「Ｚｏｎｅ」メニューは、そのＬｏｃａｔｉｏｎ内にあるＺｏｎｅｓのみを含むように更新される。それと同時に、カメラ・サムネイル・エリア７６１３は、さらに、カメラに関連付けられているサムネイルのみが選択されたＬｏｃａｔｉｏｎに表示されるように更新される。
【０８８４】
ユーザが「Ｚｏｎｅ」メニュー７６１１内で「Ｚｏｎｅ」アイテムを選択した場合、対応する「Ｚｏｎｅ」ダイアログがスクロールし、「Ｚｏｎｅ」ダイアログの左辺がサムネイル・エリアの開始（左辺）に揃えられ、ユーザはそのＺｏｎｅ内のカメラのサムネイルを簡単に使用できる。スクロール・バー７６２３は、画面上のカメラ・サムネイル・エリア７６１３内に収められるサムネイルがまだあるか、または「Ｚｏｎｅ」ダイアログが一番左の表示可能位置に表示されるようにＺｏｎｅが選択された場合にのみ表示されるので、通常選択されたＺｏｎｅのサムネイルの左へ描画されるカメラ・サムネイル（例えば、７６１５）は隠される。
【０８８５】
カメラ・サムネイル・エリア７６１３内のカメラ・サムネイル（例えば、７６１５）は、「Ｚｏｎｅ」タブ（例えば、「Ｃａｒｐａｒｋ」７６２１）に編成されるが、それぞれの「Ｚｏｎｅ」タブはそのゾーン内にあるカメラのそれぞれに関連付けられたサムネイルを含む。「Ｚｏｎｅ」タブは、さらに、ゾーンの名前も含む。それぞれのサムネイル（例えば、７６１５）の下に、対応するカメラ１１２〜１１５の名前が表示される。名前がカメラ・サムネイル（例えば、７６１５）の幅よりも長い場合、サムネイルがサムネイルの下に表示され、隣のサムネイルの名前とオーバーラップしないように名前が切り詰められる。
【０８８６】
それぞれの「Ｚｏｎｅ」タブ（例えば、７６２１）は、「Ｚｏｎｅ」プルダウン・メニュー７６１１と同じ順序で水平方向に順に配列される。ユーザは、スクロールバー７６２３をクリックしてドラッグすることによりカメラ・サムネイル・エリア７６１３をスクロールすることができる。その結果、他のカメラ・サムネイルを表示し、使用することができる。サムネイル（例えば、７６１５）は、カメラ１１２〜１１５の詳細がネットワーク・ビデオ・レコーダ構成データ内に格納される順序で「Ｚｏｎｅ」タブ（例えば、７６２１）とともに表示される。
【０８８７】
カメラ１１２〜１１５から取り込まれ、カメラ・サーバ１０９〜１１１により送信されるビデオ・サンプル・データを表示するために、ユーザは、レイアウト・エリア７６０５上にビデオ・ウィンドウ７６２５を作成できる。ユーザは、レイアウト・エリア７６０５内で適切なサムネイル（例えば、７６１５）を選択し、カーソルをレイアウト・エリア７６０５上にドラッグすることによりビデオ・ウィンドウ７６２５を作成することができる。ドラッグ・アクションの実行中に、ビデオ・ウィンドウの境界ボックスを表す矩形のアウトラインが作成され、カーソルに追随する。ユーザが押している手を離すと、ビデオ・ウィンドウが矩形アウトラインを同じ位置で置き換わり、ビューア２２００は、サムネイルにより表されるカメラ１１２〜１１５に関連付けられているカメラ・サーバ１０９〜１１１との接続を行い、ビデオ・ウィンドウには、そのカメラ１１２〜１１５からの画像を表すライブ・ビデオ・サンプル・データを表示する。
【０８８８】
ユーザは、多数のサムネイルを使用して類似のオペレーションを実行し、レイアウト・エリア７６０５上の異なる位置に異なるカメラ１１２〜１１５に関連付けられている異なるビデオ・ウィンドウ（例えば、７６２５）を形成することができる。ユーザは、同じサムネイルを何回も使用して類似のオペレーションを実行し、それぞれ同じカメラ１１２〜１１５からビデオを表示するレイアウト・エリア７６０５上の異なる位置に異なるビデオ・ウィンドウ（例えば、７６２５）を形成することができる。
【０８８９】
ユーザがマウス２２０３を使用してカメラ・サムネイル上をロールする場合、関連付けられたカメラ１１２〜１１５の完全な名前がディスプレイ２２１４上にツール・チップで表示される。カメラ・サムネイルの下に収まるように名前が切り詰められている場合、ツール・チップを使用するとユーザはカメラ１１２〜１１５の完全な名前を見ることができる。
【０８９０】
前に説明したように、それぞれのサムネイルに使用される画像は、「ａｄｄ／ｅｄｉｔ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ７０００内で管理者により設定される。
【０８９１】
５．５．２  レイアウト・エリア
レイアウト・エリア７６０５は、カメラ１１２〜１１５からのライブ・ビデオ・サンプル・データおよびストレージ・サーバ２３００からの記録済みサンプル・データに対応する複数のビデオ・ウィンドウ（例えば、７６２５）を表示するために使用される。上述のように、それぞれ特定のカメラ・サーバ１１２〜１１５に関連付けられた一組のビデオ・ウィンドウ（例えば、７６２５）の、レイアウト・エリア７６０５内の特定の配列をレイアウトと呼ぶ。ユーザは、レイアウト・エリア７６０５上に特定のカメラに関連付けられたビデオ・ウィンドウの配列を行い、その配列を将来使用するレイアウトとして保存することができる。
【０８９２】
共有レイアウトのデータおよびマスタ・ストレージ・サーバ２３００Ａから取り出されたパーソナル・レイアウトのデータを使用して、ビューア２２００のメモリ２２０６内に構成されたツリー構造に初期値を設定する。ツリー構造は、レイアウトを表す最上位ノードを持ち、その中に、共有レイアウトを表すノードおよびパーソナル・レイアウトを表すノードを持つ。それぞれのノード内に、対応するレイアウトの集まりの表現がある。レイアウトは、階層構造に応じてサブフォルダ内の共有およびパーソナル構造のそれぞれにグループ化することができる。例えば、共有レイアウトの構造は、構造の最上位レベルでいくつかのレイアウトを含み、それ自身レイアウトを含むサブフォルダを含むことができる。サブフォルダは、ユーザにより名前を割り当てられる。それらのサブフォルダは入れ子にできる。例えば、会社によりシステム１００内で使用される共有レイアウトは、それぞれの市グループ内で、異なる市に関連付けられた別々のグループを持つ可能性があり、それぞれの市内、それぞれのビル・グループ内で異なるビルに関連付けられた別々のグループがありえ、それぞれビルの異なる部分に対する異なるレイアウトを含む、レイアウトの集合がありえる。
【０８９３】
特定のレイアウトは、単一レイアウト内のＬｏｃａｔｉｏｎまたはＺｏｎｅからのカメラ１１２〜１１５を含むことができる。レイアウトの階層は、ＬｏｃａｔｉｏｎｓおよびＺｏｎｅｓの階層から独立している。
【０８９４】
ビューア２２００がビューイング画面７６００を表示する場合、ビューア２２００は、レイアウト・ツリー構造を使用して、「Ｌａｙｏｕｔ  Ｓｅｌｅｃｔｉｏｎ」メニューに初期値を設定する。「Ｌａｙｏｕｔ  Ｓｅｌｅｃｔｉｏｎ」メニューは、一般的レイアウト・オペレーション（例えば、「ｎｅｗ  ｌａｙｏｕｔ」、「ｓａｖｅ」、「ｓａｖｅ  ａｓ」、「ｏｒｇａｎｉｓｅ」）を含み、その後に、水平セパレータ、共有レイアウト構造内の最上位ノードのリスト（つまり、レイアウトおよびサブフォルダ）、水平セパレータ、パーソナル・レイアウト構造の最上位ノードのリスト（つまり、レイアウトおよびサブフォルダ）と続く。
【０８９５】
ユーザは、マウス２２０３などの入力デバイスを使用して、ビデオ・ウィンドウをレイアウト・エリア７６０５に追加し、ビデオ・ウィンドウ（例えば、７６２５）の移動、サイズ変更、および削除を行い、レイアウト・エリア７６０５上に表示されるグリッドのタイプを変更することができる。グリッドのタイプの変更について、以下でさらに説明する。
【０８９６】
ユーザは、ビデオ・ウィンドウの現在の配列をレイアウト・エリア７６０５上にレイアウトとして保存し、特定の名前をそのレイアウトに関連付けることができる。異なるレイアウトを、異なるレイアウト名を使用して保存できるため、サンプル・データを監視し、および／または記録済みサンプル・データを表示するためにそれぞれ使用できる多数の異なるレイアウトがありうる。例えば、ユーザは、そのエリアを都合よく監視するためビルの特定のエリアに対応するようにレイアウトをセットアップすることができる。他の実施例では、ユーザは、特定の日にちに重要な活動のエリアに対応するようにレイアウトをセットアップすることができる。他の実施例では、管理者は、その管理者が監視する必要のあるビデオ・ウィンドウ（例えば、７６２５）を含む特定のオペレータ用のレイアウトをセットアップすることができる。他の実施例では、ビューア２２００がサーフ・ビーチを表示するウェブカメラを見るために使用されている場合、ユーザは、お気に入りのサーフ・ビーチに対応するようにレイアウトをセットアップすることができる。
【０８９７】
レイアウトの集合（例えば、共有レイアウトの集合または特定のユーザ名に関連付けられたパーソナル・レイアウトの集合）は、レイアウトの順序付き集合からなる。レイアウトの順序付き集合は、通常、作成順に順序付けされるが、他の実装では、アルファベット順またはユーザ定義順など他の方法で順序付けることができる。
【０８９８】
レイアウトは、レイアウト名、グリッド・タイプの値、およびビデオ・ウィンドウの表現のリストからなるデータ構造として、マスタ・ストレージ・サーバ２３００Ａから取り出された後、マスタ・ストレージ・サーバ２３００Ａ上のレイアウト・ファイル、およびビューア２２００上のメモリ２２０６内で表現される。それぞれのビデオ・ウィンドウ表現は、カメラ１１２〜１１５の識別子、レイアウト・エリア７６０５内の対応するビデオ・ウィンドウの左上コーナーに対するＸおよびＹ座標、および対応するビデオ・ウィンドウの幅および高さに対する値からなる。実装のいくつかの変更形態では、カメラ識別子は、カメラ１１２〜１１５に関連付けられた一意的な番号、カメラ１１２〜１１５に関連付けられた一意的な名前、カメラ１１２〜１１５に関連付けられたホスト名またはＩＰアドレス（オプションにより特定のポート・アドレスを持つ）、または他の何らかの形の特定のカメラ・サーバの識別方法とすることができる。
【０８９９】
ビューイング画面７６００がビューアが起動した後最初に表示される場合、ビューア２２００は、マスタ・ストレージ・サーバ２３００Ａから返されたレイアウトの構造の第１のパーソナル・レイアウトをロードする。第１のパーソナル・レイアウトは、現在のユーザに対する第１のレイアウトに対応する（つまり、上述のログイン・ダイアログで入力された値により定義される）。第１のパーソナル・レイアウトは、レイアウト・エリア７６０５内に表示される。マスタ・ストレージ・サーバ２３００Ａから返されたパーソナル・レイアウトがない場合、代わりに第１の共有レイアウトがロードされる。
【０９００】
ビューア２２００がレイアウトをロードする場合、ビューア２３００は、グリッド・タイプを決定し、レイアウト・エリア７６０５上にポイントまたはラインを適宜描画するが、これについて以下で詳述する。その後、ビューア２２００は、ビデオ・ウィンドウの表現のリストを１つずつ辿り、指定されたＸおよびＹ位置、指定された幅および高さのビデオ・ウィンドウ（例えば、７６２５）を作成する。それぞれのビデオ・ウィンドウについて、ビューア２２００は、ビデオ・ウィンドウ表現に関連付けられている識別子により識別されるカメラ１１２〜１１５に関連付けられているカメラ・サーバ１０９〜１１１に接続を試み、カメラ・サーバ１０９〜１１１を介してカメラ１１２〜１１５からビデオ・ウィンドウ（例えば、７６２５）に入るビデオ・サンプル・データのライブ・ストリームを表示する。
【０９０１】
ビューア２２００は、さらに、それぞれのカメラ１１２〜１１５に関連付けられているイベントを取得するためにレイアウト・エリア７６０５内に表示されるカメラ１１２〜１１５に関連付けられているそれぞれのストレージ・サーバ２３００に要求を行う。その後、ビューア２２００は、時刻表７６０７にそれらのイベントを初期値として設定する。ビューア２２００がすでに終了しているときに表示されるライブ・イベント・ログ７６１９をユーザがすでに持っていた場合、ライブ・イベント・ログ７６１９が表示される。これはライブ・イベント・ログ７６１９であるため、クライアント・アプリケーションが起動したときに発生するイベントのみが表示される。
【０９０２】
レイアウト・エリアでは、通常、４つの異なるグリッド・タイプが許される。これらは通常以下のとおりである。
【０９０３】
（ｉ）Ａｌｉｇｎｍｅｎｔ。
【０９０４】
（ｉｉ）Ｓｍａｌｌ。
【０９０５】
（ｉｉｉ）Ｍｅｄｉｕｍ。
【０９０６】
（ｉｖ）Ｎｏｎｅ。
【０９０７】
他のタイプのグリッドも、他の実装で使用可能にできる。グリッド・タイプは、図７７に示されているように、「ｌａｙｏｕｔ  ｓｅｌｅｃｔｉｏｎ」メニュー７７００から選択されるか、またはレイアウト・エリア７６０５内を右クリックして、コンテクスト・メニュー７７０１から「ｌａｙｏｕｔ  ｇｒｉｄｓ」を選択し、その後グリッド・タイプを選択することにより、選択される。グリッド・タイプが選択されると、そのグリッドに関連付けられているポイントまたはラインが、レイアウト・エリア７６０５上に描画される。グリッドは、「Ｎｏｎｅ」を選択することによりオフにされ、その場合、グリッド・ラインまたはドットが画面から削除される。グリッド・タイプを変更しても、レイアウト・エリア７６０５上にすでに表示されているビデオ・ウィンドウ（例えば、７６２５）に影響しない。グリッド・タイプを変更すると、ユーザ対話操作に従ってレイアウト・エリア７６０５上に配置されるその後のビデオ・ウィンドウに影響する。
【０９０８】
デフォルトでは、レイアウトは、ビデオ・ウィンドウのサイズおよび位置が定義済みグリッドにスナップする位置揃えグリッドを使用する。このようなスナップ操作により、ユーザはその時刻に最も重要なものに応じて、異なるビデオ・ウィンドウ間に視覚的階層を確立することができる。レイアウトは、さらに、異なるタイプのグリッドを使用して他のグリッド配列に編成することもできる。
【０９０９】
位置揃えグリッドは、図７８に示されているように、ドット７８００からなる規則正しいグリッドとして表示される。ビデオ・ウィンドウ（例えば、７６２５）は、再配置またはサイズ変更された場合にグリッドにスナップする。位置揃えグリッド７８００は、異なるサイズのビデオ・ウィンドウを揃えるために使用される。例えば、図７９は、位置揃えグリッド７８００を使用して配列された多数のビデオ・ウィンドウ７９０１、７９０３、７９０５、および７９０７を示している。位置揃えグリッドが使用される場合、ビデオ・ウィンドウは、レイアウト・エリア内の任意のロケーションに配置できる（一番近いグリッド・ポイントの位置にスナップするが）。このようにして、ビデオ・ウィンドウは、様々なサイズとすることができ、ビデオ・ウィンドウは互いにオーバーラップすることができる。小および中グリッド・タイプ（以下参照）と異なり、位置揃えグリッドが使用される場合、ビデオ・ウィンドウのサイズは、互いに厳密な倍数関係にある必要はない（例えば、一方のビデオ・ウィンドウは、他方のビデオ・ウィンドウの幅および高さの１．１倍とすることができる）。これにより、レイアウトに非常に大きな柔軟性が得られる。
【０９１０】
グリッド・タイプが選択されない場合（つまり、「Ｎｏｎｅ」が選択される）、グリッドまたはグリッド・ポイントはない。この場合、ドラッグ・アウトしてビデオ・ウィンドウを形成する場合の挙動は、グリッドへのスナップがないことを除き位置揃えグリッドの場合と同じである。これにより、ビデオ・ウィンドウの位置設定およびサイズ設定の柔軟性が完全なものとなる。
【０９１１】
グリッド・タイプは、さらに、図８０に示されているような小グリッド８０００、図８１に示されているような中グリッド８１００のうちの１つに構成することもでき、その場合、グリッド７８００のセルは、ボックスの複数の行として表示される。図８２は、小グリッド８０００を使用して配列されたビデオ・ウィンドウ（例えば、８２０１）を示しており、図８３は、中グリッド８２００を使用して配列されたビデオ・ウィンドウ（例えば、８３０１）を示す。
【０９１２】
小および中グリッド・タイプ８０００および８１００は、それぞれ、すべてのビデオ・ウィンドウが同じサイズであるか、または大きいほうのビデオ・ウィンドウのサイズが小さいほうのビデオ・ウィンドウのサイズの倍数となっている場合にレイアウトを作成するに役立つ。小および中グリッド・タイプでは、グリッド７８００の中にドラッグされるビデオ・ウィンドウは、ドラッグがサムネイル（例えば、７６１５）から開始したか、またはレイアウト・エリア７６０５上の他の位置から開始した場合に、自動的に再配置され、ビデオ・ウィンドウの辺は、そのビデオ・ウィンドウがドロップされたセルの辺に揃えられる。ビデオ・ウィンドウは、セル内に収まるようにサイズ変更される。ユーザがビデオ・ウィンドウのサイズを変更し、押下する手を離した場合（例えば、ドラッグの後、マウス２２０３のボタンを離す）、ビデオ・ウィンドウのサイズは、離した時点でビデオ・ウィンドウのサイズに最も近いサイズを持つ領域に収まるようにスナップする。この領域は、単一セルまたは複数のセル（例えば、幅２×高さ２のセルのブロック、または幅３×高さ３のセルのブロックなど）とすることができる。例えば、小グリッド内のビデオ・ウィンドウは、最初に１つのセルを占有することができる。ユーザは、右下隅を選択し、画面の右下に向かってドラッグ・アウトすることによりビデオ・ウィンドウのサイズを変更することが可能である。ユーザが離すと、ビデオ・ウィンドウは、セルの最も近いブロックのサイズに収まるようにサイズ変更される（例えば、４×４グリッド要素）。
【０９１３】
グリッド・タイプが変更された場合（例えば、ユーザがグリッド・タイプを「位置揃え」から「小」グリッドに変更するか、またはグリッド・タイプの他の変更）、レイアウト・エリア７６０５内の既存のビデオ・ウィンドウ（例えば、７６２５）は、再配置またはサイズ変更されない。その後ユーザがそれらのビデオ・ウィンドウのうちの１つを移動またはサイズ変更する場合、ユーザは、カメラ・セレクタからドラッグ・アウトするのと同じプロセスを実行する。
【０９１４】
小グリッドでは、通常、１６０×１２０ピクセル・ボックスをセルとして使用し、中グリッドでは、通常、３２０×２４０ピクセル・ボックスをセルとして使用する。いくつかの実装では、いくつかの小ボックスといくつかの大ボックスを含むテンプレートを備える、グリッドまたはグリッドの組合せの他のサイズも、類似の方法で配列される。
【０９１５】
ユーザがレイアウトを作成し、その後メイン・ウィンドウのサイズを縮小した場合、いくつかのビデオ・ウィンドウ（例えば、８３０１）は、レイアウト・エリア７６０５内に収まらない場合がある。この場合、スクロールバーが現れ、レイアウト・エリア７６０５をスクロールできるようになる。さらに、ビデオ・ウィンドウがレイアウト・エリア７６０５の下部または右の外にドラッグされると、図７６に示されているようにレイアウト・エリア７６０５に関して、仮想レイアウト・エリアが増大し、スクロールバーが現れ、ユーザは表示されているレイアウト・エリア７６０５を移動し、仮想レイアウト・エリアの異なる部分を表示することができる。
【０９１６】
水平および垂直スクロールバーは、ビューイング画面７６００を含むメイン・アプリケーション・ウィンドウのサイズが変更され、表示可能エリアの外に配置されるビデオ・ウィンドウがある場合に使用することができる。レイアウト・エリアは、メイン・アプリケーション・ウィンドウをサイズ変更することによりサイズ変更できる。
【０９１７】
レイアウト・エリア７６０５の異なる要素は以下を含む。
【０９１８】
（ｉ）レイアウト名７６２９および選択ボタン７６２７、
（ｉｉ）ビデオ・ウィンドウ（例えば、７６２５）、
（ｉｉｉ）「Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ」７６１９。
【０９１９】
５．５．２．１  レイアウト名および選択ボタン
レイアウト選択ボタン７６２９およびレイアウト名７６２７は、図７６に示されているように、レイアウト・エリア７６０５の左上隅に表示される。レイアウト名７６２７の表示は、ユーザが現在使用しているレイアウトに関する情報をユーザに示す。レイアウト選択ボタンは、選択されると、選択メニューを表示し、これにより、ユーザは、レイアウトの保存および編成、および他の保存レイアウトの表示切替えを行うことができる。レイアウトは、レイアウト選択メニューからレイアウトの名前を選択することにより選択メニューから選択される。
【０９２０】
レイアウトが表示されると、ビデオ・ウィンドウの追加、移動、サイズ変更、削除、およびグリッド・タイプの変更を行うことができる。いつでも、ユーザは、レイアウト選択メニューから「ｓａｖｅ」または「ｓａｖｅ  ａｓ」アイテムを選択することにより、新しい配列を保存することを選択できる。
【０９２１】
「ｓａｖｅ」アイテムを選択することにより、レイアウトは、現在の名前を使用して保存される。「ｓａｖｅ  ａｓ」アイテムを選択すると、ユーザに対し、「ｓａｖｅ  ａｓ」ダイアログが表示され、これにより、ユーザは、レイアウトに関連付けられる名前を入力し、レイアウト構造内で、ユーザがレイアウト保存したい場所を選択する。レイアウトは、共有レイアウト構造またはパーソナル・レイアウト構造内のサブフォルダに編成することができ、上述のように、サブフォルダはネストすることができる。ユーザは、「ｓａｖｅ  ａｓ」ダイアログ内から、新規サブフォルダを作成するか、またはレイアウトまたはサブフォルダを削除することができる。
【０９２２】
管理者は、共有レイアウト構造またはパーソナル・レイアウト構造のいずれかにレイアウトを保存することができる。オペレータは、パーソナル・レイアウト構造のみにレイアウトを保存できる。
【０９２３】
管理者が共有レイアウトに変更を加え、その後、レイアウト選択メニューから他のレイアウトを選択し、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１に変更を加えるか、またはビューア・アプリケーション・ソフトウェアを閉じると、管理者は、その変更を保存するよう求められる。管理者が「Ｙｅｓ」（つまり、変更を保存する）を選択した場合、変更は、同じ名前を使用して上書き保存される。
【０９２４】
オペレータが共有レイアウトに変更を加え、その後、メニューから他のレイアウトを選択し、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１に変更を加えるか、またはビューア・アプリケーション・ソフトウェアを閉じると、オペレータは、その変更を保存するよう求められる。オペレータが「Ｙｅｓ」（つまり、変更を保存する）を選択した場合、「ｓａｖｅ  ｌａｙｏｕｔ」ダイアログが表示され、ユーザは新しいレイアウト名の入力を求められるので、オペレータは共有レイアウトを使用することはできるが、変更を上書き保存することはできない。
【０９２５】
上記の場合、管理者またはオペレータが「Ｎｏ」を選択した場合、ビューア２２００は、レイアウトへの変更を破棄する。
【０９２６】
ユーザがレイアウト選択メニューから新しいレイアウト・オプションを選択した場合、「ｕｎｔｉｔｌｅｄ」という名前の新しい空のレイアウトが作成される。既存のビデオ・ウィンドウが、レイアウト・エリア７６０５から削除される。
【０９２７】
ユーザがレイアウト選択メニューから「ｏｒｇａｎｉｚｅ  ｌａｙｏｕｔｓ」を選択した場合、ビューア２２００は、「ｏｒｇａｎｉｚｅ  ｌａｙｏｕｔｓ」ダイアログ８４００を起動する。ユーザは、上述のように、ダイアログ８４００により提供される機能を使用して、ビューア２２００のハード・ディスク・ドライブ２２１０内に構成されたレイアウト構造内のレイアウトの位置を変更することができる。ユーザは、さらに、サブフォルダのリネームおよび削除、およびレイアウトの移動、リネーム、および削除を行うこともできる。
【０９２８】
「ｏｒｇａｎｉｓｅ  ｌａｙｏｕｔｓ」ダイアログ８４００は、管理者およびオペレータ向けに異なる外観を持つ。管理者の場合、「ｏｒｇａｎｉｓｅ  ｌａｙｏｕｔｓ」ダイアログ８４００は、「Ｓｈａｒｅｄ  Ｌａｙｏｕｔｓ」８４０３に対する子ノードおよび「Ｐｅｒｓｏｎａｌ  Ｌａｙｏｕｔｓ」に対する子ノード８４０５とともに図８４に示されている「Ｌａｙｏｕｔｓ」８４０１と呼ばれる最上位レベルのノードを示す。これらのノードのそれぞれの下に、ビューア２２００のハード・ディスク・ドライブ２２１０内に構成されたレイアウト構造を表す階層構造内のそのノード内にあるレイアウト（例えば、「Ａｎｄｒｅｗ’ｓ  Ｌａｙｏｕｔｓ」）またはサブフォルダが示される。オペレータの場合、「ｏｒｇａｎｉｓｅ  ｌａｙｏｕｔｓ」ダイアログ８４００は、図８５に示されているように、「Ｐｅｒｓｏｎａｌ  Ｌａｙｏｕｔｓ」に対する最上位レベルのノード８５０１を示す。ノード８５０１の下に、ビューア２２００のハード・ディスク・ドライブ２２１０内に構成されたレイアウト構造を表す階層構造内のそのノード８５０１内にあるレイアウト（例えば、「Ａｎｄｒｅｗ’ｓ  Ｌａｙｏｕｔｓ」）またはサブフォルダが示される。したがって、管理者は、共有レイアウトまたはパーソナル・レイアウトを再編成することができるが、オペレータは、パーソナル・レイアウトのみを再編成できる。
【０９２９】
管理者が、「ｓａｖｅ」オプション、「ｓａｖｅ  ａｓ」ダイアログ、または「ｏｒｇａｎｉｓｅ  ｌａｙｏｕｔｓ」ダイアログ８４００を使用してレイアウト構造内でレイアウトまたはサブフォルダの保存、リネーム、または削除、またはレイアウトの移動を行う場合、レイアウトおよびレイアウト構造への変更は、マスタ・ストレージ・サーバ２３００Ａに送信される。
【０９３０】
管理者が変更を加えた場合、ビューア２２００は、共有レイアウトおよびパーソナル・レイアウトをマスタ・ストレージ・サーバ２３００Ａに送信する。オペレータが変更を加えた場合、ビューア２２００は、パーソナル・レイアウトをマスタ・ストレージ・サーバ２３００Ａに送信する。
【０９３１】
共有レイアウト構造を送信するために、ビューア２２００は、ＨＴＴＰ  ＰＯＳＴメソッドを使用してＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドを要求としてマスタ・ストレージ・サーバ２３００Ａに送信する。この場合、ビューア２２００は、特定のポートで指定されたホスト名またはＩＰアドレスに接続することを試み、以下のリソース（１９）についてＨＴＴＰ  ＰＯＳＴメッセージを送信する。
【０９３２】
／webview-nvr／nvr_adminset.fcgi?file=playout              （１９）
メモリ２２０６内に格納された共有レイアウト構造からのデータは、要求の一部として送信される。
【０９３３】
マスタ・ストレージ・サーバ２３００Ａ上の記録エンジン２０１は、Ｗｅｂサーバ２１３からＨＴＴＰ  ＰＯＳＴメッセージを受信し、送信された共有レイアウト構造データを読み込み、上述のように、共有レイアウト・データをハード・ディスク・ドライブ２３１０内のファイルに、共有レイアウトに通常使用される名前で書き込み、既存のファイルが存在すればそのファイルを上書きする。
【０９３４】
パーソナル・レイアウト構造を送信するために、ビューア２２００は、ＨＴＴＰ  Ｐｏｓｔメソッドを使用してＮＶＲ＿ＵｓｅｒＳｅｔコマンドを要求としてマスタ・ストレージ・サーバ２３００Ａに送信する。この場合、ビューア２２００ソフトウェアは、特定のポートで指定されたホスト名またはＩＰアドレスに接続することを試み、以下のリソース（２０）についてＨＴＴＰ  ＰＯＳＴメッセージを送信する。
【０９３５】
／webview-nvr／nvr_userset.fcgi?file=ulayout            （２０）
メモリ２２０６内に格納されたパーソナル・レイアウト構造からのデータは、要求の一部として送信される。
【０９３６】
マスタ・ストレージ・サーバ２３００Ａ上の記録エンジン２０１は、ＨＴＴＰ  ＰＯＳＴメッセージを処理し、送信されたパーソナル・レイアウト構造データを読み込み、上述のように、要求に関連付けられたユーザ名に関連付けられたパーソナル・レイアウトのファイル名を決定し、パーソナル・レイアウト・データをハード・ディスク・ドライブ２３１０内のファイルに、ファイル名とともに書き込み、既存のファイルが存在すればそのファイルを上書きする。
【０９３７】
５．５．２．２  ビデオ・ウィンドウ
ビデオ・ウィンドウ（例えば、７６２５、８２０１、８３０１）は、ビューイング画面７６００のレイアウト・エリア７６０５内にライブまたは事前記録済みビデオ・サンプル・データを表示するために使用される。それぞれのビデオ・ウィンドウは、個々のカメラ１１２〜１１５のビデオ画像を表示し、ユーザは、ビデオ・ウィンドウを再配置、サイズ変更、または閉じることができる。
【０９３８】
ビデオ・ウィンドウが最初に、レイアウト・エリア７６０５内にロードされたときに、ビデオ・ウィンドウに関連付けられた特定のカメラ・サーバ１０９〜１１１は、関連付けられたカメラ１１２〜１１５からライブ・ビデオ・サンプル・データをストリーミングする。ユーザがパン、傾斜、またはズーム設定を調整するためカメラ１１２〜１１５の制御権を取得したい、または事前記録済みビデオを見たい場合、ユーザは、ユーザが関心を持つ特定のカメラ１１２〜１１５に対する関連付けられたビデオ・ウィンドウを選択する。
【０９３９】
ビデオ・ウィンドウは、従来の方法で、マウス２２０３、または類似のデバイスでクリックすることにより選択される。ビューア２２００は、自動的にビデオ・ウィンドウを選択する。ビデオ・ウィンドウを選択すると、再生ヘッド９００１（図９０を参照）が有効になり、後述のように、時刻表７６０７上のイベントの表示が切り替わる。
【０９４０】
選択ボックスをビデオ・ウィンドウの周りでドラッグすることにより多数のビデオ・ウィンドウを選択できる。レイアウト・エリア７６０５内のすべてのビデオ・ウィンドウは、類似の方法で選択できるか、またはビューイング画面７６００の「ｅｄｉｔ」アプリケーション・メニューから「Ｓｅｌｅｃｔ  Ａｌｌ」を選択することにより、選択できる。
【０９４１】
同じビデオ・ウィンドウの複数のインスタンスをレイアウト・エリア７６０５内にロードすることで、ユーザは、異なるタイムコードから同じカメラ・サーバ１０９〜１１１からのビデオ・サンプル・データを比較するか、または一方のビデオ・ウィンドウ内の事前記録済みサンプル・データを、他のウィンドウでライブ・ビデオ・サンプル・データを見ながら、検討することができる。
【０９４２】
一方のカメラ・サーバ１０９〜１１１に関連付けられている一方のビデオ・ウィンドウ（例えば、７６２５）が選択され、ユーザが他方のビデオ・ウィンドウをクリックした場合、ビューア２２００は、第１のカメラの選択を解除する。１つまたは複数のカメラ・サーバ１０９〜１１１に関連付けられた複数のカメラを選択するために、ユーザは、追加ビデオ・ウィンドウを選択しながら「ＣＴＲＬキー」を押し下げたままにするか、またはユーザが関心を持っているビデオ・ウィンドウの周りで選択ボックスをドラッグすることができる。
【０９４３】
複数のビデオ・ウィンドウを選択する場合、選択されたすべてのビデオ・ウィンドウのタイムコードは、第１の選択されたビデオ・ウィンドウと自動的に同期する。例えば、第１の選択されたビデオ・ウィンドウがライブであれば、他のすべての選択されたビデオ・ウィンドウは、ライブ・ビデオを表示するように更新される。第１の選択されたビデオ・ウィンドウが特定の時刻の特定の日付からのビデオ・サンプル・データを再生している場合、他のすべての選択されたビデオ・ウィンドウは、特定の曜日および時刻からの記録済みビデオ・サンプル・データを表示するように調整される。
【０９４４】
レイアウト・エリア７６０５内の空の領域をクリックするか、またはＣＴＲＬキーを押し下げたままにし、選択されたビデオ・ウィンドウをクリックすることによりビデオ・ウィンドウの選択が解除される。
【０９４５】
ビデオ・ウィンドウは、ウィンドウの右下隅をドラッグすることによりサイズ変更することができる。いくつかの実装では、ビデオ・ウィンドウのサイズに制限がある。本明細書で説明されている実装では、ビデオ・ウィンドウをスケーリングできる最小サイズは、９６×７２ピクセルである。
【０９４６】
ビデオ・ウィンドウが最初にロードされるか、またはカメラ選択エリア７６０３からドラッグ・ダウンされる場合、ビューア２２００は、適切なカメラ・サーバ１０９〜１１１へのライブＨＴＴＰ接続を確立することを試みる。ライブＨＴＴＰ接続は、米国特許第６，４８４，１９５号（Ｃａｎｏｎ  Ｋａｂｕｓｈｉｋｉ  Ｋａｉｓｈａ）で説明されているようなＨＴＴＰ上のカメラ・サーバ・プロトコルを使用して実行される。接続管理オブジェクトは、すべての進行中のカメラ接続を追跡する。複数のビデオ・ウィンドウが同じカメラ１１２〜１１５のレイアウト・エリア７６０５内に存在する場合、接続管理オブジェクトは、接続およびビデオ・ストリームが再利用されることを保証する。接続管理オブジェクトは、カメラ接続オブジェクトのベクトルおよびそれぞれのビデオ・ウィンドウの識別子および接続コールバック関数のアドレスを保持する構造を保持する。カメラ・サーバ１０９〜１１１への接続がビデオ・ウィンドウにより必要とされる場合、接続管理オブジェクトに対し、カメラ接続へのポインタについてのクエリが実行される。接続管理オブジェクトは、カメラ接続の要素を所望のホスト名およびポートと比較することにより既存の接続があるかどうかを決定する。カメラ接続が存在しない場合、新しい接続オブジェクトが作成されて返され、存在すれば、既存のオブジェクトが返される。両方の場合において、カメラ接続オブジェクトを特定のビデオ・ウィンドウと接続する新しい関係オブジェクトも作成される。カメラ接続オブジェクトへの参照回数のカウントを保持する関係オブジェクトが存在し、またこれにより、特定のビデオ・ウィンドウが利用するカメラ接続オブジェクトの探索が容易になる。
【０９４７】
それぞれのカメラ接続オブジェクトは、さらに、カメラ接続オブジェクトに関連付けられたコールバック関数ポインタの複数のベクトルを持ち、それらはすべて、接続失敗、画像受信、およびイベント・トリガなどの特定のイベントに関する通知を受け取る。ビデオ・ウィンドウが閉じられると、接続管理オブジェクトは、カメラ・オブジェクトに関連付けられているコールバック関数の登録を解除し、関係オブジェクトを削除する。最後の関係オブジェクトが削除されると、カメラ接続オブジェクトが削除される。接続は、カメラ接続要求が失敗するか、または接続が途絶した場合に再試行される。
【０９４８】
カメラ１１２〜１１５とのライブ接続が確立された後、ビデオ・サンプル・データは、メモリ２２０６内に構成されたバッファにフレームをストリーミングすることを開始する。カメラ接続オブジェクト内のコールバック関数は、サンプルが受信される毎に呼び出される。次に、カメラ１１２〜１１５に関連付けられている開いているビデオ・ウィンドウ内のコールバック関数は、ビデオ・ウィンドウが他のサンプルを受信する準備ができている場合であっても呼び出される。関連付けられたビデオ・ウィンドウは、ビデオ・ウィンドウが前のフレーム上の処理を完了しておらず、コールバック関数経由ですでに通知されている場合、追加サンプルを受信する準備はできていない。この場合、ユーザ・インターフェース・スレッドは、新しい画像の処理が必要であるということをコールバック関数で通知されない。アクセスに関して要素をロックする、長さ２の保護されたバッファがある。ビデオ・アイコンが最新の要素を読み込んだ場合、より新しいサンプルがバッファの非ロック要素内のサンプルを更新する可能性がある。
【０９４９】
図８６および８７に示されているように、ビデオ・ウィンドウ（例えば、８７００）は、タイトル・バー８６０１、ビデオ・ディスプレイ８７０１、事前記録済みビデオ・インジケータ８６０３、およびイベント・インジケータ８７０５からなる。さらに、ビューア２２００がカメラ１１２〜１１５を制御する場合、ビデオ・ウィンドウに、方向およびズーム・カーソル・コントロールを表示する（カーソルは、図６８に示されているように、ビデオ・ウィンドウ内の位置に応じて異なるカーソルに変化する）。
【０９５０】
５．５．２．２．１  タイトル・バー
ビデオ・ウィンドウ（例えば、８７００）は、以下を表示するタイトル・バー８６０１を持つ。
【０９５１】
（ｉ）メニュー・ボタン８６０５、
（ｉｉ）カメラ名８６０７、
（ｉｉｉ）運動検出またはセンサ８７０５などのイベント、
（ｉｖ）ライブ・ビデオ８７０３または事前記録済み８６０３ビデオ・アイコンおよびタイムコード。
【０９５２】
ビデオ・ウィンドウ８７００がタイトル・バーのすべての要素を表示するだけの十分な広さを持たない場合、それらの要素は、以下の順序で切り詰められる−ライブ・ビデオを表示するときに、切り詰められる第１の文字列はＬＩＶＥテキストであり、続いてカメラ名である。ビデオ・ウィンドウ・メニューおよびライブ８７０３または再生アイコンは常に表示される。事前記録済みビデオを表示する場合、切り詰められる第１の文字列は日付であり、その後、時刻、カメラ名と続く。テキストを切り詰めた場合、表示できない文字は、切り捨てられ、「．．．」で置き換えられる。
【０９５３】
メニュー・ボタン８６０５は、以下のように、個別のビデオ・ウィンドウおよび特定のカメラ・サーバ１０９〜１１１に特有の機能にアクセスする。
【０９５４】
Video Display Size
Small
Medium
Large
Get Camera Control
Release Camera Control
Preset Camera Angles
(Preset 1 Name)
(Preset 2 Name)
(Preset 3 Name)
(Preset 4 Name)
(Preset 5 Name)
(Preset 6 Name)
(Preset 7 Name)
(Preset 8 Name)
Backlight Compensation
On
Off
Control External Devices
(External Device 1 Name) On
(External Device 1 Name) Off
(External Device 2 Name) On
(External Device 2 Name) Off
Record Now
Capture Still Frame
Close Window
ユーザがビデオ・ディスプレイ・メニューからビデオ・ディスプレイ・サイズ（つまり、ｓｍａｌｌ（小）、ｍｅｄｉｕｍ（中）、ｌａｒｇｅ（大））を選択した場合、ビデオ・ウィンドウは、選択されたサイズに合わせてサイズ変更される（例えば、ｓｍａｌｌでは１６０×１２０ピクセル、ｍｅｄｉｕｍでは３２０×２４０、ｌａｒｇｅでは６４０×４８０）。
【０９５５】
ユーザが「Ｇｅｔ  Ｃａｍｅｒａ  Ｃｏｎｔｒｏｌ」または「Ｒｅｌｅａｓｅ  Ｃａｍｅｒａ  Ｃｏｎｔｒｏｌ」を選択した場合、ビューア２２００は、それぞれ、特定のカメラ・サーバ１０９〜１１１の制御権を取得するか、または解放するが、これについて以下で詳述する。
【０９５６】
表示するプリセット位置を決定するために、ビューア２２００は、プリセットを取り出す要求を特定のカメラ・サーバ１０９〜１１１に送信し、それらを使用して、プリセット・カメラ角度メニューに初期値を設定する。表示されるプリセット・カメラ角度の数は、返されるプリセットの数によって決定される。プリセット・カメラ角度がない場合、「Ｐｒｅｓｅｔ  Ｃａｍｅｒａ  Ａｎｇｌｅｓ」の選択は無効である。
【０９５７】
ユーザが「Ｂａｃｋｌｉｇｈｔ  Ｃｏｍｐｅｎｓａｔｉｏｎ  Ｏｎ」または「Ｂａｃｋｌｉｇｈｔ  Ｃｏｍｐｅｎｓａｔｉｏｎ  Ｏｆｆ」を選択した場合、ビューア２２００は、カメラ・サーバ１０９〜１１１上のバックライト補正設定を変更するメッセージを特定のカメラ・サーバ１０９〜１１１に送信する。「Ｂａｃｋｌｉｇｈｔ  Ｃｏｍｐｅｎｓａｔｉｏｎ  Ｏｎ」または「Ｂａｃｋｌｉｇｈｔ  Ｃｏｍｐｅｎｓａｔｉｏｎ  Ｏｆｆ」のうちの一方のみが、特定のカメラ・サーバ１０９〜１１１上の現在設定に応じて有効化された状態で表示される。
【０９５８】
表示する外部デバイス名を決定するために、ビューア２２００は、外部デバイス名を取り出す要求を特定のカメラ・サーバ１０９〜１１１に送信し、それらを使用して、メニューに初期値を設定する。外部デバイスがない場合、上記で示されているような「Ｃｏｎｔｒｏｌ  Ｅｘｔｅｒｎａｌ  Ｄｅｖｉｃｅｓ」メニュー・オプションは無効にされる。それぞれの外部デバイスについて、「Ｏｎ」メニュー・オプションが有効になっている場合、そのようなものは、特定の外部デバイスがオフにされていることを示し、またその逆も示す。そのような指示により、ユーザは、外部デバイスの現在状態を知ることができ、そのような指示は、特定のカメラ・サーバ１０９〜１１１をユーザが制御できる場合にのみアクセス可能である。
【０９５９】
上記で示されている「Ｒｅｃｏｒｄ  Ｎｏｗ」選択では、オペレータが、ビデオ・サンプル・データの記録を開始し、現在のスケジュール設定をオーバーライドすることができる。このボタンが選択された場合、ビューア２２００は、選択が行われたビデオ・ウィンドウに関連付けられているカメラ１１２〜１１５に関連付けられているストレージ・サーバ２３００を決定する。ビューア２２００は、その後、ＨＴＴＰ  ＰＯＳＴメソッドを使用してＲＥ＿Ｔｒｉｇｇｅｒコマンドを要求として指定されたストレージ・サーバ２３００に送信する。この場合、ビューア２２００は、特定のポートを持つストレージ・サーバ２３００に対する指定されたホスト名またはＩＰアドレスに接続することを試み、以下のリソース（２１）を使用してＨＴＴＰ  ＰＯＳＴメッセージを送信する。
【０９６０】
／webview-nvr／re_trigger.fcgi                        （２１）
上述のように、ＲＥ＿Ｔｒｉｇｇｅｒコマンドのストレージ・サーバ構成オブジェクトは、要求メッセージの本体内で供給することができる。ＲＥ＿Ｔｒｉｇｇｅｒコマンドのストレージ・サーバ構成オブジェクトは、選択が行われたビデオ・ウィンドウに関連付けられているカメラ１１２〜１１５のカメラ識別子を使用して上述のように構築される。ストレージ・サーバ２３００への他のコマンドと同様に、このコマンドは、ユーザを認証するＷｅｂサーバ２１３を介して送信される。通常、ユーザの認証情報がＨＴＴＰヘッダに含まれる要求が送信される（前に述べたように）。ユーザ名ヘッダは、記録エンジン２０１により取り出され、イベント・レコードの一部としてイベント・ファイルに書き込まれ、イベントの優先度は、「ｈｉｇｈｅｓｔ  ｐｒｉｏｒｉｔｙ」に設定され、イベントの型は、「ｍａｎｕａｌ  ｒｅｃ．」に設定される。これにより、それ以降「Ｒｅｃｏｒｄ  Ｎｏｗ」イベントを追跡することができるが、これは、「Ｒｅｃｏｒｄ  Ｎｏｗ」イベントがスケジュールされた設定をオーバーライドするので必要であり、頻繁に使用すると、管理者側で想定していないディスク所要量になる可能性がある。例えば、データを上書きする前の総持続時間は、予想ほど長くない場合がある。ユーザ名および「Ｍａｎｕａｌ  Ｒｅｃ．」の型は、時刻表にそってビューア２２００上に表示される（後述）。
【０９６１】
記録エンジン２０１が手動記録を開始すると、記録は最初に、特定のカメラ・サーバ１０９〜１１１から取り出せる最大フレーム速度（通常、毎秒２５フレームまたは毎秒３０フレーム）で実行され、記録エンジン２０１は、１分の間、記録する。記録中に、カウントダウンが表示される。ユーザが記録期間中に再びビデオ・ウィンドウ・メニューから「Ｒｅｃｏｒｄ  Ｎｏｗ」を選択した場合、他のＲＥ＿Ｔｒｉｇｇｅｒコマンドがストレージ・サーバ２２００に送信され、カウントは１分にリセットされる。
【０９６２】
選択されたビデオ・ウィンドウに関連付けられた特定のカメラ１１２〜１１５に関連付けられているストレージ・サーバ２３００がない場合、「Ｒｅｃｏｒｄ  Ｎｏｗ」ボタンは無効である。
【０９６３】
ユーザが上記のメニューから「Ｃａｐｔｕｒｅ  Ｓｔｉｌｌ  Ｆｒａｍｅ」を選択した場合、ビューア２２００は、「ｓａｖｅ  ａｓ」ダイアログを開く。ユーザは、ファイルの名前を「ｓａｖｅ  ａｓ」ダイアログに入力することができ、現在のフレームがそのファイルに取り込まれる。
【０９６４】
５．５．２．２．２  ビデオ・ディスプレイ
ビデオ・サンプル・データは、特定のカメラ・サーバ１０９〜１１１から来るライブ・ビデオ・サンプル・データの解像度または記録されたビデオ・サンプル・データの解像度に関係なく、関連付けられているビデオ・ウィンドウを作成するサイズで表示される。
【０９６５】
ほとんどの場合、ユーザは、ライブ・ビデオ・サンプル・データを見るか、または事前記録済みサンプル・データを再生する。しかし、ときには、ビューア２２００の再生ヘッド９００１（図９０を参照）は、表示されるビデオ・ウィンドウがある特定のカメラ・サーバ１０９〜１１１に関連付けられている使用可能な記録済みビデオがない時刻表の領域内に移動する。再生ヘッド９００１のこのような移動は、特定の時間に記録されたビデオが決してなかったため生じうる（例えば、スケジュールされた記録がなかったか、または記録が運動検出に基づいており、その特定の時間に運動がなかった）。他の実施例では、ストレージ・サーバ２３００上に使用可能な記憶領域を増やすために、ビデオ・サンプル・データが削除されてしまった場合がある。このような、使用可能なビデオがない場合には、ビデオ・ウィンドウに表示されるビデオ・サンプルは、黒色で表示され、「Ｎｏ  ｒｅｃｏｒｄｅｄ  ｖｉｄｅｏ」というメッセージがビデオ・ウィンドウ上の黒色の上に表示される。
【０９６６】
カメラ・サーバ１０９〜１１１からストレージ・サーバ２３００上のビデオ・サンプル・データまたはライブ・ビデオ・サンプルにアクセスことに関して問題がある場合、関連付けられているビデオ・ウィンドウは、黒色で表示され、適切なメッセージがビデオ・ウィンドウ内に表示される。
【０９６７】
ビデオ・ウィンドウがカメラ・サーバ１０９〜１１１との接続をセットアップすることに加えて作成される場合（すでに説明されている）、ビデオ・ウィンドウは、メモリ２２０６内に「Ｖｉｄｅｏ  Ｐｌａｙｂａｃｋ」オブジェクトの新規インスタンスを作成する。このオブジェクトは、ビデオ・ウィンドウとそのビデオ・ウィンドウに関連付けられているカメラ１１２〜１１５から記録されたビデオを保持するストレージ・サーバ２３００との間の関係を管理する。
【０９６８】
「Ｖｉｄｅｏ  Ｐｌａｙｂａｃｋ」オブジェクトは、ストレージ・サーバ２３００のアドレス（つまり、ホスト名またはＩＰアドレスおよびポート番号）、およびビューア・ログイン・プロセスでユーザによって使用されるユーザ名およびパスワードで初期化される。「Ｖｉｄｅｏ  Ｐｌａｙｂａｃｋ」オブジェクトがストレージ・サーバとの接続を必要とする最初のものである場合、「Ｖｉｄｅｏ  Ｐｌａｙｂａｃｋ」オブジェクトは、ストレージ・サーバ２３００への接続を生成する（つまり、アクセス・エンジン・プロトコルの一部である初期メッセージを送信する）。その特定のストレージ・サーバ２３００への接続を必要とするのが最初のビデオ再生オブジェクトでない場合、既存の接続へのアクセス権を取得する。
【０９６９】
上述のように、ユーザのアクションに応じて、ビデオ・ウィンドウは、「Ｃａｍｅｒａ  ｃｏｎｎｅｃｔｉｏｎ」オブジェクトからのライブ・ビデオまたは「Ｖｉｄｅｏ  Ｐｌａｙｂａｃｋ」オブジェクトからのすでに記録されているビデオを表示することができる。レイアウト・エリア・コンポーネント１４００４は、それぞれのオブジェクト（つまり、ビデオ再生オブジェクトおよびカメラ接続オブジェクト）をビデオを開始または停止するコマンド（つまり、一方に停止を指示し、他方に開始を指示する）に送信することにより、またビデオ画像を受信するために使用されるコールバック・プロシージャの有効および無効を設定することにより、表示されるビデオのソースを制御する（つまり、カメラ・サーバ１０９〜１１１とストレージ・サーバ２３００とを切り替える）。
【０９７０】
記録済みビデオを受信すると（ビデオ再生オブジェクトを使用して）、記録済みビデオは、ビデオが記録されなかったセグメントにより区切られた記録済みフレームのセグメントで構成することができる。アクセス・エンジンは、ビデオが実際には記録されていないビデオのＮＯ＿ＶＩＤＥＯブロブ・セグメントを提供する。レイアウト・エリア・コンポーネント１４００４は、「Ｖｉｄｅｏ  Ｐｌａｙｂａｃｋ」オブジェクトを介してビデオ・データの代わりにそれらのメッセージを受信する。ＮＯ＿ＶＩＤＥＯブロブがレイアウト・エリア・コンポーネント１４００４に渡されると、ディスプレイは、ビデオ・ウィンドウに黒色画像を表示するように切り替えられ、テキストは「Ｎｏ  ｒｅｃｏｒｄｅｄ  ｖｉｄｅｏ」でオーバーレイされる。ＮＯ＿ＶＩＤＥＯブロブは、タイムスタンプを含み、これを使用して、表示するビデオ・フレームがある場合と同じ方法でビデオ・ウィンドウのキャプション・エリア上に時間値を表示する。
【０９７１】
５．５．２．２．３  事前記録済みビデオ・インジケータ
事前記録済みビデオ・サンプル・データがビデオ・ウィンドウ内に表示されていることを示すために、タイトル・バー８６０１は、異なる色で表示され、再生ビデオ・インジケータ８６０７は、図８６に示されているように、事前記録済みビデオを見ているときに表示される。さらに、再生されているビデオのタイムコードおよび日付８６０７はタイトル・バー８６０１内に表示される。
【０９７２】
５．５．２．２．４  イベント・インジケータ
イベント・インジケータ８７０７は、図８７に示されているように、イベントがトリガされたときにビデオ・ウィンドウ８７００の最上部に表示される色付きバンドである。イベント・インジケータ８７０７は、レイアウト・エリア７６０５内にすでにロードされているビデオ・ウィンドウにのみ適用される。イベント・インジケータ８７０７の色は、イベントの優先度により決定される。
【０９７３】
イベントが最初にトリガされると、インジケータ８７０７はユーザ定義期間の間点滅し、その後、点灯したままになり、１分過ぎると消える。これらの持続時間は、「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１で特定の優先度イベントについて構成可能である。
【０９７４】
５．５．２．５  パン、傾斜、およびズーム・コントロール
関連付けられているカメラ・サーバ１０９〜１１１のカメラ１１２〜１１５を制御しパン、傾斜、およびズーム設定を変更するには、ユーザは、ビデオ・ウィンドウ・メニュー内の「Ｇｅｔ  Ｃａｍｅｒａ  Ｃｏｎｔｒｏｌ」を選択するか、または特定の関連付けられているビデオ・ウィンドウ上でダブルクリックする。ビューア２２００が制御権を持つと、ビデオ・ウィンドウの異なる領域上で異なるカーソルを使用することで、視覚的フィードバックが送られ、これにより、「Ａｄｄ  Ｃａｍｅｒａ」ダイアログに関して上記で説明したのと同じ形式のパン、傾斜、およびズーム（ＰＴＺ）コントロールを使用できる。
【０９７５】
ユーザがカメラ１１２〜１１５および関連付けられているカメラ・サーバ１０９〜１１１の制御権を有しているが、関連付けられているビデオ・ウィンドウは、そのまま、関連付けられているビデオ・ウィンドウのタイトル・バー８６０１をドラッグすることによりレイアウト・エリア７６０５の周りを移動することができる。
【０９７６】
カメラ１１２〜１１５の制御は、制御がタイムアウトになるか、またはユーザがビデオ・ウィンドウ・メニューから「Ｒｅｌｅａｓｅ  Ｃａｍｅｒａ  Ｃｏｎｔｒｏｌ」を選択する場合に失われる。３０秒の期間の間にユーザがパン、傾斜、およびズーム設定を変更するのを停止しておらず、ユーザに与えられた警告期間に制御を延長していない場合にタイムアウトが発生する。
【０９７７】
ユーザがパン、傾斜、およびズーム設定を３０秒の期間、停止した場合、「Ｃｏｎｔｒｏｌ  ｗｉｌｌ  ｂｅ  ｌｏｓｔ  ｉｎ  ｘ  ｓｅｃ．」という警告がビデオ・ウィンドウの上部に表示されるが、ただし、ｘは１０秒から開始するカウントダウンである。この警告は、ユーザが制御を失いかけていることをユーザに知らせるもので、ビデオ・ウィンドウ内で再びダブルクリックすることにより制御を保持する機会をユーザに与える。制御は、ユーザがカメラ１１３〜１１５のパン、傾斜、およびズーム設定を変更する場合に自動的に延長される。
【０９７８】
ユーザがカメラ１１２〜１１５の制御権を取得しようとしたときにビデオが現在記録エンジン２０１により記録されている場合、ユーザはそのままカメラ１１２〜１１５の制御権を取得することができる。この場合、ビューイング画面７６００でビューア２２００により使用される制御権限は、記録エンジン２０１により使用される制御権限よりも高い。カメラ１１２〜１１５を制御した後、ユーザは前記制御権を放棄する。特定のカメラ１１２〜１１５およびカメラ・サーバ１０９〜１１１に関連付けられている記録設定がプリセット位置を必要とする場合、ストレージ・サーバ２３００は、その後、特定のカメラ１１２〜１１５をプリセット位置に戻す。
【０９７９】
ビューア２２００よりも高いカメラ制御権限を持つ他のユーザがすでに特定のカメラ１１２〜１１５を制御している場合、カメラ１１２〜１１５の制御の要求は拒絶され、「Ｃａｎ’ｔ  ｇｅｔ  ｃａｍｅｒａ  ｃｏｎｔｒｏｌ」というメッセージがビデオ・ウィンドウ内に表示される。
【０９８０】
５．５．２．６  ビデオ・ウィンドウのエラー・メッセージ
特定のカメラ１１２〜１１５および関連付けられたカメラ・サーバ１０９〜１１１に関連付けられたビデオ・ウィンドウ（例えば、７６２５）に表示されるメッセージは、以下を含む。
【０９８１】
（ｉ）「Ｃｏｕｌｄ  ｎｏｔ  ｃｏｎｎｅｃｔ  ｔｏ  ｃａｍｅｒａ」：ライブ・ビデオ・サンプル・データを表示するためにユーザがカメラ・サーバ１０９〜１１１に接続することを許可されていない場合に表示される。
【０９８２】
（ｉｉ）「Ｇｅｔｔｉｎｇ  ｃａｍｅｒａ  ｃｏｎｔｒｏｌ」：ユーザが特定のカメラ１１２〜１１５の制御を要求した後、制御が与えられるまでに表示される。
【０９８３】
（ｉｉｉ）「Ｃａｎ’ｔ  ｇｅｔ  ｃａｍｅｒａ  ｃｏｎｔｒｏｌ」：制御が要求されたが、特定のカメラ１１２〜１１５が高いカメラ制御特権を持つ誰かによりすでに制御されている場合に表示される。
【０９８４】
（ｉｖ）「Ｃｏｎｔｒｏｌ  ｗｉｌｌ  ｂｅ  ｌｏｓｔ  ｉｎ  ｘ  ｓｅｃ．」：パン、傾斜、およびズームの不活動状態から３０秒後に表示され、カメラの制御が１０（カウントダウン）秒以内に失われることを示すメッセージが表示される。
【０９８５】
（ｖ）「Ｃａｍｅｒａ  ｃｏｎｔｒｏｌ  ｌｏｓｔ」：オペレータが特定のカメラ１１２〜１１５の制御を持ち、より高いカメラ制御優先度を持つ他の要求がカメラ・サーバ１０９〜１１１に送信されるのでその制御が失われる場合に表示される。
【０９８６】
（ｖｉ）「Ｎｏ  ｒｅｃｏｒｄｅｄ  ｖｉｄｅｏ」：事前記録済みビデオ・サンプル・データを再生しており、再生ヘッド９００１が位置決めされた現在のタイムコードで記録されたビデオがない場合に表示される。
【０９８７】
（ｖｉｉ）「Ｃａｎ’ｔ  ｃｏｎｎｅｃｔ  ｔｏ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ」：ユーザが事前記録済みビデオを再生するためにストレージ・サーバ２３００に接続できない場合に表示される。
【０９８８】
ビデオ・ウィンドウ内のメッセージは、テキストの２つの層を使用して表示される。上位層は色付けされ、下位層は黒色であり、右および下に１ピクセルだけオフセットされ、ドロップ・シャドウを形成する。
【０９８９】
５．５．２．３  Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ
図８８に示されているように、「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９は、カメラ１１２〜１１５がレイアウト・エリア７６０５内に表示されているかどうかに関係なく、すべての知られているカメラ１１２〜１１５に対するイベントのリストを含む。
【０９９０】
ビューア２２００が起動した後（つまり、ビューア・アプリケーション・ソフトウェアが実行された後）に生じるイベントは、「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９にリストされ、関連付けられている優先度レベルに応じて色分けされる。新しいイベントは、図８８に示されているように、ログ７６１９の上部に配置される。以下の情報は、イベント毎に表示される。
【０９９１】
（ｉ）受領確認ステータス、
（ｉｉ）優先度、
（ｉｉｉ）イベントの型（例えば、運動検出には「ｍｏｔｉｏｎ」、センサ・イベントにはカメラ・サーバ上のセンサの名前）、
（ｉｖ）カメラ・サーバ名、
（ｖ）日付および時刻、
（ｖｉ）ロケーションとゾーン。
【０９９２】
上述のようにビューア設定で構成されているようなオペレータ受領確認を必要とする優先度レベルのイベントは、図８８に示されているように、警報ベル・アイコン８８０１を含む太字テキストと通常テキストとの間で点滅する形で表示される。これらのイベントは、ビューア設定で構成された持続時間の間、点滅し続ける。イベントが受領確認された後、アイコン８８０１は、ドット・アイコンにより置き換えられ、通常テキスト（非太字）を使用してイベント詳細が静的に表示される。
【０９９３】
「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９内のイベントをダブルクリックすると、イベントの受領確認が行われ、関連付けられたビデオ・ウィンドウが表示される。ビデオ・ウィンドウがレイアウト・エリア７６０５内にすでに表示されている場合、ビデオ・ウィンドウは自動的に選択状態になる。ビデオ・ウィンドウがレイアウト・エリア７６０５内にない場合、新しいフローティング・ビデオ・ウィンドウがレイアウト・エリア７６０５の上に表示され、自動的に選択される。両方の場合、再生ヘッド９００１は、図９０に示されているように、そのイベントに対するタイムコードに自動的に移動される。
【０９９４】
オーディオ・アラートについて構成されている優先度レベルの着信イベントについては、ビューア２２００は、点滅と同期してオーディオ・サンプルを再生する（つまり、点滅毎に１回）。イベントが到着する時間に関係なく、通知状態にあるすべての非受領確認イベントは、同時に点滅する。イベント通知期間が経過すると、非受領確認イベントは太字のままである。オペレータがイベントの受領確認を行った場合、通知サイクルは即座に終了し、イベントは点滅を停止する。
【０９９５】
イベントを１回クリックしただけでそのイベントが選択される。イベントは一度に１つだけ選択できる。「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９は、サイズ変更されるか、再配置されるか、閉じられることができる。開いている間、ログ７６１９は常に上に表示される（つまり、ビューイング画面７６００上のビデオ・ウィンドウの上に表示される）。ログ７６１９を上に表示すると、「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９は、ビデオ・ウィンドウの後に隠れることがなくなる。ビューア２２００を最初に使用すると、「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９は閉じられ、「Ｖｉｅｗ」メニューから「Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ」を選択することにより開かれる。その後、ビューア２２００が起動されると、「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９が、ビューア２２００が閉じられたときのログ７６１９のサイズおよびロケーションに表示される。
【０９９６】
オペレータ受領確認を必要とするイベントが発生したときに「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９が閉じられた場合、「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９は、最後に開かれたときのログ７６１９のサイズおよび位置で自動的に開かれる。
【０９９７】
「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９内のイベントの最大数は２００である。新しいイベントがトリガされると、最新のイベントの余地を確保するため、最も古いイベントがログ７６１９から削除される。
【０９９８】
５．５．３  時刻表
時刻表７６０７は、レイアウト・エリア７６０５内の選択されたビデオ・ウィンドウ（例えば、７６２５）に関連付けられたカメラ１１２〜１１５に対するイベントを表示する。ビデオ・ウィンドウが選択されていない場合、時刻表７６０７は、レイアウト・エリア７６０５内のすべてのビデオ・ウィンドウに関連付けられたカメラ１１２〜１１５に対するイベントを表示する。
【０９９９】
時刻表は、タイトル８９０１、再生ヘッド９００１、再生コントロール８９０３、ズーム・コントロール８９０５、「ｊｕｍｐ  ｔｏ  ｔｉｍｅ」８９０７、「ｅｘｔｒａｃｔ  ｖｉｄｅｏ」ボタン８９０９、「ｒｅｔｕｒｎ  ｔｏ  ｌｉｖｅ」ボタン８９１１、イベント表示エリア８９１３、イベント（例えば、８９１３）、スクロールバー８９１５、時刻表ナビゲーション、「ｅｖｅｎｔ  ｓｅａｒｃｈ」８９１７からなる。
【１０００】
５．５．３．１  タイトルおよび再生ヘッド
図９０に示されているように、タイトル８９０１は、単一のカメラ１１２〜１１５が選択されている場合に現在選択されているカメラ１１２〜１１５の名前を表示する。カメラ１１２〜１１５選択されていない場合、タイトルは「Ｎｏ  ｃａｍｅｒａｓ  ｓｅｌｅｃｔｅｄ」である。複数のカメラ１１２〜１１５選択されている場合、タイトルは「Ｍｕｌｔｉｐｌｅ  ｃａｍｅｒａｓ  ｓｅｌｅｃｔｅｄ」である。
【１００１】
再生ヘッド９００１は、選択されたビデオ・ウィンドウ内のビデオ・サンプル・データが再生されるときの時間的開始位置に対応する視覚的フィードバックを供給する。再生ヘッド９００１は、記録済みビデオ・サンプル・データのタイムコードの視覚的表現である。
【１００２】
ビデオ・ウィンドウ（例えば、７６２５）が１つだけ選択されている場合、再生ヘッド９００１は、その１つのビデオ・ウィンドウに関連付けられた記録済みビデオ・サンプル・データのタイムコードを表す。複数のビデオ・ウィンドウが選択された場合、再生が実行される際の時間的開始位置は１つの再生ヘッド９００１と同期し、それにより表され、ユーザは、複数のカメラ１１２〜１１５に対し記録済みビデオ・サンプル・データを同時に検討することができる。
【１００３】
ビデオ・ウィンドウが選択されていない場合、再生ヘッド９００１は、無効状態に設定され、再生ヘッド９００１の最後の位置に留まる。
【１００４】
以下のように２つのビデオ・ビューイング・モードがある。
【１００５】
（ｉ）ライブ・ビデオ・サンプル・データの監視、
（ｉｉ）事前記録済みビデオ・サンプル・データの再生
５．５．３．１．１  ライブ・ビデオ・サンプル・データの監視
デフォルトで、レイアウト・エリア７６０５にロードされたビデオ・ウィンドウは、ライブ・ビデオ・サンプル・データを表示し、これは、時刻表７６０７上の「Ｌｉｖｅ」位置にある再生ヘッド９００１の位置により指示される。ライブ位置は、スクロールバー８９１５が図９０に示されているように時刻表７６０７に関して右へずっとスクロールされるときの時刻表の右辺からの固定距離である。ユーザがライブ・ビデオ・サンプル・データを見続ける場合、再生ヘッド９００１は静止したままであるが、時刻表７６０７は、再生ヘッド９００１の下で左にスクロールし、時間の経過を表す。
【１００６】
５．５．３．１．２  事前記録済みビデオ・サンプル・データの再生
事前記録済みビデオ・サンプル・データを表示するには、再生ヘッド９００１を「Ｌｉｖｅ」位置以外の時刻表７６０７上のある位置に移動する。再生ヘッド９００１は、以下を使用して再配置できる。
【１００７】
（ｉ）再生コントロール８９０３
（ｉｉ）再生ヘッド９０００１を新しいタイムコードにドラッグする
（ｉｉｉ）時刻表７６０７のイベント表示エリア８９１３内をクリックする
（ｉｖ）時刻表７６０７内のイベントをクリックする
（ｖ）「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９内のイベントをクリックする
再生ヘッド９００１は、例えば、マウス２２０３を使用して再生ヘッド９００１をクリックしてドラッグすることにより再配置するか、または再生ヘッド９００１の周りのアクティブ領域内に再配置するか、または再生ヘッド９００１の底部のグリップ・エリア９００３に再配置することができる。再生ヘッド９００１は、ユーザがドラッグを離し、選択されたすべてのビデオ・ウィンドウ上のビデオ・サンプル・データの再生が、ユーザがドラッグ・オペレーションを開始する前の特定の選択されたビデオ・ウィンドウの状態に応じて再生または一時停止に戻る場合に再配置される。再生ヘッド９００１を再配置する前にユーザがライブ・ビデオ・サンプル・データを見ていた場合に、再生は自動的に再生に設定される。
【１００８】
再生ヘッド９００１を移動することにより、レイアウト・エリア７６０５内の選択されたすべてのビデオ・ウィンドウを制御する。つまり、再生ヘッド９００１を時刻表７６０７上の特定の時刻にドラッグすると、選択されたすべてのビデオ・ウィンドウに関連付けられているカメラ・サーバ１０９〜１１１に関連付けられている記録済みビデオ・サンプル・データが時間的に再配置され、記録済みビデオ・サンプル・データの再生が同じ特定の時間的位置から再生される。しかし、選択されていないレイアウト・エリア７６０５内のビデオ・ウィンドウは、再生ヘッド９００１の移動の影響を受けない。例えば、記録済みビデオ・サンプル・データを再生している未選択ビデオ・ウィンドウは、再生ヘッド９００１の移動前、移動中、および移動後に記録済みビデオ・サンプル・データを再生し続ける。同様に、ライブ・ビデオ・サンプル・データを再生している未選択ビデオ・ウィンドウは、再生ヘッド９００１の移動前、移動中、および移動後にライブ・ビデオ・サンプル・データを再生し続ける。
【１００９】
イベント表示エリア８９１３内でクリックすると、再生ヘッド９００１の位置は、クリックが生じたときのカーソルの位置に変更される。このような方法で再生ヘッド９００１の位置を決めると、選択されたすべてのビデオ・ウィンドウに関連付けられている記録済みビデオ・サンプル・データは時間的に再配置され、すべてのビデオ・ウィンドウに関連付けられたカメラ・サーバに関連付けられている記録済みビデオの再生が同じ時間的位置から再生される。
【１０１０】
ユーザが時刻表７６０７内のイベント（例えば、８９１３）をクリックした場合、ビューア２２００は、再生ヘッド９００１をそのイベントの開始タイムコードに移動し、そのイベントに関連付けられている特定のカメラ・サーバ１０９〜１１１に関連付けられたビデオ・ウィンドウを選択する。その特定のカメラ・サーバ１０９〜１１１から記録されたストレージ・サーバ２３００上の記録済みビデオ・サンプル・データは、そのイベントの時刻から開始する形で再生される。
【１０１１】
ビューア２２００が特定のビデオ・ウィンドウに関連付けられたビデオ・サンプル・データを再生するよう指令された場合、ビューア２２００は、ビデオ・ウィンドウに関連付けられた特定のカメラ・サーバ１０９〜１１１を識別し、その後、そのカメラ・サーバ１０９〜１１１が記録されているストレージ・サーバ２３００を識別する。その後、ビューア２２００は、ＨＴＴＰプロトコル上で、上述のように、アクセス・エンジン２０１コマンドを使用してそのストレージ・サーバ２３００に接続する。
【１０１２】
ユーザは、異なるビデオ・データ・サンプル・ストリームが異なる時点に配置され、並行して異なる時刻から再生されるように異なるカメラ・サーバ１０９〜１１１に関連付けられているビデオ・サンプル・データを再生することができる。例えば、ユーザは、１つのビデオ・ウィンドウを選択し、時刻表７６０７上の１つの位置を選択することができる。再生ヘッド９００１は、その後、選択された時刻に配置され、そのビデオ・ウィンドウに関連付けられた記録済みビデオ・サンプル・データ（つまり、対応するカメラ・サーバ１０９〜１１１から記録されたビデオ・サンプル・データ）は、選択された時刻から開始する形で再生される。この実施例を続けると、ユーザは、その後、新しいウィンドウを選択し、前のウィンドウの選択を解除することの影響を有する新しいビデオ・ウィンドウを選択することができる（例えば、マウス２２０３を使用して新しいウィンドウをクリックすることにより）。すでに選択されているウィンドウ内で再生されているビデオ・サンプル・データは、再生を続ける。ユーザは、次に、時刻表７６０７上の異なる位置をクリックすることが可能である。その結果、新しく選択されたビデオ・ウィンドウに関連付けられている記録済みビデオ・サンプル・データは、時刻表７６０７上の新しく選択された位置に対応する時間的位置で再生する。しかし、すでに選択されているビデオ・ウィンドウに関連付けられている記録済みビデオ・サンプル・データの再生は、時刻表７６０７上の新しい位置をユーザがクリックすることによる影響を受けず、これまでどおり再生を続ける。したがって、異なる時点に異なるカメラ・サーバ１０９〜１１１上で記録された画像を示す、多数のビデオ・ウィンドウを再生することができる。例えば、オペレータは、ビル内を特定の人が移動することを示す異なるカメラ１１２〜１１５から記録されたビデオ・サンプル・データを見たい場合がある。オペレータは、サンプル・データが異なる時刻に記録されたとしても、この人物に関連付けられている記録資料のすべてが同時に再生されるように、異なる時刻に再生する異なるカメラ・サーバ１０９〜１１１から記録済みビデオ・サンプル・データを設定することができる。
【１０１３】
上記の実施例は、異なる時点に記録された異なるカメラ・サーバ１０９〜１１１からビデオ・サンプル・データを再生することを説明している。システム１００をさらに同様に使用し、異なる時点に同じカメラ・サーバ１０９〜１１１から記録されたビデオ・サンプル・データを再生するが、異なるビデオ・ウィンドウ内で並行してビデオ・サンプル・データを再生することができる。ビデオ・サンプル・データを異なるビデオ・ウィンドウ内で並行して再生することは、同じカメラ・サーバ１０９〜１１１に関連付けられている複数のビデオ・ウィンドウを作成することにより実現できる。
【１０１４】
そのような方法で複数のビデオ・ウィンドウを作成することは、カメラ・サーバ１０９〜１１１を表すサムネイル（例えば、７６１５）をレイアウト・エリア７６０５上のある位置にドラッグしてカメラ・サーバ１０９〜１１１に関連付けられている第１のビデオ・ウィンドウを作成し、その後、同じサムネイルからレイアウト・エリア上の他の位置にドラッグして同じカメラ・サーバ１０９〜１１１に関連付けられている第２のビデオ・ウィンドウを作成することにより行われる。その後、ユーザは、１つのビデオ・ウィンドウを選択し、時刻表７６０７上の位置を選択して選択された時刻から記録されたビデオ・サンプル・データを表示する。その後、ユーザは、第２のビデオ・ウィンドウを選択し、選択された第１の時刻と異なる時刻表７６０７上の時刻を選択することが可能である。その後、第２のビデオ・ウィンドウは、異なる時点から記録されたビデオ・サンプル・データを表示する。２つのビデオ・ウィンドウは、異なる時点で記録された画像を表示するストレージ・サーバ２３００からの記録済みビデオ・サンプル・データを再生し続ける。そのようなものとして、ユーザは、同じカメラ・サーバ１０９〜１１１から記録された２つの異なる時間的位置から記録された画像を比較することができる。
【１０１５】
５．５．３．１．３  ライブ・ビデオに戻る
ライブ・ビデオ画像を見ることに戻るには、再生ヘッド９００１が「Ｌｉｖｅ」位置に当たるまで再生ヘッド９００１を右へずっとドラッグするか、または「Ｒｅｔｕｒｎ  ｔｏ  Ｌｉｖｅ」ボタンをクリックすることにより、再生ヘッド９００１を再配置できる。「Ｒｅｔｕｒｎ  ｔｏ  Ｌｉｖｅ」ボタンが押されると、再生ヘッド９００１は時刻表７６０７の右側の「Ｌｉｖｅ」位置に移動される。「Ｒｅｔｕｒｎ  ｔｏ  Ｌｉｖｅ」ボタンは、再生ヘッド９００１がライブ位置にない場合にのみ使用可能である。
【１０１６】
５．５．３．１．４  ビデオのセグメントの選択
ビデオ・サンプル・データのセグメントは、単一のビデオ・ウィンドウを選択し、時刻表７６０７内のエリアをクリックしてドラッグすることにより、抽出目的のために選択することができる。選択されたセグメントは、左辺がイン・ポイント（つまり、開始タイムコード）として使用され、右辺がアウト・ポイント（つまり、終了タイムコード）として使用される、左から右または右から左からドラッグ・アウトすることができる。選択されたエリアは、半透明ハイライト表示エリアで表示される。
【１０１７】
ユーザが「ｅｘｔｒａｃｔ  ｖｉｄｅｏ」ボタンを選択した場合、「ｓａｖｅ」ダイアログが表示され、ビデオ・サンプル・データを保存するためのファイル名およびロケーションの入力が求められる。ファイル・ロケーションは、通常、ビューア２２００ソフトウェアが実行されているコンピュータ・モジュール２２０１上にあるが、リモート・ファイル・システムとすることも可能である（例えば、リモート・ファイル・システム・プロトコルを使用してマウントされたもの）。ユーザは、ファイル名を入力し、「ＯＫ」を押す。その結果、メッセージが、選択されたビデオ・ウィンドウに関連付けられている、ビデオ・サンプル・データを記録したカメラ・サーバ１０９〜１１１に関連付けられているストレージ・サーバ２３００に送信される。指定された時間範囲に関連付けられているビデオのセグメントが要求される。ビューア２２００は、通常、そのような要求で「ｔｒａｎｓｆｅｒ」フラグ（後述）を使用し、ストレージ・サーバ２３００が、通常の再生速度ではなくできる限り高速にビデオ・サンプル・データを送信するようにする。「ｔｒａｎｓｆｅｒ」フラグを使用する他の理由は、ストレージ・サーバ２３００が、ストレージ・サーバ２３００上で使用できないビデオ・サンプル・データの時間範囲に対応する「ｎｏ  ｖｉｄｅｏ」ブロブを多数送信しないようにすることである。一実装では、ストレージ・サーバ２３００は、この場合に「ｎｏ  ｖｉｄｅｏ」ブロブをいっさい送信しないようにできる。他の実装では、ストレージ・サーバ２３００は、送信されたビデオにより表される時間にギャップがある場合を示すために１つの「ｎｏ  ｖｉｄｅｏ」ブロブまたは指示フレーム（例えば、黒色フレームまたは欠落ビデオを示すメッセージを含むフレーム）を送信することができる。さらに、ビューア２２００は、指定された時間範囲に関連付けられているビデオのセグメントに対する要求の中で「ｎｏ−ｓｋｉｐ」フラグ（後述）を使用し、ストレージ・サーバ２３００により落とされるフレームがないようにすることができる。
【１０１８】
ビューア２２００が要求されたビデオ・サンプル・データを受信すると、ビューア２２００は、「ｓａｖｅ」ダイアログでユーザにより選択されたファイル名およびロケーションを使用して、サンプル・データをハード・ディスク・ドライブ２２１０または他の記録媒体に保存する。一実装では、ビューア２２００が「ｎｏ  ｖｉｄｅｏ」ブロブを受信した場合、ビューア２２００は、指示フレーム（例えば、黒色フレームまたは欠落ビデオ・サンプル・データを示すメッセージを含むフレーム）をファイル名により表されるファイル内のビデオ・サンプル・データ内の対応する位置に保存する。これにより、抽出されたビデオ・サンプル・データがビデオ再生ソフトウェア（例えば、Ａｐｐｌｅ  ＱｕｉｃｋＴｉｍｅ  Ｐｌａｙｅｒ（登録商標））で再生される場合、このビデオ再生ソフトウェアは、抽出されたビデオ・サンプル・データがない時間領域の開始から指示フレームを表示する。通常、抽出されたビデオ・サンプル・データを実時間で再生するビデオ再生ソフトウェアは、ビデオ・サンプル・データ内のギャップにより表される全持続時間に対する指示フレームを表示し続ける。再生時間がビデオ・サンプル・データの次に使用可能な断片に到達した場合、ビデオ再生ソフトウェアは、そのビデオ・サンプル・データの再生を再開することができる。
【１０１９】
ビデオ・サンプル・データのセグメントは、通常、標準またはデ・ファクト・スタンダード・ファイル形式で保存されるので、このビデオ・サンプル・データは他のソフトウェア・アプリケーションとともに使用することができる。例えば、ビデオ・サンプル・データは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）Ｍｅｄｉａ  Ｐｌａｙｅｒ（ＷＭＰ）で再生する場合にはＡＶＩ（登録商標）またはＷＭＡファイルで保存し、Ａｐｐｌｅ（登録商標）ＱｕｉｃｋＴｉｍｅ（登録商標）で再生する場合にはＭＯＶファイルとして保存することが可能である。それとは別に、ビデオ・サンプル・データは、ＡＶＩファイルに保存することができ、またＭＯＶファイル内にはインデックス・データとともに保存することができる。この場合、ＡＶＩ（登録商標）ファイルも存在する場合、ＡＶＩ（登録商標）ファイルはＷＭＰで再生され、ＭＯＶファイルはＱｕｉｃｋＴｉｍｅ（登録商標）で再生される。
【１０２０】
ビデオ・サンプル・データのセグメントを取り出すときに、モードレスのビデオ抽出ダイアログが表示され、ビデオ抽出が実行中であることを示す。ビデオ・サンプル・データの選択がディスプレイ２２１４上に表示されている間、再生ヘッド９００１はそのまま移動できる（例えば、再生ヘッド９００１を新しいロケーションにドラッグすることにより）。新しいロケーションは、選択されたビデオ・セグメントの内側に入っている必要はない。ユーザが選択されたセグメントの内側の時刻表７６０７をクリックした場合、再生ヘッド９００１は、クリックの位置に移動し、セグメントは選択されたままである。選択されたセグメントの外側で時刻表７６０７をクリックすると、再生ヘッド９００１はその位置に移動し、選択されたエリアの選択が解除される。
【１０２１】
「ｅｘｔｒａｃｔ  ｖｉｄｅｏ」ボタンは、ビデオのセグメントが選択されており、ただ１つのビデオ・ウィンドウが選択されている場合にのみ有効にされる。
【１０２２】
一実装では、時刻表７６０７の選択の最大持続時間には制限がありうる（例えば、１時間）。この場合、セグメントは、この最大持続時間を超えるようにドラッグ・アウトすることはできない。
【１０２３】
５．５．３．２  再生コントロール
図９１に示されているように、再生コントロール８９０３は、再生ヘッド９００１の位置を変更する。これらは、以下を含み、それぞれ従来の記号で表される。
【１０２４】
（ｉ）Ｐｒｅｖｉｏｕｓ  Ｅｖｅｎｔ
（ｉｉ）Ｒｅｗｉｎｄ
（ｉｉｉ）Ｎｕｄｇｅ  Ｂａｃｋ
（ｉｖ）Ｐｌａｙ／Ｐａｕｓｅ
（ｖ）Ｎｕｄｇｅ  Ｆｏｒｗａｒｄ
（ｖｉ）Ｆａｓｔ  Ｆｏｒｗａｒｄ
（ｖｉｉ）Ｎｅｘｔ  Ｅｖｅｎｔ
再生コントロールは、１つまたは複数のビデオ・ウィンドウが選択されるまで無効状態である。
【１０２５】
一実装では、再生コントロール８９０３は、再生ヘッド９００１がライブ位置にある場合に無効である。他の実装では、再生コントロール８９０３は、再生ヘッド９００１がライブ位置にあり、オペレーションがライブ・ビデオ・サンプル・データ上で直接実行できる場合に有効にできる。例えば、「ｐａｕｓｅ」を押すと、ライブ・ビデオ・サンプル・データの再生が一時停止し、「ｐａｕｓｅ」ボタンが押されたときにビデオの現在フレーム（つまり、サンプル）を表示している対応するビデオ・ウィンドウを残す。いくつかの実装では、ライブ・ビデオ・ウィンドウが選択されている場合に「ｐａｕｓｅ」を押した後に「ｐａｕｓｅ」を再び押すと、ビデオ・ウィンドウは再生モードに戻り、「ｐａｕｓｅ」ボタンが押された時点から開始する形でビデオ再生を表示する。他の実装では、ビデオ・ウィンドウが選択されている場合に「ｐａｕｓｅ」を押した後、「ｐａｕｓｅ」を再び押すと、ビデオ・ウィンドウにライブ・ビデオ・サンプル・データが再び表示される。
【１０２６】
「Ｐｌａｙ  ／  Ｐａｕｓｅ」ボタンは、ユーザがこのボタンをクリックしたときに、再生と一時停止とを切り替える。
【１０２７】
事前記録済みビデオ・サンプル・データを再生するときに、時刻表７６０７は静止状態であるが、再生ヘッド９００１は右に移動する。再生ヘッド９００１が時刻表７６０７の表示可能エリアの右辺に到達すると、時刻表７６０７は左にジャンプし、表示可能エリアの右辺にあったものは、今度は左辺に揃えられ、その後、再生ヘッド９００１は右に移動し続ける。
【１０２８】
「ｒｅｗｉｎｄ」および「ｆａｓｔ  ｆｏｒｗａｒｄ」ボタンは、ユーザがボタンをクリックした回数に応じて、速度を変えて再生ヘッド９００１を巻き戻しまたは早送りする。例えば、「ｒｅｗｉｎｄ」ボタンをクリックすると、通常速度の２倍の速度から始めて、５×、１０×と１ステップずつ異なる巻き戻し速度に変わり、その後、２×、５×、１０×などとループする。例えば、「ｆａｓｔ  ｆｏｒｗａｒｄ」ボタンをクリックすると、通常速度の２倍の速度から始めて、５×、１０×と１ステップずつ異なる早送り速度に変わり、その後、２×、５×、１０×などとループする。
【１０２９】
ユーザが巻き戻しまたは早送りを停止すると、ビデオ・サンプル・データの再生は、開始したときの再生の状態に応じて再生または一時停止に戻る。
【１０３０】
早送りまたは巻き戻しを停止するには、ユーザが「Ｐｌａｙ／Ｐａｕｓｅ」ボタンをクリックする。反対のボタンをクリックすると、そのボタンがアクティブになり、例えば、ユーザが早送りをしている場合、ユーザが「Ｒｅｗｉｎｄ」ボタンをクリックすると、ビデオは早送りを停止し、巻き戻しを開始する。
【１０３１】
巻き戻しまたは早送り中に「Ｐｒｅｖｉｏｕｓ」または「Ｎｅｘｔ  Ｅｖｅｎｔ」ボタンをクリックすると、再生ヘッド９００１は前または次のイベントに移動し、巻き戻しまたは早送りを続ける。
【１０３２】
「ｎｕｄｇｅ」ボタンは、再生ヘッド９００１を一度に１フレームずつ送るか、または戻す。
【１０３３】
「Ｐｒｅｖｉｏｕｓ  Ｅｖｅｎｔ」および「Ｎｅｘｔ  Ｅｖｅｎｔ」ボタンは、再生ヘッド９００１を時刻表の現在位置から時刻表の前または次の一次イベントに移動する。その後、再生は開始時の再生のモードに戻る。後述のように、一次イベントは、選択されたビデオ・ウィンドウ（または、ビデオ・イベントが選択されていない場合、レイアウト・エリア７６０５内のすべてのビデオ・ウィンドウ）に関連付けられているカメラ１１２〜１１５に関連付けられているイベントである。したがって、現在ビデオ・ウィンドウが選択されていない場合、「Ｐｒｅｖｉｏｕｓ  Ｅｖｅｎｔ」または「Ｎｅｘｔ  Ｅｖｅｎｔ」ボタンを押すと、再生ヘッド９００１は前または次のイベントに関連付けられている時刻表７６０７上の位置に移動する。１つまたは複数のビデオ・ウィンドウが選択されている場合、「Ｐｒｅｖｉｏｕｓ  Ｅｖｅｎｔ」または「Ｎｅｘｔ  Ｅｖｅｎｔ」ボタンを押すと、再生ヘッド９００１は、選択された１つまたは複数のビデオ・ウィンドウに関連付けられている、カメラ１１２〜１１５に関連付けられている前または次のイベントに関連付けられている時刻表上の位置に移動する。
【１０３４】
ユーザが何回も特定のイベントを見ることを望んでいる場合、ユーザは、再生ヘッド９００１をイベントの先頭に置き、「Ｐｌａｙ」ボタンをクリックし、その後、「Ｐｒｅｖｉｏｕｓ  Ｅｖｅｎｔ」ボタンをクリックすることによりイベントの先頭にジャンプして戻ることができる。再生ヘッド９００１は、イベントの先頭に戻った後も再生を続ける。
【１０３５】
これらのボタンが押されたときに時刻表上に前または次の一次イベントがない場合、再生ヘッド９００１は、再生ヘッドが置かれている場所に留まり、何も起きない。
【１０３６】
５．５．３．３  イベント表示エリア
イベント表示エリア８９１３は、イベントが時刻表７６０７上に表示される場所である。イベント表示エリア８９１３は、さらに、日にちの間の区切り、および選択されたビデオ・ウィンドウに使用可能な記録済みビデオ・サンプル・データがある時期を示すために使用される。
【１０３７】
通常時間と夏時間との切替えがある場合に、実際の時間は時刻表７６０７上で連続しており、時間ラベルは夏時間が始まるのか、終わるのかに応じてスキップまたは重複する。ビデオ・サンプル・データがこれらの時間にまたがって記録される場合、ビデオ・サンプル・データは、１時間スキップされる場合には切り詰められ、１時間重複する場合には記録が延長される。
【１０３８】
５．５．３．４  イベント
特定のカメラ・サーバ１０９〜１１１に接続されているセンサからのイベントを含む特定のカメラ・サーバ１０９〜１１１に関連付けられたイベント、ドア開放、運動検出など、およびストレージ・サーバ２３００内の画像ベースの運動検出からのイベントは、視覚的に表現することができる（例えば、図９０に示されているようなイベント９００５）。このようなイベントは、イベントがいつ発生したか、およびその重要度レベルを示すために、イベント表示エリア８９１３内に表示される。表示されるイベントは、さらに、再生ヘッド９００１の位置を変更するクリック可能なオブジェクトでもあり、ビデオ・ウィンドウを選択し、対応する時間からビデオを再生するようにビデオ・ウィンドウを設定することができる。
【１０３９】
表示されるイベントは、イベントの実際のタイムコードを取ることにより時刻表７６０７上に配置される。このような表示されるイベントは、最高、高、中、低、および最低を含む５つの色分け優先度レベルを持ち、これ以降「イベント」と呼ぶ。
【１０４０】
色分けに加えて、選択されたビデオ・ウィンドウに関連付けられているカメラ・サーバ１０９〜１１１に関連付けられているイベントは、一次イベント（つまり、視覚的に強い）として表示され、選択されたビデオ・ウィンドウに関連付けられていないカメラ・サーバ１０９〜１１１に対するイベントは、二次イベント（つまり、視覚的に弱い）として表示される。
【１０４１】
選択されたカメラ・サーバ１０９〜１１１がない場合、レイアウト・エリア７６０５内に表されているすべてのカメラ・サーバ１０９〜１１１が選択されているとしても、時刻表７６０７は、そのような非選択を特別なケースとして取り扱う。この場合、レイアウト・エリア７６０５上にあるビデオ・ウィンドウに関連付けられているすべてのカメラ・サーバに対するイベントは、一次イベントとして表示される。
【１０４２】
二次イベントに対するロールオーバーおよびマウス・ダウン状態は、一次イベントに対するロールオーバーおよびマウス・ダウン状態と同じく表示される。
【１０４３】
イベントが同時に表示される場合、一次イベントは、常に、二次イベントの前に表示される。イベントが両方とも一次である場合、優先度の高いイベントが前に表示され、優先度の低いイベントを隠す。
【１０４４】
イベントをクリックすると、再生ヘッド９００１はそのイベントの開始タイムコードにジャンプする。一次イベントと二次イベントは両方とも、クリック可能である。
【１０４５】
１つのカメラ・サーバ１０９〜１１１のみが選択された場合、選択されたカメラ・サーバ１０９〜１１１に関連付けられているイベントのうちの１つをクリックすると、再生ヘッド９００１はそのイベントの開始タイムコードに移動し、対応する時間的位置から再生するようにビデオの位置が決められる。
【１０４６】
複数のカメラ・サーバ１０９〜１１１が選択された場合、一次イベントをクリックすると、イベントがどのカメラ・サーバに属しているかに関係なく、同じカメラ・サーバすべてが選択状態に保たれ、再生ヘッド９００１はそのイベントの時刻に移動し、選択されたすべてのビデオ・ウィンドウは、対応する時間的位置から再生するように位置が決められる。
【１０４７】
二次イベントをクリックすると、現在選択されているカメラの選択が解除され、再生ヘッド９００１が移動し、そのイベントに関連付けられているカメラ・サーバ１０９〜１１１が選択される。
【１０４８】
イベントは、ロールオーバー状態を持ち、クリック可能である。イベントのロールオーバーも、カメラ名、イベント名、および時間を含むイベントに関する情報をツール・チップと同様にして表示する。
【１０４９】
５．５．３．５  スクロールバー
スクロールバー８９１５は、図９０に示されているように、時刻表７６０７にそってナビゲーションを行う。スクロールバー８９１５は、再生ヘッド９００１の位置を変更しない。左にスクロールすると、時刻表のビューは時間的に逆方向に移動し、右にスクロールすると、ビューは順方向に移動する。時刻表７６０７は、現在の「Ｌｉｖｅ」時間と同じように一番右にのみスクロールできる。
【１０５０】
ライブ・ビデオ・サンプル・データを表示する場合、図９０に示されているように、スクロールバー８９１５は、できる限り一番右に配置され、右スクロール・ボタンに対して押し上げられる。時間が経過すると、時刻表７６０７自体が左に移動するとしても、スクロールバー８９１５はこの位置に留まる。
【１０５１】
「Ｌｉｖｅ」位置から、時刻表７６０７は過去への１週間分を表す。週の先頭に移動するには、ユーザがスクロールバー８９１５を左に移動する。その週内で表示可能な時間の量は、時刻表７６０７のビュー内でどれくらいズームされるかによって決まる。ズームインおよびズームアウトにより表示される時間の量は変化するが、スクロールバー７６０７により表される時間の量は変化しない。
【１０５２】
スクロールバー７６０７により表される週の外の日または週にジャンプするには、前の週、前の日、次の日、および次の週ボタンが日付表示の下に用意される。
【１０５３】
５．５．３．６  ズーム・コントロール
時刻表７６０７をズームインすることにより、詳細を表示し、ズームアウトすることにより、表示期間を長く取ることができる。ズームアウトを実行すると、イベント活動の概要がさらに表示され、パターンの認識がさらにしやすくなる。
【１０５４】
ユーザは、時刻表７６０７上でズームインして、時刻を詳細に表示することができ、これにより、表示される時間分割の間の距離が増える。ユーザがさらにズームインすると、追加時間セグメント・マーカーおよびタイムコードが表示される。
【１０５５】
ズーム・コントロール８９０５は、時刻表の上に配置される。ズームインまたはズームアウトを行うと、ライブ、早送り、および巻き戻しで見る場合に再生ヘッド９００１が移動する速度を変えられる。例えば、時刻表７６０７がズームインされる場合、時刻表７６０７がズームインされたときに同じ持続時間の表現がより広くなるので、再生ヘッド９００１は、再生ヘッド９００１がズームアウトされるときよりも速く移動する。したがって、カバーする再生ヘッド９００１に対する距離が同じ時間量について大きいため、再生ヘッドはより高速に移動する。
【１０５６】
５．５．３．７  時刻表ナビゲーション
時刻表ナビゲーションは、時刻表７６０７内に表示される日付範囲を制御する。時刻表ナビゲーションは、再生ヘッド９００１の位置を変更しない。時刻表ナビゲーション・コントロールは、Ｃａｌｅｎｄａｒ、Ｐｒｅｖｉｏｕｓ  Ｗｅｅｋ、Ｐｒｅｖｉｏｕｓ  Ｄａｙ、Ｎｅｘｔ  Ｄａｙ、Ｎｅｘｔ  Ｗｅｅｋを含む。
【１０５７】
前の週ボタンをクリックすると、現在の週から前の週までの時刻表７６０７に表示される日付範囲が変化し、前の日ボタンをクリックすると、時刻表は２４時間戻る。しかし、時刻表７６０７は、そのまま、合計７日を表示する。例えば、ユーザが「１５：００  ｏｎ  ２３  Ａｕｇ  ２００３」を見ていて、ユーザが前の日ボタンをクリックした場合、時刻表７６０７は「１５：００  ｏｎ  ２２  Ａｕｇ  ２００３」にジャンプし、適切なイベントが表示される。
【１０５８】
日付表示は、時刻表７６０７に表示されている時間領域の日付を示す。時刻表７６０７がズームアウトされ、複数の日が時刻表７６０７内で表示可能であれば、時刻表７６０７内に表示される第１の日の日付が使用される。スクロールバー７６０７が移動されるときに、日付表示は、異なる日が時刻表７６０７内で表示可能にされると自動的に更新される。
【１０５９】
カレンダー・アイコンをクリックすると、ユーザが時刻表７６０７内で表示する日を選択できる標準カレンダー・コントロールを起動する。このようなアクションは、時刻表７６０７のビューを変更するだけであり、再生ヘッド９００１の位置を変えない。日付をクリックすると、その日付が選択され、「ＯＫ」ボタンをクリックすると、カレンダー・コントロールは閉じて、選択された日付を表示するように時刻表が更新される。
【１０６０】
５．５．３．８  Ｅｖｅｎｔ  Ｓｅａｒｃｈ
「ｅｖｅｎｔ  ｓｅａｒｃｈ」ボタン８９１７を押すと、図９２に示されているように、「ｅｖｅｎｔ  ｓｅａｒｃｈ」ダイアログ９２００が表示され、これは、イベントの検索に使用することができる。「ｅｖｅｎｔ  ｓｅａｒｃｈ」ダイアログ９２００を使用することで、ユーザは、検索条件を指定する、検索結果を表示する、「ｅｖｅｎｔ  ｓｅａｒｃｈ」ダイアログ８９１７から直接、イベントに関連付けられているビデオ・ウィンドウを開くという操作を行うことができる。
【１０６１】
検索条件は、以下のフィールドに入力することができる。
【１０６２】
（ｉ）Ｐｒｉｏｒｉｔｙ  ９２０１：これによりユーザは優先度レベルを選択することができる。
【１０６３】
（ｉｉ）Ｌｏｃａｔｉｏｎ  ９２０３：ユーザは、マスタ・ストレージ・サーバ２３００Ａから返されたロケーションのリストからロケーションを選択することができる。
【１０６４】
（ｉｉｉ）Ｚｏｎｅ  ９２０５：ユーザは、現在選択されたロケーションの中にあるマスタ・ストレージ・サーバ２３００Ａから返されたゾーンのリストからゾーンを選択することができる。
【１０６５】
（ｉｖ）Ｆｒｏｍ  ｄａｔｅ／ｔｉｍｅ  ９２０７：ユーザは、検索を制約するために使用したい開始日付および時刻を入力することができる。
【１０６６】
（ｖ）Ｔｏ  ｄａｔｅ／ｔｉｍｅ  ９２０９：ユーザは、検索を制約したい終了日付および時刻を入力することができる。
【１０６７】
ユーザは、検索条件を入力すると、検索を開始する「ｓｅａｒｃｈ」ボタン９２０９を押すことができる。
【１０６８】
入力されたに検索基準に対応するヒットがストレージ・サーバから受信されると（例えば、２３００Ａ、２３００Ｂ、２３００Ｃ、および２３００Ｄ）、イベントが受信されるときにそれぞれのイベントが表示される。ユーザは、検索結果リスト９２１１内のイベントをダブルクリックするか、またはイベントを選択し、「ｖｉｅｗ  ｅｖｅｎｔ  ｉｎ  ｃａｍｅｒａ」ボタン９２１３をクリックすることによりビデオ・ウィンドウ内のイベントに関連付けられている記録済みビデオ・サンプル・データを表示することができる。
【１０６９】
「ｖｉｅｗ  ｅｖｅｎｔ  ｉｎ  ｃａｍｅｒａ」ボタン９２１３は、検索結果が選択された場合のみ有効にされる。アイテムは同時に１つだけ選択できる。
【１０７０】
イベントが見つからないか、またはビューア２２００がストレージ・サーバ２３００に接続できない場合、「Ｔｈｅｒｅ  ａｒｅ  ｎｏ  ｅｖｅｎｔｓ  ｔｏ  ｄｉｓｐｌａｙ」がダイアログ９２００に表示される。
【１０７１】
「ｓｔｏｐ  ｓｅａｒｃｈ」９２１５をクリックすると検索が停止し、表示されている検索から現在の結果を残す。「ｃａｎｃｅｌ」９２１７をクリックすると、検索が停止し、ダイアログが閉じる。
【１０７２】
５．５．３．９  Ｊｕｍｐ  ｔｏ  Ｔｉｍｅ
特定のタイムコードにジャンプするために、ユーザは、時刻表７６０７の上にある「ｊｕｍｐ  ｔｏ  ｔｉｍｅ」ボタン８９０７をクリックすることができる。その結果、「ｊｕｍｐ  ｔｏ  ｔｉｍｅ」ダイアログが起動され、そこで、ユーザはタイムコードを入力し、「ＯＫ」を押すことができる。再生ヘッド９００１および時刻表が、再生ヘッド９００１が現在置かれている日にち内の入力された時刻に移動される。
【１０７３】
「ｊｕｍｐ  ｔｏ  ｔｉｍｅ」ボタンは、１つまたは複数のビデオ・ウィンドウが選択されるまで無効状態である。
【１０７４】
ユーザが夏時間調整の開始のため欠落している時刻にジャンプしようとすると、再生ヘッド９００１は指定された時刻よりも１時間前の時刻にジャンプする。ユーザが夏時間調整の終了のため重複している時刻にジャンプしようとすると、再生ヘッド９００１はその時刻の第２のインスタンスにジャンプする。
【１０７５】
５．５．４  ビューアのエラーと警告
ビューア２２００は、例えば、カメラ・サーバ１０９〜１１１への接続に問題が生じた場合にユーザに知らせる。ユーザに提示される可能性のあるエラーおよび警告メッセージの例を以下に示す。
【１０７６】
（ｉ）指定されたマスタ・ストレージ・サーバ２３００Ａをネットワーク２２２０上で見つけられないときに、ユーザがビューア２２００を起動しようとした場合（つまり、ビューア・アプリケーション・ソフトウェアを実行する）、「Ｆａｉｌｅｄ  ｔｏ  ｃｏｎｎｅｃｔ  ｔｏ  Ｍａｓｔｅｒ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ」というエラーが表示される。
【１０７７】
（ｉｉ）管理者が「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１にアクセスしようとした場合、ビューア９００１は知られているストレージ・サーバ２３００に接続しようとする。知られているストレージ・サーバ２３００が見つからない場合、「Ｆａｉｌｅｄ  ｔｏ  ｃｏｎｎｅｃｔ  ｔｏ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ．Ｒｅｃｏｒｄｉｎｇ  ｓｅｔｔｉｎｇｓ  ｆｏｒ  ｃａｍｅｒａ  ｓｅｒｖｅｒｓ  ｏｎ  ｔｈｅｓｅ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒｓ  ｗｉｌｌ  ｎｏｔ  ｂｅ  ａｖａｉｌａｂｌｅ．」というメッセージが表示される。
【１０７８】
（ｉｉｉ）管理者が変更を「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１のいくつかのダイアログのうちのどれかに保存しようとし、関連するストレージ・サーバ２３００がネットワーク２２２０上に見つからない場合、「Ｆａｉｌｅｄ  ｔｏ  ｃｏｎｎｅｃｔ  ｔｏ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ．Ｔｈｅ  ｃｈａｎｇｅｓ  ｙｏｕ  ａｒｅ  ｔｒｙｉｎｇ  ｔｏ  ｓａｖｅ  ｃａｎｎｏｔ  ｂｅ  ｓｅｎｔ  ｔｏ  ｔｈｅ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ａｎｄ  ｗｉｌｌ  ｂｅ  ｌｏｓｔ．」というエラーが表示される。
【１０７９】
（ｉｖ）システム１００が「Ｃｏｎｆｉｇｕｒａｔｉｏｎ」画面からカメラ・サーバ１０９〜１１１に接続しようとして失敗した場合、「Ｃｏｎｎｅｃｔｉｏｎ  ｔｏ  ｔｈｅ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｃｏｕｌｄ  ｎｏｔ  ｂｅ  ｅｓｔａｂｌｉｓｈｅｄ．」というエラーが表示される。
【１０８０】
（ｖ）「ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｐｒｅｆｅｒｅｎｃｅｓ」画面６４０１のいくつかのダイアログのうちのどれかからカメラ・サーバ１０９〜１１１への接続が途絶した場合、「Ｃｏｎｎｅｃｔｉｏｎ  ｔｏ  ｔｈｅ  ｃａｍｅｒａ  ｓｅｒｖｅｒ  ｈａｓ  ｂｅｅｎ  Ｉｏｓｔ．」というエラーが表示される。
【１０８１】
（ｖｉ）管理者がすでに追加されているストレージ・サーバを追加しようとすると、「Ｔｈｉｓ  ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｈａｓ  ａｌｒｅａｄｙ  ｂｅｅｎ  ａｄｄｅｄ．」というエラーが表示される。
【１０８２】
（ｖｉｉ）１つまたは複数の関連付けられたカメラ・サーバ１０９〜１１１に対し保留されている変更があるときに管理者がストレージ・サーバ２３００のアドレスを編集しようとした場合、「Ｐｌｅａｓｅ  ｓａｖｅ  ｏｒ  ｄｉｓｃａｒｄ  ｙｏｕｒ  ｃｈａｎｇｅｓ  ｂｅｆｏｒｅ  ｃｈａｎｇｉｎｇ  ｙｏｕｒ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  ｓｅｔｔｉｎｇｓ．」というエラーが表示される。
【１０８３】
（ｖｉｉｉ）ユーザが「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９を開いたままビューア２２００を起動しようとした場合（つまり、ビューア・アプリケーション・ソフトウェアを実行する）、またはユーザが「ｌｉｖｅ  ｅｖｅｎｔｓ  ｌｏｇ」７６１９を開こうとした場合、ビューア２２００は知られているすべてのストレージ・サーバ２３００に接続しようとする。接続問題がある場合、使用不可能なそれぞれのストレージ・サーバ２３００について、「Ｆａｉｌｅｄ  ｔｏ  ｃｏｎｎｅｃｔ  ｔｏ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ．Ｒｅｃｏｒｄｅｄ  ｖｉｄｅｏ  ａｎｄ  ｅｖｅｎｔ  ｉｎｆｏｒｍａｔｉｏｎ  ｆｏｒ  ｃａｍｅｒａ  ｓｅｒｖｅｒｓ  ｒｅｃｏｒｄｉｎｇ  ｔｏ  ｔｈｉｓ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  ｗｉｌｌ  ｎｏｔ  ｂｅ  ａｖａｉｌａｂｌｅ．」というエラー・メッセージが表示される。
【１０８４】
（ｉｘ）ユーザが現在のレイアウトまたは現在のレイアウトを含むフォルダを削除しようとした場合、「Ｙｏｕ  ｃａｎｎｏｔ  ｄｅｌｅｔｅ  ｔｈｉｓ  ｂｅｃａｕｓｅ  ｉｔ  ｉｓ  ｔｈｅ  ｃｕｒｒｅｎｔ  ｌａｙｏｕｔ  ｏｒ  ｉｔ  ｃｏｎｔａｉｎｓ  ｔｈｅ  ｃｕｒｒｅｎｔ  ｌａｙｏｕｔ．」というエラーが表示される。
【１０８５】
５．６  コマンド、フラグ、およびパラメータ
次に、アクセス・エンジン２０３とビューア２２００との間で送信されるような多数のコマンド、フラグ、およびパラメータについて、説明する。
【１０８６】
ビデオ要求は、アクセス・エンジン２０３にビデオ・サンプル・データを要求するために使用される。このような要求は、ビデオ・コマンド、カメラ識別子、時間範囲、再生速度、フレーム速度、およびビデオ・サンプル・データを送信する方法に影響を及ぼすフラグからなる。
【１０８７】
時間範囲により、送信するビデオ・サンプル・データの範囲を指定する。開始時刻は必須であるが、終了時刻はオプションである。終了時刻が与えられない場合、サンプリングされたデータが、指定された時刻から送信するビデオ・サンプル・データがなくなるまでストリーミングし続ける。したがって、記録エンジン２０１がビデオ・サンプル・データを記録している限り、アクセス・エンジン２０３は、ビデオ・サンプル・データをストリーミングし続ける。それとは別に、指定された時間範囲値は、値「Ｌｉｖｅ」に設定することができ、これは、指定されたカメラからのライブ・フィードがほぼ指定フレーム（つまり、サンプル）速度で供給されることを意味する。
【１０８８】
再生速度により、ビデオ・サンプル・データが送信される速さを指定する。再生速度が１００ならば、ビデオ・サンプル・データは、実時間で送信される。再生速度が低いと、ビデオ・サンプル・データは実時間よりも遅い速度で送信される。再生速度５０は、半分の速度を指定する。再生速度２００は、２倍の速度を示す。再生速度が負の数に設定されると、データを逆方向に再生する。
【１０８９】
フレーム速度は、送信する毎秒フレーム数である。これは、ビデオ転送速度を決定するが、受信されたビデオを再生できる時間には影響しない。したがって、フレーム速度に関係なく、１分のビデオ・サンプル・データは、そのまま、ビューア２２００により１分のビデオ・サンプル・データとして表示される。フレーム数は異なることがあるが、カバーされる時間の量は同じである。要求されるフレーム速度が使用可能なビデオ・フレーム速度よりも高い場合、フレーム速度はビデオ・サンプル・データのフレーム速度にまで下げられる。フレーム速度は、０．１から上限値３０までの範囲の値である。
【１０９０】
ビデオ・サンプル・データ要求に使用できるフラグは、「ｔｒａｎｓｆｅｒ」フラグと「ｎｏ−ｓｋｉｐ」フラグである。「ｔｒａｎｓｆｅｒ」フラグでは、ビデオ・サンプル・データを、指定された再生速度ではなく、できる限り高速に送信すべきであるかどうか指定する。「ｔｒａｎｓｆｅｒ」フラグがｔｒｕｅである場合、アクセス・エンジン２０３は、指定された再生速度でビデオ・サンプル・データを送信することを試みない。むしろ、アクセス・エンジン２０３は、使用可能な帯域幅が許す限り高速にビデオ・サンプル・データを送信する。「ｔｒａｎｓｆｅｒ」フラグをｔｒｕｅにセットすると、さらに、「ｎｏ−ｓｋｉｐ」フラグもｔｒｕｅにセットされ、コマンドの中の「ｎｏ−ｓｋｉｐ」フラグは無視される。
【１０９１】
「ｎｏ−ｓｋｉｐ」フラグにより、アクセス・エンジン２０３は、すべてのサンプルが送信されるようにサンプルをビューア２２００に送信するアルゴリズムを変更する。「ｎｏ−ｓｋｉｐ」フラグがｆａｌｓｅの場合、アクセス・エンジン２０３は、与えられたタイム・クアンタムで送信する必要があるサンプルを収集し、サンプルが多すぎる場合には、アクセス・エンジン２０３は、使用可能なサンプルのうちの一部を送信する。例えば、アクセス・エンジン２０３は、サンプルのグループ内の最後のサンプルを送信するだけであるが、これはビューア２２００に最も関係する。このような配列だと、ネットワーク輻輳またはビューアの過負荷が防止される。ビューア２２００がすべての使用可能なサンプルを受信することを望んでいる場合、「ｎｏ−ｓｋｉｐ」フラグをｔｒｕｅにセットしなければならない。アクセス・エンジン２０３は、その後、すべてのサンプルを送信するが、これは、エンジン２０１および２０３が同じコンピュータ・モジュール２３０１上で実行されている場合にアクセス・エンジン２０３および記録エンジン２０１のパフォーマンスに悪影響を及ぼす可能性がある。
【１０９２】
要求の開始時にビデオ・サンプル・データがないが、要求された時間範囲の一部についてビデオ・サンプル・データがある場合、フレーム・マーカー（つまり、「ｎｏ−ｖｉｄｅｏ」ブロブとも呼ばれる）は、ビデオ・データ・サンプルが存在しない場合にビデオ・データ・サンプルの代わりにビューア２２００に送信される。「Ｎｏ−ｖｉｄｅｏ」ブロブは、さらに、要求された時間範囲に対しビデオ・サンプル・データ内にギャップがある場合にも送信される。ビデオ・コマンドは、ビデオ・データ・サンプル・ストリーム識別子を応答の一部としてビューア２２００に返す。ビデオ・サンプル・データ・ストリーム識別子は、データ接続６０１５に到着したときにビデオ・ブロックを識別するためにビューア２２００により使用される。ビデオ・データ・サンプル・ストリームを修正するコマンドも、識別子を必要とする。識別子は、識別子を返す制御接続６００５に関してのみ有効である。識別子は、決して、他の制御接続では使用できない。
【１０９３】
「ｅｖｅｎｔ」コマンドは、アクセス・エンジン２０３に一定範囲のイベントを要求するために使用される。コマンドは、「ｅｖｅｎｔ」コマンド、カメラ識別子、および時間範囲からなる。時間範囲は、ビデオ・コマンドで使用されるのと同じ形式を持つ。終了時刻が指定されていない場合、要求は終了せず、指定されたカメラ・サーバ１０９〜１１１上の新しいイベントはビューア２２００に送信される。未来の終了時刻を指定することは、終了時刻をまったく指定しないこととは同じでない。未来の終了時刻が指定された場合、終了時刻にまだ到達してなくても、またはまだ未来であっても、現在のすべてのイベントが送信されると転送は終了する。終了時刻が与えられない場合、アクセス・エンジン２０３は、ビデオ・データ・サンプル・ストリームが停止されるまでイベントが届くとともにイベントをビューア２２００に送信し続ける。イベント要求は、ビデオ要求と同じようにして計時されず、したがって、できる限り速く送信される。
【１０９４】
「ｅｖｅｎｔ」コマンドは、応答の一部としてストリーム識別子を返す。この識別子は、ビデオ要求のストリーム識別子と同じ方法で使用される。
【１０９５】
「ｓｔｏｐ」コマンドは、要求されたサンプル・データ・ストリームを終了するために使用される。ｓｔｏｐコマンドは、単一のパラメータを持ち、これは、終了すべきサンプル・データ・ストリームのストリーム識別子である。「ｅｎｄ」コマンドは、ビデオおよびイベント要求を停止するために使用される。「ｓｔｏｐ」コマンドを使用すると、サンプル・データ・ストリームは、できる限り速やかに、データの送信を停止する。タイミング問題があるため、ビューア２２００は、「ｓｔｏｐ」コマンドが発行された後、受信されるビデオまたはイベント・データはもうないとは仮定しない。ビューア２２００は、代わりに、データ接続６０１５上にビデオまたはイベント・データがもうないことを知らされるのを待つ。
【１０９６】
「ｐａｕｓｅ」コマンドは、要求ストリームを一時停止するために使用される。「ｐａｕｓｅ」コマンドは、単一のパラメータを持ち、これは、一時停止すべきサンプル・データ・ストリームのストリーム識別子である。ビデオとイベントの両方のストリームを一時停止にすることができる。タイミング問題があるため、ビューア２２００は、「ｐａｕｓｅ」コマンドが発行された後、データ接続６０１５上で受信されるビデオまたはイベント・サンプル・データはもうないとは仮定しない。
【１０９７】
「ｒｅｓｕｍｅ」コマンドは、すでに一時停止されていたサンプル・データ・ストリームを再開するために使用される。「ｒｅｓｕｍｅ」コマンドは、単一のパラメータを持ち、これは、再開すべきストリームのストリーム識別子である。サンプル・データ・ストリーム上のデータ転送は、転送が中断された場所から拾われる。ビデオ・データ・サンプル・ストリームでは、ストリーマが一時停止される前に使用されていたのと同じ速度でストリーミングを再開する。アクセス・エンジン２０３は、ストリームが一時停止されていなかったなら送信されたであろうサンプルの送信をキャッチアップすることを試みない。
【１０９８】
「ｓｈｕｔ−ｄｏｗｎ」コマンドは、アクセス・エンジン２０３とカメラ・サーバ１０９〜１１１との間の接続をきれいにファイナライズするために使用される。「ｓｈｕｔ−ｄｏｗｎ」コマンドは、付加的パラメータを持たない。「ｓｈｕｔ−ｄｏｗｎ」コマンドが送信された後、ビューア２２００は、ビューア２２００がアクセス・エンジン２０３との新しい制御接続６００５を確立するまでそれ以上コマンドを発行することはできなくなる。すべてのサンプル・データ・ストリームは終了し、データ接続６０１５は閉じられる。
【１０９９】
「ｎｅｘｔ」コマンドは、ビデオ・サンプル・データ・ストリーム内の次のｎ個のフレームを要求するために使用される。「ｎｅｘｔ」コマンドは、２つのパラメータ、サンプルがフェッチされるストリームの識別子と送信するサンプル（つまり、フレーム）の個数を持つ。「ｎｅｘｔ」コマンドは、ビデオ・ストリームでしか使用できない。要求が行われたときにストリームが一時停止されない場合、アクセス・エンジン２０３は、「ｎｅｘｔ」コマンドが実行される前にストリームを一時停止にする。この場合、ストリームが一時停止したポイントは時間依存である。その結果、ｎ個のフレームのどれが「ｎｅｘｔ」コマンドにより送信されるのかについて正確には予測不可能である。しかし、順不同で送信されるフレームはない。
【１１００】
「ｐｒｅｖｉｏｕｓ」コマンドは、ビデオ・サンプル・データ・ストリーム内の前のｎ個のフレームを要求するために使用される。このコマンドは、２つのパラメータ、サンプルがフェッチされるデータ・サンプル・ストリームの識別子と送信するサンプルの個数を持つ。イベント・ストリーム上で「ｐｒｅｖｉｏｕｓ」コマンドを使用することは有効でない。要求が行われたときにイベント・ストリームが一時停止されなかった場合、アクセス・エンジン２０３は、コマンドが実行される前にストリームを一時停止にする。この場合、ストリームが一時停止したポイントは時間依存である。その結果、ｎ個のフレームのどれがコマンドの一部として送信されるのかについて予め明らかではない。しかし、順不同で送信されるフレームはない。
【１１０１】
「ｍｏｄｉｆｙ」コマンドは、すでに起動されているビデオ・サンプル・データ・ストリームを修正するために使用される。修正できるビデオ・データ・サンプル・ストリームの属性は、ストリームのフレーム速度、ストリームの再生速度、および要求された範囲、さらにストリームが転送であるかどうかである。転送ストリームでは、すべてのサンプルは、ネットワーク輻輳に関係なく送信され、ビデオは、実時間ではなく、可能な限り高速に送信される。範囲を変更すると、ストリームは、与えられた範囲の先頭から再び開始する。他のすべてのパラメータは、ストリームが要求されたときに設定されている場合に及ぼされるのと同じ影響をストリームに及ぼす。
【１１０２】
「ｋｅｅｐ  ａｌｉｖｅ」コマンドは、不活動により介在するプロキシ・サーバがデータ接続６００５を閉じないように定期的にビューア２２００によって送信される。Ａｐａｃｈｅ  Ｗｅｂサーバ６１１０およびＦａｓｔＣＧＩモジュール６１０５を使用して図６１に示されている実装では、ビューア２２００が接続を開いておく必要はない。したがって、「ｋｅｅｐ  ａｌｉｖｅ」コマンドは、図６１の特定の実装では冗長である。これは、他の実装ではそうならない場合もある。「ｋｅｅｐ  ａｌｉｖｅ」コマンドは、失敗せず、パラメータを取らない。接続識別子は、「ｋｅｅｐ  ａｌｉｖｅ」コマンドでは必要ない。
【１１０３】
５．７  ビューア・コンポーネント
図１１６は、ビューア２２００のソフトウェア・コンポーネントを示す。記録エンジン通信モジュール１４０２４は、記録エンジン２０１との通信を実行する。これは、上述のように記録エンジン・プロトコルを使用して構成情報および他の情報の読み書きを行うことができる（例えば、ＮＶＲ＿ＡｄｍｉｎＳｅｔ、ＲＥ＿Ｔｒｉｇｇｅｒ、ＲＥ＿Ｓｅｔ、ＮＶＲ＿ＵｓｅｒＧｅｔコマンドなど）。
【１１０４】
カメラ通信モジュール１４０２３は、カメラ・サーバ１０９〜１１１との通信を受け持つ。カメラ通信モジュール１４０２３は、カメラ・サーバ１０９〜１１１に格納されている設定についてカメラ・サーバ１０９〜１１１に問い合わせを行い、ビデオ・ストリームを受信し、カメラ・サーバからのイベント通知を監視し、カメラ１１２〜１１５のパン、傾斜、およびズームを制御することができる。構成コンポーネント１４０１０により実行されるいくつかの機能、例えば、「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログ６７００の制御、「ａｄｄ  ｓｃｈｅｄｕｌｅ  ｉｔｅｍ」ダイアログ７０００、および「ｍｏｔｉｏｎ  ｄｅｔｅｃｔｉｏｎ」ダイアログ７１００では、カメラ通信モジュール１４０２３にアクセスする。
【１１０５】
レイアウト・エリア・コンポーネント１４００４は、レイアウト・エリア７６０５のオペレーションを受け持つ。これは、レイアウト・エリア・コンポーネントの制御の下でレイアウト・エリア内に表示されるビデオ・ウィンドウ（例えば、７６２５、８２０１、８３０１）のオペレーションを含む。これらのビデオ・ウィンドウでは、カメラ通信モジュール１４０２３を利用して、ライブ・ビデオ・ストリームを受信し、カメラＰＴＺおよび外部出力のユーザ制御を可能にすることを含む機能を実現する。さらに、レイアウト・エリア・コンポーネント１４００４は、アクセス・エンジン通信モジュール１４０２１を通じてストレージ・サーバから記録済みビデオの再生を行う。
【１１０６】
ライブ・イベント・コンポーネント１４００１は、「Ｌｉｖｅ  Ｅｖｅｎｔｓ  Ｌｏｇ」７６１９のオペレーションを受け持つ。イベント検索コンポーネント１４００２は、「Ｅｖｅｎｔ  Ｓｅａｒｃｈ」ダイアログ９２００のオペレーションを受け持つ。時刻表コンポーネント１４００３は、時刻表７６０７のオペレーションを受け持つ。これらのコンポーネント（１４００１、１４００２、１４００３）はそれぞれ、イベント・キャッシュ・マネージャ１４０２２を利用して、アクセス・エンジン２０３からイベント・データを取り出すこと、および不要な通信を避けるためキャッシュ内にイベント・レコードを格納することを管理する。
【１１０７】
カメラ選択エリア・コンポーネント１４００５は、カメラ選択エリア７６０３のオペレーションを受け持つ。
【１１０８】
５．８  ビューアにおけるイベント処理
イベント・キャッシュ・マネージャ１４０２２は、プロセッサ２２０５により実行されるソフトウェア・コンポーネントであり、イベント情報を収集し、保持することを受け持つ。システム１００に知られているカメラ１１２〜１１５毎に別々のイベント・キャッシュ・マネージャ１４０２２が作成される。内部的には、イベント・キャッシュ・マネージャ１４０２２は、アクセス・エンジン２０３との通信をアクセス・エンジン通信モジュール１４０２１にデリゲートする。
【１１０９】
特定のストレージ・サーバ２３００に関連付けられているそれぞれのカメラ１１２〜１１５について、ライブ・イベント・コンポーネント１４００１はそのストレージ・サーバ２３００上に格納されているイベント・レコードに関心を持ったことをイベント・キャッシュ・マネージャ１４０２２に登録する。関心は、ライブ・イベント・コンポーネント１４００１がその時間範囲にログインされていたすべてのイベントを知ることに関心を持つ定義済み時間範囲である。ライブ・イベント・コンポーネント１４００１は、イベントが発生するときにそのイベントに関心を持つので、現在のシステム時刻から未来までイベントへの関心を登録する（上述のようにアクセス・エンジン・プロトコルを使用して）。ライブ・イベント・コンポーネント１４００１は、さらに、コールバック・アドレスをイベント・キャッシュ・マネージャ１４０２２に登録する。コールバックは、ライブ・イベント・コンポーネントの関心の範囲内にあるイベントの通知を受信するために使用される。
【１１１０】
時刻表コンポーネント１４００３は、レイアウト・エリア上で現在表されているカメラ１１２〜１１５に対するイベント・データのみを表示する。レイアウトがロードされると、時刻表コンポーネント１４００３は、時刻表コンポーネント１４００３に関連付けられているイベント・データを更新するよう指令される。レイアウト・エリア上に表されるそれぞれのカメラ１１２〜１１５について（また、カメラ１１２〜１１５がストレージ・サーバ２３００に関連付けられている場合のみ）、時刻表コンポーネント１４００３は、イベントに関心を持っていることを、そのカメラ１１２〜１１５に関連付けられているイベント・キャッシュ・マネージャ１４０２２に登録する。時刻表コンポーネント１４００３は、さらに、関心の範囲内にあるイベントの通知を受信するようにイベント・キャッシュ・マネージャ１４０２２のコールバック・アドレスをセットアップする。時刻表コンポーネント１４００３は、時刻表内で現在使用可能な時間の範囲に基づいて関心を登録する（つまり、通常は１週間の完全なスクロール可能な範囲）。
【１１１１】
イベント検索コンポーネント１４００２は、上述のように、ユーザの指令に従って必要に応じて初期化され閉じられる。「ｅｖｅｎｔ  ｓｅａｒｃｈ」ダイアログ９２００上の「ｓｅａｒｃｈ」ボタン９２０９が押された場合、イベント検索コンポーネント１４００２は、カメラ１１２〜１１５毎に、「Ｌｏｃａｔｉｏｎ」および「Ｚｏｎｅ」プルダウン・コントロール９２０３、９２０５により決定された集合に関心があることをイベント・キャッシュ・マネージャ１４０２２に登録する（また、カメラ１１２〜１１５がストレージ・サーバ２３００に関連付けられている場合のみ）。例えば、この集合は、指定されたＺｏｎｅに関連付けられているカメラ１１２〜１１５のすべてを含み、または「Ａｌｌ  Ｌｏｃａｔｉｏｎｓ」が指定されている場合には、この集合は、システム１００内の知られているすべてのカメラ１１２〜１１５を含む。関心に対する時間範囲は、「ｆｒｏｍ」および「ｔｏ」コントロール９２０７内の値により決定される。イベント検索コンポーネント１４００２は、さらに、関心の範囲内にあるイベントを通知するために使用するイベント・キャッシュ・マネージャ１４０２２のコールバック・アドレスも登録する。
【１１１２】
時刻表コンポーネント１４００３、イベント検索コンポーネント１４００２、およびライブ・イベント・コンポーネント１４００１はすべてイベントに関心のあることを登録することができるので、このコンポーネントの集合は、イベント使用コンポーネントと呼ぶことができる。
【１１１３】
図１１７は、特定のカメラ１１２〜１１５に関連付けられた関心、知られている範囲、およびイベントの間の関係を示すグラフである。水平矢印１４１０１は、時間の経過を表す。垂直ライン１４１０２は、現在の時刻を表し、このラインの右の位置は、未来の時間を表し、このラインの左の位置は、過去の時間を表す。一連の垂直ライン１４１３０は、記録エンジン２０１によりログに取られているイベントをマークする。
【１１１４】
１４１１０（１４１１１、１４１１２、１４１１３を含む）のブロックは、特定の期間に特定のカメラ１１２〜１１５に関連付けられているイベントに関心のあることを表すが、イベント使用コンポーネントによりイベント・キャッシュ・マネージャ１４０２２に登録されている。関心は、以下のデータ構造を使用して実装することができる。
【１１１５】
struct interest
{
time_t mi_begin; ／／ 関心の開始時刻
time_t mi_end; ／／ 関心の終了時刻（未来を表す特別な値−１に設定することができる）
bool mi_complete; ／／ 関心が完全に完了したことを示すフラグ。つまり、この関連付けられたカメラ１１２〜１１５に対するこの時間範囲内のすべてのイベントが、イベント・キャッシュ・マネージャ１４０２２に知られていること。
【１１１６】
}
１４１２０（１４１２１、１４１２２、１４１２３、１４１２４を含む）のブロックは、イベント・キャッシュ・マネージャがストレージ・サーバ２３００から取り出したイベントの知られている範囲を表す。知られている範囲は、以下のデータ構造を使用して実装することができる。
【１１１７】
struct known_range
{
list＜Events＞ mk_events; ／／ イベント・データのリスト
time_t mk_begin; ／／ 範囲の開始時刻
time_t mk_end; ／／ 範囲の終了時刻
bool mk_complete; ／／ 知られている範囲が完全に完了したことを示すフラグ。つまり、関連付けられたカメラ１１２〜１１５に対するこの時間範囲内のすべてのイベントが、イベント・キャッシュ・マネージャ１４０２２に知られていること。
【１１１８】
}
イベント・データのリスト（上述のデータ構造のｍｋ＿ｅｖｅｎｔｓ）は、時間範囲内（つまり、ｍｋ＿ｂｅｇｉｎ以上で、ｍｋ＿ｅｎｄ未満）にあるタイムスタンプを持つイベントのリストである。
【１１１９】
イベント・キャッシュ・マネージャ１４０２２は、例えば、関心の集合１４１１０に対応する、関心のコンテナを保持する。イベント・キャッシュ・マネージャ１４０２２は、さらに、イベント・キャッシュと呼ばれる知られている範囲のコンテナも保持する。イベント・キャッシュ内の知られているイベントは、コンテナ内のイベント範囲の順序がｍｋ＿ｂｅｇｉｎ時間に基づくようにソートされる。
【１１２０】
上述のように、イベント使用コンポーネントは、イベント・データを受信することに関心を持つ期間の関心を登録する。例えば、ライブ・イベント・コンポーネント１４００１は、所定の時刻から未来に延びるイベントへの関心１４１１３を持つことができる。ユーザ・アクションに対する応答としてイベント検索コンポーネント１４００２は、過去の時間範囲に関係する関心１４１１１を登録することができる。
【１１２１】
イベント検索コンポーネント１４００２および関心１４１１１の例について考察する。イベント・キャッシュ・マネージャ１４０２２は、関心のコンテナに関心１４１１１を格納する。関心１４１１１は、登録されている関心の時間範囲内にあるイベント・キャッシュ・マネージャに知られているイベントと突き合わせてチェックされる。関心の時間範囲内にあるそれぞれのイベントについて、イベントをイベント検索コンポーネント１４００２に通知するためコールバックが実行される。次に、イベント・キャッシュをテストし、知られている範囲（１４１２１、１４１２２、１４１２３など）が関心範囲の完全なカバーを形成しているか調べる（知られている範囲の集合に含まれていない関心の範囲の一部があるかどうかを決定することにより）。完全なカバーがある場合（つまり、時間にギャップがない）、関心範囲は完全のマークが付けられ、イベント検索コンポーネント１４００２に対する他のコールバックが実行され、この関心に対するイベント・データが完了していることをイベント検索コンポーネント１４００２に通知する（つまり、関心の時間範囲内のすべてのイベントがイベント検索コンポーネント１４００２に通知されている）。
【１１２２】
実施例では、知られているイベント範囲１４１２１および１４１２２は、部分的に、関心１４１１１の時間範囲をカバーするので、イベント・キャッシュ・マネージャ１４０２２により埋められる必要があるギャップが知られている範囲内にある。２つの別々のタスク（通常は、別々のスレッドとして実装される）が、イベント・キャッシュ・マネージャ１４０２２内で実行され、アクセス・エンジン通信モジュール１４０２１を使用するイベント通信タスクを受け持つ。第１のタスクは、関心時間範囲内にあるが、知られている範囲内にはなく、過去にある（つまり、未来にはない）イベントについてイベント・データを取り出すアクセス・エンジン２０３への要求を開始する役割を持つ。第２のタスクは、現在発生しているイベントを取り出す役割を持つ、つまり、終了時刻が未来にある場合である（つまり、ｍｉ＿ｅｎｄ値が特別な値−１に設定されている）。
【１１２３】
イベント検索コンポーネント１４００２によるイベントの要求に関する実施例が示されている。他のイベント使用コンポーネント（つまり、ライブ・イベント・コンポーネント１４００１または時刻表コンポーネント１４００３）からの要求である場合のオペレーションは、実質的に同じである。
【１１２４】
上述の第１のイベント通信タスクを考察する。新しい関心が登録された場合（つまり、イベント・キャッシュ・マネージャ１４０２２上のコンテナに追加される）、タスク・イベント通信タスクは、イベント・キャッシュ・マネージャ（上述のように）内の関心のリストを検索し、第１の不完全な関心を特定する。不完全な関心から、タスクは、知られている範囲のコンテナ内を探索し、関心の時間範囲内にある知られている範囲内の第１のギャップを特定する。このような理由から、イベント・キャッシュは、オーバーラップする期間のないソート順序で知られている範囲を保持する。
【１１２５】
関心１４１１１および知られている範囲１４１２１、１４１２２の実施例に従い、イベント通信タスクは、１４１２１と１４１２２との間の範囲内のイベントについてアクセス・エンジン２０３上で要求を形成する。さらに、新しい知られている範囲構造が作成され、イベント・キャッシュ内に配置される。新しい知られている範囲の開始時刻は、前のイベント範囲の終了時刻またはイベント関心の開始時刻である。この実施例では、新しい知られている範囲の開始時刻は、前のイベント範囲１４１２１の終了時刻である。新しいイベント範囲の終了時刻は、新しい知られている範囲の開始時刻に等しくなるように設定される。
【１１２６】
イベントの要求は、新しいイベント範囲およびイベント・キャッシュ・マネージャ１４０２２に関連付けられているカメラ１１２〜１１５を含む。この要求は、付録Ｂで説明されているアクセス・エンジン・プロトコルを使用してアクセス・エンジン通信モジュール１４０２１を通じてアクセス・エンジン２０３に送信される（通常、「ｆｅｔｃｈ  ｅｖｅｎｔ」コマンドを使用する）。アクセス・エンジン２０３は、一連のＥＶＥＮＴ＿ＢＬＯＢデータ送信で応答する。アクセス・エンジン２０３は、イベントを時間順に送信する。これらは、イベント・データについて解析される。受信されたイベントは、新しい知られている範囲内のイベントのリスト内でソートされ、新しい知られている範囲の終了時刻は、最後に受信されたイベントの時刻に設定される。また、この時刻を含む（例えば、時刻表コンポーネント、イベント検索コンポーネント、またはライブ・イベント・コンポーネントにより）登録されている関心は、イベントにも通知される。
【１１２７】
要求に対する最後のイベントが受信されると、アクセス・エンジンは、要求が完了していることを示すインジケータを送信する（ストリームの終わりブロブ）。この時点で、イベント・キャッシュ・マネージャは、終了時刻をイベントの要求の終了時刻に設定し、それに完了のマークを付けることにより新しい知られている範囲をファイナライズする。この時点で、イベント・キャッシュ・マネージャ内のすべての関心がチェックされ、この新しい知られている範囲の完了により完了したものは何でも、完了のマークが付けられ、関心を登録されたイベント・データが最新のものであることをイベント使用コンポーネントに知らせる通知コールバックが実行される。
【１１２８】
最後に、新しい知られている範囲が完了すると、イベント・キャッシュ・マネージャは、その関心および新しいギャップに対する知られている範囲を探索し、イベント・データを要求する他のサイクルを開始する。
【１１２９】
前述の好ましい（複数の）方法は、特定の制御の流れを含む。本発明の精神または範囲値から逸脱することなく異なる制御の流れを使用する好ましい（複数の）方法の他の変更形態が多数ある。さらに、（複数の）好ましい方法のステップの１つまたは複数は、逐次的にではなく並列に実行できる。
【１１３０】
上述の方法は、代わりに、説明されているプロセスの機能または下位機能を実行する１つまたは複数の集積回路などの専用ハードウェアで実装することができる。このような専用ハードウェアは、グラフィック・プロセッサ、デジタル・シグナル・プロセッサ、または１つまたは複数のマイクロプロセッサおよび関連するメモリを含むことができる。
【１１３１】
以上では、本発明のいくつかの実施形態のみを説明し、本発明の範囲および精神から逸脱することなく修正および／または変更を加えることができ、これらの実施形態は、例示的であり、制約的ではない。
【１１３２】
本明細書の文脈では、「含む、備える」という用語は、「主に含むが、必ずしももっぱらというわけではない」、または「持つ」、または「含む、包含する」を意味し、「のみからなる」を意味しない。「含む、備える（ｃｏｍｐｒｉｓｅ、ｃｏｍｐｒｉｓｅｓ）」などの「含む、備える（ｃｏｍｐｒｉｓｉｎｇ）」の変更形態は、それに応じて変えた意味を有する。
【１１３３】
付録Ａ：ブロブの形式
アクセス・エンジン２０３とビューア２２００との間の通信で使用されるブロブの形式を以下に示す。
【１１３４】
「Ｉｍａｇｅ」ブロブ
struct AE_VideoBlob
{
CNV_Time     time;
Image         im;
}
それぞれのビデオ・ブロブは、時間構造体の中で指定された時刻の単一のｊｐｅｇ画像を含む。時刻構造体は、年の後に、当年の０から始まる日の通し番号（つまり、１月１日は日０、２月２日は日３２）、フレームが記録された日までのミリ秒数が続く。
【１１３５】
「Ｅｖｅｎｔ」ブロブ
Struct event
{
uint16          num_events;
struct event     events [] ;
};
イベントの数は、番号の後のイベントの数である。それぞれのイベントは、改行文字により区切られる。
【１１３６】
「Ｓｔａｒｔ」ブロブ
struct start
{
uint32          connection_id;
}
これは、データ接続上で送信される第１のブロブである。これは、データ・ストリームの接続ｉｄを含む。ブロブのストリームｉｄは、０に設定される。
【１１３７】
「Ｋｅｅｐａｌｉｖｅ」ブロブ
このブロブは、タイムアウトにより介在するプロキシ・サーバが接続を閉じるのを防ぐために一定の不活動期間の後にクライアント（ビューア２２００）に送信される。接続上で他の活動がある場合（ストリーミング・ビデオなど）、ｋｅｅｐａｌｉｖｅブロブは送信されない。このようなブロブは、クライアント（つまり、ビューア２２００）によりタイミングに関して依存されるべきでない。このブロブ・タイプには付加データはない。
【１１３８】
「Ｅｎｄ  Ｓｔｒｅａｍ」ブロブ
struct start
{
uint32          stream_id;
}
「Ｅｎｄ  ｓｔｒｅａｍ」ブロブは、ストリームが終了している場合に送信される。これは、アクセス・エンジン２０３がストリームを終了しつつあり、クライアント（ビューア２２００）がもはやこのストリームからブロブを受信しなくなることを意味する。終了したストリームを修正する他のすべての要求は失敗する。
【１１３９】
「Ｃｌｏｓｅ  Ｓｔｒｅａｍ」ブロブ
「Ｃｌｏｓｅ  ｓｔｒｅａｍ」ブロブは、データ接続上の最後のブロブとして送信される。クライアント（ビューア２２００）は、ビューアが「ｃｌｏｓｅ  ｓｔｒｅａｍ」ブロブを受信すると、接続をきれいに閉じる。このブロブ・タイプには付加データはない。
【１１４０】
「Ｎｏ  ｖｉｄｅｏ」ブロブ
struct no_video blob
{
CNV_Time        curr_time;
CNV_Time        next_time;
}
「Ｎｏ  ｖｉｄｅｏ」ブロブは、ビデオはまだ来るが、現在、ストリーム内の現在時刻には何もない場合に、ビデオ・ブロブの代わりに、クライアント（つまり、ビューア２２００）に送信される。これらのブロブは、ｎｏ  ｖｉｄｅｏ期間に定期的に送信されるが、ビデオと同じ速度では送信されない。現在時刻は、ストリーム内の現在時刻である。この現在時刻値は、欠落ビデオの期間中にアクセス・エンジン２０３との同期を保持するためにクライアント（つまり、ビューア２２００）により使用されることができる。次のフレームまでの時間は、ストリーム内の次のフレームが送信されるべきときまでの時間である。
付録Ｂ：アクセス・エンジンおよびビューアによって使用されるヘッダ、応答、およびコマンド
ヘッダ
以下のヘッダは、クライアント（つまり、ビューア２２００）により送信される要求のすべてまたはほとんど、またはサーバ（つまり、アクセス・エンジン２０３）により送信される応答内に存在していなければならない。特定のコマンドに関して他のヘッダを含めることもできる。
【１１４１】
nvr-protocol-version: ＜version＞
クライアント（つまり、ビューア２２００）またはサーバ（つまり、アクセス・エンジン２０３）が使用しているプロトコルのバージョン。ｖｅｒｓｉｏｉｎはプロトコルのバージョンを指定する整数である。本書では、ｖｅｅｒｓｉｏｎ  １と記述する。これは、クライアント（つまり、ビューア２２００）からのすべての要求、およびサーバ（つまり、アクセス・エンジン２０３）からの応答に含まれなければならない。
【１１４２】
nvr-client: ＜name＞
クライアント（つまり、ビューア２２００）の名前。ｎａｍｅは、ブラウザを記述するために使用されるＵｓｅｒ−ａｇｅｎｔ文字列などのような自由形式文字列である。これは、クライアント（つまり、ビューア２２００）からのすべての要求に含まれなければならない。
【１１４３】
nvr-client-version: ＜version＞
クライアント（つまり、ビューア２２００）のバージョン。ｖｅｒｓｉｏｎは、「１．２．３」の形のドット数値記表文字列である。これは、クライアント（つまり、ビューア２２００）からのすべての要求に含まれなければならない。
【１１４４】
nvr-server: ＜name＞
サーバ（つまり、アクセス・エンジン２０３）の名前。ｎａｍｅは、Ｗｅｂサーバ応答の中のＳｅｒｖｅｒ文字列のような自由形式文字列であり、サーバ（つまり、アクセス・エンジン２０３）からのすべての応答に含まれなければならない。
【１１４５】
nvr-server-version: ＜version＞
サーバのバージョン。ｖｅｒｓｉｏｎは、「１．２．３」の形式のドット数値記表文字列であり、サーバ（つまり、アクセス・エンジン２０３）からのすべての応答に含まれなければならない。
【１１４６】
nvr-connection-id: ＜id＞
これは、現在のクライアント（つまり、ビューア２２００）接続の接続ｉｄであり、セットアップ要求を除きクライアント（つまり、ビューア２２００）からのすべての要求で送信されなければならない。ｉｄは、１０進数形式の３２ビット整数である。
【１１４７】
共通応答
いくつかの応答は、すべての、またはほとんどすべてのコマンドにわたって共通である。これらは、すべてのコマンドに関して以下で繰り返されないエラー・メッセージである。
【１１４８】
Ｉｎｔｅｒｎａｌ  ｅｒｒｏｒ
これは、未指定の発信源のサーバ（つまり、アクセス・エンジン２０３）内のエラーを示す。サーバ（つまり、アクセス・エンジン２０３）は、不規則に実行を開始する場合がある。この応答は、すべてのコマンドに適用される。
【１１４９】
Ｎｏｔ  Ｓｅｔｕｐ
クライアント（つまり、ビューア２２００）は、セットアップ・コマンドを発行していない。サーバ（つまり、アクセス・エンジン２０３）は、クライアント（つまり、ビューア２２００）がセットアップまたは再接続を呼び出すまで、セットアップまたは再接続を除き、この応答でコマンドに応答する。試みられていたコマンドは失敗し、データ接続がもし存在すればそれに対し変更が加えられていない。
【１１５０】
コマンド
以下に、制御接続６００５上でクライアント（つまり、ビューア２２００）によりサーバ（つまり、アクセス・エンジン２０３）に送信されるコマンドのリストをまとめた。これらはコマンドとして説明されているが、実際には、キャンバス・ストリーミング・サーバ「ファイル」をフェッチするＨＴＴＰ  ＧＥＴコマンドへのパラメータである。例えば、セットアップ・コマンドは、実際には、以下のＨＴＴＰコマンド（最低限のヘッダを持つ）である。
【１１５１】
GET ／webview-nvr／stream?command=setup HTTP／1.1
Host: ＜access server host＞
nvr-protocol-version: 1.0
nvr-client: operator interface
nvr-client-version: 1.0
Connection: keep-alive
応答は、標準的なＨＴＴＰ応答であり、応答のデータ・セクション内に追加情報が含まれる。例えば、次のようである。
【１１５２】
HTTP／1.0 200 OK
nvr-protocol-version: 1.0
nvr-server: Access Engine
nvr-server-version: 1.0
Connection: keep-alive
Keep-alive: timeout=20, max=0
Content-type: text／text
Connection-id=1234
Num-Data-connections =2
Data-connection-ids=2345, 3456
それぞれのコマンドは、ＵＲＬに入れるコマンド・テキスト、他のパラメータ、および可能な応答をリストにしたものである。
【１１５３】
Ｓｅｔｕｐ
これは、ビューア２２００が接続した後、クライアント（つまり、ビューア２２００）によりサーバ（つまり、アクセス・エンジン２０３）に送信される第１のコマンドである。これの前に送信される他のコマンドはどれも、サーバ（つまり、アクセス・エンジン２０３）からエラーを生成する。ｓｅｔｕｐは、クライアント（つまり、ビューア２２００）がセットアップ応答で示されているデータ接続回数を確定するまで完了しない。
【１１５４】
コマンド：ｓｅｔｕｐ
パラメータ：なし
応答：
ＯＫ
セットアップの第１の部分は、正常に完了した。クライアント（つまり、ビューア２２００）がデータ接続を完了するまで、セットアップ手順は終了しない。この応答の中野データは以下のフィールドを持つ。
【１１５５】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
これは、コマンド接続のコマンド接続ｉｄを指定する。
【１１５６】
Ｄａｔａ−ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
データ接続のｉｄ
Ｎｕｍ−ｄａｔａ−ｃｏｎｎｅｃｔｉｏｎｓ
クライアント（つまり、ビューア２２００）がサーバ（つまり、アクセス・エンジン２０３）に対し開く必要があるデータの数。プロトコルのこのバージョンでは、これは常に１である。
【１１５７】
ＯＫ  ａｌｒｅａｄｙ  ｓｅｔｕｐ
クライアント（つまり、ビューア２２００）はすでにセットアップされている。データ接続はまだ有効である。この応答ではデータはない。
【１１５８】
Ｓｈｕｔｄｏｗｎ
このコマンドは、サーバ（つまり、アクセス・エンジン２０３）へのクライアント（つまり、ビューア２２００）の接続をシャットダウンするために使用される。すべてのデータ・ストリームは、閉じられ、すべてのサーバ（つまり、アクセス・エンジン２０３）リソースは、解放される。このコマンドが完了すると、ビューアは接続を閉じなければならない。クライアント（つまり、ビューア２２００）は、「ｃｌｏｓｅ」ブロブが受信されるまでデータ接続を閉じてはならない。
【１１５９】
コマンド：ｓｈｕｔｄｏｗｎ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ応答の中のクライアント（つまり、ビューア２２００）に与えられたコマンド接続ｉｄ。
【１１６０】
応答：
ＯＫ
シャットダウンは正常に完了した。クライアント（つまり、ビューア２２００）は、データ接続上で「ｃｌｏｓｅ」ブロブを予期すべきである。サーバ（つまり、アクセス・エンジン２０３）によって新しいデータは送信されないが、出力バッファ内のデータが送信されている間に遅延がありうる。
【１１６１】
Ｆｅｔｃｈ  Ｖｉｄｅｏ
このコマンドは、サーバ（つまり、アクセス・エンジン２０３）からのビデオ・データのストリーミングを開始するために使用される。クライアント（つまり、ビューア２２００）は、サーバ（つまり、アクセス・エンジン２０３）ができる限り速くビデオを転送するか、またはビューイング速度でストリーミングすることを要求することができる。サーバ（つまり、アクセス・エンジン２０３）は、ビデオ・ストリームの到達に使用される接続を決定する。
【１１６２】
コマンド：ｖｉｄｅｏ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ応答の中のクライアント（つまり、ビューア２２００）に与えられたコマンド接続ｉｄ。このパラメータは必須である。
【１１６３】
Ｆｒａｍｅ＿ｒａｔｅ
要求されたビデオの望むフレーム速度。これが、使用可能なフレーム速度よりも高い場合、ストリーミングは、そのまま開始し、クライアント（つまり、ビューア２２００）は、第１のビデオ・フレームの前にコマンド接続応答またはデータ接続のいずれかでこのことを通知される。この値は、０．１から２５（ＰＡＬ記録システムの場合）、または３０（ＮＴＳＣ記録システムの場合）までの範囲の値である。
【１１６４】
Ｐｌａｙ＿ｒａｔｅ
再生速度は、ビューアでビデオを見ることが望まれている知覚される速度である。値は、１００を超える比であるため、１００は通常再生速度であり、２００は倍速であり、２５は１／４倍速である。巻き戻し再生の場合、再生速度を負の数に設定する。パラメータは、オプションである。
【１１６５】
Ｃａｍｅｒａ−ｉｄ
ビデオが生成されたカメラのｉｄ。
【１１６６】
Ｎｏ−ｓｋｉｐ
ネットワーク輻輳のため、フレームをスキップするのではなく、ビデオ内のすべてのフレームをストリーミングするようにサーバ（つまり、アクセス・エンジン２０３）に通知する論理値フラグである。このフラグは、転送が設定された場合に暗示され、設定は、転送がＵＲＬ内で設定されている値に関係なく設定される場合に常に真である。すべてのサーバがフレームのスキップをサポートしているわけではないことに注意されたい。
【１１６７】
Ｔｒａｎｓｆｅｒ
このストリームが転送ストリームであることサーバ（つまり、アクセス・エンジン２０３）に知らせる論理値フラグ。これは、２つの影響を持つ。第１に、ネットワーク輻輳に関係なくすべてのフレームが送信されるようにｎｏ−ｓｋｉｐフラグをセットすることであり、第２に、サーバ（つまり、アクセス・エンジン２０３）が実時間ではなく可能な限り速くビデオを送信しようとすることを意味する。サーバ（つまり、アクセス・エンジン２０３）は、そのまま、転送により使用される帯域幅を絞り、ネットワーク帯域幅の実時間ビデオ転送の不足を生じさせないようにすることを選択することができる。
【１１６８】
Ｔｉｍｅ−ｒａｎｇｅ
これは、取り出すビデオの時間範囲または特別な値「ｌｉｖｅ」のいずれかである。「ｌｉｖｅ」が設定されている場合、カメラからのライブ・フィードは、ほぼ指定されたフレーム速度で供給される。ライブ要求では、転送およびｎｏ−ｓｋｉｐオプションを無視する。時間範囲形式は以下のとおりである。
【１１６９】
Yyyymmdd_hhmmss[uuu][_yyyymmdd_hhmmss[uuu]]
つまり、４桁の年、２桁の月、２桁の日、下線、２桁の時（２４時間ＵＴＣ）、２桁の分、オプションの３桁のミリ秒、オプションの下線、その後、開始時刻と同じ形式のオプションの終了時刻。終了時刻がない場合、後続の下線はあってはならない。終了時刻がない場合、時間は、連続要求であると想定される。
【１１７０】
応答
ＯＫ
要求は成功した。ビデオは、指定されたストリーム内の指定されたデータ接続で到着を始める。この応答は以下のフィールドを持つ。
【１１７１】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
ビデオが送信されるデータ接続。このフィールドは、常に、コマンド応答の中にある。
【１１７２】
Ｓｔｒｅａｍ−ｉｄ
ビデオ・ストリームのストリームｉｄ。このフィールドは、常に、コマンド応答の中にある。
【１１７３】
Ｎｏ  ｓｕｃｈ  ｃａｍｅｒａ
要求されたカメラは存在しない。ビデオはストリーミングされない。
【１１７４】
Ｆｅｔｃｈ  Ｆｒａｍｅ
このコマンドは、フレーム・シーケンス番号、カメラ、および位置指定子（次、現在、または前）が与えられた場合、サーバ（つまり、アクセス・エンジン２０３）から単一フレームをフェッチする。これにより、クライアント（つまり、ビューア２２００）は、順方向または逆方向に、１フレームずつビデオ・フレームのセクションを辿る。
【１１７５】
コマンド：ｆｒａｍｅ
パラメータ：Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。
【１１７６】
Ｃａｍｅｒａ−ｉｄ
フレームを生成したカメラのｉｄ。
【１１７７】
Ｓｅｑ−ｎｕｍ
参照フレームのシーケンス番号。
【１１７８】
位置
ｓｅｑ−ｎｕｍに関して取り出すフレームを参照する「ｃｕｒｒｅｎｔ」、「ｎｅｘｔ」、または「ｐｒｅｖｉｏｕｓ」のうちの１つ。「Ｃｕｒｒｅｎｔ」は、与えられたｓｅｑ−ｎｕｍに最も近いフレームを取得することを意味する。最も近いフレームが２つある場合、一番最近のものが返される。「ｎｅｘｔ」は、与えられたシーケンス番号の後の次のフレームを返し、「ｐｒｅｖｉｏｕｓ」は、与えられたシーケンス番号の前の前のフレームを返す。
【１１７９】
応答：
ＯＫ
要求は成功した。フレームは、返されたストリームの中で、返された接続ｉｄ上に到着する。この応答は以下のフィールドを持つ。
【１１８０】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
フレームが届く接続ｉｄ。これは、クライアント（つまり、ビューア２２００）が開いているデータ接続のうちの１つとなる。このフィールドは、常に、コマンド応答の中にある。
【１１８１】
Ｓｔｒｅａｍ−ｉｄ
フレームが届くストリームｉｄ。このフィールドは、コマンド応答の中にある。
【１１８２】
Ｎｏ  ｖｉｄｅｏ
使用可能なフレームがないため要求は失敗した。これは、例えばビデオ内の最後のフレームの後の次のフレームが要求された場合に発生することがある。
【１１８３】
Ｎｏ  ｓｕｃｈ  ｃａｍｅｒａ
要求されたカメラは存在しない。
【１１８４】
Ｆｅｔｃｈ  ｅｖｅｎｔ
このコマンドは、サーバ（つまり、アクセス・エンジン２０３）から与えられた時間範囲内のイベント・データを要求する。また、ロケーション、ゾーン、またはカメラのオプション・パラメータを持つこともできる。
【１１８５】
コマンド：ｅｖｅｎｔ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。
【１１８６】
Ｔｉｍｅ−ｒａｎｇｅ
イベントが発生した時間範囲。これは、ビデオ要求と同じ形式である。このパラメータは必須である。
【１１８７】
Ｃａｍｅｒａ
このカメラに関係するイベントを返す。このパラメータは必須である。
【１１８８】
応答：
ＯＫ
要求は成功した。イベント・データは、返されたデータ接続およびストリーム上に到着し始める。この応答は以下のフィールドを持つ。
【１１８９】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
イベント・データが到着する接続の接続ｉｄ。これは、クライアント（つまり、ビューア２２００）が開いているデータ接続のうちの１つとなる。このフィールドは、常に、コマンド応答の中にある。
【１１９０】
Ｓｔｒｅａｍ−ｉｄ
イベント・データが届くストリームｉｄ。このフィールドは、常に、コマンド応答の中にある。
【１１９１】
Ｎｏ  ｓｕｃｈ  ｃａｍｅｒａ
指定されたカメラは存在しない。
【１１９２】
Ｔｏｏ  ｍｕｃｈ  ｄａｔａ
送信するイベント・データが多すぎるため、サーバ（つまり、アクセス・エンジン２０３）は、要求を完了することができない。クライアント（つまり、ビューア２２００）は、小さな時間範囲を要求し、複数のさらに小さなチャンクで要求を完了しなければならない。
【１１９３】
Ｎｏ  ｅｖｅｎｔｓ  ｉｎ  ｒａｎｇｅ
指定されたクエリ内にイベント・データがない。
【１１９４】
Ｐａｕｓｅ  ｓｔｒｅａｍ
このコマンドは、進行中のストリームを一時停止する。ビデオとイベントの両方に適用可能である。ストリームは、ストリームに対しｒｅｓｕｍｅを呼び出すことにより後から再開できる。
【１１９５】
コマンド：ｐａｕｓｅ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、一時停止させるストリームを含むデータ接続の接続ｉｄではない。
【１１９６】
Ｓｔｒｅａｍ−ｉｄ
一時停止させるビデオまたはイベント・ストリームのストリームｉｄ。
【１１９７】
応答：
ＯＫ
コマンドは正常に完了した。ストリームは、近い将来一時停止される。いくつかのブロブは、そのまま、ネットワークのバッファリングにより、アクセス・エンジン２０３から受信できる。
【１１９８】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームが存在しない。
【１１９９】
Ｒｅｓｕｍｅ  ｓｔｒｅａｍ
このコマンドは、すでに一時停止されているストリームを再開する。ストリームは、ちょうど一時停止されたところから継続する。
【１２００】
コマンド：ｒｅｓｕｍｅ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、再開させるストリームを含む接続の接続ｉｄではない。
【１２０１】
応答：
ＯＫ
コマンドは正常に完了した。ストリームは、そのデータについて再開される。
【１２０２】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームが存在しない。
【１２０３】
Ｎｅｘｔ  ｆｒａｍｅ
一時停止ストリーム内の次のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、（複数の）次のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
【１２０４】
コマンド：ｎｅｘｔ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、フレームを取り出したいストリームを含む接続の接続ｉｄではない。
【１２０５】
Ｓｔｒｅａｍ−ｉｄ
フレームを取り出したいストリームのストリームｉｄ。
【１２０６】
応答：
ＯＫ
コマンドは正常に完了した。１つのフレームがデータ接続上でクライアント（つまり、ビューア２２００）に送信される。
【１２０７】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームが存在しない。
【１２０８】
Ｐｒｅｖ  ｆｒａｍｅ
一時停止ストリーム内の前のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、前のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
【１２０９】
コマンド：ｐｒｅｖ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、フレームを取り出したいストリームを含む接続の接続ｉｄではない。
【１２１０】
Ｓｔｒｅａｍ−ｉｄ
フレームを取り出したいストリームのストリームｉｄ。
【１２１１】
応答：
ＯＫ
コマンドは正常に完了した。１つのフレームがデータ接続上でクライアント（つまり、ビューア２２００）に送信される。
【１２１２】
Ｍｏｄｉｆｙ  ｖｉｄｅｏ  ｓｔｒｅａｍ
このコマンドは、指定されたビデオ・ストリームのフレーム速度を修正する。ストリーミングされる実際のフレーム速度は、指定されたフレーム速度と異なる場合がある。
【１２１３】
コマンド：ｍｏｄｉｆｙ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、修正したいストリームを含む接続の接続ｉｄではない。
【１２１４】
Ｓｔｒｅａｍ−ｉｄ
修正するビデオ・ストリームのストリームｉｄ。これは、ビデオ・ストリームでなければならない。
【１２１５】
Ｆｒａｍｅ＿ｒａｔｅ
ストリームが変更されなければならないフレーム速度。これは、絶対値（つまり、２０）、または相対値（つまり、−２）とすることができる。プラスまたはマイナス記号で始まる値は、相対値である。フレーム速度は、サーバ（つまり、アクセス・エンジン２０３）が使用可能である値よりも高くすることはできない。
【１２１６】
Ｒａｎｇｅ
要求の範囲を変更する。これにより、ストリームは、範囲の先頭から再び開始する。
【１２１７】
Ｐｌａｙ＿ｒａｔｅ
ストリームの再生速度を変更する。これは、ストリームが最初に要求されたときの再生速度を設定するのと同じ影響を持つ。ビデオ・ストリームの位置は変化しない。
【１２１８】
Ｔｒａｎｓｆｅｒ
ビデオの「ｔｒａｎｓｆｅｒ」フラグをセットまたはクリアする。これは、ストリームが要求されたときの設定と同じ影響を持つ。
【１２１９】
応答：
ＯＫ
コマンドは正常に完了した。この応答が受信された後、その時点以降のすべてのフレームは、新しいフレーム速度になる。
【１２２０】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームは存在しないか、またはこのクライアント（つまり、ビューア２２００）に送信されていない。
【１２２１】
Ｎｏｔ  ａ  ｖｉｄｅｏ  ｓｔｒｅａｍ
指定されたストリームは、ビデオ・ストリームではない。
【１２２２】
Ｓｔｏｐ  ｓｔｒｅａｍ
このコマンドは、クライアント（つまり、ビューア２２００）に現在送信されているストリームを停止する。これは、イベント要求などのビデオ・ストリームを含まない。
【１２２３】
コマンド：ｓｔｏｐ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、停止すべきストリームを含む接続の接続ｉｄではない。
【１２２４】
Ｓｔｒｅａｍ−ｉｄ
停止すべきストリームｉｄ。
【１２２５】
応答：
ＯＫ
コマンドは正常に完了した。ストリームは、停止される。「ｃｌｏｓｅ」ブロブは、ストリーム内の最後のブロブを示すためにストリームを介して送信される。クライアント（つまり、ビューア２２００）はこのブロブを受信した後、ｓｔｒｅａｍ−ｉｄは有効でなくなる。
【１２２６】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームは存在しないか、またはこのクライアント（つまり、ビューア２２００）に送信されていない。
【１２２７】
Ｋｅｅｐ  ａｌｉｖｅ
このコマンドは、ｎｏ−ｏｐコマンドであり、接続が閉じられないようにするために定期的にクライアント（つまり、ビューア２２００）によりサーバ（つまり、アクセス・エンジン２０３）に送信されなければならない。クライアント（つまり、ビューア２２００）がコマンド接続上で他のデータを送信していない場合にのみ必要である。
【１２２８】
コマンド：ｋｅｅｐａｌｉｖｅ
パラメータ：なし
応答
ＯＫ
このコマンドは失敗しえない。どのデータ接続にもブロブは送信されない。
【１２２９】
データ接続の開始
クライアント（つまり、ビューア２２００）がコマンド接続を行い、セットアップ・コマンドを発行した後、クライアント（つまり、ビューア２２００）は、サーバ（つまり、アクセス・エンジン２０３）との１つまたは複数のデータ接続を行う必要がある。これは、ただ１つのパラメータ、つまり、データ接続の接続ｉｄとともに、コマンドをサーバ（つまり、アクセス・エンジン２０３）に発行するのと同じ方法で実行される。
【１２３０】
GET
／canvas／access_engine／stream?command=data&connection_
id=2345&command_connection=1234 HTTP／1.0
Host: ＜access server host＞
Canvas-protocol-version: 1.0
Canvas-client- operator interface
Canvas-client-version: 1.0
Connection: keep-alive
これに対する可能な応答は以下のとおりである。
【１２３１】
ＯＫ
データ接続はこれで準備完了である。サーバ（つまり、アクセス・エンジン２０３）は、チャンク符号を指定し、ＨＴＴＰ応答は、終了しない。
【１２３２】
Ｉｎｖａｌｉｄ  ｄａｔａ  ｃｏｎｎｅｃｔｉｏｎ  ｉｄ
与えられた接続ｉｄが割り当てられていないか、与えられたコマンドｉｄに割り当てられていないか、またはデータ接続ではない。
【１２３３】
Ｉｎｖａｌｉｄ  ｃｏｍｍａｎｄ  ｃｏｎｎｅｃｔｉｏｎ  ｉｄ
与えられたコマンド接続ｉｄは、有効なコマンド接続ｉｄでないか、またはそのデータ接続に関連付けられていない。
【１２３４】
Ｔｏｏ  ｍａｎｙ  ｄａｔａ  ｃｏｎｎｅｃｔｉｏｎｓ
与えられたコマンド接続には、すでに必要な回数のデータ接続がある。
【１２３５】
ＯＫ応答が受信された後、ＨＴＴＰチャンク符号化を使用する上記形式のデータが到着する。クライアントでは、ブロブ全体が単一チャンクに含まれことを想定することも、それぞれのチャンクが単一のブロブのみを含むことも想定すべきでない。
【１２３６】
付録Ｂ：ブロブの形式
アクセス・エンジン２０３とビューア２２００との間の通信で使用されるブロブの形式を以下に示す。
【１２３７】
「Ｉｍａｇｅ」ブロブ
struct AE_VideoBlob
{
CNV_Time       time;
Image          im;
}
それぞれのビデオ・ブロブは、時間構造体の中で指定された時刻の単一のｊｐｅｇ画像を含む。時刻構造体は、年の後に、当年の０から始まる日の通し番号（つまり、１月１日は日０、２月２日は日３２）、フレームが記録された日までのミリ秒数が続く。
【１２３８】
「Ｅｖｅｎｔ」ブロブ
struct event
{
uint16         num_events;
struct event   events[];
}；
イベントの数は、番号の後のイベントの数である。それぞれのイベントは、改行文字により区切られる。
【１２３９】
「Ｓｔａｒｔ」ブロブ
struct start
{
uint32          connection_id;
}
これは、データ接続上で送信される第１のブロブである。これは、データ・ストリームの接続ｉｄを含む。ブロブのストリームｉｄは、０に設定される。
【１２４０】
「Ｋｅｅｐａｌｉｖｅ」ブロブ
このブロブは、タイムアウトにより介在するプロキシ・サーバが接続を閉じるのを防ぐために一定の不活動期間の後にクライアント（ビューア２２００）に送信される。接続上で他の活動がある場合（ストリーミング・ビデオなど）、ｋｅｅｐａｌｉｖｅブロブは送信されない。このようなブロブは、クライアント（つまり、ビューア２２００）によるタイミングに関して依存されるべきでない。このブロブ・タイプには付加データはない。
【１２４１】
「Ｅｎｄ  Ｓｔｒｅａｍ」ブロブ
struct start
{
uint32          stream_id;
}
「Ｅｎｄ  ｓｔｒｅａｍ」ブロブは、ストリームが終了している場合に送信される。これは、アクセス・エンジン２０３がストリームを終了しつつあり、クライアント（ビューア２２００）がもはやこのストリームからブロブを受信しなくなることを意味する。終了したストリームを修正する他のすべての要求は失敗する。
【１２４２】
「Ｃｌｏｓｅ  Ｓｔｒｅａｍ」ブロブ
「Ｃｌｏｓｅ  ｓｔｒｅａｍ」ブロブは、データ接続上の最後のブロブとして送信される。クライアント（ビューア２２００）は、ビューアが「ｃｌｏｓｅ  ｓｔｒｅａｍ」ブロブを受信すると、接続を閉じる。このブロブ・タイプには付加データはない。
【１２４３】
「Ｎｏ  ｖｉｄｅｏ」ブロブ
struct no_video_blob
{
CNV_Time        curr_time;
CNV_Time        next_time;
}
「Ｎｏ  ｖｉｄｅｏ」ブロブは、ビデオはまだ来るが、現在、ストリーム内の現在時刻には何もない場合に、ビデオ・ブロブの代わりに、クライアント（つまり、ビューア２２００）に送信される。これらのブロブは、ｎｏ  ｖｉｄｅｏ期間に定期的に送信されるが、ビデオと同じ速度では送信されない。現在時刻は、ストリーム内の現在時刻である。この現在時刻値は、欠落ビデオの期間中にアクセス・エンジン２０３との同期を保持するためにクライアント（つまり、ビューア２２００）により使用されることができる。次のフレームまでの時間は、ストリーム内の次のフレームが送信されるべきときまでの時間である。
【１２４４】
付録Ｃ：アクセス・エンジンおよびビューアによって使用されるヘッダ、応答、およびコマンド
ヘッダ
以下のヘッダは、クライアント（つまり、ビューア２２００）により送信されるすべてまたはほとんどの要求、またはサーバ（つまり、アクセス・エンジン２０３）により送信される応答内に存在していなければならない。特定のコマンドに関して他のヘッダを含めることもできる。
【１２４５】
nvr-protocol-version: ＜version＞
クライアント（つまり、ビューア２２００）またはサーバ（つまり、アクセス・エンジン２０３）が使用しているプロトコルのバージョン。ｖｅｒｓｉｏｎはプロトコルのバージョンを指定する整数である。本書では、ｖｅｒｓｉｏｎ  １と記述する。これは、クライアント（つまり、ビューア２２００）からのすべての要求、およびサーバ（つまり、アクセス・エンジン２０３）からの応答に含まれなければならない。
【１２４６】
nvr-client: ＜name＞
クライアント（つまり、ビューア２２００）の名前。ｎａｍｅは、ブラウザを記述するために使用されるＵｓｅｒ−ａｇｅｎｔ文字列などのような自由形式文字列である。これは、クライアント（つまり、ビューア２２００）からのすべての要求に含まれなければならない。
【１２４７】
nvr-client-version : ＜version＞
クライアント（つまり、ビューア２２００）のバージョン。ｖｅｒｓｉｏｎは、「１．２．３」の形のドット数値記表文字列である。これは、クライアント（つまり、ビューア２２００）からのすべての要求に含まれなければならない。
【１２４８】
nvr-server: ＜name＞
サーバ（つまり、アクセス・エンジン２０３）の名前。ｎａｍｅは、Ｗｅｂサーバ応答の中のＳｅｒｖｅｒ文字列のような自由形式文字列であり、サーバ（つまり、アクセス・エンジン２０３）からのすべての応答に含まれなければならない。
【１２４９】
nvr-server-version : ＜version＞
サーバのバージョン。ｖｅｒｓｉｏｎは、「１．２．３」の形式のドット数値記表文字列であり、サーバ（つまり、アクセス・エンジン２０３）からのすべての応答に含まれなければならない。
【１２５０】
nvr-connection-id: ＜id＞
これは、現在のクライアント（つまり、ビューア２２００）接続の接続ｉｄであり、セットアップ要求を除きクライアント（つまり、ビューア２２００）からのすべての要求で送信されなければならない。ｉｄは、１０進数形式の３２ビット整数である。
【１２５１】
共通応答
いくつかの応答は、すべての、またはほとんどすべてのコマンドにわたって共通である。これらは、すべてのコマンドに関して以下で繰り返されないエラー・メッセージである。
【１２５２】
Ｉｎｔｅｒｎａｌ  ｅｒｒｏｒ
これは、未指定の発信源のサーバ（つまり、アクセス・エンジン２０３）内のエラーを示す。サーバ（つまり、アクセス・エンジン２０３）は、不規則に実行を開始する場合がある。この応答は、すべてのコマンドに適用される。
【１２５３】
Ｎｏｔ  Ｓｅｔｕｐ
クライアント（つまり、ビューア２２００）は、セットアップ・コマンドを発行していない。サーバ（つまり、アクセス・エンジン２０３）は、クライアント（つまり、ビューア２２００）がセットアップまたは再接続を呼び出すまで、セットアップまたは再接続を除き、この応答でコマンドに応答する。試みられていたコマンドは失敗し、データ接続がもし存在すればそれに対し変更が加えられていない。
【１２５４】
コマンド
以下に、制御接続６００５上でクライアント（つまり、ビューア２２００）によりサーバ（つまり、アクセス・エンジン２０３）に送信されるコマンドのリストをまとめた。これらはコマンドとして説明されているが、実際には、キャンバス・ストリーミング・サーバ「ファイル」をフェッチするＨＴＴＰ  ＧＥＴコマンドへのパラメータである。例えば、セットアップ・コマンドは、実際には、以下のＨＴＴＰコマンド（最低限のヘッダを持つ）である。
【１２５５】
GET ／webview-nvr／stream?command=setup HTTP／1.1
Host: ＜access server host＞
nvr-protocol-version: 1.0
nvr-client: operator interface
nvr-client-version: 1.0
Connection: keep-alive
応答は、標準的なＨＴＴＰ応答であり、応答のデータ・セクション内に追加情報が含まれる。例えば、次のようである。
【１２５６】
HTTP／1.0 200 OK
nvr-protocol-version: 1.0
nvr-sever: Access Engine
nvr-sever-version: 1.0
Connection: keep-alive
Keep-alive: timeout=20, max=0
Content-type: text／text
Connection-id=1234
Num-Data-connections=2
Data-connection-ids=2345, 3456
それぞれのコマンドは、ＵＲＬに入れるコマンド・テキスト、他のパラメータ、および可能な応答をリストにしたものである。
【１２５７】
Ｓｅｔｕｐ
これは、ビューア２２００が接続した後、クライアント（つまり、ビューア２２００）によりサーバ（つまり、アクセス・エンジン２０３）に送信される第１のコマンドである。これの前に送信される他のコマンドはどれも、サーバ（つまり、アクセス・エンジン２０３）からエラーを生成する。ｓｅｔｕｐは、クライアント（つまり、ビューア２２００）がセットアップ応答で示されているデータ接続回数を確定するまで完了しない。
【１２５８】
コマンド：ｓｅｔｕｐ
パラメータ：なし
応答：
ＯＫ
セットアップの第１の部分は、正常に完了した。クライアント（つまり、ビューア２２００）がデータ接続を完了するまで、セットアップ手順は終了しない。この応答の中のデータは以下のフィールドを持つ。
【１２５９】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
これは、コマンド接続のコマンド接続ｉｄを指定する。
【１２６０】
Ｄａｔａ−ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
データ接続のｉｄ
Ｎｕｍ−ｄａｔａ−ｃｏｎｎｅｃｔｉｏｎｓ
クライアント（つまり、ビューア２２００）がサーバ（つまり、アクセス・エンジン２０３）に対し開く必要があるデータの数。プロトコルのこのバージョンでは、これは常に１である。
【１２６１】
ＯＫ  ａｌｒｅａｄｙ  ｓｅｔｕｐ
クライアント（つまり、ビューア２２００）はすでにセットアップされている。データ接続はまだ有効である。この応答ではデータはない。
【１２６２】
Ｓｈｕｔｄｏｗｎ
このコマンドは、サーバ（つまり、アクセス・エンジン２０３）へのクライアント（つまり、ビューア２２００）の接続をシャットダウンするために使用される。すべてのデータ・ストリームは、閉じられ、すべてのサーバ（つまり、アクセス・エンジン２０３）リソースは、解放される。このコマンドが完了すると、ビューアは接続を閉じなければならない。クライアント（つまり、ビューア２２００）は、「ｃｌｏｓｅ」ブロブが受信されるまでデータ接続を閉じてはならない。
【１２６３】
コマンド：ｓｈｕｔｄｏｗｎ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ応答の中のクライアント（つまり、ビューア２２００）に与えられたコマンド接続ｉｄ。
【１２６４】
応答：
ＯＫ
シャットダウンは正常に完了した。クライアント（つまり、ビューア２２００）は、データ接続上で「ｃｌｏｓｅ」ブロブを予期すべきである。サーバ（つまり、アクセス・エンジン２０３）によって新しいデータは送信されないが、出力バッファ内のデータが送信されている間に遅延がありうる。
【１２６５】
Ｆｅｔｃｈ  Ｖｉｄｅｏ
このコマンドは、サーバ（つまり、アクセス・エンジン２０３）からのビデオ・データのストリーミングを開始するために使用される。クライアント（つまり、ビューア２２００）は、サーバ（つまり、アクセス・エンジン２０３）ができる限り速くビデオを転送するか、またはビューイング速度でストリーミングすることを要求することができる。サーバ（つまり、アクセス・エンジン２０３）は、ビデオ・ストリームの到達に使用される接続を決定する。
【１２６６】
コマンド：ｖｉｄｅｏ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ応答の中のクライアント（つまり、ビューア２２００）に与えられたコマンド接続ｉｄ。このパラメータは必須である。
【１２６７】
Ｆｒａｍｅ＿ｒａｔｅ
要求されたビデオの望ましいフレーム速度。これが、使用可能なフレーム速度よりも高い場合、ストリーミングは、そのまま開始し、クライアント（つまり、ビューア２２００）は、第１のビデオ・フレームの前にコマンド接続応答またはデータ接続のいずれかでこのことを通知される。この値は、０．１から２５（ＰＡＬ記録システムの場合）、または３０（ＮＴＳＣ記録システムの場合）までの範囲の値である。
【１２６８】
Ｐｌａｙ＿ｒａｔｅ
再生速度は、ビューアがビデオを見せようと望む知覚速度である。値は、１００を超える比であるため、１００は通常再生速度であり、２００は倍速であり、２５は１／４倍速である。巻き戻し再生の場合、再生速度を負の数に設定する。パラメータは、オプションである。
【１２６９】
Ｃａｍｅｒａ−ｉｄ
ビデオが生成されたカメラのｉｄ。
【１２７０】
Ｎｏ−ｓｋｉｐ
ネットワーク輻輳のため、フレームをスキップするのではなく、ビデオ内のすべてのフレームをストリーミングするようにサーバ（つまり、アクセス・エンジン２０３）に通知する論理値フラグである。このフラグは、転送が設定された場合に暗示され、設定は、転送がＵＲＬ内で設定されている値に関係なく設定される場合に常に真である。すべてのサーバがフレームのスキップをサポートしているわけではないことに注意されたい。
【１２７１】
Ｔｒａｎｓｆｅｒ
このストリームが転送ストリームであることサーバ（つまり、アクセス・エンジン２０３）に知らせる論理値フラグ。これは、２つの影響を持つ。第１に、ネットワーク輻輳に関係なくすべてのフレームが送信されるようにｎｏ−ｓｋｉｐフラグをセットすることであり、第２に、サーバ（つまり、アクセス・エンジン２０３）が実時間ではなく可能な限り速くビデオを送信しようとすることを意味する。サーバ（つまり、アクセス・エンジン２０３）は、そのまま、転送により使用される帯域幅を絞り、ネットワーク帯域幅の実時間ビデオ転送の不足を生じさせないようにすることを選択することができる。
【１２７２】
Ｔｉｍｅ−ｒａｎｇｅ
これは、取り出すビデオの時間範囲または特別な値「ｌｉｖｅ」のいずれかである。「ｌｉｖｅ」が設定されている場合、カメラからのライブ・フィードは、ほぼ指定されたフレーム速度で供給される。ライブ要求では、転送およびｎｏ−ｓｋｉｐオプションを無視する。時間範囲のフォーマットは：
Yyyymmdd_hhmmss[uuu][_yyyymmdd_hhmmss[uuu]]
つまり、４桁の年、２桁の月、２桁の日、下線、２桁の時（２４時間ＵＴＣ）、２桁の分、オプションの３桁のミリ秒、オプションの下線、その後、開始時刻と同じ形式のオプションの終了時刻。終了時刻がない場合、後続の下線はあってはならない。終了時刻がない場合、時間は、連続要求であると想定される。
【１２７３】
応答
ＯＫ
要求は成功した。ビデオは、指定されたストリーム内の指定されたデータ接続で到着を始める。この応答は以下のフィールドを持つ。
【１２７４】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
ビデオが送信されるデータ接続。このフィールドは、常に、コマンド応答の中にある。
【１２７５】
Ｓｔｒｅａｍ−ｉｄ
ビデオ・ストリームのストリームｉｄ。このフィールドは、常に、コマンド応答の中にある。
【１２７６】
Ｎｏ  ｓｕｃｈ  ｃａｍｅｒａ
要求されたカメラは存在しない。ビデオはストリーミングされない。
【１２７７】
Ｆｅｔｃｈ  Ｆｒａｍｅ
このコマンドは、フレーム・シーケンス番号、カメラ、および位置指定子（次、現在、または前）が与えられた場合、サーバ（つまり、アクセス・エンジン２０３）から単一フレームをフェッチする。これにより、クライアント（つまり、ビューア２２００）は、順方向または逆方向に、１フレームずつビデオ・フレームのセクションを辿る。
【１２７８】
コマンド：ｆｒａｍｅ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。
【１２７９】
Ｃａｍｅｒａ−ｉｄ
フレームを生成したカメラのｉｄ。
【１２８０】
Ｓｅｑ−ｎｕｍ
参照フレームのシーケンス番号。
【１２８１】
位置
ｓｅｑ−ｎｕｍに関して取り出すフレームを参照する「ｃｕｒｒｅｎｔ」、「ｎｅｘｔ」、または「ｐｒｅｖｉｏｕｓ」のうちの１つ。「Ｃｕｒｒｅｎｔ」は、与えられたｓｅｑ−ｎｕｍに最も近いフレームを取得することを意味する。最も近いフレームが２つある場合、一番最近のものが返される。「ｎｅｘｔ」は、与えられたシーケンス番号の後の次のフレームを返し、「ｐｒｅｖｉｏｕｓ」は、与えられたシーケンス番号の前の前のフレームを返す。
【１２８２】
応答：
ＯＫ
要求は成功した。フレームは、返されたストリームの中で、返された接続ｉｄ上に到着する。この応答は以下のフィールドを持つ。
【１２８３】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
フレームが届く接続ｉｄ。これは、クライアント（つまり、ビューア２２００）が開いているデータ接続のうちの１つとなる。このフィールドは、常に、コマンド応答の中にある。
【１２８４】
Ｓｔｒｅａｍ−ｉｄ
フレームが届くストリームｉｄ。このフィールドは、コマンド応答の中にある。
【１２８５】
Ｎｏ  ｖｉｄｅｏ
使用可能なフレームがないため要求は失敗した。これは、例えばビデオ内の最後のフレームの後の次のフレームが要求された場合に発生することがある。
【１２８６】
Ｎｏ  ｓｕｃｈ  ｃａｍｅｒａ
要求されたカメラは存在しない。
【１２８７】
Ｆｅｔｃｈ  ｅｖｅｎｔ
このコマンドは、サーバ（つまり、アクセス・エンジン２０３）から与えられた時間範囲内のイベント・データを要求する。また、ロケーション、ゾーン、またはカメラのオプション・パラメータを持つこともできる。
【１２８８】
コマンド：ｅｖｅｎｔ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。
【１２８９】
Ｔｉｍｅ−ｒａｎｇｅ
イベントが発生した時間範囲。これは、ビデオ要求と同じ形式である。このパラメータは必須である。
【１２９０】
Ｃａｍｅｒａ
このカメラに関係するイベントを返す。このパラメータは必須である。
【１２９１】
応答：
ＯＫ
要求は成功した。イベント・データは、返されたデータ接続およびストリーム上に到着し始める。この応答は以下のフィールドを持つ。
【１２９２】
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
イベント・データが到着する接続の接続ｉｄ。これは、クライアント（つまり、ビューア２２００）が開いているデータ接続のうちの１つとなる。このフィールドは、常に、コマンド応答の中にある。
【１２９３】
Ｓｔｒｅａｍ−ｉｄ
イベント・データが届くストリームｉｄ。このフィールドは、常に、コマンド応答の中にある。
【１２９４】
Ｎｏ  ｓｕｃｈ  ｃａｍｅｒａ
指定されたカメラは存在しない。
【１２９５】
Ｔｏｏ  ｍｕｃｈ  ｄａｔａ
送信するイベント・データが多すぎるため、サーバ（つまり、アクセス・エンジン２０３）は、要求を完了することができない。クライアント（つまり、ビューア２２００）は、小さな時間範囲を要求し、複数のさらに小さなチャンクで要求を完了しなければならない。
【１２９６】
Ｎｏ  ｅｖｅｎｔｓ  ｉｎ  ｒａｎｇｅ
指定されたクエリ内にイベント・データがない。
【１２９７】
Ｐａｕｓｅ  ｓｔｒｅａｍ
このコマンドは、進行中のストリームを一時停止する。ビデオとイベントの両方に適用可能である。ストリームは、ストリームに対しｒｅｓｕｍｅを呼び出すことにより後から再開できる。
【１２９８】
コマンド：ｐａｕｓｅ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、一時停止させるストリームを含むデータ接続の接続ｉｄではない。
【１２９９】
Ｓｔｒｅａｍ−ｉｄ
一時停止させるビデオまたはイベント・ストリームのストリームｉｄ。
【１３００】
応答：
ＯＫ
コマンドは正常に完了した。ストリームは、近い将来一時停止される。いくつかのブロブは、まだネットワークのバッファリングにより、アクセス・エンジン２０３から受信できる。
【１３０１】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームが存在しない。
【１３０２】
Ｒｅｓｕｍｅ  ｓｔｒｅａｍ
このコマンドは、すでに一時停止されているストリームを再開する。ストリームは、ちょうど一時停止されたところから継続する。
【１３０３】
コマンド：ｒｅｓｕｍｅ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、再開させるストリームを含む接続の接続ｉｄではない。
【１３０４】
応答：
ＯＫ
コマンドは正常に完了した。ストリームは、そのデータについて再開される。
【１３０５】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームが存在しない。
【１３０６】
Ｎｅｘｔ  ｆｒａｍｅ
一時停止ストリーム内の次のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、（複数の）次のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
【１３０７】
コマンド：ｎｅｘｔ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、フレームを取り出したいストリームを含む接続の接続ｉｄではない。
【１３０８】
Ｓｔｒｅａｍ−ｉｄ
フレーム形式を取り出したいストリームのストリームｉｄ。
【１３０９】
応答：
ＯＫ
コマンドは正常に完了した。１つのフレームがデータ接続上でクライアント（つまり、ビューア２２００）に送信される。
【１３１０】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームが存在しない。
【１３１１】
Ｐｒｅｖ  ｆｒａｍｅ
一時停止ストリーム内の前のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、前のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
【１３１２】
コマンド：ｐｒｅｖ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、フレームを取り出したいストリームを含む接続の接続ｉｄではない。
【１３１３】
Ｓｔｒｅａｍ−ｉｄ
フレーム形式を取り出したいストリームのストリームｉｄ。
【１３１４】
応答：
ＯＫ
コマンドは正常に完了した。１つのフレームがデータ接続上でクライアント（つまり、ビューア２２００）に送信される。
【１３１５】
Ｍｏｄｉｆｙ  ｖｉｄｅｏ  ｓｔｒｅａｍ
このコマンドは、指定されたビデオ・ストリームのフレーム速度を修正する。ストリーミングされる実際のフレーム速度は、指定されたフレーム速度と異なる場合がある。
【１３１６】
コマンド：ｍｏｄｉｆｙ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、修正したいストリームを含む接続の接続ｉｄではない。
【１３１７】
Ｓｔｒｅａｍ−ｉｄ
修正するビデオ・ストリームのストリームｉｄ。これは、ビデオ・ストリームでなければならない。
【１３１８】
Ｆｒａｍｅ＿ｒａｔｅ
ストリームが変更されなければならないフレーム速度。これは、絶対値（つまり、２０）、または相対値（つまり、−２）とすることができる。プラスまたはマイナス記号で始まる値は、相対値である。フレーム速度は、サーバ（つまり、アクセス・エンジン２０３）が使用可能である値よりも高くすることはできない。
【１３１９】
Ｒａｎｇｅ
要求の範囲を変更する。これにより、ストリームは、範囲の先頭から再び開始する。
【１３２０】
Ｐｌａｙ＿ｒａｔｅ
ストリームの再生速度を変更する。これは、ストリームが最初に要求されたときの再生速度を設定するのと同じ影響を持つ。ビデオ・ストリームの位置は変化しない。
【１３２１】
Ｔｒａｎｓｆｅｒ
ビデオの「ｔｒａｎｓｆｅｒ」フラグをセットまたはクリアする。これは、ストリームが要求されたときの設定と同じ影響を持つ。
【１３２２】
応答：
ＯＫ
コマンドは正常に完了した。この応答が受信された後、その時点以降のすべてのフレームは、新しいフレーム速度になる。
【１３２３】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームは存在しないか、またはこのクライアント（つまり、ビューア２２００）に送信されていない。
【１３２４】
Ｎｏｔ  ａ  ｖｉｄｅｏ  ｓｔｒｅａｍ
指定されたストリームは、ビデオ・ストリームではない。
【１３２５】
Ｓｔｏｐ  ｓｔｒｅａｍ
このコマンドは、クライアント（つまり、ビューア２２００）に現在送信されているストリームを停止する。これは、イベント要求などのビデオ・ストリームを含まない。
【１３２６】
コマンド：ｓｔｏｐ
パラメータ：
Ｃｏｎｎｅｃｔｉｏｎ−ｉｄ
セットアップ・コマンドによりクライアント（つまり、ビューア２２００）に割り当てられたコマンド接続ｉｄ。これは、停止すべきストリームを含む接続の接続ｉｄではない。
【１３２７】
Ｓｔｒｅａｍ−ｉｄ
停止すべきストリームｉｄ。
【１３２８】
応答：
ＯＫ
コマンドは正常に完了した。ストリームは、停止される。「ｃｌｏｓｅ」ブロブは、ストリーム内の最後のブロブを示すためにストリームを介して送信される。クライアント（つまり、ビューア２２００）がいったんこのブロブを受信すると、ｓｔｒｅａｍ−ｉｄは有効でなくなる。
【１３２９】
Ｎｏ  ｓｕｃｈ  ｓｔｒｅａｍ
指定されたストリームは存在しないか、またはこのクライアント（つまり、ビューア２２００）に送信されていない。
【１３３０】
Ｋｅｅｐ  ａｌｉｖｅ
このコマンドは、ｎｏ−ｏｐコマンドであり、接続が閉じられないようにするために定期的にクライアント（つまり、ビューア２２００）によりサーバ（つまり、アクセス・エンジン２０３）に送信されなければならない。クライアント（つまり、ビューア２２００）がコマンド接続上で他のデータを送信していない場合にのみ必要である。
【１３３１】
コマンド：ｋｅｅｐａｌｉｖｅ
パラメータ：なし
応答
ＯＫ
このコマンドは失敗しえない。どのデータ接続にもブロブは送信されない。
【１３３２】
データ接続の開始
クライアント（つまり、ビューア２２００）がコマンド接続を行い、セットアップ・コマンドを発行した後、クライアント（つまり、ビューア２２００）は、サーバ（つまり、アクセス・エンジン２０３）との１つまたは複数のデータ接続を行う必要がある。これは、ただ１つのパラメータ、つまり、データ接続の接続ｉｄとともに、コマンドをサーバ（つまり、アクセス・エンジン２０３）に発行するのと同じ方法で実行される。
【１３３３】
GET
／canvas／access_engine／stream?command=data&connection_
id=2345&command_connection=1234 HTTP／1.0
Host: ＜access server host＞
Canvas-protocol-version: 1.0
Canvas-client: operator interface
Canvas-client-version: 1.0
Connection: keep-alive
これに対する可能な応答は以下のとおりである。
【１３３４】
ＯＫ
データ接続はこれで準備完了である。サーバ（つまり、アクセス・エンジン２０３）は、チャンク符号を指定し、ＨＴＴＰ応答は、終了しない。
【１３３５】
Ｉｎｖａｌｉｄ  ｄａｔａ  ｃｏｎｎｅｃｔｉｏｎ  ｉｄ
与えられた接続ｉｄが割り当てられていないか、与えられたコマンドｉｄに割り当てられていないか、またはデータ接続ではない。
【１３３６】
Ｉｎｖａｌｉｄ  ｃｏｍｍａｎｄ  ｃｏｎｎｅｃｔｉｏｎ  ｉｄ
与えられたコマンド接続ｉｄは、有効なコマンド接続ｉｄでないか、またはそのデータ接続に関連付けられていない。
【１３３７】
Ｔｏｏ  ｍａｎｙ  ｄａｔａ  ｃｏｎｎｅｃｔｉｏｎｓ
与えられたコマンド接続には、すでに必要な回数のデータ接続がある。
【１３３８】
ＯＫ応答が受信された後、ＨＴＴＰチャンク符号化を使用する上記形式のデータが到着する。クライアントでは、ブロブ全体が単一チャンクに含まれことを想定することも、それぞれのチャンクが単一のブロブのみを含むことも想定すべきでない。
【１３３９】
付録Ａ
アクセス・エンジンとビューアとの間の通信で使用されるブロブの形式の説明。
【１３４０】
付録Ｂ
アクセス・エンジンおよびビューアにより使用されるヘッダ、応答、およびコマンドの説明。
【図面の簡単な説明】
【１３４１】
【図１】説明される配置を実施できる映像監視システムの概略図である。
【図２】図１のシステムのストレージ・サーバをさらに詳しく示した図である。
【図３】図２のストレージ・サーバ内に構成された記録エンジンの複数のモジュールを示す図である。
【図４】ストレージ・サーバ構成オブジェクトを構成する要素の階層を示す図である。
【図５】図４のＧＥＮＥＲＡＬ要素を詳細に示す図である。
【図６】図４のＥＭＡＩＬ要素を詳細に示す図である。
【図７】図４のＬＩＭＩＴＥＲ要素を詳細に示す図である。
【図８】図４のＤＲＩＶＥ要素を詳細に示す図である。
【図９】図４のＣＡＭＳＶＲ要素を詳細に示す図である。
【図１０】図９のＰＲＥＳＥＴ要素を詳細に示す図である。
【図１１】図４のＣＡＭＥＲＡ要素を詳細に示す図である。
【図１２】図１１のＳＴＡＴＥ要素を詳細に示す図である。
【図１３】図１１のＳＣＨＥＤ要素を詳細に示す図である。
【図１４】図１３のＢＡＳＥ要素を詳細に示す図である。
【図１５】図１３のＭＯＴＩＯＮ要素を詳細に示す図である。
【図１６】図１３のＳＥＮＳＯＲ要素を詳細に示す図である。
【図１７】図１５および１６のＥＶＥＮＴ要素を詳細に示す図である。
【図１８】インデックス・ファイルとメディア・ファイルとの関係を示す図である。
【図１９】ＡＶＩ（登録商標）ファイル形式に従って構成されたメディア・ファイル内のテキスト・サンプルの配置例の図である。
【図２０】ビデオ・ファイルの作成およびクローズを行うプロセスを示す流れ図である。
【図２１】ビデオ・ファイルを初期化するプロセスを示す流れ図である。
【図２２】本明細書で説明されているビューアが実装されうる汎用コンピュータの概略ブロック図である。
【図２３】本明細書で説明されているストレージ・サーバが実装されうる汎用コンピュータの概略ブロック図である。
【図２４】メディア・ファイルを生成するプロセスを示す流れ図である。
【図２５】インデックス・ファイルを生成するプロセスを示す流れ図である。
【図２６】ビデオ・ファイル・ペアをクローズするプロセスを示す流れ図である。
【図２７】メディア・ファイルを完了するプロセスを示す流れ図である。
【図２８】インデックス・ファイルを完了するプロセスを示す流れ図である。
【図２９】図１８のメディア・ファイルにサンプル（つまり、フレーム）を書き込むプロセスを示す流れ図である。
【図３０】ビデオ・ファイル限度をチェックするプロセスを示す流れ図である。
【図３１】サンプルをビデオ・トラックに書き込むプロセスを示す流れ図である。
【図３２】サンプル・プロパティをテキスト・トラックに書き込むプロセスを示す流れ図である。
【図３３】サンプルをトラックに追加するプロセスを示す流れ図である。
【図３４】サンプルをメディア・ファイルに追加するプロセスを示す流れ図である。
【図３５】イベント・ファイルを作成するプロセスを示す流れ図である。
【図３６】イベント・ファイルを完了するプロセスを示す流れ図である。
【図３７】カメラ・サーバ接続を確立するプロセスを示す流れ図である。
【図３８】画像応答を受信するプロセスを示す流れ図である。
【図３９】サンプル（つまり、フレーム）を処理するプロセスを示す流れ図である。
【図４０】記録エンジンにより実行されるようなＲＥ＿Ｇｅｔコマンドを処理するプロセスを示す流れ図である。
【図４１】記録エンジンにより実行されるようなＲＥ＿Ｓｅｔコマンドを処理するプロセスを示す流れ図である。
【図４２】カメラ・サーバ詳細を設定するプロセスを示す流れ図である。
【図４３】カメラ・サーバ・スケジュール詳細を設定するプロセスを示す流れ図である。
【図４４】記録エンジンにより実行されるようなＲＥ＿Ｔｒｉｇｇｅｒコマンドを処理するプロセスを示す流れ図である。
【図４５】記録エンジンにより実行されるようなＮＶＲ＿ＵｓｅｒＧｅｔコマンドを処理するプロセスを示す流れ図である。
【図４６】記録エンジンにより実行されるようなＮＶＲ＿ＵｓｅｒＳｅｔコマンドを処理するプロセスを示す流れ図である。
【図４７】記録エンジンにより実行されるようなＮＶＲ＿ＡｄｍｉｎＳｅｔコマンドを処理するプロセスを示す流れ図である。
【図４８】ストレージ・サーバ構成ツール・プロセスを示す流れ図である。
【図４９】構成変更をストレージ・サーバに保存するプロセスを示す流れ図である。
【図５０】ストレージ・サーバへの構成変更を監視するプロセスを示す流れ図である。
【図５１】わざとブランクにしてある。
【図５２】図２のアクセス・エンジンの概略ブロック図である。
【図５３】図５２のアクセス・エンジンの主タスクを例示する流れ図である。
【図５４】ファイル・スティッチングのためアクセス・エンジンにより使用されるデータ構造の概略ブロック図である。
【図５５】アクセス・エンジンにより実行されるビデオ・ファイル・スティッチングの流れ図である。
【図５６】図５２のアクセス・エンジンの要求処理手順の流れ図である。
【図５７】アクセス・エンジンにより実行されるビデオ・ストリーミングの流れ図である。
【図５８】アクセス・エンジンにより実行されるイベント・ファイル・ストリーミングの流れ図である。
【図５９Ａ】ビデオ・ファイル・ストリーミングの流れ図である。
【図５９Ｂ】「ｎｏ  ｖｉｄｅｏ」ブロブが送信される場合の図５９Ａのプロセスにおける複数のステップを示す流れ図である。
【図６０】アクセス・エンジンとビューアとの間の接続の概略図ブロック図である。
【図６１】図６０の接続の一実装の概略ブロック図である。
【図６２】ビューアとアクセス・エンジンとの間の接続手順の流れ図である。
【図６３】図６０の配置で使用されるデータ・ストリームのデータ形式の概略ブロック図である。
【図６４】構成およびプリファレンス画面のストレージおよびカメラ・サーバの要約を示す図である。
【図６５】ストレージ・サーバに関連付けられている多数の場所を示す図６４のダイアログの図である。
【図６６】ビューアにより表示される「ｓｅａｒｃｈ  ｒｅｓｕｌｔｓ」ダイアログを示す図である。
【図６７】「ａｄｄ  ｃａｍｅｒａ  ｓｅｒｖｅｒ」ダイアログを示す図である。
【図６８】パン、傾斜制御ツールを示す図である。
【図６９】「ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅｓ」ダイアログを示す図である。
【図７０】スケジュール・アイテム・ダイアログを示す図である。
【図７１】「ｍｏｔｉｏｎ  ｄｅｔｅｃｔｉｏｎ  ｓｅｔｔｉｎｇｓ」ダイアログを示す図である。
【図７２】「ｓｅｎｓｏｒ  ｅｖｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログを示す図である。
【図７３】「ｓｐｅｃｉａｌ  ｄａｙｓ  ｒｅｃｏｒｄｉｎｇ  ｓｃｈｅｄｕｌｅ」ダイアログを示す図である。
【図７４】「ｖｉｅｗｅｒ  ｓｅｔｔｉｎｇｓ」ダイアログを示す図である。
【図７５】ビューア構成ファイルの一実施例を示す図である。
【図７６】ビューイング画面を示す図である。
【図７７】レイアウト選択メニューを示す図である。
【図７８】位置揃えグリッドを示す図である。
【図７９】図７８の位置揃えグリッドを使用して配列された多数のビデオ・ウィンドウを示す図である。
【図８０】小さな位置揃えグリッドを示す図である。
【図８１】中くらいの位置揃えグリッドを示す図である。
【図８２】図８０の小さな位置揃えグリッドを使用して配列された多数のビデオ・ウィンドウを示す図である。
【図８３】図８１の中くらいの位置揃えグリッドを使用して配列された多数のビデオ・ウィンドウを示す図である。
【図８４】管理者用の「ｏｒｇａｎｉｓｅ  ｌａｙｏｕｔｓ」ダイアログを示す図である。
【図８５】オペレータ用の「ｏｒｇａｎｉｓｅ  ｌａｙｏｕｔｓ」ダイアログを示す図である。
【図８６】記録済みビデオ・インジケータを示す図である。
【図８７】イベント・インジケータを示す図である。
【図８８】ライブ・イベント・ログを示す図である。
【図８９】時刻表を示す図である。
【図９０】図８９の時刻表の一部を示す図である。
【図９１】再生コントロールを示す図である。
【図９２】「ｅｖｅｎｔ  ｓｅａｒｃｈ」ダイアログを示す図である。
【図９３】記録エンジン内を流れるデータ・フローを示す概略ブロック図である。
【図９４】構成変更を監視するプロセスを示す流れ図である。
【図９５】イベントをイベント・ファイルに書き込むプロセスを示す流れ図である。
【図９６】ソケット・イベントを処理するプロセスを示す流れ図である。
【図９７】次のコマンドを送信するプロセスを示す流れ図である。
【図９８】ソケット読み込みを処理するプロセスを示す流れ図である。
【図９９】ソケット切断を処理するプロセスを示す流れ図である。
【図１００】制御コマンドを作成するプロセスを示す流れ図である。
【図１０１】制御応答を受信するプロセスを示す流れ図である。
【図１０２】応答プロセスを制御するプロセスを示す流れ図である。
【図１０３】通知コマンドを作成するプロセスを示す流れ図である。
【図１０４】通知応答を受信するプロセスを示す流れ図である。
【図１０５】通知応答を処理するプロセスを示す流れ図である。
【図１０６】画像コマンドを作成するプロセスを示す流れ図である。
【図１０７】イベントを生成するプロセスを示す流れ図である。
【図１０８】「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｃｏｎｆｉｇｕｒａｔｉｏｎ」ダイアログを示す図である。
【図１０９】「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｃｏｎｆｉｇｕｒａｔｉｏｎ，  ｅｖｅｎｔ  ｎｏｔｉｆｉｃａｔｉｏｎ  ｓｅｔｔｉｎｇｓ」ダイアログを示す図である。
【図１１０】「ｓｔｏｒａｇｅ  ｓｅｒｖｅｒ  ｃｏｎｆｉｇｕｒａｔｉｏｎ，  ｕｓｅｒ  ｍａｎａｇｅｍｅｎｔ  ｓｅｔｔｉｎｇｓ」ダイアログを示す図である。
【図１１１】スケジュール・スレッド・プロセスを示す流れ図である。
【図１１２】スケジュールを初期化するプロセスを示す流れ図である。
【図１１３】現在のスケジュールを処理するプロセスを示す流れ図である。
【図１１４】カメラ設定を更新するプロセスを示す流れ図である。
【図１１５】記録エンジンのカメラ制御モジュールによりカメラの制御を表す状態図である。
【図１１６】ビューアのソフトウェア・コンポーネントを示す図である。
【図１１７】特定のカメラに関連付けられた関心、知られている範囲、およびイベントの間の関係を示すグラフである。
【図１】
2007505523.tif 000011
【図２】
2007505523.tif 000012
【図３】
2007505523.tif 000013
【図４】
2007505523.tif 000014
【図５】
2007505523.tif 000015
【図６】
2007505523.tif 000016
【図７】
2007505523.tif 000017
【図８】
2007505523.tif 000018
【図９】
2007505523.tif 000019
【図１０】
2007505523.tif 000020
【図１１】
2007505523.tif 000021
【図１２】
2007505523.tif 000022
【図１３】
2007505523.tif 000023
【図１４】
2007505523.tif 000024
【図１５】
2007505523.tif 000025
【図１６】
2007505523.tif 000026
【図１７】
2007505523.tif 000027
【図１８】
2007505523.tif 000028
【図１９】
2007505523.tif 000029
【図２０】
2007505523.tif 000030
【図２１】
2007505523.tif 000031
【図２２】
2007505523.tif 000032
【図２３】
2007505523.tif 000033
【図２４】
2007505523.tif 000034
【図２５】
2007505523.tif 000035
【図２６】
2007505523.tif 000036
【図２７】
2007505523.tif 000037
【図２８】
2007505523.tif 000038
【図２９】
2007505523.tif 000039
【図３０】
2007505523.tif 000040
【図３１】
2007505523.tif 000041
【図３２】
2007505523.tif 000042
【図３３】
2007505523.tif 000043
【図３４】
2007505523.tif 000044
【図３５】
2007505523.tif 000045
【図３６】
2007505523.tif 000046
【図３７】
2007505523.tif 000047
【図３８】
2007505523.tif 000048
【図３９】
2007505523.tif 000049
【図４０】
2007505523.tif 000050
【図４１】
2007505523.tif 000051
【図４２】
2007505523.tif 000052
【図４３】
2007505523.tif 000053
【図４４】
2007505523.tif 000054
【図４５】
2007505523.tif 000055
【図４６】
2007505523.tif 000056
【図４７】
2007505523.tif 000057
【図４８】
2007505523.tif 000058
【図４９】
2007505523.tif 000059
【図５０】
2007505523.tif 000060
【図５１】
2007505523.tif 000061
【図５２】
2007505523.tif 000062
【図５３】
2007505523.tif 000063
【図５４】
2007505523.tif 000064
【図５５】
2007505523.tif 000065
【図５６】
2007505523.tif 000066
【図５７】
2007505523.tif 000067
【図５８】
2007505523.tif 000068
【図５９Ａ】
2007505523.tif 000069
【図５９Ｂ】
2007505523.tif 000070
【図６０】
2007505523.tif 000071
【図６１】
2007505523.tif 000072
【図６２】
2007505523.tif 000073
【図６３】
2007505523.tif 000074
【図６４】
2007505523.tif 000075
【図６５】
2007505523.tif 000076
【図６６】
2007505523.tif 000077
【図６７】
2007505523.tif 000078
【図６８】
2007505523.tif 000079
【図６９】
2007505523.tif 000080
【図７０】
2007505523.tif 000081
【図７１】
2007505523.tif 000082
【図７２】
2007505523.tif 000083
【図７３】
2007505523.tif 000084
【図７４】
2007505523.tif 000085
【図７５】
2007505523.tif 000086
【図７６】
2007505523.tif 000087
【図７７】
2007505523.tif 000088
【図７８】
2007505523.tif 000089
【図７９】
2007505523.tif 000090
【図８０】
2007505523.tif 000091
【図８１】
2007505523.tif 000092
【図８２】
2007505523.tif 000093
【図８３】
2007505523.tif 000094
【図８４】
2007505523.tif 000095
【図８５】
2007505523.tif 000096
【図８６】
2007505523.tif 000097
【図８７】
2007505523.tif 000098
【図８８】
2007505523.tif 000099
【図８９】
2007505523.tif 000100
【図９０】
2007505523.tif 000101
【図９１】
2007505523.tif 000102
【図９２】
2007505523.tif 000103
【図９３】
2007505523.tif 000104
【図９４】
2007505523.tif 000105
【図９５】
2007505523.tif 000106
【図９６】
2007505523.tif 000107
【図９７】
2007505523.tif 000108
【図９８】
2007505523.tif 000109
【図９９】
2007505523.tif 000110
【図１００】
2007505523.tif 000111
【図１０１】
2007505523.tif 000112
【図１０２】
2007505523.tif 000113
【図１０３】
2007505523.tif 000114
【図１０４】
2007505523.tif 000115
【図１０５】
2007505523.tif 000116
【図１０６】
2007505523.tif 000117
【図１０７】
2007505523.tif 000118
【図１０８】
2007505523.tif 000119
【図１０９】
2007505523.tif 000120
【図１１０】
2007505523.tif 000121
【図１１１】
2007505523.tif 000122
【図１１２】
2007505523.tif 000123
【図１１３】
2007505523.tif 000124
【図１１４】
2007505523.tif 000125
【図１１５】
2007505523.tif 000126
【図１１６】
2007505523.tif 000127
【図１１７】
2007505523.tif 000128
【国際調査報告】
2007505523.tif 000129
2007505523.tif 000130
2007505523.tif 000131