JP5173919B2 - ビデオデータの再生装置、再生方法、コンピュータプログラム - Google Patents

ビデオデータの再生装置、再生方法、コンピュータプログラム Download PDF

Info

Publication number
JP5173919B2
JP5173919B2 JP2009104537A JP2009104537A JP5173919B2 JP 5173919 B2 JP5173919 B2 JP 5173919B2 JP 2009104537 A JP2009104537 A JP 2009104537A JP 2009104537 A JP2009104537 A JP 2009104537A JP 5173919 B2 JP5173919 B2 JP 5173919B2
Authority
JP
Japan
Prior art keywords
file
camera
processor
event
video data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009104537A
Other languages
English (en)
Other versions
JP2009201127A (ja
Inventor
グラハム フレミング ハイドン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2003905158A external-priority patent/AU2003905158A0/en
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2009201127A publication Critical patent/JP2009201127A/ja
Application granted granted Critical
Publication of JP5173919B2 publication Critical patent/JP5173919B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/4143Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/02Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
    • G11B27/031Electronic editing of digitised analogue information signals, e.g. audio or video signals
    • G11B27/034Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/102Programmed access in sequence to addressed parts of tracks of operating record carriers
    • G11B27/105Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B27/00Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
    • G11B27/10Indexing; Addressing; Timing or synchronising; Measuring tape travel
    • G11B27/34Indicating arrangements 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25866Management of end-user data
    • H04N21/25875Management of end-user data involving end-user authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/27Server based end-user applications
    • H04N21/274Storing end-user multimedia data in response to end-user request, e.g. network recorder
    • H04N21/2747Remote storage of video programs received via the downstream path, e.g. from the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/4223Cameras
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • H04N21/42684Client identification by a unique number or address, e.g. serial number, MAC address, socket ID
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • H04N21/4314Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for fitting data in a restricted space on the screen, e.g. EPG data in a rectangular grid
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47214End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for content reservation or setting reminders; for requesting event notification, e.g. of sport results or stock market
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/475End-user interface for inputting end-user data, e.g. personal identification number [PIN], preference data
    • H04N21/4753End-user interface for inputting end-user data, e.g. personal identification number [PIN], preference data for user identification, e.g. by entering a PIN or password
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • H04N7/181Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast for receiving images from a plurality of remote sources

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Graphics (AREA)
  • Marketing (AREA)
  • Power Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Television Signal Processing For Recording (AREA)
  • Closed-Circuit Television Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は、ビデオデータの再生装置、再生方法、コンピュータプログラムに関するものである。
最近世界に起きている出来事から、セキュリティが非常に重要な課題となっている。その結果、セキュリティ目的でエリアを監視するために業務でも、プライベートでも映像監視システムが次第に使用されるようになってきている。
映像監視システムのエリア内では、ネットワーク接続映像監視技術が現在使用されている。従来の閉回路テレビ(TV)システムとは異なり、ネットワーク接続映像監視システムでは、インターネット・プロトコル(IP)ベースのネットワーク・インフラストラクチャなどの標準的なネットワーク・インフラストラクチャを使用して、デジタル・ビデオ信号および制御信号を伝送する。ネットワーク接続映像監視システムの1つの利点は、インターネット、IPベースのローカル・エリア・ネットワーク(LAN)、またはインターネットなどの公共ネットワークの上で稼働するIPベースの仮想プライベート・ネットワーク(VPN)などの既存のネットワーク上で映像監視を実行できる点である。
通常、ネットワーク接続映像監視システムは、コンピュータ・ネットワーク上に分散された1つまたは複数のビデオ・カメラ・サーバからデータを受信する、1つまたは複数のストレージ・サーバ(つまり、一般に、当業者に知られているような汎用コンピュータとして実装される)を備える。このようなネットワーク接続映像監視システムは、さらに、通常、カメラ・サーバからのライブ・ビデオ画像データまたはストレージ・サーバからの格納されているビデオ画像データを表示するために使用できる、1つまたは複数のビューイング・デバイス(例えば、コンピュータ、パーソナル・デジタル・アシスタント(PDA)、または電話機)も備える。
ネットワーク接続映像監視システムは、ローカルまたはリモートのネットワーク接続ビデオ・カメラから取り込まれた画像データを表示し、記録するために使用できるより一般的なクラスのネットワーク接続ビューイングおよび記録システムの一部である。このようなネットワーク接続ビューイングおよび記録システムは、様々な目的に使用できる。例えば、このようなネットワーク接続ビューイングおよび記録システムは、建物および車両を監視する際のセキュリティに使用することができる。
ネットワーク接続ビューイングおよび記録システムは、さらに、監視にも使用できる。例えば、ネットワーク接続ビューイングおよび記録システムは、建物内の職員の遂行状況をチェックしたり、または離れた場所にある契約会社の職員の遂行および進捗状況をチェックするために使用することができる。
ネットワーク接続ビューイングおよび記録システムは、さらに、娯楽にも使用できる。例えば、このようなシステムは、スポーツ・イベントおよびコンサートのライブ・ビューイングに使用できる。このようなシステムの他の使用例は、教育に関するものである(例えば、通信教育)。
映像監視システムなどの従来のネットワーク接続ビューイングおよび記録システムでは、通常、インターネットなどのネットワークを経由して1つまたは複数のリモート・ビデオ・カメラからサーバにアップロードされるビデオ画像データを表示し、記録することができる。多くの場合、そのようなサーバに格納され、特定のカメラに関連付けられたビデオ画像データは、連続的ではない。例えば、このようなことは、特定のカメラによる記録が特定の持続時間のみにおいてイベントによりトリガされたか、スケジュールされているため、生じることがある。したがって、特定の期間にその特定のカメラに関してサーバ上にビデオ画像データが格納されない場合があり、その特定のカメラについてビデオ画像データ内にギャップが残ることがある。
その結果、そのような従来のサーバからサービスを提供される複数のカメラから並行して格納されているビデオ画像データを表示する場合、ビデオ画像データは同期しない状態を続ける可能性がある。これにより、オペレータは、ネットワーク接続が途絶したか、またはビデオ画像データ内のギャップがネットワーク・トラフィックが高くなったことの結果であると誤って信じてしまう可能性がある。
米国特許第6,484,195号
「QuickTime File Format」
本発明の目的は、既存の配置のうちの1つまたは複数の不利点を実質的に克服するか、または少なくとも改善することである。
本発明の目的を達成するために、例えば、本発明のビデオデータの再生装置は以下の構成を備える。即ち、複数のカメラから配信されるライブ・ビデオデータ、および該複数のカメラから配信され記録手段に記録されたビデオデータを取得する取得手段と、前記複数のカメラから配信され前記記録手段に記録されたビデオデータの同時再生を行う再生手段と、時刻の範囲を示す時刻表と、前記時刻表上に配置され且つ前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータの再生時刻を示す再生ヘッドと、を表示するための表示処理手段とを備え、前記再生手段は、前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生し、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻が現在時刻を示す場合、前記複数のカメラから選択されたカメラから配信されるライブ・ビデオデータを再生することを特徴とする。
本発明の他の態様も開示される。
本発明の1つまたは複数の実施形態は、図面および付録を参照しつつ説明される。
説明される配置を実施できる映像監視システムの概略図である。 図1のシステムのストレージ・サーバをさらに詳しく示した図である。 図2のストレージ・サーバ内に構成された記録エンジンの複数のモジュールを示す図である。 ストレージ・サーバ構成オブジェクトを構成する要素の階層を示す図である。 図4のGENERAL要素を詳細に示す図である。 図4のEMAIL要素を詳細に示す図である。 図4のLIMITER要素を詳細に示す図である。 図4のDRIVE要素を詳細に示す図である。 図4のCAMSVR要素を詳細に示す図である。 図9のPRESET要素を詳細に示す図である。 図4のCAMERA要素を詳細に示す図である。 図11のSTATE要素を詳細に示す図である。 図11のSCHED要素を詳細に示す図である。 図13のBASE要素を詳細に示す図である。 図13のMOTION要素を詳細に示す図である。 図13のSENSOR要素を詳細に示す図である。 図15および16のEVENT要素を詳細に示す図である。 インデックス・ファイルとメディア・ファイルとの関係を示す図である。 AVI(登録商標)ファイル形式に従って構成されたメディア・ファイル内のテキスト・サンプルの配置例の図である。 ビデオ・ファイルの作成およびクローズを行うプロセスを示す流れ図である。 ビデオ・ファイルを初期化するプロセスを示す流れ図である。 本明細書で説明されているビューアが実装されうる汎用コンピュータの概略ブロック図である。 本明細書で説明されているストレージ・サーバが実装されうる汎用コンピュータの概略ブロック図である。 メディア・ファイルを生成するプロセスを示す流れ図である。 インデックス・ファイルを生成するプロセスを示す流れ図である。 ビデオ・ファイル・ペアをクローズするプロセスを示す流れ図である。 メディア・ファイルを完了するプロセスを示す流れ図である。 インデックス・ファイルを完了するプロセスを示す流れ図である。 図18のメディア・ファイルにサンプル(つまり、フレーム)を書き込むプロセスを示す流れ図である。 ビデオ・ファイル限度をチェックするプロセスを示す流れ図である。 サンプルをビデオ・トラックに書き込むプロセスを示す流れ図である。 サンプル・プロパティをテキスト・トラックに書き込むプロセスを示す流れ図である。 サンプルをトラックに追加するプロセスを示す流れ図である。 サンプルをメディア・ファイルに追加するプロセスを示す流れ図である。 イベント・ファイルを作成するプロセスを示す流れ図である。 イベント・ファイルを完了するプロセスを示す流れ図である。 カメラ・サーバ接続を確立するプロセスを示す流れ図である。 画像応答を受信するプロセスを示す流れ図である。 サンプル(つまり、フレーム)を処理するプロセスを示す流れ図である。 記録エンジンにより実行されるようなRE_Getコマンドを処理するプロセスを示す流れ図である。 記録エンジンにより実行されるようなRE_Setコマンドを処理するプロセスを示す流れ図である。 カメラ・サーバ詳細を設定するプロセスを示す流れ図である。 カメラ・サーバ・スケジュール詳細を設定するプロセスを示す流れ図である。 記録エンジンにより実行されるようなRE_Triggerコマンドを処理するプロセスを示す流れ図である。 記録エンジンにより実行されるようなNVR_UserGetコマンドを処理するプロセスを示す流れ図である。 記録エンジンにより実行されるようなNVR_UserSetコマンドを処理するプロセスを示す流れ図である。 記録エンジンにより実行されるようなNVR_AdminSetコマンドを処理するプロセスを示す流れ図である。 ストレージ・サーバ構成ツール・プロセスを示す流れ図である。 構成変更をストレージ・サーバに保存するプロセスを示す流れ図である。 ストレージ・サーバへの構成変更を監視するプロセスを示す流れ図である。 わざとブランクにしてある。 図2のアクセス・エンジンの概略ブロック図である。 図52のアクセス・エンジンの主タスクを例示する流れ図である。 ファイル・スティッチングのためアクセス・エンジンにより使用されるデータ構造の概略ブロック図である。 アクセス・エンジンにより実行されるビデオ・ファイル・スティッチングの流れ図である。 図52のアクセス・エンジンの要求処理手順の流れ図である。 アクセス・エンジンにより実行されるビデオ・ストリーミングの流れ図である。 アクセス・エンジンにより実行されるイベント・ファイル・ストリーミングの流れ図である。 ビデオ・ファイル・ストリーミングの流れ図である。 「no video」ブロブが送信される場合の図59Aのプロセスにおける複数のステップを示す流れ図である。 アクセス・エンジンとビューアとの間の接続の概略図ブロック図である。 図60の接続の一実装の概略ブロック図である。 ビューアとアクセス・エンジンとの間の接続手順の流れ図である。 図60の配置で使用されるデータ・ストリームのデータ形式の概略ブロック図である。 構成およびプリファレンス画面のストレージおよびカメラ・サーバの要約を示す図である。 ストレージ・サーバに関連付けられている多数の場所を示す図64のダイアログの図である。 ビューアにより表示される「search results」ダイアログを示す図である。 「add camera server」ダイアログを示す図である。 パン、傾斜制御ツールを示す図である。 「recording schedules」ダイアログを示す図である。 スケジュール・アイテム・ダイアログを示す図である。 「motion detection settings」ダイアログを示す図である。 「sensor event settings」ダイアログを示す図である。 「special days recording schedule」ダイアログを示す図である。 「viewer settings」ダイアログを示す図である。 ビューア構成ファイルの一実施例を示す図である。 ビューイング画面を示す図である。 レイアウト選択メニューを示す図である。 位置揃えグリッドを示す図である。 図78の位置揃えグリッドを使用して配列された多数のビデオ・ウィンドウを示す図である。 小さな位置揃えグリッドを示す図である。 中くらいの位置揃えグリッドを示す図である。 図80の小さな位置揃えグリッドを使用して配列された多数のビデオ・ウィンドウを示す図である。 図81の中くらいの位置揃えグリッドを使用して配列された多数のビデオ・ウィンドウを示す図である。 管理者用の「organise layouts」ダイアログを示す図である。 オペレータ用の「organise layouts」ダイアログを示す図である。 記録済みビデオ・インジケータを示す図である。 イベント・インジケータを示す図である。 ライブ・イベント・ログを示す図である。 時刻表を示す図である。 図89の時刻表の一部を示す図である。 再生コントロールを示す図である。 「event search」ダイアログを示す図である。 記録エンジン内を流れるデータ・フローを示す概略ブロック図である。 構成変更を監視するプロセスを示す流れ図である。 イベントをイベント・ファイルに書き込むプロセスを示す流れ図である。 ソケット・イベントを処理するプロセスを示す流れ図である。 次のコマンドを送信するプロセスを示す流れ図である。 ソケット読み込みを処理するプロセスを示す流れ図である。 ソケット切断を処理するプロセスを示す流れ図である。 制御コマンドを作成するプロセスを示す流れ図である。 制御応答を受信するプロセスを示す流れ図である。 応答プロセスを制御するプロセスを示す流れ図である。 通知コマンドを作成するプロセスを示す流れ図である。 通知応答を受信するプロセスを示す流れ図である。 通知応答を処理するプロセスを示す流れ図である。 画像コマンドを作成するプロセスを示す流れ図である。 イベントを生成するプロセスを示す流れ図である。 「storage server configuration」ダイアログを示す図である。 「storage server configuration, event notification settings」ダイアログを示す図である。 「storage server configuration, user management settings」ダイアログを示す図である。 スケジュール・スレッド・プロセスを示す流れ図である。 スケジュールを初期化するプロセスを示す流れ図である。 現在のスケジュールを処理するプロセスを示す流れ図である。 カメラ設定を更新するプロセスを示す流れ図である。 記録エンジンのカメラ制御モジュールによりカメラの制御を表す状態図である。 ビューアのソフトウェア・コンポーネントを示す図である。 特定のカメラに関連付けられた関心、知られている範囲、およびイベントの間の関係を示すグラフである。
付属の図面の1つまたは複数において、同じ参照番号を持つ、複数のステップおよび/または特徴を参照している場合、特に断りのない限り、それらのステップおよび/または特徴は、この説明の目的のために、同じ(複数の)機能または(複数の)オペレーションを有する。
従来技術の配列に関係する「背景技術」の節に含まれる説明は、それぞれの公開および/または利用を通して公開されている知識をなすドキュメントまたはデバイスの説明に関係することに留意されたい。そのようなドキュメントまたはデバイスが何らかの形で従来技術における共通の一般的知識の一部をなすというようなことを、本発明の(複数の)発明者または出願人による表現として解釈すべきではない。
説明をしやすくするため、以下の説明は、第1.0節から5.0節に分割されており、それぞれの節は、関連する複数の下位項目を含む。
1.0 映像監視システムの概要
図1は、映像監視システム100を示す。システム100は、関連付けられたカメラ・サーバ109、110、および111を介して、インターネットまたはイントラネットなどのコンピュータ・ネットワーク2220に接続された、ビデオ・カメラ112、113、114、および115を備える。一部の実装では、ネットワーク2220は、ローカル・エリア・ネットワーク(LAN)とすることができる。さらに、一実装では、カメラ112〜115のうちの1つまたは複数を、カメラおよびカメラ・サーバとが単一ユニットになるように、関連付けられたカメラ・サーバ109〜111内に構成することができる。
専用カメラ112〜115のいくつかの実施例として、Canon(登録商標)VC−C4ビデオ・カメラがある。専用カメラ・サーバ109〜111の一部の実施例は、Canon(登録商標)VB150およびCanon(登録商標)VB−C10であるが、ただし、VC−C10は、カメラおよびカメラ・サーバが単一ユニットであるモデルの一実施例である。
カメラ112、113、114、および115および関連付けられたカメラ・サーバ109〜111はそれぞれ、画像を表すビデオ・データの取り組みを受け持つ。ビデオ・データは、カメラ・サーバ109〜111により、ビデオ・データ・ストリームとして出力される。カメラ・サーバ109〜111は,オプションにより、センサを接続できるセンサ入力を備える。接続されているセンサがアクティブ化される場合、カメラ・サーバ109〜111は、そのセンサを許可するように構成することができ、イベント通知は、カメラ・サーバ109〜111により生成される。
システム100は、さらに、ストレージ・サーバ2300A、2300B、2300C、および2300Dを備え、これらは、カメラ・サーバ109〜111のうちのどれか1つからのサンプル・データの出力を監視し、そのサンプル・データを記録(つまり、要求および格納)するために使用することができる。ストレージ・サーバ2300A、2300B、2300C、および2300Dは、さらに、サンプル・データにアクセスし、システム100のイベント処理および制御するために使用することもできる。ストレージ・サーバ2300A〜2300Dは、これ以降、明示的に区別する場合を除き、ストレージ・サーバ2300と総称される。
カメラ112〜115および関連付けられたカメラ・サーバ109〜111の1つまたは複数により取り込まれるビデオ・データは、カメラ・サーバ109〜111からストレージ・サーバ2300に、コンピュータ・ネットワーク2220を介して、サンプル・データとしてアップロードすることができる。サンプル・データは、ストレージ・サーバ2300により処理し、および/またはストレージ・サーバ(図23を参照)のハード・ディスク・ドライブ2310上に格納することができ、したがって、ユーザは、ストレージ・サーバ2300のディスプレイ2314(図23を参照)を使用してサンプル・データを見ることができる
それとは別に、サンプル・データは、図1からわかるように、ストレージ・サーバ2300から1つまたは複数のビューア2200A、2200B、2200C、および2200Dに、コンピュータ・ネットワーク2220を介して、アップロードすることができる。ビューア2200A〜2200Dは、これ以降、明示的に区別する場合を除き、ビューア2200と総称される。ビューア2200は、ビューア2200とともに構成されているディスプレイ・デバイス2214(図24を参照)を使用して、サンプル・データを処理し表示するためにユーザ側で使用することができる。
ビューア2200は、さらに、直接1つまたは複数のカメラ・サーバ109〜111からビデオ・フレームを受信し、ディスプレイ・デバイス2214を使用してビデオ・フレームをユーザに提示するように構成することもできる。
図22からわかるように、ビューア2200は、コンピュータ・モジュール2201、キーボード2202およびマウス2203などの入力デバイス、プリンタ2215、ディスプレイ・デバイス2214、およびスピーカ2217を含む出力デバイスにより形成されることが好ましい。コンピュータ・モジュール2201内に構成されるネットワーク・インターフェース2208は、例えば、ネットワーク・リンク2221(同軸ケーブル、ツイスト・ペア・ケーブル、光ファイバ・ケーブル、802.11bまたはBluetooth(登録商標)を使用した無線接続、または他の接続タイプ)を介して接続可能な、コンピュータ・ネットワーク2220との間の通信に使用することができる。ネットワーク・インターフェース2208内に組み込まれるか、他の何らかの形で含まれる変調復調器(モデム)トランシーバ・デバイス(図に示されていない)も、例えば、電話回線を介してコンピュータ・ネットワーク2220へのアクセスするために使用することができる。
コンピュータ・モジュール2201は、通常、少なくとも1つのプロセッサ・ユニット2205、および例えば、半導体ランダム・アクセス・メモリ(RAM)および読み取り専用メモリ(ROM)から形成されたメモリ・ユニット2206を備える。モジュール2201は、さらに、ビデオ・ディスプレイ2214およびスピーカ2217に結合するオーディオ・ビデオ・インターフェース2207、キーボード2202、マウス2203、プリンタ2215、およびオプションによりジョイスティック(図に示されていない)またはトラックボール(図に示されていない)用のI/Oインターフェース2213を含む多数の入出力(I/O)インターフェースも備える。オプションにより、モジュール2201は、ビデオ・ディスプレイ2214の上にオーバーレイされているタッチ・センシティブ面により形成され、ビデオ・ディスプレイ2214上を指で触るか、または指を移動することによりユーザ入力を可能にする。ストレージ・デバイス2209が用意され、通常は、ハード・ディスク・ドライブ2210およびフロッピー(登録商標)・ディスク・ドライブ2211を備える。磁気テープ・ドライブ(図に示されていない)も使用することができる。CD−ROMドライブ2212は、通常、不揮発性データ・ソースとして用意される。コンピュータ・モジュール2201のコンポーネント2205から2213は、通常、相互接続されたバス2204を介して、当業で知られているようなコンピュータ・システムの従来の動作モードが実行される方法で通信する。説明されている配列が実装できるコンピュータの実施例として、IBM−PCおよびその互換機、Sun Sparcstations、またはそれらから発展した同様のコンピュータ・システムがある。
ストレージ・サーバ2300は、さらに、図23に詳しく示されている。ストレージ・サーバ2300は、コンピュータ・モジュール2301、キーボード2302およびマウス2303などの入力デバイス、プリンタ2315、ディスプレイ・デバイス2314、およびスピーカ2217を含む出力デバイスにより形成されることが好ましい。ネットワーク・インターフェース2308は、さらに、コンピュータ・モジュール2301内にも構成され、例えば、ネットワーク・リンク2321(同軸ケーブル、ツイスト・ペア・ケーブル、光ファイバ・ケーブル、802.11bまたはBluetooth(登録商標)を使用した無線接続、または他の接続タイプ)を介して接続可能な、コンピュータ・ネットワーク2220との間の通信に使用することができる。ネットワーク・インターフェース2308内に組み込まれるか、他の何らかの形で含まれる変調復調器(モデム)トランシーバ・デバイス(図に示されていない)も、例えば、電話回線を介してコンピュータ・ネットワーク2220へのアクセスするために使用することができる。
コンピュータ・モジュール2201と同様に、コンピュータ・モジュール2301は、通常、少なくとも1つのプロセッサ・ユニット2305、および例えば、半導体ランダム・アクセス・メモリ(RAM)および読み取り専用メモリ(ROM)から形成されたメモリ・ユニット2306を備える。モジュール2301は、さらに、ビデオ・ディスプレイ2314およびスピーカ2317に結合するオーディオ・ビデオ・インターフェース2307、キーボード2302、プリンタ2315、およびマウス2303、およびオプションによりジョイスティック(図に示されていない)またはトラックボール(図に示されていない)用のI/Oインターフェース2313を含む多数の入出力(I/O)インターフェースも備える。オプションにより、モジュール2301は、ビデオ・ディスプレイ2314の上にオーバーレイされているタッチ・センシティブ面により形成され、ビデオ・ディスプレイ2314上を指で触るか、または指を移動することによりユーザ入力を可能にする。ストレージ・デバイス2309が用意され、通常は、ハード・ディスク・ドライブ2310およびフロッピー(登録商標)・ディスク・ドライブ2311を備える。磁気テープ・ドライブ(図に示されていない)も使用することができる。コンピュータ・モジュール2301に接続された周辺ストレージ・デバイス(図に示されていない)を使用することができる。さらに、ネットワーク接続ストレージ(NAS)およびストレージ・エリア・ネットワーク(SAN)を含む、ネットワーク・アクセス可能なストレージ・デバイスまたはそのようなデバイスの集合体(図に示されていない)をネットワーク2220に接続し、ネットワーク・インターフェース2308を通じてアクセスできる。CD−ROMドライブ2312は、通常、不揮発性データ・ソースとして用意される。コンピュータ・モジュール2301のコンポーネント2305から2313は、通常、相互接続されたバス2304を介して、当業で知られているようなコンピュータ・システムの従来の動作モードが実行される方法で通信する。
カメラ・サーバ109〜111は、コンピュータ・モジュール2201および2301と類似の構成を持つ。カメラ・サーバ109〜111は、メモリ(例えば、メモリ2306)およびプロセッサ(例えば、プロセッサ2305)を備える。しかし、カメラ・サーバ109〜111のハードウェア構成は、本明細書ではこれ以上詳しくは説明しない。
上述のように、ストレージ・サーバ2300は、センサ(例えば、カメラ・サーバ109〜111に接続されたセンサ)からのイベントの監視および処理に使用できる。これらのイベントのうちの1つは、カメラ・サーバ109〜111のうちの1つまたは複数に直接接続された運動検出器(図に示されていない)を使用する運動検出を含むことができる。さらに、イベントは、例えば、熱/煙検出器を使用する熱/煙検出、リミット・スイッチを使用するドア開/閉を含む。
2.0 ストレージ・サーバの概要
図2は、ストレージ・サーバ2300を詳しく説明している。ストレージ・サーバ2300は、記録エンジン201およびアクセス・エンジン203を備えるが、これらについて以下で詳しく説明する。記録エンジン201およびアクセス・エンジン203は、ハーグ・ディスク・ドライブ2310上に常駐し、プロセッサ2305による実行時に制御される、別々のソフトウェア・アプリケーションとして実装されるのが好ましい。それとは別に、記録エンジン201およびアクセス・エンジン203は、単一のソフトウェア・アプリケーションとして実装できるが、さらには、記録エンジン201およびアクセス・エンジン203の一方または両方をハードウェアで実装することも可能である。
記録エンジン201は、一組のストレージ・サーバ構成ファイル205を保持する役割を持つ。構成ファイル205は、一組の一般設定、ストレージ・サーバ2300が受け持つカメラ・サーバ109〜111に関係する情報、それらのカメラ・サーバ109〜111のそれぞれに関連付けられているカメラ112〜115に関係する情報を含む。それぞれのカメラ112〜115について、構成ファイル205は、与えられた期間に特定のカメラ112〜115に関してストレージ・サーバ2300の動作を制御する一組のスケジュール・アイテムも含む。
記録エンジン201は、さらに、一組のビューア構成ファイル207も保持する。ビューア構成ファイル207は、知られているストレージ・サーバ(例えば、2300A、2300B、2300C、および2300D)への参照を含む。ビューア構成ファイル207は、さらに、知られているカメラ112〜115および、ストレージ・サーバ2300に関連付けられている、関連カメラ・サーバ109〜111のそれぞれに関連付けられている一組のLocationsおよびZonesも指定する。LocationsおよびZonesについて、以下で詳述する。通常、ストレージ・サーバ2300上の記録エンジン201は、以下で詳しく説明するように、ストレージ・サーバ2300がマスタ・ストレージ・サーバとして機能している場合に、一組のビューア構成ファイル207を保持する。
ビューア構成ファイル207は、さらに、ビデオ・ウィンドウ・レイアウトも含む。ビデオ・ウィンドウ・レイアウトでは、カメラ・サーバ109〜111および/またはストレージ・サーバ2300からアップロードされたサンプル・データがビューア2200のディスプレイ・デバイス2314上に表示される方法を記述する。ビデオ・ウィンドウ・レイアウトは、以下の第5.0節で詳しく説明される。ただし、図76からわかるように、それぞれ特定のカメラ・サーバ109〜111に関連付けられる一組のビデオ・ウィンドウ(例えば、7625)の、レイアウト・エリア7605内の特定の配列を「レイアウト」と呼ぶ。
記録エンジン201は、ストレージ・サーバ2300のストレージ・デバイス2309内に構成された1つまたは複数のドライブにまたがって分散できる、一組のデータ・ファイル209に書き込む。そこには、多数のストレージ・デバイス(例えば、複数のハード・ディスク)がありえる。ドライブは、さらに、ストレージ・サーバ2300の外部、例えば、上述のように周辺ストレージ・デバイスまたはネットワーク・アクセス可能ストレージ・デバイス上に置くことができる。以下の説明は、ストレージ・デバイス2309との間のデータの読み書きを指す。それとは別に、周辺またはネットワーク・アクセス可能ストレージ・デバイスとの間でデータの読み書きを行うこともできる。
カメラ・サーバ109〜111はそれぞれ、カメラ・サーバ109〜111に割り当てられた特定のドライブを備えるのが好ましい。データ・ファイル209は、カメラ・サーバ110から集められたビデオ・サンプル・データを格納するビデオ・ファイルを含む。データ・ファイル209は、さらに、イベント・ファイルも含む。上述のように、また以下で詳しく説明するが、イベント・ファイルは、テキスト・ファイルであり、これらは、イベントの詳細をテキスト・データの形で格納するために使用される。これらのイベントは、カメラ・サーバ109〜111からのイベント通知に対する応答として記録エンジン201により生成される。このようなイベントは、さらに、ストレージ・サーバ2300による受信されたビデオ・サンプル・データまたは他の重要な出来事の分析結果として生じることもある。
記録エンジン201は、記録エンジン201が制御しなければならないそれぞれのカメラ・サーバ109〜111との一連のネットワーク接続を保持する。ネットワーク接続は、カメラ・サーバ情報を取り出す、カメラ・サーバ設定を構成する、イベント通知を受信する、およびビデオ・サンプル・データを受信するために使用される。
記録エンジン201は、構成情報またはステータス情報を取り出すために、また記録エンジン201またはシステム100を再構成するために、Webサーバ213を通じてネットワーク2220上でビューア2200のうちの1つまたは複数による通信が可能である。記録エンジン201は、さらに、ステータス情報(例えば、特定のカメラ112〜115と関連付けられている記録ステータス)を取り出すために1つまたは複数のWebブラウザ(図に示されていない)により通信することも可能である。
ビューア2200は、HTTP(ハイパーテキスト・トランスポート・プロトコル)を使用してWebサーバ213に要求を送信することができ、これらの要求は、後述のように、記録エンジン201に送信されることを指示するように書式設定されている場合に、記録エンジン201に渡される。応答は、記録エンジン201によりWebサーバ213に返され、その要求を行ったビューア2200に受け渡される。
Webサーバ213は、記録エンジン201およびアクセス・エンジン203とは別に、プロセッサ2305により通常実行されるアプリケーション・ソフトウェアとして実装されるのが好ましい。ビューア・ソフトウェアがストレージ・サーバ2300と同じコンピュータ・モジュール上で実行される場合、要求は、通常、ネットワーク2220上でWebサーバ213に送信されないが、通常は、ビューア・ソフトウェアにより、ネットワーク・モジュール301を使用してソケット接続を通じてWebサーバ213に送信される。
本明細書の「Webサーバ」という用語は、HTTPを使用してクライアント・ソフトウェアと通信できる、サーバを指すことを意図されている。「Webサーバ」という用語を使用していても、Webサーバ213がWorld Wide Web上でブラウザ・ソフトウェアにコンテンツを提供するように必ず構成されることを意味しない。ストレージ・サーバ2300上で、Webサーバ213は、ビューア2200とのみ連携動作するように構成できるか、またはWebサーバ213は、ビューア2200と連携するが、さらに、インターネットまたはイントラネット上でブラウザ・ソフトウェアにコンテンツを提供するようにも構成できる。Webサーバ213は、例えば、HTTPダイジェスト認証を使用して、ビューア2200のうちの1つを介してストレージ・サーバ2300にアクセスしようとするユーザを認証するように構成できる。それとは別、Webサーバ213は、HTTP基本認証に基づいてアクセスを許可するように構成することができる。ストレージ・サーバ2300へのアクセスに関してユーザを認証するだけでなく、Webサーバ213は、さらに、正しく認証されたユーザがストレージ・サーバ管理者として登録されているかどうかも決定する。HTTPダイジェストおよびHTTP基本認証は、インターネット・エンジニアリング・タスク・フォース(IETF)により公開されているRFC 2617の中で規定されている。
認証は、HTTPダイジェスト認証(または一部の構成では、HTTP基本認証)方法を使用して実行され、その場合、有効なユーザ名がストレージ・サーバ・ユーザ・ファイルで与えられる。一端認証されると、Webサーバ213は、ストレージ・サーバ・グループ・ファイルに格納されている「admin」グループ内のユーザ名を検索することにより認証されたユーザが管理者であるかどうかを決定する。
記録エンジン・アクセス・プロトコル(以下参照)におけるそれぞれの別々のコマンドに対するアクセス制御は、HTTPメッセージ内のコマンドのそれぞれのパス(例えば、要求の中で使用されているUniform Resource Locatorのパス)を有効なユーザの集まり、または「admin」グループ内のユーザのみのいずれかに関連付けることにより、Webサーバ213自体の構成ファイルを使用して強制される。アクセス・エンジン203は、記録エンジン201により作成されたデータ・ファイル209を監視する役割を持つ。アクセス・エンジン203は、さらに、ビデオ・サンプル・データおよびイベント・データに対する要求に応える役割を持つが、ただし、そのような要求は、Webサーバ213を介してビューア2200のうちの1つまたは複数から受信される。アクセス・エンジン203は、与えられた再生要求について正しいビデオ・ファイルを見つけて、ビューア2200にサンプル・データ・ストリームとしてビデオ・ファイル内に格納されているサンプル・データを提供することによりビデオ・データを提供する。アクセス・エンジン203は、与えられた要求について正しいイベント・ファイルを見つけて、ビューア2200にイベント・ファイル内に格納されているイベント・データを提供することによりイベント・データを提供する。
記録エンジン201は、さらに、新しいデータ・ファイル209が作成されるときにアクセス・エンジン203に通知するため、以下で詳しく説明されるプロセス間通信方法を使用してアクセス・エンジン203と調整する。
ストレージ・サーバ2300は、さらに、ストレージ・サーバ構成ツール(SSCT)211も備える。ストレージ・サーバ構成ツール211は、ストレージ・サーバ2300のハード・ディスク・ドライブ2310上に常駐するアプリケーション・ソフトウェアとして実装されることが好ましい。ストレージ・サーバ構成ツール211は、以下で詳しく説明される、ストレージ・サーバ2300をホスティングするコンピュータ・モジュール2301にログオンしているユーザが使用することができる。構成ツール211は、ユーザがストレージ・サーバ構成ファイル205のGENERAL要素405(図5参照)で記述されている設定の変更を行えるようにするグラフィカル・ユーザ・インターフェースを備える。
したがって、システム100のユーザには2種類のタイプがある。管理者権限を有する「管理者」は、ストレージ・サーバ2300の構成設定を変更できるだけでなく、ネットワーク2220を介してカメラ・サーバ109〜111からアップロードされた他のサンプル・データにアクセスし、表示することができる。「オペレータ」と呼ばれる第2のタイプのユーザは、管理者権限を持たず、限られた機能のみを実行できる。それらの限られた機能としては、ビューア2200を使用してビデオ・ウィンドウ・レイアウトを選択する、およびネットワーク2220を介して、カメラ・サーバ109〜111の1つまたは複数からアップロードされたサンプル・データを表示するなどの機能を含む。それぞれのタイプのユーザによって実行することができる機能について、以下で詳しく説明する。さらに、両タイプのユーザとも、明示的に区別する場合を除き「ユーザ」または「複数のユーザ」と本明細書では総称される。
3.0 記録エンジン
3.1 記録エンジンのモジュール
記録エンジン201は、図3に示されているように、モジュール群300に分割することができる。モジュール300はそれぞれ、ハード・ディスク・ドライブ2310上に常駐する単一のソフトウェア・プログラムとしてまとめて、またプロセッサ2305により実行時に制御されるように実装されることが好ましい。それとは別に、モジュール300の1つまたは複数を、別のソフトウェア・プログラムとして実装することができる。
モジュール300のうちの第1のモジュールは、ネットワーク・モジュール301として知られる。ネットワーク・モジュール301は、システム100の基幹ネットワーキング・オペレーションを実行する。ネットワーク・モジュール301は、通常、ストレージ・サーバ2300のオペレーティング・システムの一部である。モジュール300のうちの他のモジュールは、システム100の基幹ファイル・システム・オペレーションを実行する、ファイル・システム・モジュール303と呼ばれる。ファイル・システム・モジュール303は、ここでもまた、通常、ストレージ・サーバ2300のオペレーティング・システムの一部であり、以下の3.3節でさらに詳しく説明する。
カメラ・サーバ通信モジュール305は、記録エンジン201と、ネットワーク2220を経由して記録エンジン201が制御するカメラ・サーバ109〜111との間の通信を管理する。通信モジュール305は、正しい設定が特定のカメラ・サーバ109〜111に必ず送信されるようにし、必要に応じてイベント通知を受信するようにする役割を持つ。カメラ・サーバ通信モジュール305は、以下の3.7節で詳しく説明する。
メール・サーバ通信モジュール307は、モジュール300にも含まれる。メール・サーバ通信モジュール307は、記録エンジン201とネットワーク2220に接続されている簡易メール転送プロトコル(SMTP)サーバ2221との間のすべての通信を管理する。SMTPサーバ2221は、図23に示されているようにストレージ・サーバ2300のコンピュータ・モジュール2301内に、またはストレージ・サーバ2300からリモートで構成することができる。以下で詳しく説明するように、SMTPサーバ2221は、ネットワーク2220上のメール・サーバに電子メール・イベント通知を送信するために使用され、この電子メール・イベント通知は、最終的に、ストレージ・サーバ2300の構成に基づき、特定の電子メール・メールボックスに配信される。POPサーバへの接続は、認証目的のために必要な場合にも維持することができる。
Webインターフェース・モジュール309は、ネットワーク2220に接続されているWebサーバ213とのすべての通信を管理する。Webインターフェース・モジュール309は、共通ゲートウェイ・インターフェース(CGI)を介して、またはストレージ・サーバ2300上のオペレーションをより効率的なものにできるように、Webサーバ213と記録エンジン201との間の継続的通信をより適切にサポートするFastCGI(登録商標)インターフェースを通じて、通常、Webサーバ213と通信し、またその逆も行われる。
モジュール300は、さらに、Webインターフェース・モジュール309を介して送信されるビューア・コマンドを管理する、ビューア・インターフェース・モジュール311も含む。ビューア・インターフェース・モジュール311は、ストレージ・サーバ2300がネットワーク2220に接続されたマスタ・ストレージ・サーバとして使用される場合にすべてのビューア2200についてビデオ・ウィンドウ・レイアウトおよびビューア構成設定に対する変更のクエリまたは要求を処理するために使用される。例えば、ストレージ・サーバ2300A、2300B、2300C、または2300Dのうちのどれかをマスタ・ストレージ・サーバとして使用することができる。このようなマスタ・ストレージ・サーバは、これ以降、マスタ・ストレージ・サーバ2300Aと呼ばれる。
管理インターフェース・モジュール313は、さらに、Webインターフェース・モジュール309を介して送信される管理コマンドを管理するためにも含まれる。管理インターフェース・モジュール313は、カメラ・サーバ109〜111に関係する変更および特定のストレージ・サーバ2300と関連付けられているカメラ112〜115のスケジュール設定への変更のクエリまたは要求を処理するために使用される。
モジュール300は、さらに、ストレージ・サーバ2300のハード・ディスク・ドライブ2310上に格納される構成ファイル207のすべてを管理する構成管理モジュール315も含む。
ビデオ・ファイル管理モジュール317も含まれる。ビデオ・ファイル管理モジュール317は、ストレージ・サーバ2300のストレージ・デバイス2309内に構成されているドライブ上に格納されたビデオ・ファイルを管理する。モジュール317は、必要に応じて新しいビデオ・ファイルを作成し、サンプル・データをそれらの新しいビデオ・ファイルに書き込み、既存のファイルのサイズまたは持続時間が所定の限界を超えた場合にさらに新しいファイルにスワッピングする役割を持つ。
ビデオ・ファイル・リカバリ・モジュール319では、必ず、ストレージ・サーバ2300により取り扱われるすべてのビデオ・ファイルは、一貫した可読状態にある。記録エンジン201が早期に終了した場合(例えば、停電のため)、進行中ファイルは、ビデオ.ファイル・リカバリ・モジュール319がその進行中ファイルを調べて、そのような進行中ファイルへの内部一貫性を復元するまで本質的に読み取り可能ではない。
モジュール300は、さらに、ストレージ・サーバ2300のドライブ上に格納されているイベント・ファイルを管理するイベント・ファイル管理モジュール321も含む。イベント・ファイル管理モジュール321は、必要に応じて新しいイベント・ファイルを作成し、イベント・データをそれらの新しいイベント・ファイルに書き込み、既存のイベント・ファイルのサイズまたは持続時間が所定の限界を超えた場合にさらに新しいファイルにスワッピングする役割を持つ。イベント・ファイル管理モジュール321は、以下の3.6節で詳しく説明される。
ドライブ管理モジュール323は、記録エンジン・モジュール300にも含まれる。ドライブ管理モジュール323は、ストレージ・サーバ2300のストレージ・デバイス2309内に構成されているすべてのドライブを管理する。ドライブ管理モジュール323は、ストレージ・デバイス2309内のすべての固定ドライブのリストを保持する。削除するビデオ・ファイルを選択することにより、ドライブ管理モジュール323では、必ず、一定の年齢を超えたビデオ・ファイルが削除され、ハード・ディスク2310上の空きメモリ領域が所定の限界内に保持されるようにする。ドライブ管理モジュール323は、さらに、記録エンジン201により使用されるハード・ディスク・ドライブ2310上のメモリ領域がストレージ・サーバ2300の管理者により設定された所定の限界値を超えないようにもできる。ドライブ管理モジュール323は、特定のドライブの空きメモリ領域またはハード・ディスク・ドライブ2310上の使用メモリ領域が所定の限界を超えた場合にいつでもストレージ・サーバ2300の特定のドライブへの記録を禁止するように構成することができる。
記録エンジン201は、さらに、スケジュールのリストを保持するためのスケジューリング・モジュール325も含む。スケジューリング・モジュール201は、ストレージ・サーバ2300のオペレーティング・システムを使用して、タイマーを、カメラ112〜115の設定を変更する必要が生じる将来の時刻に対応する時刻に設定する。スケジューリング・モジュール201は、その後、それぞれのスケジュールの有効期限が切れるとストレージ・サーバ2300のオペレーティング・システムから通知を受信し、新しいスケジュールを設定する。新しいカメラ・スケジュール・アイテム1115(図13を参照)がアクティブ化されると、スケジューリング・モジュール201は、そのスケジュール・アイテムに適合するように新しいスケジュール・アイテムに対応する特定のカメラ112〜115の設定を調整する。イベントがトリガされると、スケジューリング・モジュール201は、そのときにアクティブであるスケジュール・アイテムに従って必要に応じてイベントが関連付けられているカメラ112〜115のカメラ設定を調整する。カメラ・スケジュール・アイテムについて、以下でさらに詳しく説明する。スケジューリング・モジュール325は、さらに、現在の時刻に基づき、それぞれのカメラ109〜111の構成を追跡する役割も持つ。カメラ記録パラメータを変更する可能性のあるイベントが発生すると、必ず、スケジューリング・モジュール325は、カメラ記録パラメータが正しく再構成されるようにする。
さらに、スケジューリング・モジュール325は、時刻を追跡し、一方のスケジュール・アイテムが他方に移行すると、または事後イベント記録期間が満了すると、必ずカメラ記録パラメータが変更されるようにする。
カメラ制御モジュール327は、記録エンジン・エンジン201にも含まれる。カメラ制御モジュール327は、スケジューリング・モジュール325およびカメラ・サーバ通信モジュール305と緊密にリンクしている。カメラ制御モジュール327は、特定のカメラ・サーバ109〜111の設定が現在のスケジュール・アイテムにより指定された設定と一致していることを保証する。つまり、カメラ制御モジュール327は、カメラ設定がカメラ・サーバ109〜111上で最新状態に保たれるようにする。これは、設定がスケジュール変更またはイベントのせいで記録エンジン201内で変更されたときに新しい設定をカメラ・サーバ109〜111に送信すること、およびカメラ・サーバ109〜111上の設定を監視し、異なるカメラ・サーバ109〜111により設定が変更された場合に設定が正確さを保つようにすることを伴う。カメラ制御モジュール327は、以下の状況で、新しいパン、傾斜、およびズーム(PTZ_settings)をカメラ・サーバ109〜111に送信する。
(i)新しいスケジュール・アイテムが起動するが、その場合、必要なPTZ設定は現在PTZ設定と異なる。
(ii)現在のPTZ設定と異なるPTZ設定を必要とするイベントがトリガされた。
(iii)記録エンジン201内の現在のカメラ設定が設定されたPTZ設定を必要とするときに、他の記録エンジン201が、カメラ112〜115を新しい位置に移動した。
図115は、記録エンジン201のカメラ制御モジュール327により、カメラ・サーバ109〜111に関連付けられた、特定のカメラ112〜115の制御を表す状態図である。図115からわかるように、制御モジュール327は、標準状態11501にあるのがふつうであり、その場合、カメラ・サーバ109〜111は特定の設定に従って特定のカメラ112〜115を制御する。特定のカメラ112〜115の制御は、他の記録エンジンにより、例えば、矢印11503によって表されているように、要求をカメラ制御モジュール327に送信することにより、要求することができる。その結果、カメラ制御モジュール327は、制御必須状態11505に移動する。カメラ制御モジュール327は、さらに、矢印11507により表されているように、上の状況(i)および(ii)に従って状態11505にも移動することができ、その場合、新しいスケジュール・アイテムが起動し、例えば、必須PTZ設定が現在のPTZ設定と異なる。
図115に示されているように、次に、制御モジュール327は、矢印11509によって表されているように、制御要求を関連付けられたカメラ・サーバ109〜111に送信することにより、特定のカメラ112〜115の制御を要求することができる。その結果、カメラ制御モジュール327は、制御要求状態11511に移動する。カメラ・サーバ109〜111は、特定のカメラ・サーバ109〜111の制御を拒絶し、制御拒絶メッセージを制御モジュール327に送り返すことができる。その結果、カメラ制御モジュール327は、状態11505に戻る。それとは別に、カメラ・サーバ109〜111は、矢印11515により表されているように、制御付与メッセージをカメラ制御モジュール327に送信することにより特定のカメラ112〜115の制御権を付与することができる。その結果、カメラ制御モジュール327は、制御取得状態11517に移動する。
制御取得状態11517から、カメラ制御モジュール327は、矢印11519により表されているように、また以下で詳しく説明するように、関連付けられているカメラ・サーバ109〜111に制御コマンドを送信することにより特定のカメラ112〜115を操作する。その結果、カメラ制御モジュール327は制御完了状態11521に移動し、カメラ制御モジュール327がカメラ112〜115の制御を解放し、関連付けられているカメラ・サーバ109〜111に戻すまでその状態に留まる。その結果、カメラ制御モジュール327は、標準状態11501に戻る。
カメラ制御モジュール327は、さらに、例えば、以下で詳しく説明するように、特定のカメラ112〜115の制御を獲得するより高い制御権をユーザが持つことで、制御取得状態11517から制御必須状態11505に移動することもできる。
記録エンジン201は、さらに、フレーム・バッファ・モジュール329も含む。フレーム・バッファ・モジュール329は、カメラ・サーバ109〜111からサンプル・データを受信し、サンプル・データをストレージ・サーバ2300のメモリ2306内に構成された循環フレーム・バッファに保存する。サンプル・データが記録される場合、サンプル・データはビデオ・ファイル管理モジュール317に送られ、ハード・ディスク・ドライブ2310に書き込まれる。サンプル・データは、さらに、ストレージ・サーバ2300のハード・ディスク・ドライブ2310内にソフトウェアとして実装された運動検出アルゴリズムに供給することもできる。連続フレーム間の相違を比較し、しきい値を適用して必要な大きさの変化が画像のそれぞれの部分において発生したかどうかを判定し、他のしきい値を適用して画像の十分な部分が十分に変化したかどうかを判定するアルゴリズムなどの、適当な運動検出アルゴリズムを使用して運動検出することができる。
記録が実行されない場合、サンプル・データは、フレーム・バッファからオーバーフローするまでできる限り長い間、メモリ2306内に保持され、イベントがトリガされ、事前イベント記録がそのイベントに対して有効になっている場合には、サンプル・データを後でハード・ディスク・ドライブ2310に保存することができる。
記録エンジン201は、さらに、カメラ・サーバ通信モジュール305、ビューア・インターフェース311およびドライブ管理モジュール323などの様々なソースから受信された信号をイベント・レコードに変換するイベント管理モジュール331を備え、このため、イベント・ファイル管理モジュール321およびビデオ・ファイル管理モジュール317を使用して、これらのイベント・レコードをディスク2310に書き込むことができる。
3.2 ストレージ・サーバ構成オブジェクト
この節では、ストレージ・サーバ2300構成を伴うオペレーションの基礎である、ストレージ・サーバ構成オブジェクトについて説明する。
ストレージ・サーバ構成オブジェクト(SSCO)は、ストレージ・サーバ構成ファイル205などのストレージ・サーバ2300構成の複数の態様において使用され、管理プロトコルで交換されるデータとして、管理インターフェース313により使用されるXMLドキュメントである。ストレージ・サーバ構成オブジェクトは、知られているUTF−8形式でフォーマットされるのが好ましい。このようなストレージ・サーバ構成オブジェクトを構成する要素400の階層は、図4を参照しつつ、以下で説明される。
図4に示されているように、ストレージ・サーバ構成オブジェクトは、ネットワーク・ビデオ・レコーダ(NVR)要素401、GENERAL要素405、CAMSVR要素407、およびCAMERA要素409を含むが、これについては以下で詳しく説明する。特に断りのない限り、ストレージ・サーバ構成オブジェクトの説明の文脈において「XMLドキュメント」、「要素」、および「属性」という用語は、World Wide Web Consortium(2000年10月6日)により公開された拡張マークアップ言語(XML)勧告(第2版)において定義されている意味で使用される。
3.2.1 ネットワーク・ビデオ・レコーダ(NVR)要素
要素400の第1の要素は、図4に示されているように、ネットワーク・ビデオ・レコーダ(NVR)要素と呼ばれる。ネットワーク・ビデオ・レコーダ要素401は、ストレージ・サーバ2300に対応する、特定のストレージ・サーバ構成オブジェクトに格納されている、構成情報をカプセル化するものである。ネットワーク・ビデオ・レコーダ要素401は、特定のストレージ・サーバ構成オブジェクトの型と目的を示す、「type」属性402を含む。型要素は、以下のように6つの値のうちの1つに設定することができる。
(i)file−ストレージ・サーバ構成オブジェクトがストレージ・サーバ2300の構成ファイル205として使用されることを示す。
(ii)general−ストレージ・サーバ構成オブジェクトは、ストレージ・サーバ2300の一般的な設定を記述し、またCAMSVR 407またはCAMERA 409要素を含まないことが好ましいが、これについては、以下で詳述する。
(iii)camsvr−ストレージ・サーバ構成オブジェクトが特定のストレージ・サーバ2300に関連付けられているカメラ・サーバ109〜111を記述することを示す。ネットワーク・ビデオ・レコーダ要素401は、GENERAL 405またはCAMERA 409要素を含まないのが好ましいが、CAMERA要素は、個々のCAMSVR 407要素内に存在することができる。
(iv)camera−ストレージ・サーバ構成オブジェクトが特定のストレージ・サーバ2300に関連付けられているすべてのカメラ・サーバ109〜111の状態を記述することを示す。ネットワーク・ビデオ・レコーダ要素400は、GENERAL 405またはCAMSVR 407要素を含まないのが好ましい。しかし、CAMERA要素409は、STATE要素を含み、これについては以下で説明する。
(v)sched−ストレージ・サーバ構成オブジェクトが、一組のカメラ・サーバ109〜111に属しているスケジュールを記述することを示す。ネットワーク・ビデオ・レコーダ要素401は、GENERAL 405またはCAMSVR 407要素を含まない。しかし、CAMERA要素409は、DAY要素1111(図11を参照)を含み、これについては以下で説明する。
(vi)trigger−ストレージ・サーバ構成オブジェクトが、トリガされる一組のカメラ・サーバ109〜111を記述することを示す。ネットワーク・ビデオ・レコーダ要素401は、GENERAL 405またはCAMSVR 407要素を含まないのが好ましい。CAMERA要素409内に存在する要素を無視することができる。
ネットワーク・ビデオ・レコーダ要素401は、ストレージ・サーバ構成オブジェクトがストレージ・サーバ2300上で変更を実行することを意図されていることを示す「action」属性403も含む。action属性403は、オプションである。ネットワーク・ビデオ・レコーダ要素401内に存在する場合、action属性に対する有効な値は以下のとおりである。
(i)add−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ109〜111またはスケジュール曜日をシステム100に追加するために使用されることを示す。
(ii)modify−ストレージ・サーバ構成オブジェクトは、既存のカメラ・サーバ2300またはスケジュール曜日の詳細を修正するために使用されることを示す。
(iii)delete−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ109〜111またはスケジュール曜日をシステム100から削除するために使用されることを示す。
(iv)movein−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ109〜111が異なるストレージ・サーバ(例えば、2300A、2300B、2300C、または2300D)から移動される場合に、カメラ・サーバ109〜111をストレージ・サーバ2300を追加するために使用されることを示す。
(v)moveout−ストレージ・サーバ構成オブジェクトは、カメラ・サーバ109〜111が異なるストレージ・サーバ(例えば、2300A、2300B、2300C、または2300D)に移動される場合に、カメラ・サーバ109〜111をストレージ・サーバ2300から削除するために使用されることを示す。
3.2.2 GENERAL要素
ストレージ・サーバ構成オブジェクトのGENERAL要素405は、図5に示されている。GENERAL要素405は、図5に示されているように、ストレージ・サーバ2300の一般的構成を記述し、多数の他の要素501〜515を含む。
GENERAL要素405は、それぞれビューア2200またはストレージ・サーバ2300ディスプレイ2214および2314上の構成ビュー内に表示されているようなストレージ・サーバ2300の名前を示すNAME要素501を含む。構成ビューについて、以下でさらに詳しく説明する。2つまでのNAME要素501がありうる。NAME要素501は、language属性517により指定される、言語で区別される。有効な言語識別子は、「English」および「Japanese」であり、GENERAL要素405内のどの2つのNAME要素501も同じ言語識別子を持たないことが好ましい。
NEXTID要素503は、システム100の記録エンジン201に追加される次のカメラ112〜115に対応する一意的な識別子を示す。NEXTID要素503の値は、カメラ112〜115がシステム100に追加されるとインクリメントされる。NEXTID要素503は、それぞれの追加カメラ112〜115は、他の既存のカメラ112〜115、またはシステム100から削除されたカメラ112〜115と衝突しない識別子を与えられることを保証する。
PROXY要素505は、記録エンジン201をカメラ・サーバ109〜111に接続した場合に使用されるHTTPプロキシ・サーバ(図に示されていない)を示す。PROXY要素505内に構成されたenabled属性は、2つの値「0」(無効)または「1」(有効)のうちの1つを取りうる。PROXY要素519のHOSTタグ507は、「host:port」形式でプロキシ・サーバのホスト名またはインターネット・プロトコル(IP)アドレスを示す。port属性が省略された場合、デフォルト値は80である。
EMAIL要素509は、記録エンジン201の電子メール通知システム(図に示されていない)により使用される設定を指定するが、これは、図6を参照しつつ、以下の3.2.3節でさらに詳しく説明される。
LIMITER要素511は、ビデオ・ファイルおよびイベント・ファイルがいつスワップされるかを決定するために使用される基準を指定するが、これは、図7を参照しつつ、以下の3.2.4節でさらに詳しく説明される。
HISTORY要素513は、ストレージ・サーバ2300のストレージ・デバイス2309内に構成されたドライブのビデオおよびイベント・ファイル・ディレクトリ内に格納されるビデオ・ファイルおよびイベント・ファイルの最大年齢を表す値を含む。HISTORY要素は、秒単位で測定される、整数値を含む。
GENERAL要素405は、多数のDRIVE要素515も含む。それぞれのDRIVE要素515は、システム100のストレージ・デバイス2309内に構成される単一ドライブの設定を記述する。DRIVE要素515は、図8を参照しつつ3.2.5節でさらに詳しく説明される。
3.2.3 EMAIL要素
上述のように、EMAIL要素509は、記録エンジン201の電子メール通知システムにより使用される設定を指定する。図6に示されているように、EMAIL要素509は、子要素603〜613を含む。EMAIL要素509は、さらに、enabled属性601も含む。enabled属性601が0に設定された場合、電子メール通知システムは無効化され、すべての子要素を無視することができる。enabled属性601が非ゼロ値に設定された場合、電子メール通知システムは有効化される。
SMTP要素603は、電子メールを送信するために使用されるSMTPサーバ2221のホスト名を指定する。SMTP要素603は、オプションの「auth」属性を含む。存在する場合、「auth」属性は、以下のような3つの値のうちの1つに設定することができる。
(i)none−認証をSMTPサーバ2221上で実行する必要のないことを示す。
(ii)smtp−認証は、SMTP認証プロトコルを使用して実行されることを示す。
(iii)pop−認証は、(知られているpop−before−smtp規約を使用して)開いているSMTP接続を持つ前にPOPサーバにログオンすることにより実行されることを示す。
SMTP要素603の内側のHOST要素605は、「host:port」形式でSMTPサーバ2221のホスト名またはインターネット・プロトコル(IP)アドレスを示す。ポートが省略された場合、デフォルト値は25である。
SMTP要素603の内側のUSER要素607は、SMTPまたはPOP認証方法を使用してSMTPサーバ2221にログインするために使用されるユーザ詳細を示す。USER要素607は、「hidden」属性を含む。「hidden」属性が非ゼロ値に設定された場合、USER要素607の内容は、使用される実際のパスワードを表さない。USER要素607の内容は、「username:password」の形式である。
SMTP要素の内側のPOPHOST要素は、pop−before−smtp認証に使用するネットワーク2220上のPOPサーバのホスト名またはIPアドレスおよびPOPサーバに関連付けられているポートを「host:port」の形式で示す。ポートが省略された場合、デフォルト値は110である。
EMAIL要素509のFROM要素609は、送信された電子メールの送信者として電子メール通知システムにより使用されるアドレスを示す。FROM要素609に含まれるデータの形式は、電子メール・アドレスを記述するための既存の標準に適合するのが好ましい。
TO要素611は、送信された電子メールの受信者として電子メール通知システムにより使用されるアドレスを示す。TO要素611に含まれるデータの形式は、電子メール・アドレスを記述するための既存の標準に適合すべきである。
PRIORITY要素613は、電子メール通知システムにより使用されるしきい値優先度を示す。このしきい値優先度以上の優先度を持つイベントが発生すると、電子メール通知が送信される。優先度レベルは、1(つまり、最高優先度を表す)から5(つまり、最低優先度を表す)までの範囲とすることができる。
3.2.4 LIMITER要素
上述のように、LIMITER要素511は、いつビデオ・ファイルおよびイベント・ファイルがスワップされ、他の要素703および705を含むかを決定するために使用される基準を指定する。図7に示されているように、LIMITER要素511は、「bysize」属性701を含む。bysize属性701が非ゼロの場合、ビデオ・ファイルとイベント・ファイルがいつスワップされるかを決定するためにSIZE要素703の値が使用される。「bytime」属性702も、LIMITER要素511に含まれる。bytime属性702が非ゼロの場合、ビデオ・ファイルとイベント・ファイルがいつスワップされるかを決定するためにTIME要素705の値が使用される。
SIZE要素703は、ビデオ・ファイルの最大サイズをバイト単位で指定する。記録エンジン201は、ファイルをスワップする前に、最大サイズを少しだけ超えていてもよい。LIMITER要素511のbysize属性701が存在しないか、または0に設定されているか、またはSIZE要素703が存在しない場合、1ギガバイトのハード限界が強制される。
TIME要素705は、ビデオ・ファイルの最大持続時間を秒単位で指定する。LIMITER要素511のbytime属性702が存在しないか、または0に設定されているか、またはTIME要素705が存在しない場合、24時間のハード限界が強制される。
3.2.5 DRIVE要素
上述のように、それぞれのDRIVE要素515は、記録エンジン201により使用される、ストレージ・サーバ2300のストレージ・デバイス2309内に構成された、それぞれのドライブの状態を記述する。ストレージ・サーバ2300に利用可能なそれぞれのドライブに対応するDRIVE要素515が1つあるのが好ましい。これは、内部ストレージ・デバイス(例えば、ハブ・ディスク)、ストレージ・デバイス内のパーティション、周辺部ストレージ・デバイス、ネットワーク・アクセス可能ストレージ・デバイス、および他のストレージ・デバイスのそれぞれにマッピングされる論理ドライブを含むシステム100上に構成されたすべての論理ドライブを含む。図8に示されているように、このドライブ要素は、さらに2つの要素802および803を含む。DRIVE要素515は、ストレージ・デバイス2309の特定のドライブ(例えば、Windows(登録商標)システムでは、「C:1」は、第1のハード・ディスクを示す)にアクセスするためにプロセッサ2305により使用されるパスを示すpath属性801を含む。
FREE要素802は、記録エンジン201の空きメモリ領域監視を制御する値を含む。FREE要素802は、「/」文字で区切られた、それぞれバイト数を表す、3つの整数値からなる。第1の値は、ハード・ディスク・ドライブ2310のメモリ領域しきい値を表す。対応するドライブ上の空きメモリ領域が第1の値よりも下である場合、記録エンジン201は、空きメモリ領域がより高い値に達するまで旧いビデオ・ファイルを削除しようと試みる。FREE要素802内の第2の値は、空きメモリ領域限界を表す。対応するドライブ上の空きメモリ領域が第2の値よりも下である場合、記録エンジン201は、旧いビデオ・ファイルを削除しようと試み、空きメモリ領域がもう一度第2の値よりも高くなるまでさらに多くのサンプル・データをドライブに書き込むことを拒絶する。第3の値は、ストレージ・サーバ構成オブジェクトが作成されたときのドライブ上の空き領域を表す。
USED要素803は、記録エンジン201により使用されるハード・ディスク・ドライブ2310上のメモリ領域の監視を制御する値を含む。本明細書で説明されているように、「使用ディスク領域」は、ビデオおよびイベント・ファイルを格納するために記録エンジン201によりハード・ディスク・ドライブ2310上で使用されるメモリ領域を指す。USED要素803は、「/」文字で区切られた、それぞれバイト数を表す、3つの整数値を含む。第1の値は、使用ディスク領域しきい値を表す。DRIVE要素515に対応するドライブ上の記録エンジン201により使用される領域が第1の値よりも上に来る場合、記録エンジン201は、使用領域が下限値に達するまで旧いビデオ・ファイルを削除しようと試みる。第2の値は、使用ディスク領域限界を表す。対応するドライブ上の記録エンジン201により使用される領域が第2の値よりも上に来る場合、記録エンジン201は、旧いビデオ・ファイルを削除しようと試みる。さらに、この事例では、記録エンジン201は、使用ディスク領域がもう一度第2の値よりも小さくなるまで、さらに多くのサンプル・データを対応するドライブに書き込むことを拒絶する。第3の値は、このストレージ・サーバ構成オブジェクトが作成されたときのドライブ上の使用ディスク領域を表す。
3.2.6 CAMSVR要素
上述のように、ストレージ・サーバ構成オブジェクトを形成するXMLドキュメントは、CAMSVR要素407を含む。CAMSVR要素407は、ストレージ・サーバ2300により制御される単一のカメラ・サーバ109〜111を記述する。図9に示されているように、CAMSVR要素407は、さらに要素901〜905を含む。CAMSVR要素407は、ストレージ・サーバ構成オブジェクトが関連付けられているカメラ・サーバ109〜111の専用の型を記述する、type属性907を含む。type属性907は、以下の専用の型値のうちの1つを含むことができる。
(i)VB101、
(ii)VB150、
(iii)VB−C10、
(iv)unknown−カメラ・サーバの型が上記の1つでない場合、またはカメラ・サーバ109〜111の型が他の何らかの理由により決定できない場合にのみ使用される。
それぞれのHOST要素901は、特定のカメラ・サーバ109〜111と通信するために記録エンジン201により使用されるホスト名またはインターネット・プロトコル(IP)アドレスおよびポートを「host:port」という形式で記述する。ポートが省略された場合、デフォルト値は80である。通常、1つのHOST要素901のみが存在する。2つのHOST要素901は、関連付けられているストレージ・サーバ構成オブジェクトを使用して、特定のカメラ・サーバ109〜111に使用されるホスト名またはポートを変更する場合に使用することができる。オプションのrename属性909を使用することで、どのHOST要素901が旧いホスト名およびポート(「old」)を記述し、どのHOST要素901が新しいホスト名およびポート(「new」)を記述するかを指定することができる。
LIVE要素902は、特定のカメラ・サーバ109〜111と通信するためにビューア2200により使用されるホスト名またはIPアドレスおよびポートを「host:port」という形式で記述する。ポートが省略された場合、デフォルト値は80である。LIVE要素902は、オプションであり、省略された場合、LIVE要素902により表される値は、HOST要素901のと同じであると想定される。
USER要素903は、特定のカメラ・サーバ109〜111にログオンするために使用されるユーザ詳細を記述する。hidden属性911は、USER要素903に含まれる。hidden属性911が非ゼロ値に設定された場合、USER要素903の内容は、使用される実際のパスワードを表さない。USER要素903の内容は、「username:password」の形式である。
最大8つまでのPRESET要素904をCAMSVR要素407に入れることができる。PRESET要素904は、図10を参照しつつ3.2.7節で詳しく説明される。
CAMSVR要素907は、最大4つまでのCAMERA要素905を含むことができる。CAMERA要素905は、関連付けられたストレージ・サーバ構成オブジェクト型が「camsvr」に設定されている場合にCAMSVR要素907内に存在する。CAMERA要素907は、図11を参照しつつ以下の3.2.8節で詳しく説明される。
3.2.7 PRESET要素
PRESET要素904は、ストレージ・サーバ2300に関連付けられているカメラ・サーバ109〜111のカメラ112〜115に対しプリセットされている位置のうちの1つを記述する。図10からわかるように、PRESET要素904は、記述されるプリセットを指定し、1から8までの整数とすることができる、「id」属性1009を含む。PRESET要素904は、さらに、要素1001、1003、および1005も含む。
NAME要素1001はそれぞれ、プリセットの名前を示す。言語により区別される、2つまでのNAME要素1001がありうる。言語は、language属性1003内で指定される。有効な言語識別子は、「English」および「Japanese」であり、単一のPRESET要素904内のどの2つのNAME要素1001も同じ言語識別子を持たない。
CAMID要素1003は、特定のプリセットにより参照されるカメラ番号を示す。カメラ番号は、VB101およびVB150型カメラ・サーバについては0から3までの間の値とすることができ、VB−C10カメラ・サーバについては0に設定される。カメラ番号は、複数のカメラ112〜115をサポートするカメラ・サーバ109〜111上で特定のカメラを識別するために使用される。
PTZ要素1005は、PRESET要素904により表される特定のプリセットに対するパン、傾斜、およびズーム設定を示す。PTZ要素1005は、「/」文字で区切られる3つの浮動小数点値を含み、それぞれ、パン、傾斜、およびズームを示す。
3.2.8 CAMERA要素
ストレージ・サーバ構成オブジェクトのCAMERA要素409は、システム100内の単一カメラ112〜115を記述する。図11に示されているように、CAMERA要素409は、多数の他の要素1101〜1115を含む。CAMERA要素409は、CAMERA要素409に関連付けられているカメラ112〜115に割り当てられた一意的なカメラ識別子を指定する、「id」属性1116を含む。type属性1118は、カメラ112〜115の型を指定する。type属性1118の値は、文字列であり、カメラ・サーバ109〜111により報告される特定のカメラ112〜1115の型を示す。
CAMERA要素409のserver属性1120は、特定のカメラ110〜115が属すカメラ・サーバ109〜111を「host:port」形式で指定する。ポートが指定されていない場合、ポートは80であると想定される。severid属性1122は、カメラ109〜111の識別子を指定する。VB101またはVB150のカメラ・サーバ109〜111については、serverid属性1122値は、0から3までの範囲とすることができるが、VB−C10カメラ・サーバについては、値は0とすることができ、また省略しても安全である。
CAMERA要素409のそれぞれのNAME要素1101は、関連付けられたカメラ112〜115の名前を示す。言語により区別される、2つまでのNAME要素1101がありうる。言語は、language属性1123内で指定される。language属性1123は、「English」および「Japanese」に設定することができ、単一のCAMERA要素409内のどの2つのNAME要素も同じ言語識別子を持たないことが好ましい。
DIR要素1103は、特定のカメラ112〜115に関連付けられているビデオおよびイベント・ファイルが書き込まれるストレージ・デバイス2309内に構成されたディレクトリを指定する。path属性1125は、そのディレクトリに対するディレクトリ・パスを指定するために使用される。
Q要素1105は、CAMERA要素409により記述されている特定のカメラ112〜115が記録する場合に使用されるデフォルトの画質を指定する。有効な値が以下の表1で説明されている。
Figure 0005173919
R要素1107は、CAMERA要素409により記述されている特定のカメラ112〜115が記録する場合に使用されるデフォルトの画像解像度を指定する。R要素1107の有効な値は、以下の表2で説明される。
Figure 0005173919
STATE要素1109は、ストレージ・サーバ構成オブジェクト型が「camera」に設定されている場合にカメラ要素409内に存在する。STATE要素1109は、図12を参照しつつ以下の3.2.9節で詳しく説明される。
それぞれのDAY要素1111は、特定のカメラ・サーバ109〜111のスケジュールに単一の24時間周期を記述する。cameraid属性1127は、DAY要素1111が属する特定のカメラ・サーバ109〜111を指定し、また親CAMERA要素409のid属性と同じ値を持たなければならない。name属性1129は、スケジュール内に曜日の名前を記述する。平日スケジュールは、「Monday」、「Tuesday」などを曜日の名前として指定することにより示される。曜日名でない文字列が使用される場合、DAY要素1111は、特別スケジュールを表すと仮定される。
DAY要素1111内のそれぞれのDATE要素1113は、その曜日がアクティブである単一の日付を指定する。曜日要素は、その曜日に対応するDATE要素1113を含む特別なスケジュールによりオーバーライドされない限り、その名前に対応する各曜日でアクティブであると自動的に想定される。DATE要素1113の形式は、「yyyy−mm−dd」である。
DAY要素1111内のそれぞれのSCHED要素1115は、単一のスケジュール・アイテムを記述する。SCHED要素1115は、図13を参照しつつ3.2.10節で詳しく説明される。
3.2.9 STATE要素
STATE要素1109は、特定のカメラ112〜115の現在状態を示すためにCAMERA要素409内に含めることができる。図12に示されているように、STATE要素1109は、多数の他の要素1201〜1209を含む。
STATUS要素1201は、関連付けられているカメラ・サーバ109〜111の現在ステータスを示し、以下の値のうちの1つを取りうる。
(i)unknown、
(ii)disconnected、
(iii)idle、
(iv)starting、
(v)monitoring、
(vi)recording、
(vii)error。
MODE 1203要素は、現在のスケジュール型を記述する、整数値を含む。以下のスケジュール型を、以下の表3にまとめた。
Figure 0005173919
Q要素1205は、特定のカメラ・サーバ109〜111がサンプル・データ・サンプルを受け取ることを現在予定されている品質を指定する。Q要素1205の有効な値は、以下の表4で説明される。
Figure 0005173919
R要素1207は、カメラ・サーバ109〜111がサンプル・データ・サンプルを受け取ることを現在予定されている解像度を指定する。R要素1277の有効な値は、以下の表5で説明される。
Figure 0005173919
RATE要素1209は、記録エンジン201が現在記録している間のフレーム速度を示す。
3.2.10 SCHED要素
SCHED要素1115は、曜日内の単一スケジュール・アイテムを記述する。図13に示されているように、SCHED要素1115は、多数の他の要素1301〜1307を含む。weekdays属性1309は、特定のスケジュール・アイテムが有効である曜日の集合を示す。weekdays属性1309は、記録エンジン201により使用されない。weekdays属性1309は、ビューア2200が複数の曜日に出現する同一スケジュール・アイテムを容易にグループ化できるように、ストレージ・サーバ構成ファイル205に格納され、ビューア2200に送信される。start 1311およびstop 1313属性は、スケジュール・アイテムが有効である期間を示し、それぞれの属性1311および1313は形式「hhmm」を取る。
BASE要素1301は、特定のスケジュール期間に通常の記録設定を記述するが、3.2.11節でさらに詳しく説明する。
MOTION要素1303は、スケジュール要素1115により表されるスケジュールでの運動検出設定を記述する。特定のスケジュールで運動検出が有効化されない場合、MOTION要素1303を省略できる。MOTION要素1303は、3.2.12節でさらに詳しく説明される。
それぞれのSENSOR要素1305は、特定のカメラ・サーバ109〜111に接続された特定のセンサ入力に対するセンサ設定を記述する。センサ・ベースの記録(つまり、センサによりトリガされる記録)が特定のスケジュールで有効化されない場合、SENSOR要素1305は、省略可能である。SENSOR要素1305は、3.2.13節でさらに詳しく説明される。
OPERATOR要素1307は、トリガ・メッセージが記録エンジン201により受信されたときにアクティブ化される記録設定を記述する。これは、通常、ユーザが、ビューア2200のビューイング画面7600(図76を参照)から手動記録を開始したときに発生し、これにより、ビューア2200は、Webサーバ213を介してRE_triggerコマンド(以下で詳述する)を記録エンジン201に送信することになる。記録設定は、さらに、外部ソフトウェア(アラーム制御システムなど)がWebサーバ213を介してRE_triggerコマンドを記録エンジン201に送信するときにもアクティブ化される。OPERATOR要素1307は、EVENT要素と本質的に同じ型であるが、これについては、3.2.14節で詳しく説明する。
3.2.11 BASE要素
図14は、BASE要素1301を示す。BASE要素1301は、特定のスケジュール期間の通常記録設定を記述する。図14に示されているように、BASE要素は、多数の他の要素1401〜1408を含む。
RATE要素1401は、最大30.0フレーム/秒で記録されるフレーム(つまり、サンプル)速度を示す。記録が実行されない場合、0.0の速度が指定される。
Q要素1402は、BASE要素1301に関連付けられている特定のカメラ・サーバ109〜111から取り出されるサンプル・データの画質を示す。
R要素1403は、特定のカメラ・サーバ109〜111から取り出されるビデオ・サンプル・データの解像度を示す。
PRESET要素1404は、特定のカメラ・サーバ109〜111のカメラ112〜115が記録時に面していなければならないプリセット位置の識別子を示す。有効なプリセット識別子は、1から8までの範囲の数である。特別な値である−1を指定することで、カメラ112〜115の位置を制御すべきでないことを示すことができる。
PTZ要素1406は、特定のカメラ・サーバ109〜111に関連付けられたカメラ112〜115のそれぞれパン、傾斜、およびズーム設定を示す、「/」文字で区切られた、3つの浮動小数点値を含む。PTZ要素1406は、特定のカメラ112〜115について、プリセットのどれにも対応しない、カスタム・ビューイング位置を指定するために使用される。PRESET 1404およびPTZ要素1406は、相互排他的である。
LIGHT要素1408は、特定のカメラ112〜115に関連付けられているバックライト補正をオンにするかどうかを指示する。LIGHT要素1408に対する非ゼロ値は、バックライト補正はオンにされることを示すが、値0は、バックライト補正がオフであることを示す。
3.2.12 MOTION要素
MOTION要素1303は、SCHED要素1115により定義された所定のスケジュール期間に使用される運動検出パラメータを示す。図15に示されているように、MOTION要素1303は、多数の他の要素1501〜1506を含む。enabled属性1507は、運動検出が有効化されるかどうかを制御する。enabled属性1507の値が0の場合、運動検出は無効化される。enabled属性1507の値が非0の場合、運動検出はアクティブ化される。engine属性1509は、運動検出が実行されるかどうかを制御する。engine属性1509は、以下のように2つの有効な値のうちの1つを取りうる。
(i)re−運動検出は、記録エンジン201により実行されなければならないことを示す。
(ii)camsvr−運動検出が特定のカメラ・サーバ109〜111により実行されなければならないことを示す(注意:これは、VB150カメラ・サーバ型などのある種のカメラ・サーバのみに適用可能である)。
REGION要素1501は、運動解析が実行される画像の部分を示す。つまり、運動解析が運動を検出するために実行される場合に、特定のカメラ112〜115により取り込まれるビデオ・サンプル・データにより表される、ビデオ画像内の領域である。運動解析は、記録エンジン201内の画像解析エンジン(図に示されていない)により実行される。REGION要素1501の値は、「((x1,y1)−(x2,y2))」の形式であるが、ただし、x1およびx2は、0から80までの範囲、y1およびy2は、0から60までの範囲である。x1、x2、y1、およびy2限界値は、640×480画像内の8×8ブロックを表す。しかし、これらの限界値は、小さな解像度が使用される場合に画像解析エンジンにより適宜スケーリングすることができる。
RATE要素1502は、最大30.0フレーム/秒までの、フレームが画像解析エンジンにより解析される速度を示す。
BLOCK要素1503は、画像解析エンジンにより使用されるブロック許容誤差設定(つまり、感度とも呼ばれる)を制御し、0から255までの範囲の値を取りうる。
AREA要素1504は、解析される領域により覆われている総面積(つまり、物理面積)の割合として表される、画像解析エンジンにより使用される面積許容誤差設定を制御する。AREA要素1504は、0.0%から100.0%までの範囲の値を取りうる。
TIME要素1505は、画像解析エンジンにより使用される時間許容誤差設定を制御する。TIME要素1505は、0.0秒から5.0秒までの範囲の値を取りうる。
EVENT要素1506は、運動イベントが発生したときに記録エンジン201を制御する。EVENT要素1506は、3.2.14節で詳しく説明される。
3.2.13 SENSOR要素
図16は、SENSOR要素1305を示す。SENSOR要素1305は、親CAMERA要素409により記述された特定のカメラ・サーバ109〜111に関連付けられた特定のセンサにより使用される設定を示すために使用することができる。図16に示されているように、id属性1601は、特定のカメラ・サーバ109〜111上の特定のセンサに対応する識別子を示す。VB101およびVB150型カメラ・サーバでは、SENSOR要素1305は、値0または1に設定することができる。VB−C10型カメラ・サーバでは、SENSOR要素1305は0にすることができる。enabled属性1603は、関連付けられたセンサによるセンサ・ベースの記録が有効化されるかどうかを示す。
それぞれのNAME要素1605は、特定のセンサの名前を示す。2つまでのNAME要素1605がありうる。NAME要素1605は、language属性により指定される、言語で区別される。有効な言語識別子は、「English」および「Japanese」である。単一のSENSOR要素1305内の2つのNAME要素1605は、同じ言語識別子を持たなければならない。
EVENT要素1607は、センサ・イベントが発生し、EVENT要素1506と同じである場合に記録エンジン201を制御するが、これについては、3.2.14節で詳しく説明する。
3.2.14 EVENT要素
図17は、EVENT要素1506を示す。上述のように、EVENT要素1506は、特定のイベントが発生したときに記録エンジン201を制御する。図17に示されているように、EVENT要素1506は、多数の他の要素1701〜1707を含む。trigger属性1709は、非ゼロの値により、関連付けられているイベントがトリガされることを示す。つまり、対応するEVENT要素の内側の設定が、特定の時間について適用されるということである。
PRIORITY要素1701は、イベントの優先度を制御する。イベントがトリガされると、設定は、トリガされたイベントが関連付けられているカメラ112〜115に対し現在トリガされているすべてのイベントのうちの最高優先度のイベントである場合のみ適用される。PRIORITY要素1701の値は、1(つまり、最高優先度)から5(つまり、最低優先度)までの範囲とすることができる。
RATE要素1702は、最大30.0フレーム/秒までの、関連付けられたイベントがトリガされている間にフレーム(つまり、サンプル)が記録される速度を制御する。
PRE要素1703は、事前イベント記録持続時間を指定する(つまり、そのイベントがトリガされるのに先だって記録されるサンプル・データの秒数)。
POST要素1704は、事後イベント記録持続時間を指定する(つまり、EVENT要素1709内の設定が適用されるイベントがもはやトリガされなくなった後の秒数)。
PRESET要素1705は、イベントがトリガされた場合に関連付けられているカメラ・サーバ109〜111の特定のカメラ112〜115が移動される先のプリセット位置を指定する。有効なPRESET識別子は、1から8までの範囲の数である。特別な値である−1を指定することで、関連付けられたカメラ112〜115の位置を制御すべきでないことを示すことができる。
PTZ要素1706は、特定のカメラ112〜115のそれぞれパン、傾斜、およびズーム設定を示す、「/」文字で区切られた、3つの浮動小数点値を含む。PTZ要素1706は、プリセットのどれにも対応しない、カスタム・カメラ位置を指定するために使用することができる。PRESET 1705およびPTZ 1706要素は、相互排他的である。
LIGHT要素1707は、イベントがトリガされている間に特定のカメラ112〜115に関連付けられているバックライト補正をオンにするかどうかを指示する。LIGHT要素1707に対する非ゼロ値は、バックライト補正はオンにされることを示すが、値0は、バックライト補正がオフであることを示す。
3.3 ストレージ・サーバ・データ
3.3.1 ストレージ・サーバ構成ファイル
ストレージ・サーバ構成ファイル205は、型「file」のストレージ・サーバ構成ファイル(SSCO)を含むデータ・ファイルである。ストレージ・サーバ構成ファイル205は、個々のストレージ・サーバ(例えば、ストレージ・サーバ2300A、2300B、2300C、および2300Dのうちの1つ)を稼働させるために必要な情報を含む。ストレージ・サーバ構成ファイル205は、記録エンジン201が実行を開始すると記録エンジン201により読み込まれる。ストレージ・サーバ構成ファイル205は、記録エンジン201の構成が管理者により変更される毎に書き換えられる。
ストレージ・サーバ構成ツール211は、ストレージ・サーバ構成ファイル205を書き換えるために使用することもでき、構成ファイル205が変更される毎にプロセス間通信(IPC)メッセージを記録エンジン201に送信し、ストレージ・サーバ2300の一般設定を再び決定するように記録エンジン201に指令する。
3.3.2 ストレージ・サーバのユーザ認証
ストレージ・サーバ・ユーザ・ファイルは、Webインターフェース213を介して記録エンジン201にアクセスできるユーザを定義し、また、ストレージ・サーバ構成ツール211を使用して修正することができるが、これについては以下で詳しく説明する。ストレージ・サーバ・ユーザ・ファイルは、一連のエントリを1行に1つずつ並べたテキスト・ファイルである。それぞれのエントリは、ユーザ名(ユーザを識別する)、レルム(つまり、ユーザが有効であるコンテクストを識別する文字列)、およびダイジェストからなる。使用されるレルムは、システム100に対し構成された値である(例えば、「COMPANYNAME」)。ダイジェストは、区切り文字として「:」(コロン)を使用してユーザ名、レルム、およびパスワードを連結し、その後、MD5アルゴリズムをこのデータに適用してハッシュを生成することにより生成される。
ストレージ・サーバ・グループ・ファイルを使用して、ストレージ・サーバ・ユーザ・ファイルにリストされているどのユーザが管理者特権を有するかを定義する。ストレージ・サーバ・グループ・ファイルは、「admin」という文字列から始まり、空白で区切られた、管理者特権を持つそれぞれのユーザのユーザ名が続く単一行からなる。ストレージ・サーバ・グループ・ファイルは、さらに、ストレージ・サーバ構成ツール(後述)により生成され、修正されもする。
3.3.3 ストレージ・サーバ・データ・ファイル構造
記録エンジン201により格納されるビデオおよびイベント・データは、一連のファイルに分配される。カメラ112〜115から受信されたすべてのビデオ・データは、ビデオ・ファイルに格納される。イベント・データは、カメラ・サーバ109〜111、ビューア2200、および内部ストレージ・サーバ2300イベントを含む様々なソースから収集することができる。イベント・データは、イベント・レコードの形で別のイベント・ファイルに格納される。イベント・データは、さらに、受信されたビデオ・フレームとともにビデオ・ファイル内に格納されている、テキスト・サンプル内に挿入することもできる。図93は、データが記録エンジンを通ってデータのソースからファイルへ流れる道筋を示している。
3.3.4 ストレージ・サーバ・ビデオ・ファイル構造
ビデオ監視および記録システムでは、標準またはデ・ファクト・スタンダードの形式を使用してビデオをファイルに記録しておくと、ユーザがストレージ・サーバ2300からビデオを抽出し、サードパーティ製プログラム(通常使用されるメディア・プレーヤーなど)を使用して再生または処理するのに便利であり、好都合である。また、状況によっては、異なる持続時間に関連付けられたさらに小さなチャンクでデータを保持すると都合がよい場合もある。こうした状況では、小さなチャンクを使用すると、ビデオ・サンプル・データの削除をきめ細かく簡単に制御することができ、またサードパーティ製ツールで格納されているデータに容易にアクセスすることができる。
ストレージ・サーバ2300は、ストレージ・デバイス2209(内蔵、外付け、およびネットワーク・アクセス可能なドライブを含む)内に異なるビデオ・ファイルおよびイベント・ファイル群を保持する。本明細書ではビデオ・ファイルと総称される、メディア・ファイル1800およびインデックス・ファイル1805、およびイベント・ファイルからなる、特定の持続時間に対するカメラ112〜115のそれぞれに関連付けられたファイル群がある。
図18に示されているように、ビデオ・ファイルは、第1のファイル1800および第2のファイル1805を含む。メディア・ファイルと呼ばれる、第1のファイル1800は、カメラ112〜115により取り込まれるビデオ・サンプル・データを格納するために使用される。このようなメディア・ファイル1800は、ビデオ・フレームを表すサンプルおよびタイム・スタンプおよびイベント通知を表すテキスト・サンプルとしてビデオ・サンプル・データを格納することができる。
ビデオ・ファイルのペアの第2のファイル1805は、インデックス・ファイルと呼ばれる。インデックス・ファイル1805は、メディア・ファイル1800内のどこでそれぞれのサンプルを見つけるか、およびそれぞれのサンプルがいつメディア・プレーヤーにより再生されるか、またはアクセス・エンジン203により処理されるかに関してメディア・プレーヤー・アプリケーション(例えば、QuickTime(登録商標))またはアクセス・エンジン203に指示する情報を格納する。
ファイル1800および1805の形式については、3.3.4.2節で詳しく説明する。
メディア・サンプルおよびインデックス情報(タイミングおよび解像度など)が別のファイルに入っている実装が本明細書で説明されているが、他の実装では、メディア・サンプルおよびインデックス情報は、共通ファイル内に構成することができる。
3.3.4.1 ファイルのロケーションと命名
カメラ・サーバ109〜111のそれぞれに対応するデータ・ファイル209は、そのカメラ・サーバ109〜111に対しファイルを格納するために選択されたドライブのサブディレクトリに格納される。例えば、データ・ファイル209は、ディレクトリ「drive:\Webview−NVR\videofiles」に格納することができるが、ただし、driveは、データ・ファイル209を格納するために選択されたドライブの文字で置き換えられる。所定の時刻に記録しているカメラ・サーバ109〜111はそれぞれ、特定のカメラ・サーバ109〜111に関連付けられているスタンバイ・ファイルの1つのペア(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)を持つ。スタンバイ・ファイルは、以下のテンプレート(1)に従って名前を付けられる。
Standby(0|1)_cameraid_creationdate_creationtime_count.avi、および
Standby(0|1)_cameraid_creationdate_creationtime_count.mov (1)
Standbyという単語の直後の文字は、0または1のいずれかに設定され、どのスタンバイ・ファイル(つまり、メディア・ファイル1800および関連付けられているインデックス・ファイル1805)が表されているかを示す。後述のように、カメラ・サーバ109〜111に従って2つのスタンバイ・ファイル(つまり、2つのメディア・ファイル1800と2つの関連付けられたインデックス・ファイル1805)がありうる。
テンプレート(1)のcameraidセクションは、特定のカメラ・サーバ109〜111が最初にシステム100に追加されたときに記録エンジン201により特定のカメラ・サーバ109〜111に与えられた特定のカメラ・サーバ109〜111の一意的な識別子を表す16文字からなるデータ文字列である。cameraidセクションは、16進数形式で表され、小文字は値A〜Fを表す。
テンプレート(1)のcreationdateセクションは、関連付けられたスタンバイ・ファイルが作成された、協定世界時(UTC)による日付を表す。creationdateセクションの形式は、yyyymmddである。
テンプレート(1)のcreationtimeセクションは、スタンバイ・ファイルが作成された時刻を、協定世界時で表す。creationtimeセクションの形式は、hhmmssである。
テンプレート(1)のcountセクションは、記録エンジン201による現在の記録セッションの開始を表すスタンバイ・ファイルからカウントする、関連付けられたスタンバイ・ファイルの連番を表す。システム100内のそれぞれのカメラ・サーバ109〜111について別々のカウンタを保持することができる。同じカメラ識別子、作成日時(つまり、秒まで)を持つ複数のスタンバイ・ファイルが作成される場合、countセクションの値を使用して、そのようなファイルを区別することができる。
記録エンジン201は、任意の時点において、カメラ・サーバ109〜111毎に1つの非アクティブ・スタンバイ・ファイル(つまり、1つの非アクティブ・メディア・ファイル1800および関連付けられたインデックス・ファイル805)を保持しようと試みる。記録エンジン201は、1つの非アクティブ・スタンバイ・ファイルを保持し、ファイル・スワップオーバーが生じたときにすぐに記録できるファイルを用意することにより、スタンバイ・ファイル群を作成したときにオーバーヘッドが生じてもそれらのファイルへのサンプル・データの書き込みが遅れることのないようにする。したがって、スタンバイ・ファイルの対応するメディア・ファイル1800にサンプルを書き込ませることによりスタンバイ・ファイルがアクティブ状態に移行されたときに、新しい非アクティブ・スタンバイ・ファイルが並行動作で作成される。
スタンバイ・ファイル・ペア(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)は、以下のような一組の基準のうちの1つが満たされると完了できる。
(i)スケジュール変更により、記録が停止する。
(ii)メディア・ファイル1800のサイズがユーザ設定限界を超える。
(iii)メディア・ファイル1800のサイズが1ギガバイトのハード限界を超える。
(iv)スタンバイ・メディア・ファイル1800内に表されているビデオ・サンプル日付の持続時間が、ユーザ設定限界を超える。
(v)スタンバイ・メディア・ファイル1800内に表されているビデオ・サンプル・データの持続時間が、24時間のハード限界を超える。
(vi)関連付けられているインデックス・ファイル1805が、最大容量まで詰められ、これ以上サンプルのインデックスを作成することができない。
スタンバイ・ファイル・ペアが完成すると、スタンバイ・ファイル・ペアは閉じられ、以下のテンプレート(2)に従って完了したファイル・ペアとしてリネームされる。
MEDIA_cameraid_startdate_starttime_enddate_endtime_count.avi、および
INDEX_cameraid_startdate_starttime_enddate_endtime_count.mov (2)
前のように、テンプレート(2)のcameraidセクションは、特定のカメラ・サーバ109〜111が最初にシステム100に追加されたときに記録エンジン201により特定のカメラ・サーバ109〜111に与えられた特定のカメラ・サーバ109〜111の一意的な識別子を表す16文字からなる文字列である。cameraidセクションの値は、16進数形式で表され、小文字は値A〜Fを表す。
上記のテンプレートのstartdateセクションは、スタンバイ・ファイル・ペアの第1のサンプルが記録されたときの日付を、協定世界時形式で表す。startdateセクションの形式は、yyyymmddである。
starttimeセクションは、ファイルの第1のサンプルが記録された時刻を、協定世界時で表す。starttimeセクションの形式は、hhmmssである。
starddateおよびstarttimeは、必ずしも、スタンバイ・ファイル内で使用されるcreationdateおよびcreationtimeと同じ値を表すわけではない。
enddateセクションは、スタンバイ・ファイル・ペアが完成した日付を、協定世界時形式で表す。enddateセクションの形式は、yyyymmddである。
endtimeセクションは、スタンバイ・ファイル・ペアが完成した時刻を、協定世界時形式で表す。endtimeセクションの形式は、hhmmssである。
上記ファイルの命名形式により、アクセス・エンジン203は、特定の時点を表すメディア・ファイル1800および関連付けられたインデックス・ファイル1805が存在するかどうかを決定することができる。この命名形式を使用することにより、さらに、管理者は、記録エンジン201により記録された特定のファイルによりカバーされる時間範囲を容易に決定することができ、それにより、Windows(登録商標)Explorerなどのサードパーティ製ファイル管理ソフトウェアを使用してファイルのコピーおよび移動行うことができる。この命名形式では、さらに、サードパーティ製ソフトウェア・アプリケーションが、ファイルの任意の形式の中央インデックスをチェックしなくても(例えば、アーカイブ・ストレージへの自動化された定期的コピーのため)ファイルを自動的に取り扱う、または処理することが可能になる。この命名形式を使用すると、さらに、中央インデックスと実際のファイルとの間の、記録エンジン201により中央ファイル・インデックスが保持されていた場合に生じるであろう不一致の可能性を回避できる。
3.3.4.2 ファイル形式
後述のように、インデックス・ファイル1805は、1つまたは複数のトラック1813および1815を含む。それぞれのトラックは、関連付けられたメディア・ファイル200への参照(例えば、参照1807)を含む。そのようなものとして、他の実装では、複数のトラック213を含むインデックス・ファイル205は、複数のメディア・ファイル(例えば、メディア・ファイル1800)をポイントすることができる。例えば、一方のメディア・ファイル(例えば、メディア・ファイル1800)がすべてのビデオ・サンプルを含み、他方のメディア・ファイル(図に示されていない)がそれらのビデオ・サンプルに関連付けられたすべてのイベント記述を含む場合には、関連付けられたインデックス・ファイル(例えば、ファイル1805)は、両方のメディア・ファイル1800をポイントすることができる。
一実装では、1つのメディア・ファイル(例えば、ファイル1800)は、複数のインデックス・ファイル1805により参照することができる。例えば、1つのメディア・ファイル1800が、カメラ・サーバ109〜111のうちの複数から受信されたサンプル(つまり、サンプル・データ)を格納する場合には、そのようなメディア・ファイル1800は、複数のインデックス・ファイル1805により参照することができる。
3.3.4.2.1 インデックス・ファイル
インデックス・ファイル1805は、QuickTime(登録商標)ファイル形式に従って構成される。QuickTime(登録商標)ファイル形式は、アトムと呼ばれる特別なメモリ構造を使用してデータを格納する。アトムは、QuickTime(登録商標)ファイル形式により指定されたデータ・コンテナである。それぞれのアトムは、関連付けられているアトムに格納されるデータの種類を指定する関連付けられた型コードを持つ。上述のように、QuickTime(登録商標)ファイル形式、特にQuickTime(登録商標)アトムの詳細な説明は、アップル・コンピュータ社が公開している「QuickTime File Format」というタイトルの出版物にある。
インデックス・ファイル1805は、QuickTime(登録商標)ファイルに対し指定されているアトムのすべてを含む。トラック・アトムと呼ばれるアトムは、それぞれのトラック(例えば、トラック1813および1815)を格納する。特定のトラック・アトムに関連付けられたトラックは、そのトラックによって参照されるメディア・ファイル1800へのポインタ(例えば、メディア・ファイル参照1813)を含む。
図18に示されているように、インデックス・ファイル1805のトラック1813および1815のそれぞれは、さらに、サンプル−オフセット・テーブル1809および1817も含む。トラック1813および1815は、それぞれのサンプル(例えば、サンプル1801)へのオフセットを関連付けられたメディア・ファイル1800内に格納する。インデックス・ファイル1805のトラック1813および1815のそれぞれは、さらに、サンプル・サイズ・テーブル1811および1819も含む。サンプル・サイズ・テーブル1811および1818は、関連付けられたメディア・ファイル1800に含まれるサンプルのサイズを格納する。
サンプル・オフセット・テーブル1809および1817、およびサンプル・サイズ・テーブル1811および1819は、QuickTime(登録商標)メディア・プレーヤーにより読み込まれるように構成される。その結果、完成インデックス・ファイル1805は、インデックス・ファイル1805のトラック1813内に含まれるメディア・ファイル参照(例えば、参照1807)を使用して関連付けられているメディア・ファイル1800を特定する、QuickTime(登録商標)メディア・プレーヤーにより比較ことができる。さらに、完成インデックス・ファイル1805の内容が定期的にハード・ディスク・ドライブ2310にフラッシングされる限り、ファイル1805の一貫性を保証する形で、QuickTime(登録商標)メディア・プレーヤーは、最後の完全フラッシュの時点まで進行中の記録を表示することができる。システム障害がある場合、ファイル1805がフラッシングされた最後の時刻以降にインデックス・ファイル1805に追加されたデータは、インデックス・ファイル1805から失われる。
3.3.4.2.2 メディア・ファイル
メディア・ファイル1800の形式は順応性がある。それぞれの個別サンプル(例えば、1801)は、連続するバイトの1つの集合として格納される。以下の節では、説明されている配列によりサポートされる、メディア・ファイル1800の好ましい形式を説明する。しかし、当業者であれば、メディア・ファイル1800に対し任意の好適なファイル形式を使用できることは理解するであろう。
(i)AVI(登録商標)メディア・データ形式
メディア・ファイル1800は、Microsoft AVI(登録商標)ファイル形式に従って構成される。AVI(登録商標)ファイル形式は、AVI(登録商標)メディア・プレーヤー・アプリケーションまたはAVI(登録商標)ファイル形式に従って構成されたファイルを読み込むことができる任意のメディア・プレーヤー・アプリケーションで使用されるファイル仕様である。このようなメディア・プレーヤー・アプリケーションは、ビデオ/オーディオ・シーケンスを取り込み、編集し、再生するために使用することができる。一般に、AVI(登録商標)ファイル形式に従って構成されたファイルは、異なる型のデータのサンプルを含む複数のデータ・ストリーム(つまり、サンプル)を含む。ほとんどのAVI(登録商標)シーケンスでは、オーディオとビデオの両方のストリームを使用する。そのようなAVI(登録商標)シーケンスの単純な変更形態では、ビデオ・データを使用し、オーディオ・ストリームを必要としない。メディア・ファイル1800は、AVI(登録商標)ファイル形式を読み込むことができるメディア・プレーヤー・ソフトウェア・アプリケーションにより再生可能である。
AVI(登録商標)ファイル形式は、カメラ・サーバ109〜111により取り込まれたサンプル・データの処理に関していくつかの制限を有する。第1に、それぞれのAVI(登録商標)サンプルは、一定のフレーム速度で再生されることである。したがって、ネットワーク遅延によるフレーム速度の変化またはサンプルの遅れにより、再生速度が時間の経過を正確に表さなくなる可能性がある。第2に、Motion−JPEG(Joint Photographics Experts Group)規格に従って構成された画像ファイルについて、画像解像度を表す値は、画像ファイルのそれぞれのJPEGフラグメント内に格納される。しかし、Windows(登録商標) Media Playerなどのメディア・プレーヤーは、画像をスケーリングできないため、再生結果は次善の最適化となる。
メディア・ファイル1800が最初に作成されると、ヘッダの集合が生成される。AVI(登録商標)ヘッダは、ファイル1800に関する一般的な詳細を格納するために生成される。さらに、与えられたメディア・データ・ファイル1800をポイントする関連付けられたインデックス・ファイル1805内でそれぞれのトラックを表すために個々のストリーム・ヘッダが生成される。空のサンプル・リスト構造も、メディア・ファイル1800のそれぞれの個別サンプル(例えば、サンプル1801)を格納するために作成される。
メディア・ファイル1800が閉じられると、ヘッダは、メディア・ファイル1800内に格納されているサンプルの個数を反映するように更新される。さらに、関連付けられたAVI(登録商標)インデックス(図に示されていない)がファイル1800の末尾に付加される。AVI(登録商標)インデックスは、AVI(登録商標)ファイル1805のサンプル・データを再生するためにWindows(登録商標) Media Playerにより必要とされる標準構造である。
サンプル(例えば、サンプル1801)をアクティブ(つまり、開いている)メディア・ファイル1800に挿入する場合、サンプルは、ファイル1800の新しいサンプル・チャンク内に格納される。格納されたサンプルは、対応するサンプルがどのデータ・ストリームに属すか、およびサンプルのサイズを示すヘッダを持つ。さらに、これ以降「CNVD」チャンクと呼ばれる、特別なチャンクが、新しく格納されたサンプルの前に挿入される。CNVDチャンクは、標準AVI(登録商標)メディア・プレーヤーにより無視されるように構成される。CNVDチャンクは、メディア・ファイル1800および関連付けられたインデックス・ファイル1805を回復するために使用できる、追加情報を含む。特に、CNVDチャンクは、タイムスタンプ(つまり、ミリ秒)およびCNVDチャンクの後の新しく格納されたサンプルの解像度を含む情報を含む。
(ii)AVI(登録商標)ビデオ・ストリーム処理
カメラ・サーバ109〜111により取り込まれたサンプル・データのそれぞれのビデオ・サンプルは、AVI(登録商標)メディア・ファイル1800内に別のサンプル(つまり、サンプル・チャンク)として挿入される、別のJPEGファイルとして構成されることが好ましい。
(iii)AVI(登録商標)テキスト・ストリーム処理
上述のように、QuickTime(登録商標)ファイル形式は、同じ名前のQuickTime(登録商標)メディア・プレーヤー・アプリケーションまたはQuickTime(登録商標)ファイル形式に従って構成されたファイルを読み込むことができる任意のメディア・プレーヤー・アプリケーションで使用されるファイル仕様である。QuickTime(登録商標)ファイル形式は、可変ビデオ・フレーム速度および解像度をサポートする。QuickTime(登録商標)ファイル形式の詳細な説明は、アップル・コンピュータ社が公開している「QuickTime File Format」というタイトルの出版物にある。「QuickTime File Format」という刊行物は、Webサイトhttp://developer.apple.com/techpubs/quicktime/qtdevdocs/PDF/QTFileFormat.pdf(2003年1月9日現在)にある。
QuickTime(登録商標)ファイル形式では、テキスト文字列は16ビット長のフィールドとその後に続くテキスト文字列とからなると規定している。しかし、AVI(登録商標)ファイル形式では、NULL終端文字列を規定している。QuickTime(登録商標)およびAVI(登録商標)の両方のファイル形式でテキスト文字列を正しく再生できるようにするために、同じテキスト文字列の2つのコピーがメディア・ファイル1800の関連する同じチャンク内に置かれる。テキスト文字列の第1のコピーは、テキスト文字列のNULL終端バージョンである。AVI(登録商標)メディア・プレーヤーは、ファイル1800の関連するサンプルの先頭に第1のコピーを置き、終端文字の後に続くデータを破棄する。テキスト文字列の第2のコピーは、第1のコピーの終端となるNULL文字の直後に置かれる。第2のコピーは、QuickTime(登録商標)ファイル形式に従って構成される。この場合、QuickTime(登録商標)インデックス・ファイル1805には、インデックス・ファイル1805が通常、対応するサンプルを参照するために使用する、サンプルの先頭のオフセットではなく、文字列の第2のコピーのオフセットが与えられる。
例えば、図19は、AVI(登録商標)ファイル形式に従って構成されたメディア・ファイル1900内のテキスト文字列サンプル「Door7A」の配置を示す。図19に示されているように、テキスト・サンプルのAVI(登録商標)バージョン1901およびQuickTime(登録商標)バージョン1903は、ファイル1900内に含まれる。図19は、データ文字列「Door7A」の対応するインデックス・ファイル(図に示されていない)のサンプル・オフセット1905およびサンプル・サイズ1908エントリも含む。特に、サンプル・オフセット・エントリ1905は、テキスト・サンプルのQuickTime(登録商標)バージョン1903の先頭をポイントする。さらに、サンプル・サイズ・エントリ1908は、QuickTime(登録商標)バージョン1903のサイズを与える。
3.3.5 ストレージ・サーバ・イベント・ファイル構造
それぞれのカメラ・サーバ109〜111に対応するイベント・ファイルは、ストレージ・デバイス2309内に構成され、そのカメラ・サーバ109〜111についてイベント・ファイルを格納するために選択されたドライブのサブディレクトリに格納される。例えば、イベント・ファイルは、ディレクトリ「drive:\Webview−NVR\eventfiles」に格納することができるが、ただし、driveは、イベント・ファイルを格納するために選択されたドライブの文字で置き換えられる。
記録エンジン201は、それぞれのビデオ・ファイル・ペアに対応するイベント・ファイルを作成する(つまり、同じカメラ112〜115および同じ持続時間に関係する)。イベント・ファイルとビデオ・ファイル・ペアとのマッチングは、ビデオおよびイベント・データがアーカイブ・ストレージに移動される状況において有用である、というのも、ビデオおよびイベント・データは、両方とも一緒にコピーまたは移動することができ、後で、両方とも一緒に置き換えることができるからである。このようなマッチングは、ユーザがイベントに関する情報にアクセスしようと試みた場合に特定のイベントに関連付けられたビデオ・データが利用可能になり、ユーザが特定のビデオにアクセスしようと試みた場合に特定のビデオに関連付けられたイベント・データが利用可能になることを保証する。
それぞれのイベント・ファイルは、以下のテンプレートに従って名前を付けることができる。
EVENT_cameraid_creationdate_creationtime_count.evt (3)
テンプレート(3)のcameraidセクションは、特定のカメラ・サーバ109〜111が最初にシステム100に追加されたときに記録エンジン201により特定のカメラ109〜111に与えられた特定のカメラ・サーバ109〜111の一意的な識別子を表す16文字からなるデータ文字列である。テンプレート・セクション(3)のcameraidの値は、16進数形式で表され、小文字は値A〜Fを表す。
テンプレート(3)のcreationdateセクションは、イベント・ファイルが作成された日付を、UTCで表す。creationdateの形式は、yyyymmddである。
テンプレート(3)のcreationtimeセクションは、イベント・ファイルが作成された時刻を、UTCで表す。creationtimeセクションの形式は、hhmmssである。
テンプレート(3)のcountセクションは、記録エンジン201による現在の記録セッションの開始を表すイベント・ファイルからカウントする、イベント・ファイルに対応する連番を表す。システム100内のそれぞれのカメラ・サーバ109〜111について別々のカウンタを保持することができる。同じカメラ識別子、作成日時(つまり、秒まで)を持つ複数のファイルが作成される場合、countセクションの値を使用して、そのようなファイルを区別することができる。
これらのイベント・ファイルに加えて、ストレージ・サーバ2300に関連付けられているが、必ずしも特定のカメラ・サーバ109〜111に関連付けられていない、イベントを含むシステム・イベント・ファイルがある。これらは、記録エンジン201の起動または停止、またはリモート・ユーザがビューア2200上でシステム100にログインしてビューア構成およびレイアウト・ファイルを取り出すことを示すイベントを含むが、これについて、以下でさらに詳しく説明する。
イベント・ファイルは、UTF8形式で符号化された、テキスト・ファイルである。イベント・ファイルのそれぞれの行は、単一イベントを記述したイベント・レコードを含み、以下のように、コロンで区切られた複数のフィールドからなる。
<datetime>:<cameraid>:<type>:<priority>:<description> (4)
イベント・ファイル行(4)のdatetimeフィールドには、イベントが記録された日時を記述する。datetimeフィールドは、追加millisecondフィールドが挿入された、ANSI関数ctime()により生成される標準形式である。このような時刻の例は、Tue Aug 19 05:05:53.585 2003であり、日時は、常に、UTC形式で表される。
cameraidフィールドは、イベントに関連付けられたカメラ・サーバ109〜111の識別子を記述する。カメラ・サーバ109〜111がイベントに関連付けられていない場合、cameraidフィールドはSYSTEMに設定される。
イベント・ファイル行(4)のtypeフィールドは、イベントの型を定義する4文字コードとその後に続く、0個(つまり、イベントが停止していることを示す−OFF)または1(つまり、イベントが起動していることを示す−ON)とを含む。ユーザ・ログオンなどのいくつかのイベントには、OFFイベントがない。
以下の表6は、使用可能なすべてのイベント型を定義している。
Figure 0005173919
上のイベント・ファイル行(4)のpriorityフィールドは、1(つまり、最高優先度)から5(つまり、最低優先度)までの範囲の値を含む。
イベント・ファイル行(4)の最後のフィールドである、descriptionは、改行文字を使用してフィールドの終わりが配置されるのでオプションで追加コロンを含めることができる。
3.4 構成管理モジュール
構成管理モジュール315は、ストレージ・サーバ構成ファイルの読み込みおよび書き込みを行い、またストレージ・サーバ構成ファイルを修正する場合に他のアプリケーションが記録エンジン201に信号を送れるようにするメカニズムを備える。
図94は、構成変更監視プロセス9400を示す流れ図である。プロセス9400は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス9400は、他のアプリケーションが信号を送ることができる同期オブジェクトを待つ。一実装では、そのような他のアプリケーションは、Microsoft Windows(登録商標)オペレーティング・システム上で動作する。この場合、使用される同期オブジェクトは、名前付きEventオブジェクトである。特定の一実装では、オブジェクトは、「Recording Engine Configuration Changed」という名前を付けることも可能であり、その場合、すべてのユーザがオブジェクトにアクセスできるようにオブジェクトのセキュリティ属性が設定される。
プロセス9400は、構成ファイルのGeneralセクションを更新する。カメラ・サーバ109〜111またはカメラ112〜115も追加、修正、または削除された場合、それらの変更は無視される。
プロセス9400は、プロセッサ2305が他のアプリケーションによりアクセスされることができる同期オブジェクトを作成し、同期オブジェクトの名前およびセキュリティ属性を設定する第1のステップ9401から始まる。その後、プロセッサ2305は、ループに入り、同期オブジェクトが他のアプリケーションによりトリガされるのを待つ。オブジェクトがステップ9403でトリガされた後、次のステップ9405で、ストレージ・サーバ構成ファイルが読み込まれる。
次のステップ9407で、プロセス9400は、ストレージ・サーバ構成ファイルのGeneralセクションに対応する内部変数を更新してから、新しい同期イベントを探すステップ9403に戻る。
3.5 ビデオ・ファイル管理モジュール
記録エンジン201のビデオ・ファイル管理モジュール317は、ストレージ・サーバ2300のストレージ・デバイス2309内に構成されているドライブ上に格納されたすべてのビデオ・ファイル(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)を管理する。ビデオ・ファイル管理モジュール317は、必要に応じて新しいビデオ・ファイルを作成し、ビデオ・サンプル・データをそのビデオ・ファイルに書き込み、既存のビデオ・ファイルのサイズまたは持続時間が設定限界を超えた場合にスタンバイ・ファイルにスワッピングする役割を持つ。
3.5.1 ビデオ・ファイル管理スレッド
ビデオ・ファイル管理モジュール317は、ビデオ・ファイル管理スレッドまたはサブルーチンを含む。ビデオ・ファイル管理スレッドは、ビデオ・ファイルを作成し、閉じる役割を持つ。作成および閉じるオペレーションは、比較的時間を食う場合があり、したがって、カメラ・サーバ109〜111から受信されたサンプル・データを処理する際の潜在的遅延を避けるためにメイン・スレッドよりも低い優先度の別のスレッド(つまり、実行コンテクスト)により実行される。
上述のように、記録エンジン201は、遅延なくファイルの瞬間的スワップオーバーを行えるようにするために、非アクティブ・スタンバイ・ファイル(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)がカメラ・サーバ109〜111毎に必ず保持されるようにしようと試みる。第1のサンプルがスタンバイ・ファイルに書き込まれるとすぐに、ファイル管理スレッドは、新しい非アクティブ・スタンバイ・ファイルを作成し、次のスワップオーバーの用意をするように指令される。
ビデオ・ファイル管理スレッドに従ってビデオ・ファイルを作成し、閉じるプロセス2000は、図20を参照しつつ以下で説明される。プロセス2000は、ストレージ・サーバ2300のハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行される。プロセス2000は、ステップ2001から始まり、そこで、プロセッサ2305は、他のスレッドからのメッセージが検出されるまで待つ。メッセージは、後述のように3つの型のうちの1つとすることができる。
次のステップ2003で、メッセージがCREATE FILE SET要求である場合、プロセス2000は、ステップ2003に進む。そうでない場合、プロセス2000は、ステップ2006に進む。ステップ2305で、プロセッサ2305は、メディア・ファイル1800および関連付けられたインデックス・ファイル1805を作成するために、ビデオ・ファイル集合作成プロセス2100に入る。プロセス2100は、図21を参照しつつ以下の3.5.2節で詳しく説明される。その後、プロセス2000は、ステップ2001に戻る。
次のステップ2006で、メッセージがCLOSE FILE SET要求である場合、プロセス2000は、ステップ2009に進む。そうでない場合、プロセス2000は、ステップ2007に進む。ステップ2009で、プロセス2000は、メディア・ファイル1800およびインデックス・ファイル1805を閉じて完成ファイル・ペアを作成するために、ビデオ・ファイル集合クローズ・プロセス2600に入る。プロセス2600は、3.5.5節で説明される。その後、プロセス2000は、ステップ2001に戻る。
次のステップ2007で、メッセージがSTOP THREAD要求である場合、プロセス2000は終了する。STOP THREAD要求は、通常、記録エンジン201が停止しようとするときに送信される。そうでない場合、プロセス2000は、ステップ2001に戻る。
3.5.2 ファイル集合作成プロセス
ビデオ・ファイル集合作成プロセス2100は、図21の流れ図を参照しつつ説明される。プロセス2100は、ビデオ・ファイル管理スレッドにより呼び出される。プロセス2100の目的は、それぞれ1つのメディア・ファイル1800と1つの関連付けられたインデックス・ファイル1805からなるスタンバイ・ファイルの集合を作成することである。プロセス2100は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス2100は、プロセッサ2305がアクセス・エンジン203と共有される同期オブジェクトを取得するステップ2101から始まる。同期オブジェクトは、ハード・ディスク・ドライブ2305上に格納され、メディア・ファイル1800およびインデックス・ファイル1805の作成、オープン、クローズ、および削除が記録エンジン201およびアクセス・エンジン203のそれぞれに関して必ず自動的に実行されるようにするために使用される。
次のステップ2103で、プロセッサ2305は、3.3.4.1節の規定に従って、適当なスタンバイ・ファイル名の集合を生成する。メディア・ファイル1800および関連付けられたインデックス・ファイル1805を格納するために使用されるファイル・ディレクトリは、3.3.4.1節で説明されているように、関連付けられたカメラ・サーバ109〜111に関連付けられているドライブ文字を文字列「\Webview−NVR\videofiles」と組み合わせることにより決定される。イベント・ファイルを格納するために使用されるディレクトリは、カメラ・サーバ109〜111に関連付けられたドライブ文字を文字列「\Webview−NVR\eventfiles」と組み合わせることにより決定される。
次のステップ2105で、プロセッサ2305は、生成される次のスタンバイ・ファイルの用意をするために与えられたカメラ112〜115に対するファイル・カウンタをインクリメントする。その後、次のステップ2107で、プロセッサ2305は、ハード・ディスク・ドライブ2310内にイベント・ファイルを作成する。イベント・ファイルは、図35を参照しつつ以下で説明されるイベント・ファイル作成プロセス3500に従って作成される。次のステップ2109で、プロセッサ2305は、ハード・ディスク・ドライブ2310内にメディア・ファイル200を作成する。メディア・ファイル1800は、メディア・ファイル1800を作成するプロセス2400に従ってステップ2109で作成される。プロセス2400は、図24を参照しつつ以下で詳しく説明される。
メディア・ファイル1800は、プロセッサ2305により供給される、メディア・ファイル・パス・パラメータおよびメディア・ファイル形式パラメータに従って作成される。メディア・ファイル形式パラメータは、メディア・ファイル200のファイル形式(例えば、AVI(登録商標)またはQuickTime(登録商標))を指定する。その後、次のステップ2111で、プロセッサ2305は、ハード・ディスク・ドライブ2310内にインデックス・ファイル1805を作成する。インデックス・ファイル205は、プロセッサ2305により供給される、インデックス・ファイル・パス・パラメータに基づいて生成される。インデックス・ファイル1805は、インデックス・ファイル1805を作成するプロセス2500に従ってステップ2111で作成される。プロセス2500は、図25を参照しつつ以下で詳しく説明される。上述のように、インデックス・ファイル1805は、QuickTime(登録商標)形式に従って生成される。
プロセス2100は、プロセッサ2305が、プロセッサ2305によって供給されるトラック容量パラメータ、トラック速度パラメータ、およびデータ・ソース識別子パラメータに基づいて第1のトラック(例えば、トラック1813)を作成する次のステップ2113で続く。ステップ2113で作成されたトラック(例えば、トラック1213)は、メディア・ファイル1800に格納されるサンプル・データを参照するように構成される。またステップ2113で、プロセッサ2305は、ビデオ・トラック1813を、ハード・ディスク・ドライブ2310内に構成されたインデックス・ファイル1805に追加する。その後、次にステップ2115で、プロセッサ2305は、トラック容量パラメータ、トラック速度パラメータ、およびデータ・ソース識別子パラメータに基づいて第2のトラック(例えば、トラック1815)を作成する。第2のトラック1815は、テキスト文字列(つまり、テキスト・サンプル・データ)を参照するように構成される。またステップ2107で、プロセッサ2305は、作成されたテキスト・トラック1815をインデックス・ファイル1805に追加する。
プロセス2100は、次のステップ2117で終了するが、そこでは、ステップ2101に含まれる同期オブジェクトが解放され、それにより、アクセス・エンジン203はそれらのファイルに作用する。
3.5.3 メディア・ファイル作成プロセス
次に、ステップ2109のメディア・ファイル作成プロセス2400は、図24の流れ図を参照しつつ説明される。プロセス2400は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス2400は、プロセッサ2305が、ステップ2109でプロセッサ2305により供給されるメディア・ファイル・パス・パラメータにより指定された、ハード・ディスク・ドライブ2310内のメモリ・アドレスにメディア・ファイル1800を作成するステップ2401から始まる。次のステップ2403で、メディア・ファイル形式パラメータが、メディア・ファイル1800がAVI(登録商標)形式に従って構成されることを指定している場合、プロセス2400はステップ2405に進む。そうでない場合、プロセス2400は終了する。
ステップ2405で、プロセッサ2305は、プロセッサ2305により検出されたサンプルを格納するためのヘッダの空集合および空のサンプル構造を作成する。次に、ステップ2407で、作成されたサンプル構造が、ハード・ディスク・ドライブ2310内に構成されたメディア・ファイル1800に書き込まれる。プロセス2400は、プロセッサ2305がAVI(登録商標)インデックス・ファイル構造を作成する次のステップ2409で終了する。インデックス・ファイル1805構造は、メディア・ファイル1800の終わりに追加されるが、その結果の長さは現在不明であるため、ハード・ディスク・ドライブ2310またはメモリ2306内に構成されたテンポラリ・ファイルのいずれかに格納できる。
3.5.4 インデックス・ファイル作成プロセス
次に、インデックス・ファイル1805を作成するプロセス2500を、図25の流れ図を参照しつつ説明する。プロセス2500は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス2500は、プロセッサ2305が、ステップ2111でプロセッサ2305により供給されるメディア・ファイル・パス・パラメータにより指定された、ハード・ディスク・ドライブ2310内のメモリ・アドレスにインデックス・ファイル1805を作成するステップ2501から始まる。その後、次のステップ2503で、プロセッサ2305は、インデックス・ファイル1805のムービー・ヘッダ・アトムを初期化する。
ムービー・ヘッダ・アトムは、QuickTime(登録商標)ムービー全体の特性を指定するために使用され、上述のように、アップル・コンピュータ社が公開している「QuickTime File Format」というタイトルの出版物の中で詳しく説明されている。プロセス2500は、次のステップ2505で終了し、そこで、プロセッサ2305は、インデックス・ファイル1805のユーザ・データ・アトムを初期化する。ユーザ・データ・アトムを使用すると、ユーザは、ムービーなどのQuickTime(登録商標)オブジェクトに関連付けられたデータを定義し、格納することができる。
3.5.5 ビデオ・ファイル・ペア・クローズ・プロセス
図26は、ビデオ・ファイル・ペア(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)を閉じるプロセス2600を示す流れ図である。ビデオ・ファイル・ペア・クローズ・プロセス2600は、ビデオ・ファイル管理スレッドにより呼び出される。プロセス2600の目的は、ファイルのアクティブな(開いている)ペアを受け取って、ファイルを閉じ、ファイルの名前を適切なファイル名に変更することである。プロセス2600は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス2600は、プロセッサ2305がアクセス・エンジン203と共有される同期オブジェクトを取得するステップ2601から始まる。上述のように、同期オブジェクトは、ファイル・ペアを形成するメディア・ファイル1800およびインデックス・ファイル1805の作成、オープン、クローズ、および削除が記録エンジン201およびアクセス・エンジン203のそれぞれに関して必ず自動的に実行されるようにするために使用される。次のステップ2603で、プロセッサ2305は、アクティブ・ファイル・ペアが実際にサンプルを含むかどうかを決定する。ステップ2603でサンプルが存在しない場合、ファイル・ペアは、有用なデータを格納せず、プロセス2600は、ステップ2619に進む。そうでなく、スタンバイ・ファイル・ペア内にサンプルが存在する場合、上の3.3.4.1節で説明されている規定に従って新しいファイル名の集合が生成される。
次のステップ2605で、ファイル・ペアのメディア・ファイル1800は、メディア・ファイル完成プロセス2700に従って閉じられるが、これについては図27を参照しつつ以下で詳しく説明される。その後、次のステップ2609で、メディア・ファイル1800がリネームされる。プロセス2600は、次のステップ2611に続き、そこで、関連付けられたインデックス・ファイル805(つまり、アクティブ・インデックス・ファイル1805)内のメディア・ファイル参照1808はリネームされたメディア・ファイル1800と対応するように更新される。
次のステップ2611で、アクティブ・インデックス・ファイル1805は、インデックス・ファイル完成プロセス2800に従って閉じられるが、これについては図28を参照しつつ以下で詳しく説明される。その後、次のステップ2615で、インデックス・ファイル1805がリネームされる。
ステップ2619で、メディア・ファイル1800は、メディア・ファイル完成プロセス2700に従って閉じられる。メディア・ファイル1800は、有用なデータを含まないので、メディア・ファイル1800は、次のステップ2621で、ハード・ディスク・ドライブ2310から削除される。プロセス2600は、次のステップ2623に続き、そこで、ファイル・ペアのインデックス・ファイル1805は、インデックス・ファイル完成プロセス2800に従って閉じられる。インデックス・ファイル1805は、有用なデータを含まないので、インデックス・ファイル1805は、次のステップ2625で、ハード・ディスク・ドライブ2310から削除される。ステップ2616で、このプロセスは、イベント・ファイル・プロセス3600を呼び出すことにより、現在のファイル集合に属するイベント・ファイルを閉じる。プロセス2600は、最終ステップ2617で終了し、そこで、ステップ2601で取得された同期オブジェクトは解放される。
3.5.6 メディア・ファイル完成プロセス
ステップ2607および2609で実行されるプロセス2700について、図27の流れ図を参照しつつ説明する。プロセス2700は、メディア・ファイル1800が破損しておらず、再生可能であることを角にするために必要なクリーンアップ・タスクを実行し、その後、メディア・ファイル1800を閉じる。プロセス2700は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス2700は、第1のステップ2701から始まり、そこで、メディア・ファイル200がAVI(登録商標)ファイル形式に従ってフォーマットされているとプロセッサ2305が決定した場合に、プロセス2700はステップ2703に進む。そうでない場合、プロセス2700は、メモリ2306内のまだ書き込まれていないメディア・ファイル・データがハード・ディスク・ドライブ2310内に構成されたメディア・ファイル1800にフラッシングされるステップ2709に進む。ステップ2709の後、プロセス2700は、直接ステップ2707に進む。
ステップ2703で、プロセッサ2305は、メディア・ファイル1800のAVI(登録商標)ヘッダをメディア・ファイル1800内に格納されているサンプルに関する情報で更新する。ヘッダは、メディア・ファイル1800内に格納されているサンプルの正確な個数を反映するように更新される。次のステップ2705で、AVI(登録商標)インデックス・ファイル1805が、メディア・ファイル1800の終わりに書き込まれる。プロセス2700は、メディア・ファイル1800を閉じて完成メディア・ファイル1800を作成する次のステップ2707で終了する。
3.5.7 インデックス・ファイル完成プロセス
次に、ステップ2613および2623で実行されるインデックス・ファイル完成プロセス2800について、図28の流れ図を参照しつつ説明する。プロセス2800は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス2800は、プロセス2305がインデックス・ファイル205の終了時刻をプロセッサ2305により供給されるインデックス終了時刻値に設定する第1のステップ2801から開始する。インデックス・ファイル205の終了時刻は、メディア・ファイル1800の第1のサンプルからストレージ・サーバ2300のシステム・クロックにより表される現在時刻までの期間をカバーするように設定される。次のステップ1703で、プロセッサ2305は、インデックス・ファイル1805の第1のトラックを選択する。その後、ステップ2805で、処理すべきインデックス・ファイル1805のトラックが残っているとプロセッサ2305が決定した場合、プロセス2800はステップ1807に進む。そうでない場合、プロセス2800は、ステップ2811に進む。
ステップ2807で、選択されたトラックの終了時刻は、プロセッサ2305により供給されるインデックス終了時刻に設定される。その後、インデックス・ファイル1805の次のトラックが、ステップ1809でプロセッサ2305により選択され、プロセス2800は、ステップ2805に戻る。ステップ2811で、プロセッサ2305は、メモリ2306内のまだ書き込まれていないインデックス・ファイル・データを、ハード・ディスク・ドライブ2310内に構成されているインデックス・ファイル1805にフラッシングする。その後、プロセス2800は、次のステップ2813で終了し、そこで、インデックス・ファイル1805は閉じられる。
3.5.8 サンプルをファイルに書き込むプロセス
図29は、サンプルをメディア・ファイル1800に書き込むプロセス2900を示す流れ図である。プロセス2900は、メモリ2306内に構成されているフレーム・バッファから単一のビデオ・データ・サンプルを表すサンプルを取り出し、そのサンプルがメディア・ファイル1800に書き込まれるようにする。その後、関連付けられたインデックス・ファイル1805は、新しく書き込まれたサンプルを参照するように更新される。プロセス2900は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス2900は、サンプル・データを保存する現在の速度が、ストレージ・サーバ2300がサンプル・データを取得する速度と同じである場合に、プロセス2900がステップ2909に進む第1のステップ2901から始まる。そうでなければ、プロセス2900は、現在のサンプルに対応する取り込み時間(つまり、タイムスタンプ)がメモリ2306内に構成される保存速度カウンタに追加されるステップ2903に進む。つまり、ステップ2903で、保存速度カウンタは、現在のサンプル(つまり、フレーム)の時刻と前のサンプルのタイムスタンプとの差の分だけインクリメントされる。次のステップ2905で、保存速度カウンタの値が現在の保存速度を超える場合、プロセスはステップ2907に進む。そうでない場合、プロセス2900は終了する。
ステップ2907で、プロセッサ2305は、保存速度カウンタの値から現在の保存速度を引いて保存速度カウンタをリセットする。次のステップ2919で、プロセッサ2305は、カメラ109〜111に関連付けられたディスクに現在のフレームを書き込む十分なディスク領域があるかどうかを決定する。十分な空き領域はない場合、プロセスは終了する。その後、ステップ2909で、プロセッサ2305は、図30を参照しつつ以下の3.5.9節で説明されるビデオ・ファイル・リミット・チェック・プロセス3000に従ってメディア・ファイル1800に書き込むサンプルを格納するための領域があることが保証される。
次のステップ2911で、メディア・ファイル1800内にサンプルがない場合、プロセス2900はステップ2913に進む。そうでない場合、プロセス2900は、ステップ2915に直接進む。ステップ2913で、プロセッサ2305は、ストレージ・サーバ2300上で実行する要求をビデオ・ファイル管理スレッドに送信し、新しい非アクティブ・スタンバイ・ファイル(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)を作成する。ステップ2915で、サンプルが、メディア・ファイル1800のビデオ・トラックに書き込まれる。サンプルは、ファイルをビデオ・トラックに書き込むプロセス3100に従ってステップ2915で書き込まれるが、これについては図31を参照しつつ以下で詳しく説明する。
プロセス2900は、次のステップ2917で終了し、そこで、サンプルのプロパティは、フレーム・プロパティをテキスト・トラックに書き込むプロセス3200に従って、メディア・ファイル1800のテキスト・トラックにテキスト文字列の形で書き込まれる。プロセス3200は、図32を参照しつつ以下で詳しく説明される。
3.5.9 ビデオ・ファイル・リミット・チェック・プロセス
次に、ビデオ・ファイル・リミットをチェックするプロセス3000について、図30を参照しつつ説明する。プロセス3000は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス3000は、カメラ・サーバ109〜111(つまり、現在アクティブな、または開いているメディア・ファイル1800)に対するアクティブ・ファイル・ペアが追加サンプル(つまり、ビデオ・フレームを収容することができるかどうかを決定する。それ以上サンプルを収容できない場合、プロセッサ2305は、そのカメラ・サーバ109〜111に対する非アクティブ・スタンバイ・ファイルに切り替わり、前のアクティブなメディア・ファイル・ペアを閉じる要求を発行する。
プロセス3000は、第1のステップ3001から始まり、そこで、プロセッサ2305は、アクティブ・ファイル・ペアのメディア・ファイル1800に対応するインデックス・ファイル1805をチェックする。インデックス・ファイル1805が、新しいサンプルを収納する対応するサンプル・テーブル1809内に空きエントリを持つ場合、プロセッサはステップ3003に進む。そうでない場合、プロセス3000は、ステップ3015に進む。ステップ3003で、現在アクティブなメディア・ファイル1800の容量が所定の限界(例えば、1ギガバイト)よりも小さい場合、プロセス3000はステップ3005に進む。そうでない場合、プロセス3000は、ステップ3015に進む。ステップ3005で、システム100がメディア・ファイル1800のサイズを制限するようにユーザにより構成されるとプロセッサ230が決定した場合、プロセス3000はステップ3007に進む。そうでない場合、プロセスは、ステップ3009に進む。
ステップ3007で、現在アクティブなメディア・ファイル1800がユーザ指定限界よりも小さいとプロセッサ2305が決定した場合、プロセス3000はステップ3009に進む。そうでない場合、プロセス3000は、ステップ3015に進む。ステップ3009で、現在アクティブなメディア・ファイル1800の容量が所定の限界(例えば、1ギガバイト)よりも小さい場合、プロセス3000はステップ3011に進む。そうでない場合、プロセス3000は、ステップ3015に進む。ステップ3011で、システム100がメディア・ファイル1800の持続時間を制限するようにユーザにより構成されるとプロセッサ2305が決定した場合、プロセス3000はステップ3013に進む。そうでない場合、プロセス3000は終了する。ステップ3013で、現在アクティブなメディア・ファイル1800の持続時間がユーザ指定限界よりも小さいとプロセッサ2305が決定した場合、プロセス3000は終了する。そうでない場合、プロセス3000は、ステップ3015に進む。
ステップ3015で、プロセッサ2305は、現在アクティブなメディア・ファイル1800を非アクティブなスタンバイ・メディア・ファイルに設定することによりファイル・スワップオーバーを開始する。その後、次のステップ3017で、プロセッサ2305は、CLOSE FILE要求をビデオ・ファイル管理スレッドに送信し、メディア・ファイル1800を閉じると、プロセス3000は終了する。
3.5.10 サンプル(つまり、フレーム)をビデオ・トラックに書き込むプロセス
次に、ステップ2915で実行される、サンプルをビデオ・トラックに書き込むプロセス3100について、図31を参照しつつ説明する。プロセス3100は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
第1のステップ3101で、アクティブなメディア・ファイル1800のビデオ・トラック内にすでにサンプルが存在している場合、プロセス3100はステップ3103に進む。そうでない場合、プロセス3100は、ステップ3107に進む。ステップ3103で、新しいサンプルの形式および解像度がメディア・ファイル1800内の現在の(複数の)サンプルと同じでない場合、プロセスはステップ3107に進む。そうでない場合、プロセス3100は、ステップ3105に直接進む。ステップ3107で、プロセッサ2305は、正しいデータ形式および解像度を使用してサンプルを受け入れるようにメディア・ファイル1800のビデオ・トラックを再構成する。プロセス3100は、サンプルをトラックに追加するプロセス3300に従ってサンプルがビデオ・トラックに追加されるステップ3105で終了するが、これについて、図33を参照しつつ以下で詳しく説明する。
3.5.11 サンプル・プロパティをテキスト・トラックに書き込むプロセス
次に、サンプル・プロパティをテキスト・トラックに書き込むプロセス3200について、図32を参照しつつ説明する。プロセス3200は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス3200は、時刻およびイベント情報が、ストレージ・サーバ2300のハード・ディスク・ドライブ2310内に構成されたメディア・ファイル1800のテキスト・トラックに書き込まれるようにする。QuickTime(登録商標)またはAVI(登録商標)プレーヤーを使用してメディア・ファイル1800が再生される場合、時刻およびイベント情報は、後から、サンプル・データと連携して表示することができる。
プロセス3200は、書き込まれるサンプルに関連付けられている取得時刻を示すタイムスタンプにプロセッサ2305がアクセスし、追加millisecondフィールドが挿入された、ANSI関数ctime()により生成される形式の文字列を生成する第1のステップ3201から始まる。このような時刻の例は、Tue Aug 19 05:05:53.585 2003であり、日時は、常に、UTC形式で表される。
次のステップ3203で、現在のアクティブ・メディア・ファイル1800に保存されていない関連付けられたカメラ・サーバ109〜111に対しイベントがある場合、プロセス3200は、ステップ3205に進む。そうでない場合、プロセス3200は、ステップ3207に進む。ステップ3205で、プロセッサ3205は、メモリ2306内に構成されたイベント・キューから次のイベントを順に引き出し、イベントの記述が、ステップ3201で生成された文字列に付加される。プロセス3200は、ステップ3207で終了し、そこで、テキスト文字列が、プロセス3300に従ってテキスト・トラックに追加される。
3.5.12 サンプルをトラックに追加するプロセス
次に、ステップ3105および3207で実行される、サンプルをビデオ・トラックに追加するプロセス3300について、図33を参照しつつ説明する。プロセス3300は、ビデオ・サンプルまたはテキスト・サンプル(つまり、テキスト文字列)を受け取り、サンプル・データがアクティブ・メディア・ファイル1800に書き込まれるようにし、また関連付けられたインデックス・ファイル1805内にサンプルへの参照が設定されるようにする。プロセス3300は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス3300は、サンプルがアクティブ・メディア・ファイル1800に追加されるステップ3301から始まる。サンプルは、サンプルをメディア・ファイルに追加するプロセス3400に従ってステップ3301で追加されるが、これについては図34を参照しつつ以下で詳しく説明する。次のステップ3302で、追加されるサンプルのサンプル・オフセット・パラメータおよびサンプル・サイズ・パラメータにより示されるサンプル・オフセットが、インデックス・ファイル1805のトラック(つまり、ビデオ・トラック1813またはテキスト・トラック1815のいずれか)のサンプル・テーブル構造(つまり、サンプル・オフセット・テーブル1809または1817およびサンプル・サイズ・テーブル1811または1819)に書き込まれる。次のステップ3303で、そのサンプルがトラックに関連付けられる第1のサンプルである場合、プロセス3300は次のステップ3305に続く。そうでない場合、プロセス3300は、ステップ3307に進む。
ステップ3305で、プロセッサ2305は、サンプル記録時間パラメータ(つまり、タイムスタンプ)を使用してトラックの開始時刻を現在のサンプルのタイムスタンプに設定し、サンプルの取得時刻を反映させる。そうでない場合、プロセッサ2305は、現在のサンプルのタイムスタンプから前のサンプルのタイムスタンプ(つまり、取得時刻)を引くことにより前のサンプルの持続時間を決定する。その後、次のステップ3309で、関連するトラック(つまり、トラック1813または1815)に関連付けられているトラック持続時間値が、現在のサンプルのタイムスタンプと関連するトラックのタイムスタンプとの差に設定される。次のステップ3311で、このトラック持続時間によりトラックの終わりがインデックス持続時間を超える場合、プロセス3300は、ステップ3313に進む。そうでない場合、1303のプロセスは終了する。ステップ1513で、インデックス持続時間がトラックを収納するように更新され(つまり、インデックス・ファイル1805の持続時間が現在のトラックの終わりに対応するようにプロセッサ3205により調整される)、ステップ1303のプロセスは終了する。
3.5.13 サンプルをメディア・ファイルに追加するプロセス
次に、サンプルをメディア・ファイル1800に追加するプロセス3400について、図34を参照しつつ説明する。プロセス3400は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス3400は、第1のステップ3401から始まり、そこで、メディア・ファイル1800の形式がAVI(登録商標)であるとプロセッサ2305が決定した場合に、プロセス3400はステップ3403に進む。そうでない場合、プロセス3400は、直接ステップ3419に進み、そこで、検出されたサンプルのデータは、ハード・ディスク・ドライブ2310内に構成されたメディア・ファイル1800に付加される。
ステップ3403で、サンプル・ファイル1800に追加されるサンプルが空の場合(つまり、関連付けられたサンプルのサイズが0の場合)、プロセス3400は、直接ステップ3415に進む。そうでない場合、プロセス3400は、ステップ3405に進む。ステップ3405で、書き込まれるトラックがテキスト・トラックの場合、プロセス3400は、ステップ3407に進む。そうでない場合、プロセス3400は、ステップ3411に直接進む。ステップ3407で、上の「AVI(登録商標)ビデオ・ストリーム処理」という表題の節で説明されているように、文字列のNULL終端コピーが作成される。次のステップ3409で、検出されたサンプルのオリジナル・データが、データ文字列として、文字列のNULL終端コピーに付加される。
その後、ステップ3411で、プロセッサ2305は、検出されたサンプル取得時刻に基づくタイムスタンプを含むカスタム・データ・チャンクを作成し、カスタム・データ・チャンクをハード・ディスク・ドライブ2310内に構成されたメディア・ファイル1800に書き込む。次のステップ3413で、AVI(登録商標)インデックスは、メディア・ファイル800内に格納されているカスタム・データ・チャンクへの参照で更新される。
ステップ3415で、プロセッサ2305は、検出されたサンプルに基づくデータ・チャンクをメディア・ファイル1800に書き込む。プロセス3400は、次のステップ3417で終了し、そこで、インデックス・ファイル1805のAVI(登録商標)インデックスは、メディア・ファイル1800内に格納されているカスタム・データ・チャンクへの参照で更新される。
3.6 イベント・ファイル管理モジュール
上述のように、記録エンジン201は、ストレージ・サーバ2300のストレージ・デバイス2309内に構成されたドライブ上に格納されているすべてのイベント・ファイルを管理するイベント管理モジュール321を含む。イベント・ファイル管理モジュール321は、必要に応じて新しいイベント・ファイルを作成し、データをそれらの新しいイベント・ファイルに書き込み、既存のイベント・ファイルのサイズまたは持続時間が所定の限界を超えた場合にさらに新しいイベント・ファイルにスワッピングする役割を持つ。
3.6.1 イベント・ファイル作成プロセス
図35は、イベント・ファイル作成プロセス3500を示す流れ図である。プロセス3500は、スタンバイ・メディア・ファイル1800を作成する。プロセス3500は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス3500は、プロセッサ2305がオペレーティング・システムに備えられている機能を使用して、ファイル・ペア作成プロセス2100のステップ2103で生成されたパスを使用してファイルを作成する第1のステップ3501から開始する。プロセス3500は、次のステップ3503で終了し、そこで、イベント生成プロセスに従って「file set starting」イベントが生成される。
3.6.2 イベントをイベント・ファイルに書き込むプロセス
図95は、イベントをイベント・ファイルに書き込むプロセス9500を示す流れ図である。プロセス9500は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス9500は、第1のステップ9501で始まるが、そこでは、イベント・レコードが上述の形式に従って作成される。次のステップ9502で、イベント・レコードは、ストレージ・デバイス2309内に構成された現在開いているイベント・ファイルまたは現在開いているシステム・イベント・ファイルに書き込まれる。
3.6.3 イベント・ファイル完成プロセス
図36は、イベント・ファイル完成プロセス3600を示す流れ図である。プロセス3600は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス3600は、プロセッサ2305がイベント生成プロセスを使用してファイル集合停止イベントを生成する第1のステップ3601から始まる。プロセス3600は、イベント・ファイルが閉じられる次のステップ3603で終了する。
3.7 カメラ・サーバ通信モジュール
上述のように、カメラ・サーバ通信モジュール305は、記録エンジン201と、記録エンジン201が制御するカメラ・サーバ109〜111との間の通信を管理する。通信モジュール305は、正しい設定が特定のカメラ・サーバ109〜111に必ず送信されるようにし、必要に応じてサンプルおよびイベント通知を受信するようにする役割を持つ。したがって、カメラ・サーバ通信モジュール305は、カメラ・サーバ109〜111との接続を保持し、記録エンジン201とカメラ・サーバ109〜111のそれぞれとの間のすべてのデータの交換を行う役割を持つ。
記録エンジン201によりサポートされるカメラ・サーバ109〜111は、TCP/IP接続を介してHTTPプロトコルを使用して通信する。記録エンジン201は、カメラ・サーバ109〜111に接続し、HTTP要求を発行し、実行されるオペレーションに応じて特定のリソースを要求する。カメラ・サーバ109〜111によりサポートされるほとんどの要求は、即時返信を求める。この例外は、記録エンジン201に送信することができる新しい通知をカメラ・サーバ109〜111が持つまで、要求の後通知を開いたままにしておく取得コマンドである。
カメラ・サーバ109〜111毎に一組のTCP/IPソケットが保持される(つまり、それぞれのカメラ・サーバ109〜111と関連付けられているストレージ・サーバ2300との間で)。TCP/IPソケットの制御ソケットは、特定のカメラ・サーバ109〜111の現在状態に関する情報を要求する、またはカメラ・サーバ109〜111上の様々な設定を変更する特定のカメラ・サーバ109〜111にコマンドを送信する役割を持つ(パン、傾斜、およびズーム設定、バックライト補正、解像度、品質設定、運動検出設定、アクティブ・カメラなど)。TCP/IPソケットの通知ソケットは、カメラ・サーバ・イベントの通知の受信を監視する役割を持つ。特定のカメラ・サーバ109〜111に接続されているそれぞれのカメラ112〜115からビデオ・サンプル・データを受信するために別の画像ソケットが使用される。起動されると、画像は、画像ソケットを閉じることでしか終了できないストリームでカメラ・サーバ109〜111から記録エンジン201に送信される。
カメラ・サーバ109〜111は、アクティブ・クライアント・セッションを表すために使用され、いくつかの要求とともに供給される、接続識別子の集合を保持する。制御および通知ソケットは、単一の接続識別子を共有するが、画像ソケットは、明示的に作成された識別子を使用しない。
ソケット通信は、非同期に実行される。つまり、記録エンジン201は、記録エンジン201がソケットに接続する、またはソケットに書き込むオペレーションを実行しようと試みることをオペレーティング・システムに通知し、オペレーティング・システムは、その後、接続が完了したとき、またはオペレーティング・システムが書き込むデータを受け付ける準備ができたときに、記録エンジン201に通知する。さらに、記録エンジン201は、オペレーティング・システムから、新しい着信データがソケット上で利用できる場合には読み込み通知を、ソケットが他端により切断されるか、タイムアウトが発生した場合には切断通知を受信するように自己登録する。
3.7.1 カメラ・サーバ接続確立プロセス
図37は、ストレージ・サーバ2300上で実行する記録エンジン201とカメラ・サーバ109〜111のそれぞれとの間のカメラ・サーバ接続を確立するプロセスを示す流れ図である。プロセス3700は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス3700は、記録エンジン201でカメラ・サーバ109〜111が初期化されると、プログラムが最初に起動されたとき、または新しいカメラ・サーバ109〜111が管理者用インターフェースを使用して登録されたときに、必ず実行される。プロセス3700は、制御および通知用のソケットを作成し、接続することにより開始する。その後、プロセス3700は、カメラ・サーバ109〜111により参照されるそれぞれのカメラ112〜115を通じて反復し、カメラ毎に1つの画像ソケットを接続して行く。ソケットに接続するすべてのステップは、非同期接続の試みを開始することによりそのような動作を行う。オペレーティング・システムは、記録エンジン201に通知する。プロセス3700は、プロセッサ2305が制御ソケットを作成するステップ3701から開始する。次のステップで、プロセッサ2305は、記録エンジンと、関連付けられたストレージ・サーバ2300の記録エンジン201と関連付けられているカメラ・サーバ109〜111のそれぞれとの間で制御ソケットを接続する。その後、次のステップ3705で、プロセッサ2305は、通知ソケットを作成する。次のステップ3709で、記録エンジン201に接続されていないカメラ・サーバ109〜111があるとプロセッサ2305が決定した場合、プロセス3700はステップ3711に進む。そうでない場合、プロセス3700は終了する。
ステップ3711で、プロセッサ2305は、次の未接続カメラ・サーバ109〜111を選択する。その後、次のステップ3713で、プロセッサ2305は、選択されたカメラ・サーバ109〜111に対し画像ソケットを作成する。次のステップ3715で、プロセッサ2305は、選択されたカメラ・サーバ109〜111に対し画像ソケットを接続する。
3.7.2 ソケット・イベント処理プロセス
図96は、ソケット・イベントを処理するプロセス9600を示す流れ図である。プロセス9600は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またストレージ・サーバ2300のプロセッサ2305により実行に際して制御される。プロセス9600は、ソケット上で接続または切断が発生した場合、ソケットへの書き込みのためソケットがデータを受け付け可能状態になった場合、または着信データがソケットから読み込める状態になった場合に、オペレーティング・システムにより実行される。
プロセス9600は、プロセッサ2305が特定のソケットとカメラ・サーバ109〜111とのマッチングを行う第1のステップ9601から始まる。次のステップ9603で、ソケットが画像ソケットの場合、プロセス9600はステップ9605に進む。そうでない場合、プロセス9600は、ステップ9607に進む。ステップ9605で、プロセッサ2305は、ソケットと特定のカメラ112〜115とのマッチングを行う。
その後、次のステップ9607で、プロセッサ2305が接続イベントを検出した場合、ソケットは、新しいコマンドを処理することを開始する用意ができ、プロセス9600は、ステップ9609に進む。そうでない場合、プロセス9600は、ステップ9611に進む。ステップ9609で、プロセッサ2305は、次のコマンドを送信する。
ステップ9611で、プロセッサ2305により検出されるイベントが読み込みイベントの場合、プロセス9600は、ステップ9613に進む。そうでない場合、プロセス9600は、ステップ9615に進む。ステップ9613で、プロセッサ2305は、ソケット読み込みイベントを処理する。
ステップ9615で、イベントが書き込みイベントの場合、プロセス9600は、ステップ9617に進む。そうでない場合、プロセス9600は、ステップ9619に進む。
ステップ9617で、プロセッサ2305は、メモリ2306内に構成された送信バッファから内容を送信する。
ステップ9619で、イベントが切断イベントの場合、プロセス9600は、ステップ9621に進む。そうでない場合、プロセス9600は終了する。ステップ9621で、プロセッサ2305は、ソケット切断イベントを処理する。
3.7.3 次のコマンドを送信するプロセス
図97は、次のコマンドを送信するプロセス9700を示す流れ図である。プロセス9700は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス9700は、特定のソケット上で送信する必要のあるコマンドが必ず送信されるようにすることを役割とする。プロセス9700が実行される毎に、ソケット上で送信するため1つのコマンドがキューに入れられる。したがって、それぞれのコマンドへの応答で、プロセス9700が再び実行され、それによりさらに他のコマンドが必要に応じて送信される。
プロセス9700は、制御コマンドを作成するプロセス、通知コマンドを作成するプロセス、またはプロセス9700が機能するソケットに応じて画像コマンドを作成するプロセスを実行する。
コマンドが正常に作成された場合(つまり、与えられたソケット上で実行される必要がある未処理コマンドが現在ない場合、コマンドは作成されないことがある)、プロセス9700では、ソケットが現在接続されているかどうかを決定する。ソケットが接続されている場合、オペレーティング・システムにソケットの書き込みの準備が整ったときにソケット・イベントを処理するプロセスの実行を依頼することにより、送信のためコマンドがキューに入れられる。ソケットが接続されていない場合、ソケットを接続する要求がオペレーティング・システムに発行される。ソケットが接続された後、オペレーティング・システムは、ソケット・イベントを処理するプロセスを呼び出し、これは、結局次のコマンドを送信するプロセスを実行する。
コマンドが作成されなかった場合、これは、この時点に現在のソケットを使用して実行する必要のあるものがないことを意味する。ソケットは切断される。
プロセス9700は、第1のステップ9701から始まり、そこで、ソケットが制御ソケットであるとプロセッサ2305が決定した場合に、プロセス9700はステップ9703に進む。そうでない場合、プロセス9700は、ステップ9711に進む。ステップ9703で、プロセッサ2305は、制御コマンドを作成し、プロセス9700は、ステップ9705に進む。
ステップ9711で、ソケットが通知ソケットであるとプロセッサ2305が決定した場合、プロセッサ2305はステップ9713に進む。そうでない場合、プロセス9700は、ステップ9715に進む。ステップ9713で、プロセッサ2305は、通知コマンドを作成し、プロセス9700は、ステップ9705に進む。
ステップ9715で、ソケットが画像ソケットであるとプロセッサ2305が決定した場合、プロセス9700はステップ9717に進む。そうでない場合、プロセス9700は、ステップ9705に進む。ステップ9717で、プロセッサ2305は、画像コマンドを作成する。
ステップ9705で、コマンドが作成されたとプロセッサ2305が決定した場合、プロセス9700はステップ9707に進む。そうでない場合、プロセス9700は終了する。ステップ9707で、ソケットが開いているとプロセッサ2305が決定した場合、プロセス9700はステップ9709に進む。そうでない場合、プロセス9700は、ステップ9711に進む。
ステップ9709で、プロセッサ2305は、送信のため作成されたコマンドをメモリ2306内のキューに入れる。ステップ9711で、プロセッサ2305は、作成されたソケットを接続し、プロセス9700は、終了する。
3.7.4 ソケット読み込み処理プロセス
図98は、ソケット読み込みコマンドを処理するプロセス9800を示す流れ図である。プロセス9800は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス9800は、ソケットから読み出せる用意ができているデータがあれば実行される。プロセス9800は、ソケットの型を決定し、その型のソケットに専用の機能を実行する。プロセス9800は、ソケットが制御ソケットである場合に、プロセス9800がステップ9803に進む第1のステップ9801から始まる。そうでない場合、プロセス9800は、ステップ9805に進む。ステップ9803で、プロセッサ2305は、制御応答を受信する。
ステップ9805で、ソケットが通知ソケットの場合、プロセス9800は、ステップ9807に進む。そうでない場合、プロセス9800は、ステップ9809に進む。ステップ9807で、プロセッサ2305は、通知応答を受信する。
ステップ9809で、ソケットが画像ソケットの場合、プロセス9800は、ステップ9811に進む。そうでない場合、プロセス9800は終了する。ステップ9811で、プロセッサ2305は、画像応答を受信し、プロセス9800は、終了する。
3.7.5 ソケット切断処理プロセス
図99は、ソケット切断を処理するプロセス9900を示す流れ図である。プロセス9900は、オペレーティング・システムがソケットが切断されたことを記録エンジン201に通知した場合に実行される。メモリ2306内に構成された送信データ・バッファがデータを含む場合、そのソケット上で送信される必要があるコマンドがある。この場合、プロセッサ2305は、接続を確立すべきであることをオペレーティング・システムに通知する。オペレーティング・システムは、後から、接続が正常になされたことを記録エンジン201に通知する。
送信データ・バッファ内にデータが存在しない場合、プロセッサ2305は、ソケットの再接続を試みようとしない。ソケットは、その後、新しいコマンドを送信する必要がある場合に接続することができる。
プロセス9900は、メモリ2306内に構成された送信バッファが使用中である場合に、プロセス9900がステップ9903に進む第1のステップ9901から始まる。そうでない場合、プロセス9900は終了する。ステップ9903で、プロセッサ2305は、ソケットを接続し、プロセス9900は、終了する。
3.7.6 制御コマンド作成プロセス
図100は、制御コマンドを作成するプロセス10000を示す流れ図である。プロセス10000は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス10000は、特定のカメラ・サーバ109〜111との記録エンジン・セッションに対し接続識別子が開いている場合に、プロセス10000がステップ10003に進む第1のステップ10001から始まる。そうでない場合、プロセス10000は、プロセッサ2305が開いているカメラ・サーバ・メッセージを作成するステップ10014に進み、プロセス10000は、終了する。
ステップ10003で、カメラ・サーバ情報を受信する必要があるとプロセッサ2305が決定した場合、プロセス10000は次のステップ10013に進む。そうでない場合、プロセス10000は、ステップ10005に進む。ステップ10013で、プロセッサ2305は、カメラ・サーバ情報取得メッセージを作成し、プロセス10000は、終了する。
ステップ10013に関して、記録エンジン201は、接続されているカメラ112〜115の名前、現在のパン、傾斜、およびズーム位置などのカメラ・サーバ情報の様々な態様を認識する必要がある。その結果、ステップ10013で、プロセッサ2305は、そのような情報を要求するHTTPメッセージを生成する。いくつかの実装では、必要な情報のすべてを取得するために様々な要求を別々に実行する必要がある場合がある。簡素化するため、これらの様々な要求を単一のステップに組み合わせることができる。
ステップ10005では、カメラ112〜115に対するパン、傾斜、およびズーム設定が調整を必要とする場合、プロセス10000はステップ10007に進む。そうでない場合、プロセス10000は、ステップ10015に進む。ステップ10007で、特定のカメラ112〜115のプリセットされたリストが最新のものであるとプロセッサ2305が決定した場合、プロセス10000はステップ10009に進む。そうでない場合、プロセス10000は、ステップ10019に進む。
ステップ10009で、特定のカメラ112〜115に対応するカメラ制御が開いている場合、プロセス10000はステップ10011に進む。そうでない場合、プロセス10000は、ステップ10021に進む。
ステップ10011で、特定のカメラ112〜115の制御優先度が通常の優先度レベルに設定されているとプロセッサ2305が決定した場合、プロセス10000はステップ10027に進む。そうでない場合、プロセス10000は、ステップ10029に進む。ステップ10027で、プロセッサ2305は、カメラ操作メッセージを作成し、プロセス10000は、終了する。ステップ10029で、プロセッサ2305は、優先度メッセージを作成し、プロセス10000は、終了する。
ステップ10015で、カメラ制御が開いている場合、プロセス10000は、ステップ10017に進む。そうでない場合、プロセス10000は終了する。ステップ10017で、プロセッサ2305は、カメラ制御解放メッセージを作成し、プロセス10000は、終了する。
ステップ10019で、プロセッサ2305は、プリセット・リスト取得メッセージを作成し、プロセス10000は、終了する。
ステップ10021で、特定のカメラ112〜115の制御優先度が通常の優先度レベル以下に設定されているとプロセッサ2305が決定した場合、プロセス10000はステップ10023に進む。そうでない場合、上述のようにプロセス10000は、ステップ10029に進む。
カメラ・サーバ109〜111では、通常、特定の制御優先度レベル(例えば、7)で制御を要求するストレージ・サーバ(例えば、2300A)は、同じ制御優先度レベル(例えば、7)を使用してすでに制御権を有する、他のストレージ・サーバ(例えば、2300B)から制御権を取得することができる。しかし、これにより、2つ以上のストレージ・サーバ(例えば、ストレージ・サーバ2300Aおよび2300B)は同じ制御優先度レベルを使用し、互いに特定のカメラ・サーバ(例えば、109)の制御権を絶えず取り合う可能性がある。
例えば、ストレージ・サーバ2300Aおよび2300Bがカメラ113の異なるプリセット・カメラ位置から記録するように設定される場合、ストレージ・サーバ2300Aおよび2300Bは、カメラ113の位置を変更するため特定のカメラ・サーバ109の制御を要求し続けることができる。これを避けるために、制御権を取得するために、カメラ・サーバ2300Aのプロセッサ2305は、特定のカメラ・サーバ113への接続の優先度レベルを通常レベルよりも低い6に設定することができる。その結果、カメラ・サーバ2300Aは、ストレージ・サーバ2300Aに制御権を与えることなく、通常優先度レベル7で実行される、ストレージ・サーバ2300Bまたは他のストレージ・サーバ2300からは制御権を奪わない。制御権がいったんストレージ・サーバ2300Aに与えられた後、ストレージ・サーバ2300Aのプロセッサ2305は、ストレージ・サーバ2300Aの優先度レベルを通常レベル7に戻し、他のストレージ・サーバ2300が制御権を取得しないようにする。
ステップ10023で、カメラ制御要求が行われたとプロセッサ2305が決定した場合、プロセス10000はステップ10025に進む。そうでない場合、プロセス10000は終了する。ステップ10025で、プロセッサ2305は、カメラ制御取得メッセージを作成し、プロセス10000は、終了する。
3.7.7 制御応答受信プロセス
図101は、制御応答を受信するプロセス10100を示す流れ図である。
プロセス10100は、制御ソケット上で読み出せる用意ができているデータがあれば実行される。プロセス10100は、すべての応答データが同時に利用できるわけではない場合に、単一の応答に対し複数回実行できる。
現在の応答が完全なHTTPヘッダをまだ含んでいない場合、HTTPヘッダに対するバッファ内にデータが受信される。HTTPヘッダを解析して応答の内容の長さを取得し、追加データが利用可能であれば、そのデータが受信データ・バッファ内に受信される。
与えられたソケットについてすべての応答データが受信されていない場合、プロセス10100は終了する。そうでない場合、応答を制御するプロセスが実行される。
プロセス10100は、第1のステップ10101から始まり、そこで、完全なHTTPヘッダが受信されたとプロセッサ2305が決定した場合に、プロセス10100はステップ10109に進む。そうでない場合、プロセッサ2305は、HTTPヘッダ・データが受信されるステップ10103に進む。
次のステップ10105で、プロセッサ2305は、残りの長さ属性を制御応答の内容長さに設定する。その後、次のステップ10107で、追加データが利用可能であるとプロセッサ2305が決定した場合、プロセス10100はステップ10109に進む。そうでない場合、プロセス10100は終了する。
ステップ10109で、プロセッサ2305は、メモリ2306内に構成されたソケット・バッファ内に残りのデータを受信する。その後、次のステップ10111で、プロセッサ2305は、応答の残りの長さから応答の受信された部分の長さを引く。次のステップ10113で、応答全体が受信されたとプロセッサ2305が決定した場合、プロセス10100はステップ10115に進む。そうでない場合、プロセス10100は終了する。
ステップ10115で、プロセッサ2305は、制御応答を受信し、プロセス10100は、終了する。
3.7.8 制御応答処理プロセス
図102は、制御プロセスを制御するプロセス10200を示す流れ図である。プロセス10200は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス10200は、制御ソケット上で送信されたコマンドに対する応答として受信されたデータを処理し、受信データが応答であるという要求に基づくいくつかのアクションを実行する。いくつかの要求は、追加処理を必要としない。
プロセス10200は、第1のステップ10201から始まり、そこで、プロセッサ2305が開いているカメラ・サーバ要求を検出した場合に、プロセス10200はステップ10203に進む。そうでない場合、プロセス10200は、ステップ10209に進む。ステップ10203で、プロセッサ2305は、要求の応答本体から接続識別子を抽出する。その後、次のステップ10205で、プロセッサ2305は、次の通知コマンドを送信し、プロセス10200は、ステップ10207に進む。
ステップ10209で、その要求がカメラ・サーバ情報取得要求であったとプロセッサ2305が決定した場合、プロセス10200はステップ10211に進む。そうでない場合、プロセス10200は、ステップ10213に進む。要求がカメラ・サーバ情報取得要求であった場合、要求の応答本体が解析され、現在のパン、傾斜、ズーム位置、カメラ名などを含む、要求を発行したカメラ・サーバ109〜111に関する情報を抽出する。ステップ10211で、プロセッサ2305は、要求の応答本体からカメラ・サーバ・プロパティを抽出する。その後、プロセス10200は、ステップ10221に進む。ステップ10213で、その要求がプリセット・リスト取得要求であったとプロセッサ2305が決定した場合、プロセス10200はステップ10215に進む。そうでない場合、プロセス10200は、ステップ10217に進む。要求がプリセット・リスト要求であった場合、応答本体が解析され、カメラ・サーバに格納されているプリセット位置に関する情報を取得する。したがって、ステップ10215で、プロセッサ2305は、要求の応答本体からプリセット設定を抽出し、プロセス10200は、ステップ10221に進む。
ステップ10217で、その要求がカメラ操作要求であったとプロセッサ2305が決定した場合、プロセス10200はステップ10219に進む。そうでない場合、プロセス10200は、ステップ10207に進む。ステップ10219で、プロセッサ2305は、パン、傾斜、ズーム(PTZ)補正フラグを設定する。カメラに対する現在のPTZ設定が記録エンジン内の現在のカメラ設定により必要な設定と整合している場合、「PTZ correct」フラグがセットされ、これにより、必要なければカメラを移動するコマンドは送信されない。
ステップ10221で、現在のカメラのパン、傾斜、ズーム設定が所望のパン、傾斜、ズーム設定と異なるとプロセッサ2305が決定した場合、プロセス10200はステップ10207に進む。そうでない場合、プロセス10200は、ステップ10209に進む。ステップ10207で、プロセッサ2305は、次の制御コマンドを送信する。要求がカメラ操作要求であった場合、カメラに対する新しいPTZ設定は、記録エンジンにより要求されるものと同じであり、したがって「PTZ correct」フラグがセットされる。
3.7.9 通知コマンド作成プロセス
図103は、通知コマンドを作成するプロセス10300を示す流れ図である。プロセス10300は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス10300は、接続識別子が現在開いているとプロセッサ2305が決定した場合に、プロセス10300はステップ10309に進む第1のステップ10301から始まる。そうでない場合、プロセス10300は、ステップ10303に進む。接続識別子が現在開いていない場合、コマンドは制御ソケット上で送信され、新しい接続識別子が設定される。コマンドは、制御ソケットを引数として、次のコマンドを送信するプロセスを実行することにより送信される。その後、接続識別子が確立されるまで、通知ソケット上で他のコマンドが送信されない場合がある。
以下で詳しく説明するように、現在のセンサ・ステータスが知られていない場合、現在のセンサ・ステータスを決定するために外部IOステータス・メッセージが作成される。知られている場合、Get Noticeメッセージが作成され、これにより、記録エンジンはセンサおよび運動検出イベントおよびカメラ制御イベントの受信を監視することができる。ステップ10303で、現在のセンサのステータスが知られているとプロセッサ2305が決定した場合、プロセス10300はステップ10305に進む。そうでない場合、プロセス10300は、ステップ10307に進む。ステップ10305で、プロセッサ2305は、通知取得メッセージを作成する。Get Noticeメッセージにより、記録エンジン201は、センサおよび運動検出イベントおよびカメラ制御イベントの受信を監視することができる。
ステップ10307で、プロセッサ2305は、外部入力/出力(IO)ステータス・メッセージを作成し、プロセス10300は、終了する。ステップ10309で、プロセッサ2305は、次の制御コマンドを送信し、プロセス10300は、終了する。
3.7.10 通知応答受信プロセス
図104は、通知応答を受信するプロセス10400を示す流れ図である。現在の応答が完全なHTTPヘッダをまだ含んでいない場合、HTTPヘッダに対するバッファ内にデータが受信される。HTTPヘッダを解析して応答の内容の長さを取得し、追加データが利用可能であれば、そのデータが受信データ・バッファ内に受信される。
プロセス10400は、完全なHTTPヘッダが受信されたとプロセッサ2305が決定した場合に、プロセス10400はステップ10403に進む第1のステップ10401から始まる。そうでない場合、プロセス10400は、ステップ10411に進む。ステップ10411で、プロセッサ2305は、HTTPヘッダ・データを受信する。その後、次のステップ10413で、プロセッサ2305は、残りの長さを内容の長さに設定する。次のステップ10415で、追加データが利用可能であるとプロセッサ2305が決定した場合、プロセス10400はステップ10403に進む。そうでない場合、プロセス10400は終了する。
ステップ10403で、プロセッサ2305がメモリ2306内に構成されたソケット・バッファ内に残りのデータを受信する場合、次のステップ10405で、プロセッサ2305は、通知メッセージの残りの長さから受信された長さを引く。
次のステップ10407で、通知応答全体が受信された場合、プロセス10400は、ステップ10409に進む。そうでない場合、プロセス10400は終了する。ステップ10409で、プロセッサ2305は、通知応答を処理する。
3.7.11 通知応答処理プロセス
図105は、プロセス10400のステップ10409で実行されるように通知応答を処理するプロセス10500を示す流れ図である。プロセス10500は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。要求が外部入力出力(IO)ステータス要求であると決定された場合、プロセッサ2305は、カメラ109〜111により報告される現在のセンサおよび運動検出ステータスが記録エンジン201により知られているものと一致しているかどうかを決定する。変更があれば、イベント・ルーチンを生成するプロセスを使用して、センサおよび/または運動イベントが生成される。カメラ設定は、以下で詳しく説明するように、カメラ設定を更新するプロセスを実行することによりトリガされたイベントに従って更新される。
要求が通知取得要求であると決定された場合、プロセッサ2305は、その応答から、これがどのような種類の通知であるかを決定する。
通知がセンサまたは運動検出ステータスの変更を示している場合、イベントを生成するプロセスが呼び出され、カメラ設定は、カメラ設定更新プロセスを呼び出すことによりトリガされたイベントに応じて更新される。
カメラが他のクライアントにより移動されたことを通知が示している場合、カメラ設定を更新するプロセスが実行され、必要ならば記録エンジン201により望まれている位置にカメラを戻し始める。
カメラ制御が与えられたことを通知が示している場合、次のコマンドを送信するプロセスを使用して制御ソケット上で次のコマンドが送信される。これにより、通常は、カメラを新しい位置に移動するカメラ操作コマンドが生成される。
カメラ制御が拒絶されたことを通知が示している場合、次のコマンドを送信するプロセスを使用して制御ソケット上で次のコマンドが送信される。これだと、通常、カメラ制御の新しい要求が発行され、その結果、カメラ制御が最終的に付与されたときにループから抜け出る。
プロセス10500は、外部IOステータス要求があるかどうかをプロセッサ2305が決定する第1のステップ10501から開始する。要求がない場合(ステップ10501のNoオプション)、プロセス10500は、ステップ10505に進む。しかし、外部IOステータス要求(ステップ10501のYesオプション)がある場合、ステップ10503は、センサまたは運動状態が異なるかどうかをチェックする。状態に違いがない場合(ステップ10503のNoオプション)、プロセス10500は、ステップ10513に進み、そこで、次の通知コマンドが送信される。
しかし、異なるセンサまたは運動状態がある場合(ステップ10503のYesオプション)、プロセス10500は、ステップ10509に進み、そこで、変更された状態に応じて、センサおよび/または運動イベントを発生する。
いったんイベントが生成されると、ステップ10511で、パラメータの設定が更新される。その後、ステップ10513で、次の通知コマンドが送信され、プロセス10500は終了する。
外部IOステータス要求がない場合に実行される、ステップ10505では、通知取得要求があるかどうかをチェックする。通知取得要求(ステップ10505のYesオプション)がある場合、ステップ10507は、センサまたは運動ステータス変更があるかどうかを決定する。
ステータス変更がある場合(ステップ10507のNoオプション)、プロセス10500は、ステップ10509に進むが、これについては上で説明している。ステータス変更がない場合(ステップ10507のNoオプション)、ステップ10515で、プロセッサ2305は、カメラ112〜115が他のストレージ・サーバにより制御されるかどうかをチェックする。その場合(ステップ10515のYesオプション)、プロセス10500はステップ10511に進み、すでに説明されているように、カメラ設定は更新される。そうでない場合、プロセス10500は終了する。
カメラ112〜115が他のストレージ・サーバ2300により制御されない場合(ステップ10515のNoオプション)、ステップ10517で、プロセッサ2305は、カメラ制御要求が与えられたかどうかをチェックする。要求が与えられている場合(ステップ10517のYesオプション)、ステップ10521で、次の制御コマンドが送信される。その後、プロセス10500は、ステップ10513に進み、そこで、次の通知コマンドが送信される。
カメラ制御要求が与えられなかった場合(ステップ10517のNoオプション)、ステップ10519で、カメラ制御要求が拒絶されたかどうかのチェックが実行される。拒絶が行われていなかった場合(ステップ10519のNoオプション)、プロセス10500は、ステップ10513に進み、そこで、次の通知コマンドが送信される。しかし、カメラ制御要求が拒絶された場合(ステップ10519のYesオプション)、制御の流れはステップ10521に進み、次の制御コマンドが送信される。
3.7.12 画像コマンド作成プロセス
図106は、画像コマンドを作成するプロセス10600を示す流れ図である。プロセス10600は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス10600は、画像ソケットが接続されていた場合に実行される。与えられたカメラに現在必要な取得フレーム速度が0よりも大きい場合、画像取得メッセージが作成される。そうでない場合、記録エンジン201は、ソケットを使用して画像データを受信する必要はない。
プロセス10600は、必要なフレーム速度が0よりも大きいとプロセッサ2305が決定した場合に、プロセス10600が終了する第1のステップ10601から始まる。そうでない場合、プロセッサ2305は、画像取得メッセージを作成し、プロセス10600は、終了する。
3.7.13 画像応答受信プロセス
図38は、画像応答受信プロセス3800を示す流れ図である。プロセス3800は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス3800は、カメラ・サーバ109〜111の画像ソケット上でストレージ・サーバ2300により受信できるサンプル・データが用意される毎に実行される。
プロセス3800は、完全なHTTPヘッダがカメラ・サーバ109〜111のうちの1つから受信されたとプロセッサ2305が決定した場合に、プロセス3800はステップ3803に進むステップ3701から始まる。そうでない場合、プロセス3800は、ステップ3815に進む。ステップ3803で、完全なマルチパート・ヘッダが受信されたとプロセッサ2305が決定した場合、プロセス3800はステップ3805に進む。そうでない場合、プロセス3800は、ステップ3819に進む。
ステップ3815で、プロセッサ3815は、HTTPヘッダ・データを受信する。次のステップ3817で、利用可能な追加サンプル・データがもうないとプロセッサ2395が決定した場合、プロセス3800は終了する。まだあれば、プロセス3800はステップ3819に進み、そこで、プロセッサ2305は、マルチパート・ヘッダ・データを受信する。その後、次のステップ3821で、フレーム・バッファ領域がストレージ・サーバ2300のメモリ2306内に確保されているとプロセッサ2305が決定した場合に、プロセス3800はステップ3829に直接進む。そうでない場合、プロセス3800は、ステップ3823に進み、そこで、マルチパート・ヘッダが内容の長さを含むとプロセッサ2305が決定した場合、プロセス3800は、ステップ3825に進む。そうでない場合、プロセス3800は終了する。次のステップ3825で、プロセッサ2305は、残りの長さパラメータを内容の長さに設定する。その後、ステップ3827で、プロセッサ2305は、受信されるサンプル・データの残りの長さに従ってメモリ2306内にフレーム・バッファ領域を確保する。
プロセス3800は、次のステップ3829で続行し、そこで、追加サンプル・データが利用可能である場合、プロセス3800はステップ3805に進む。そうでない場合、プロセス3800は終了する。ステップ3805で、プロセッサ2305は、メモリ2306またはハード・ディスク2310内に割り当てられたフレーム・バッファ内に残りのサンプル・データを受信する。その後、次のステップ3807で、プロセッサ2305は、残りのサンプル・データの長さから受信されたサンプル・データの長さを引く。プロセス3800は次のステップ3809で続き、そこで、サンプル・データすべてがカメラ・サーバ109〜111のうちの1つから受信されたとプロセッサ2305が決定した場合に、プロセス3800はステップ3811に進む。そうでない場合、プロセッサ2305は終了する。ステップ3811で、プロセッサ2305は、カメラ・サーバ109〜111のうちの1つから受信されたサンプル・データのサンプルを処理する。プロセス3800は、次のステップ3813で終了し、そこで、プロセッサ2305は、マルチパート・ヘッダをクリアする。
3.8 フレーム・バッファ・モジュール
上述のように、記録エンジン201は、さらに、フレーム・バッファ・モジュール329も含む。フレーム・バッファ・モジュール329は、カメラ・サーバ109〜111からサンプル・データを受信し、サンプル・データをストレージ・サーバ2300のメモリ2306内に構成された循環フレーム・バッファに保存する。サンプル・データが記録される画像を表す場合、サンプル・データはビデオ・ファイル管理モジュール317に送られ、ハード・ディスク・ドライブ2310に書き込まれる。サンプル・データは、さらに、運動検出アルゴリズムにも供給することができる。記録が実行されない場合、サンプル・データは、フレーム・バッファからオーバーフローするまでできる限り長い間、メモリ2306内に保持され、イベントがトリガされ、事前イベント記録がそのイベントに対して有効になっている場合に、後でハード・ディスク・ドライブ2310に保存することができる。
図39は、サンプル(つまり、フレーム)を処理するプロセス3900を示す流れ図である。プロセス3800は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス3900は、関連付けられたカメラ・サーバ109〜111の現在のスケジュールが運動解析を必要とするとプロセッサ2305が決定した場合に、プロセス3900はステップ3903に進むステップ3901から始まる。そうでない場合、プロセス3900は、ステップ3917に直接進む。ステップ3903で、プロセッサ2305は、現在のサンプルのタイムスタンプをメモリ2306内に構成された運動検出器速度カウンタに追加する。次のステップ3905で、運動検出器速度カウンタの値が所定の運動検出器しきい値を超える場合、プロセス3900はステップ3907に進む。そうでない場合、プロセス3900は、ステップ3917に進む。ステップ3907で、プロセッサ2305は、運動検出器アルゴリズムを現在のサンプルに適用する。ステップ3902で、適当な運動検出器アルゴリズムを使用することができる。
次のステップ3909で、新しい運動が検出された場合、プロセス3900は、ステップ3911に進む。そうでない場合、プロセス3900は、ステップ3923に進む。ステップ3911で、プロセッサ2305は、運動開始イベントを処理する。その後、ステップ3913で、プロセッサ2305は、メモリ2306内に構成された事前イベント・バッファを処理する。運動ステータスは、次のステップ3914で検出されるように設定される。
ステップ3923で、運動が検出されたとプロセッサ2305が決定した場合、プロセス3900はステップ3925に進む。そうでない場合、プロセス3900は、ステップ3917に進む。ステップ3925で、プロセッサ2305は、運動停止イベントを処理する。その後、次のステップ3927で、プロセッサ2305は、運動ステータスを未検出に設定する。
プロセス3900は、次のステップ3915で続行し、そこで、プロセッサ2305は、現在のスケジュールを再処理する。その後、ステップ3917で、現在のスケジュールではサンプル・データを保存する必要があるとプロセッサ2305が決定した場合、そのプロセスはステップ3919に進む。そうでない場合、プロセス3900は終了する。ステップ3919で、現在のサンプルが関連付けられたメディア・ファイル1800に書き込まれる。
3.9 記録エンジン・アクセス・プロトコル
記録エンジン201に対するアクセス・プロトコルが定義される。アクセス・プロトコルは、6つのコマンドを含み、2つの主要なグループに細分できる。
「RE_」プレフィックスが付くコマンドは、記録エンジン201にのみ影響し、記録エンジン201の管理者インターフェースにより管理される。管理者インターフェースについては、以下でさらに詳しく説明する。
「NVR_」プレフィックスが付くコマンドは、システム100全体に丸ごと影響を及ぼし、ストレージ・サーバ2300がシステム100のマスタ・ストレージ・サーバの容量内で動作しているときにストレージ・サーバ2300上で呼び出される。「NVR_」プレフィックスの付きコマンドは、記録エンジン201のビューア・インターフェースにより管理される。
コマンドは、ビューア2200または他のデバイス(例えば、コンピュータ、PDA、電話機、または他のデバイス)上でソフトウェア・アプリケーションにより、Webサーバ213に送信され、Webサーバ213は、それらのコマンドを記録エンジン201に渡す。コマンドは、上述のように、管理者インターフェース・モジュール313により記録エンジン201内で処理される。コマンドは、通常、共通ゲートウェイ・インターフェース(CGI)を使用してWebサーバ213から記録エンジン201に送信され、記録エンジン201からの応答は、通常、これもまた、CGIインターフェースを使用してWebサーバ213に返される。ストレージ・サーバ2300上でより効率のよい動作をさせるために、FastCGI(登録商標)インターフェースを使用できる。
コマンドは、さらに、同じストレージ・サーバ2300上で稼働しているソフトウェア・アプリケーション(ビューアなど)から送信することもできる。この場合、コマンドは、そのまま、送信側ソフトウェアによりWebサーバ213に送信される。しかし、このような場合、コマンドがネットワーク2220上で送信されるのではなく、コマンドは、通常、同じコンピュータ2300内のソケット接続を通じて送信される。
その後、記録エンジン201によりWebサーバ213に返される応答は、通常、Webサーバ213によりビューア2200にHTTPとして返される。
3.9.1 管理者インターフェース
記録エンジン管理者インターフェースは、3つのコマンドを備えており、これらのコマンドを以下の表7にまとめた。
Figure 0005173919
3.9.1.1 RE_Getコマンド
RE_Getコマンドは、以下のリソース上でHTTP「Getメソッド」を使用してビューア2200により要求として送信される。
/webview-nvr/re_get.fcgi?action=<val> (8)
リソース(8)の「action」引数は、要求されている情報の型を記述する。「action」引数の中でいくつかの値が使用される場合、他にもいくつかオプション引数が存在しうる。
RE_Getコマンドの戻り値は、指名された型のストレージ・サーバ構成オブジェクト(SSCO)とすることができる。無効な型が指定された場合、データは返されない。
図40は、記録エンジン201により実行されるようなRE_Getコマンドを処理するプロセス4000を示す流れ図である。プロセス4000は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4000は、RE_Getコマンドに関連付けられたパラメータがプロセッサ2305により復号化される第1のステップ4001から始まる。その後、次のステップ4003で、そのコマンドに関連付けられたアクションが「redetails」に等しい場合、プロセス4000はステップ4005に進む。そうでない場合、プロセス4000は、ステップ4007に進む。ステップ4005で、プロセッサ2305は、型「general」のストレージ・サーバ構成オブジェクトをWebサーバ213に送信する。
ステップ4007で、そのコマンドに関連付けられたアクションが「camsvrdetails」に等しい場合、プロセス4000はステップ4009に進む。そうでない場合、プロセス4000は、ステップ4011に進む。ステップ4009で、プロセッサ2305は、型「camsvr」のストレージ・サーバ構成オブジェクトをWebサーバ213に送信する。
ステップ4011で、そのコマンドに関連付けられたアクションが「cameradetails」に等しい場合、プロセス4000はステップ4013に進む。そうでない場合、プロセス4000は、ステップ4015に進む。ステップ4013で、プロセッサ2305は、型「camera」のストレージ・サーバ構成オブジェクトをWebサーバ213に送信する。
ステップ4015で、そのコマンドに関連付けられたアクションが「scheddetails」に等しい場合、プロセス4000はステップ4017に進む。そうでない場合、プロセス4000は、ステップ4019に進む。ステップ4017で、プロセッサ2305は、型「sched」のストレージ・サーバ構成オブジェクトをWebサーバ213に送信する。ステップ4019で、プロセッサ2305は、空の応答を送信する。
3.9.1.1.1 REDETAILSアクション
REDETAILSアクションは、一般的記録エンジン201構成を取り出す。REDETAILSアクションは、上述のように、型「general」のストレージ・サーバ構成オブジェクトを返す。追加オプション引数は利用できない。
3.9.1.1.2 CAMSVRDETAILSアクション
CAMSVRDETAILSアクションは、ストレージ・サーバ2300に関連付けられたカメラ・サーバ109〜111およびカメラ・サーバ109〜111に接続されたカメラ112〜115のリストを取り出す。CAMSVRDETAILSアクションは、上述のように、型「camsvr」のストレージ・サーバ構成オブジェクトを返す。オプション引数「camsvrs」は、カメラ・サーバ110〜115のホスト名のカンマで区切られたリストを含む。「camsvrs」引数が存在する場合、返されるカメラ・サーバ109〜111のリストは、引数内で言及されたものに制限される。そうでない場合、すべてのカメラ・サーバ109〜111が返される。
3.9.1.1.3 CAMERADETAILSアクション
CAMERADETAILSアクションは、ストレージ・サーバ2300に関連付けられたカメラ112〜115のリストおよびカメラ112〜115のステータスを取り出す。CAMERADETAILSアクションは、上述のように、型「camera」のストレージ・サーバ構成オブジェクトを返す。オプション引数「cameras」は、カメラ識別子のカンマで区切られたリストを含む。「cameras」引数が存在する場合、返されるカメラ112〜115のリストは、引数内で言及されたものに制限される。そうでない場合、すべてのカメラ112〜115が返される。
3.9.1.1.4 SCHEDDETAILSアクション
SCHEDDETAILSアクションは、ストレージ・サーバ2300に属しているスケジュールのリストを取り出す。SCHEDDETAILSアクションは、上述のように、型「sched」のストレージ・サーバ構成オブジェクトを返す。オプション引数「cameras」は、カメラ識別子のカンマで区切られたリストを含み、オプション引数「days」は、曜日名のカンマで区切られたリストを含む。「cameras」または「days」のいずれかの、または両方の引数が存在する場合、返されるスケジュールのリストは、指定されたカメラ112〜115および/または曜日に関連付けられたスケジュール制限される。
3.9.1.2 RE_Setコマンド
RE_Setコマンドは、以下のリソース上でHTTP「Postメソッド」を使用してビューア2200により要求として送信される。
/webview-nvr/re_set.fcgi?action=<val> (9)
リソース(9)の「action」引数は、送信される情報の型を記述する。「action」引数の中でいくつかの値が使用される場合、他にもいくつかオプション引数が存在しうる。
ストレージ・サーバ構成オブジェクトは、要求メッセージの本体内で供給することができる。ストレージ・サーバ構成オブジェクトは、図4を参照しつつ上で説明されているように、ネットワーク・ビデオ・レコーダ要素400においてaction属性を含む。
RE_Setコマンドにより実行されるオペレーションは、アトミックでない。RE_Setコマンドのプロセスは、問題が発生すると直ちに停止し、すでに実行されてしまっている変更をロールバックする試みはなされない。
Webサーバ213内のRE_Setコマンドのアクセス特権は、RE_Setコマンドへのアクセスが管理者であるユーザに許されるように設定される。
RE_Setコマンドが正常に完了すると、記録エンジン201は、変更されたカメラ・サーバ109〜111またはスケジュールの構成を記述しているストレージ・サーバ構成オブジェクトをWebサーバ213に返す。返されたストレージ・サーバ構成オブジェクトは、ストレージ・サーバ2300に新しく割り当てられたカメラ・サーバ109〜111のカメラ識別子を取得するために使用することができる。
エラーが発生した場合、プロセッサ2305により、NVR−STATUSのタグを持つ単一要素とともに短いXMLドキュメントが返されるようにできる。NVR−STATUSタグの内容に、発生したエラーを記述する。
図41は、記録エンジン201により実行されるようなRE_Setコマンドを処理するプロセス4100を示す流れ図である。プロセス4100は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス4100は、RE_Setコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ2305により復号化される第1のステップ4101から始まる。その後、次のステップ4103で、そのコマンドに関連付けられたアクションが「camsvrdetails」に等しい場合、プロセス4100はステップ4105に進む。そうでない場合、プロセスは、ステップ4107に進む。ステップ4105で、プロセッサ2305は、特定のカメラ・サーバ109〜111の詳細を設定する。
ステップ4107で、そのコマンドに関連付けられたアクションが「scheddetails」に等しい場合、プロセス4100はステップ4109に進む。そうでない場合、プロセスは、ステップ4111に進む。ステップ4109で、プロセッサ2305は、特定のカメラ・サーバ109〜111のスケジュール詳細を設定する。
ステップ4111で、プロセッサ2305は、空の応答をWebサーバ213に送信する。
3.9.1.2.1 CAMSVRDetailsアクション
CAMSVRDETAILSアクションは、ストレージ・サーバ2300上で、カメラ112〜115およびカメラ・サーバ109〜111に関する情報を追加、修正、および削除するために使用される。ストレージ・サーバ2300上のカメラ112〜115およびカメラ・サーバ109〜111に関する情報に関して、表現「add」、「modify」、および「delete」は、それぞれ、カメラ112〜115またはカメラ・サーバ109〜111に関する情報の追加、情報の修正、および情報の削除を指す。関連付けられたネットワーク・ビデオ・レコーダ要素400内のaction属性は、さらに、コマンドの動作を定義する。図42は、カメラ・サーバ109〜111の詳細を設定するプロセス4200を示す流れ図である。プロセス4200は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。
プロセス4200は、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがaddである場合、プロセス4200はステップ4203に進む第1のステップ4201から始まる。そうでない場合、プロセス4200は、ステップ4209に進む。ステップ4203で、プロセッサ2305は、ストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ109〜111のすべてをストレージ・サーバ2300に関連付けられているカメラ・サーバ109〜111の集合に追加する。次のステップ4205で、コマンドが成功した場合、プロセス4200は、ステップ4207に進む。そうでない場合、プロセス4200は、ステップ4221に進む。ステップ4207で、プロセッサ2305は、ストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ109〜111のそれぞれの詳細を含むストレージ・サーバ構成オブジェクトをストレージ・サーバ2300に関連付けられているカメラ・サーバ109〜111のそれぞれに送信する。
ステップ4209で、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがmoveinである場合、プロセス4200はステップ4203に進む。そうでない場合、プロセス4200は、ステップ4211に進む。ステップ4211で、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがeditである場合、プロセス4200はステップ4213に進む。そうでない場合、プロセス4200は、ステップ4215に進む。ステップ4213で、プロセッサ2305は、ストレージ・サーバ構成オブジェクトにリストされているカメラ・サーバ109〜111のすべてに関係する設定を変更し、その後、プロセスはステップ4205に進む。
ステップ4215で、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがdeleteである場合、プロセス4200はステップ4219に進む。そうでない場合、プロセス4200は、ステップ4217に進む。ステップ4219で、プロセッサ2305は、ストレージ・サーバ構成オブジェクトにリストされているカメラ・サーバ109〜111に関するすべての情報を削除し、その後、プロセスはステップ4221に進む。ステップ4221で、プロセッサ2305は、成功コードを生成し、プロセス4200は、終了する。
ステップ4217で、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがmoveoutである場合、プロセス4200はステップ4219に進む。そうでない場合、プロセス4200は、ステップ4223に進む。ステップ4223で、プロセッサ2305は、空の応答を生成し、プロセス4200は、終了する。
3.9.1.2.1.1 ADDおよびMOVEINアクション
上述のように、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがaddまたはmoveinである場合、与えられたストレージ・サーバ構成オブジェクト内に記述されているすべてのカメラ・サーバ109〜111がストレージ・サーバ2300に追加される。このオペレーションは、以下の理由から失敗する場合がある。
(i)カメラ・サーバ109〜111を追加するとシステム100内に存在するカメラ・サーバ109〜111の個数は強制的最大許容値を超える場合(例えば、これは、64となるように構成することができる)。
(ii)カメラ・サーバ109〜111は、すでに、ストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ109〜111のうちの1つと同じホスト名およびポートとともに追加されている。
(iii)カメラ・サーバ109〜111のうちの1つについて指定されたホスト名が無効である。
(iv)カメラ・サーバ109〜111のうちの1つについて指定されたディレクトリ名が無効である。
3.9.1.2.1.2 MODIFYアクション
上述のように、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがmodifyである場合、与えられたストレージ・サーバ構成オブジェクト内に記述されているすべてのカメラ・サーバ109〜111がストレージ・サーバ2300の中の対をなすもう片方とマッチングされ、新しい設定が入力される。カメラ・サーバ109〜111の個数が変更された場合、必要なカメラ112〜115がストレージ・サーバ2300に追加されるか、または削除される。
カメラ識別子は、静的であり、どのような状況でも変更されないことが好ましい。
modifyアクション・オペレーションは、以下の理由から失敗する場合がある。
(i)カメラ・サーバ109〜111を修正するとシステム100内に存在するカメラ・サーバ109〜111の個数は強制的最大許容値を超える場合(例えば、これは、64となるように構成することができる)。
(ii)指定されたカメラ・サーバ109〜111のうちの1つがシステム100に追加されていない場合。
(iii)カメラ・サーバ109〜111のうちの1つについて指定されたホスト名が無効である場合。
(iv)カメラ112〜115のうちの1つについて指定されたディレクトリ名が無効である場合。
3.9.1.2.1.3 DELETEおよびMOVEOUTアクション
上述のように、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがdeleteまたはmoveoutである場合、与えられたストレージ・サーバ構成オブジェクト内に記述されているカメラ・サーバ109〜111に関するすべての情報がストレージ・サーバ2300から削除される。CAMSVR要素内に必要な唯一の情報は、HOST要素である。CAMSVR要素の他の要素は、この特別な場合には省略できる。
deleteおよびmoveoutオペレーションは、ストレージ・サーバ構成オブジェクトで指定されたカメラ・サーバ109〜111がシステム100に追加されていない場合に失敗することがある。
3.9.1.2.2 SCHEDDETAILSアクション
SCHEDDETAILSアクションは、カメラ112〜115に関連付けられたスケジュール曜日を修正し、削除するために使用される。個々のスケジュール・アイテムは、修正されないことが好ましい。変更が行われると、一日全体が一度に書き換えられる。ネットワーク・ビデオ・レコーダ要素400内のaction属性は、さらに、コマンドの動作を定義する。しかし、SCHEDDETAILSアクションのactiion属性は、3つの値「add」、「modify」、および「delete」のみに制限される。
図43は、カメラ・サーバ109〜111スケジュール詳細を設定するプロセス4300を示す流れ図である。プロセス4300は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4300は、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがaddである場合、プロセス4300はステップ4303に進む第1のステップ4301から始まる。そうでない場合、プロセス4300は、ステップ4309に進む。ステップ4303で、プロセッサ2305は、ストレージ・サーバ構成オブジェクトにより記述される、ストレージ・サーバ2300に関連付けられたカメラ・サーバ109〜111のスケジュール詳細のすべてを置き換える。
次のステップ4305で、コマンドが成功した場合、プロセス4300は、ステップ4307に進む。そうでなければ、プロセス4300は、プロセッサ2305がエラーを生成するステップ4315に進む。ステップ4307で、プロセッサ2305は、Webサーバ213を介して新しく修正されたスケジュール詳細を含むストレージ・サーバ構成オブジェクトをビューア2200に送信する。ステップ4311で、プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがdeleteである場合、プロセス4300はステップ4313に進む。そうでない場合、プロセス4300は、ステップ4317に進む。ステップ4313で、プロセッサ2305は、ストレージ・サーバ構成オブジェクトにリストされているスケジュール曜日を削除し、その後、プロセスはステップ4315に進む。
ステップ4317で、プロセッサ2305は、空の応答を生成し、プロセス4300は、終了する。
3.9.1.2.2.1 ADDアクション
プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがaddである場合、ストレージ・サーバ構成オブジェクト内で参照されているすべてのスケジュール曜日がストレージ・サーバ2300に追加される。与えられたカメラ・サーバ2300に対し特定の曜日がすでに存在している場合、その曜日は新しい曜日で上書きされる。
3.9.1.2.2.2 MODIFYアクション
プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションがmodifyである場合、ストレージ・サーバ構成オブジェクト内で参照されているすべてのスケジュール曜日がストレージ・サーバ2300に追加される。与えられたカメラ・サーバ2300に対し特定の曜日がすでに存在している場合、その曜日はストレージ・サーバ構成オブジェクト内に記述されている新しい曜日で上書きされる。MODIFYアクションは、ADDアクションと実質的に同じである。
3.9.1.2.2.3 DELETEアクション
プロセッサ2305により受信されたストレージ・サーバ構成オブジェクトに関連付けられたアクションが「delete」である場合、ストレージ・サーバ構成オブジェクト内で参照されているすべてのスケジュール曜日がストレージ・サーバ2300から削除される。DAY要素内で必要な唯一の情報は、削除すべき曜日を識別する、name属性である。
DELETEオペレーションは、指定されたスケジュール曜日がシステム100内の与えられたカメラ・サーバ109〜111内に存在しない場合に失敗することがある。
3.9.1.3 RE_Triggerコマンド
RE_Triggerコマンドは、以下のリソース(10)上でHTTP「Postメソッド」を使用してCGI要求として送信される。
/webview-nvr/re_trigger.fcgi (10)
RE_Triggerコマンドのストレージ・サーバ構成オブジェクトは、要求メッセージの本体内で供給することができる。RE_Triggerコマンドに対するストレージ・サーバ構成オブジェクトは、関連付けられたネットワーク・ビデオ・レコーダ要素400内のaction属性を含む。action属性値は「trigger」に等しい。
RE_Triggerコマンドに対するストレージ・サーバ構成オブジェクトは、CAMERA要素409のリストを含み、それぞれの要素は、トリガされるべき、1つのカメラ・サーバ109〜111のカメラ識別子を指定する。RE_Triggerコマンドに対するストレージ・サーバ構成オブジェクトで指定されたそれぞれのカメラ・サーバ109〜111は、最大フレーム(つまり、サンプル)速度で60秒間記録し、その後、特定のカメラ・サーバ109〜111が、その特定のカメラ・サーバ109〜111が記録し始めたときのモードに戻るように設定される。
CAMERA要素409内の他のデータは無視され、また省略することができる。RE_Triggerコマンドは、単一のNVRーSTATUS要素とともにXMLドキュメントを返す。NVR−STATUS要素の内容は、記録が正常にトリガされたかどうかを示すか、またはエラーが発生した場合にその詳細を示す。
図44は、記録エンジン201により実行されるようなRE_Triggerコマンドを処理するプロセス4400を示す流れ図である。プロセス4400は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4400は、RE_Triggerコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ2305により復号化される第1のステップ4401から始まる。その後、次のステップ4403で、そのコマンドに関連付けられたアクションが「trigger」に等しい場合、プロセス4400はステップ4405に進む。そうでない場合、プロセス4400は、ステップ4409に進む。
ステップ4405で、ストレージ・サーバ構成オブジェクト内にまだトリガされていないカメラ112〜115が残っているとプロセッサ2305が決定した場合、プロセス4400はステップ4407に進む。そうでない場合、プロセス4400は、ステップ4415に進む。
ステップ4407で、プロセッサ2305は、ストレージ・サーバ構成オブジェクトから次のカメラ112〜115を選択する。その後、次のステップ4417で、プロセッサ2305は、ユーザ名を含むオペレータ・オーバーライド・イベントを生成する。次のステップ4411で、プロセッサ2305は、特定のカメラ112〜115上のオペレータ・オーバーライドをトリガする。その後、次のステップ4413で、プロセッサ2305は、識別されたカメラ112〜115の設定を更新する。
ステップ4415で、プロセッサ2305は、成功またはエラー・コードを生成し、プロセス4400は、終了する。
ステップ4409で、プロセッサ2305は、空の応答を生成し、プロセス4400は、終了する。
3.9.2 ビューア・インターフェース
記録エンジン201は、ビューア・インターフェースを備える。ビューア・インターフェースは、3つのコマンドを備えており、これらのコマンドを以下の表8にまとめた。
Figure 0005173919
3.9.2.1 NVR_UserGetコマンド
NVR_UserGetコマンドは、以下のリソース(11)上でHTTP「Getメソッド」を使用して要求として送信される。
/webview-nvr/nvr_userget.fcgi?file=<val> (11)
リソース(11)内の「file」引数の値は以下のうちの1つとすることができる。
(i)config−一連の知られているストレージ・サーバ2300、一連の知られているカメラ・サーバ109〜111、一連の知られているカメラ112〜115を記述するハード・ディスク・ドライブ2310からファイルを取り出し、カメラ112〜115を一連のZonesとLocations(後述)に関係付ける。
(ii)ulayout−単一ユーザによりカスタマイズされたレイアウトを格納するために使用することができるユーザ特有のファイルであるパーソナル・レイアウト・ファイルをハード・ディスク・ドライブ2310から取り出す。
(iii)playout−管理者特権を持つユーザしか修正できないファイルである共有レイアウト・ファイルをハード・ディスク・ドライブ2310から取り出す。ファイルは、システム100のすべてのユーザ(つまり、オペレータおよび管理者)により使用されることができるレイアウトを含む。
レイアウト・ファイルは、一組のレイアウトを含むファイルである(後述)。
これらのファイルは、NVR_UserGetコマンドへの応答として元の形式で返される。NVR_UserGetコマンドは、ユーザ・ログインを示すために記録エンジン201により使用されるが、NVR_UserGetコマンドは、認証されることを求めて、ビューア2200により第1のコマンドとして常に送信される。したがって、ユーザ・ログイン・イベントは、NVR_UserGetコマンドが記録エンジン201により受信されると必ず記録エンジン201により生成される。他の配列では、ログイン・イベントは、Webサーバ213とともにビューア2200のHTTP認証が成功したこと(HTTPダイジェスト認証またはHTTP基本認証を含む)を記録エンジン201に通知するWebサーバ213に関連付けられたモジュールにより検出することができる。
図45は、記録エンジン201により実行されるようなNVR_UserGetコマンドを処理するプロセスを示す流れ図である。プロセス4500は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4500は、NVR_UserGetコマンドに関連付けられたパラメータがプロセッサ2305により復号化される第1のステップ4501から始まる。その後、次のステップ4003で、そのコマンドに関連付けられた「file」パラメータが「config」に等しい場合、プロセス4500はステップ4505に進む。そうでない場合、プロセスは、ステップ4513に進む。
ステップ4505で、プロセッサ2305は、ファイル名を「config.cui.SS」に設定し、その後、プロセス4500は、ステップ4507に進む。
ステップ4513で、そのコマンドに関連付けられた「file」パラメータが「playout」に等しい場合、プロセス4500はステップ4515に進む。そうでない場合、プロセス4500は、ステップ4517に進む。ステップ4515で、プロセッサ2305は、ファイル名を「playout.cui.SS」に設定し、その後、プロセス4500は、ステップ4507に進む。
ステップ4517で、そのコマンドに関連付けられた「file」パラメータが「ulayout」に等しい場合、プロセス4500はステップ4519に進む。そうでない場合、プロセス4500は、ステップ4523に進む。ステップ4519で、プロセッサ2305は、Webサーバ213にログインするために使用されるユーザ名を決定する。次のステップ4521で、プロセッサ2305は、ファイル名を「ulayout.cui.」+ログイン時に使用するユーザ名の値+「.SS」(例えば、「henry」というユーザ名の場合、ファイル名はulayout.cui.henry.SSとなる)に設定し、プロセス4500はステップ4507に進む。
ステップ4507で、プロセッサ2305は、読み込みのためステップ4505、4515、または4521で設定されたファイル名でファイルを開く。その後、次のステップ4509で、ファイルが正常に開かれたとプロセッサ2305が決定した場合、プロセス4500はステップ4511に進む。そうでない場合、プロセス4500は、プロセッサ2305が空の応答を送信するステップ4523に進み、プロセス4500は、終了する。ステップ4511で、プロセッサ2305は、開いているファイルの内容をWebサーバ213に送信するが、このサーバは、HTTP応答上の開いているファイルの内容を、NVR_UserGetコマンドを起動したビューア2200に送信し、プロセス4500は終了する。
3.9.2.2 NVR_UserSetコマンド
NVR_UserSetコマンドは、以下のリソース(12)上でHTTP「Postメソッド」を使用してWebサーバ213に要求として送信される。
/webview-nvr/nvr_userset.fcgi?file=<val> (12)
リソース(12)内の「file」引数の値は以下のようにできる。
(i)ulayout−単一ユーザによりカスタマイズされたビデオ・ウィンドウ・レイアウトを格納するために使用されるユーザ特有のファイルである、パーソナル・レイアウト・ファイルを書き換える。
NVR_UserSetコマンドは、パーソナル・レイアウト・ファイルを要求メッセージの内容で置き換える。
図46は、記録エンジン201により実行されるようなNVR_UserSetコマンドを処理するプロセス4600を示す流れ図である。プロセス4600は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4600は、NVR_UserSetコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ2305により復号化される第1のステップ4601から始まる。その後、次のステップ4603で、そのコマンドに関連付けられた「file」パラメータが「ulayout」に等しい場合、プロセス4600はステップ4605に進む。そうでない場合、プロセスは、ステップ4615に進む。ステップ4605で、プロセッサ2305は、Webサーバ213にログインするために使用されるユーザ名を決定する。次のステップ4607で、プロセッサ2305は、ファイル名を「ulayout.cui.」+ユーザ名の値+「.SS」に設定する。(例えば、ユーザ名が「henry」の場合、ファイル名は、ulayout.cui.henry.SSに設定される)。プロセス4600は、プロセッサ2305が書き込みのためこのファイル名でファイルを開く次のステップ4609で続行する。次のステップ4611で、ファイルが正常に開かれた場合、プロセス4600は、ステップ4613に進む。そうでない場合、プロセス4600は、ステップ4615に進む。ステップ4613で、プロセッサ2305は、NVR_UserSetコマンドで受信されたデータをハード・ディスク・ドライブ2310内に構成された開いているファイルに書き込む。プロセス4600は、次のステップ4615で終了し、プロセッサ2305は、空の応答をWebサーバ213に送信する。
3.9.2.3 NVR_AdminSetコマンド
NVR_AdminSetコマンドは、以下のリソース(13)上でHTTP「Postメソッド」を使用して記録エンジン201によりWebサーバ213に送信される。
/webview-nvr/nvr_adminset.fcgi?file=<val> (13)
リソース(13)内の「file」引数の値は以下のようにできる。
(i)config−一連の知られているストレージ・サーバ2300を記述するファイルを書き換え、知られているストレージ・サーバ2300に関連付けられたカメラ・サーバ109〜111を一連のZonesおよびLocations(後述)に関係付ける。
(ii)playout−管理者特権を持つユーザしか修正できない、共有レイアウト・ファイルを書き換える。共有レイアウト・ファイルは、システム100のすべてのユーザにより使用されることができるレイアウトを含む。
NVR_AdminSetコマンドは、構成または保護レイアウト・ファイルの1つを要求メッセージの内容で置き換える。
Webサーバ213内のNVR_AdminSetコマンドのアクセス特権は、NVR_AdminSetコマンドへのアクセスが管理者権限を有するユーザにのみ許されるように設定することができる。
図47は、記録エンジン201により実行されるようなNVR_AdminSetコマンドを処理するプロセス4700を示す流れ図である。プロセス4700は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4700は、NVR_AdminSetコマンドに関連付けられたパラメータおよびストレージ・サーバ構成オブジェクトがプロセッサ2305により復号化される第1のステップ4701から始まる。その後、次のステップ4703で、そのコマンドに関連付けられた「file」パラメータが「config」に等しい場合、プロセス400はステップ4705に進む。そうでない場合、プロセスは、ステップ4713に進む。ステップ4705で、プロセッサ2305は、ファイル名を「config.cui.SS」に設定する。
ステップ4713で、そのコマンドに関連付けられた「file」パラメータが「playout」に等しい場合、プロセス400はステップ4715に進む。そうでない場合、プロセス4700は、ステップ4717に進む。ステップ4715で、プロセッサ2305は、ファイル名を「playout.cui.SS」に設定する。
プロセス4700は、プロセッサ2305が書き込みのためこのファイル名でファイルを開く次のステップ4707で続行する。次のステップ4709で、ファイルが正常に開かれた場合、プロセス4700は、ステップ4711に進む。そうでない場合、プロセス4700は、ステップ4717に進む。ステップ4711で、プロセッサ2305は、NVR_AdminSetコマンドで受信されたデータをハード・ディスク・ドライブ2310内に構成されたアクティブ・ファイルに書き込む。プロセス4700は、次のステップ4711で終了し、プロセッサ2305は、空の応答をWebサーバ213に送信する。
3.10 ストレージ・サーバ構成ツール(SSCT)
上述のように、ストレージ・サーバ構成ツール211は、ストレージ・サーバ2300をホスティングするコンピュータ2301にユーザがログオンすることにより利用可能になる。構成ツール211は、管理者がストレージ・サーバ構成ファイル205のGENERAL要素405で記述されている設定の変更を行えるようにするグラフィカル・ユーザ・インターフェースを備える。
ストレージ・サーバ構成ツール211は、メイン・ウィンドウの最上部のタブをクリックすることによりアクセスされる、3つのページ10800、10900、および11000を持つダイアログ・ボックスを備えるユーザ・インターフェースである。
図108は、「Settings」というタイトルが付いている、一般設定を構成するために使用される第1のページ10800を示しており、すべて、ストレージ・サーバ構成オブジェクトの<GENERAL>要素内に記述される。「Storage Server Name」テキスト・ボックス10801は、<NAME>要素(上述のように)に格納されている、特定のストレージ・サーバ2300の名前を構成するために使用される。「Enable the following proxy server」チェック・ボックス10803は、<PROXY>要素のenabled属性を制御するために使用される(上述のように)。「Proxy server」テキスト・ボックス10805および「Port」テキスト・ボックス10807は、<PROXY>要素の<HOST>下位要素内に格納される(上述のように)。「Max.Retained History」テキスト・ボックス10809の内容は、<HISTORY>要素内に格納される(上述のように)。「Control Storage Server Disk Usage」チェック・ボックス10811は、bysizeまたはbytime属性の一方を<LIMITER>要素内に設定できるかどうかを決定する(上述のように)。「Max.File Size/Duration」テキスト・ボックス10813の内容は、上述の<LIMITER>要素の<TIME>または<SIZE>要素内に格納される。テキスト・ボックス10813と並んでいるコンボ・ボックス10815は、これらの要素のうちのどの要素が現在値を格納するために使用され、<LIMITER>要素のbysizeまたはbytime属性のうちのどちらが設定されているかを決定するために使用される。「Max.Disk Space Used」テキスト・ボックス10817は、コンボ・ボックス10819内で示されているドライブに対応する<DRIVE>要素(上述のような)の<USED>要素に格納されている値を含む。
「Start Storage Server」10821および「Stop Storage Server」10823というラベルが付いているボタンは、記録エンジン201とアクセス・エンジン203の両方を起動、停止するために使用される。
図109は、「Event Notification」というタイトルが付いている、電子メール通知設定を構成するために使用される第2のページ10900を示しており、これらはストレージ・サーバ構成オブジェクトの<GENERAL>要素の<EMAIL>下位要素内に記述される。<EMAIL>要素については上で説明されている。「Send e−mail when events are recorded」チェック・ボックス10901の状態は、<EMAIL>要素のenabled属性に格納される。チェック・ボックス10901が無効化された場合、ページ10900内の他のすべてのアイテムも無効化される。「Min.Priority Level」コンボ・ボックス10903内の値は、<PRI>要素内に格納される。「To address」テキスト・ボックス10905の値は、<TO>要素内に格納される。「From address」テキスト・ボックス10907の値は、<FROM>要素内に格納される。「SMTP server」10909および「Port」10911テキスト・ボックス内の値は、<SMTP>要素の<HOST>下位要素内に格納される。「Enable authentication」チェック・ボックス10913の値により、<SMTP>要素のauth属性の値が「pop」(有効)に設定されるのか、または「none」(無効)に設定されるのかが決定される。チェック・ボックス10913が無効化された場合、テキスト・ボックス10913の下のすべてのアイテムも無効化される。「User name」10915および「Password」10917テキスト・ボックスの値は、<SMTP>要素の<USER>下位要素内に格納される。「POP server」10919および「Port」10921テキスト・ボックスの値は、<SMTP>要素の<POPHOST>下位要素内に格納される。
図110は、「User Management」というタイトルが付いている第3のページ11000を示しており、Storage Server Usersファイルに格納されるすべてのユーザのリスト11001を含む。Storage Server Groupsファイル内で「admin」グループのメンバとして言及されているすべてのユーザは、そのユーザ名の隣にチェックマーク(例えば、チェックマーク11003)が付いており、対応するユーザが管理者であることを示している。
Add 11005およびEdit 11007ボタンは、ユーザの名前およびパスワードを修正するために使用することができるダイアログ・ボックスを表示する。
ストレージ・サーバ2300の構成に対する変更は、ストレージ・サーバ構成ファイル205を新しい設定に書き換えることにより有効にできる。構成ファイル205内のカメラ・サーバ・リストまたはスケジュール・アイテムに対し行われた最近の変更を保存するために、構成ツール211が変更を保存することを試みるたび毎にストレージ・サーバ構成ファイル205が再ロードされる。
ストレージ・サーバ2300の構成に変更が加えられたときに記録エンジン201が実行中の場合(通常のオペレーションでは、よくあることである)、記録エンジン210は、構成が変更されたことを通知される。それに対する応答として、記録サーバ201は、構成ファイル205を再ロードし、最新の設定を使用してオペレーションを再開する。この通知が実行されるようにするために、記録エンジン201は、ストレージ・サーバ2300の構成に対し変更が加えられたときに使用されるストレージ・サーバ構成ツール211によりアクセス可能なストレージ・サーバ2300のメモリ2306内に格納された共有同期オブジェクトを作成する。
本明細書で説明されている実装では、共有同期オブジェクトは、名前付きイベント・オブジェクトである。記録エンジン201のスレッドは、共有同期オブジェクトが構成ツール211によりトリガされるのを待つ。このスレッドは、図50を参照しつつ以下でさらに詳しく説明される。構成ツール211は、構成ツール211が構成ファイル205への変更の書き込みを終了したときに記録エンジン201に信号を送るイベントをトリガする。
図48は、ストレージ・サーバ構成ツール・プロセス4800を示す流れ図である。プロセス4800は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4800は、第1のステップ4801から始まり、そこで、プロセッサ2305は、構成ファイル205を読み込む。構成ファイル205が有効であるとプロセッサ2305が決定した場合、プロセス4800は、ステップ4805に進む。そうでない場合、プロセス4800は、プロセッサ2305が所定のデフォルト構成を初期化するステップ4815に進む。その後、次のステップ4817で、プロセッサ2305は、デフォルト構成を構成ファイル205に書き込む。
プロセス4800は、次のステップ4805で続行し、そこで、プロセッサ2305は、例えば、キーボード2302またはマウス2303を介してユーザ入力を受け取る。次のステップ4807で、ユーザが「Exit」と入力したとプロセッサ2305が決定した場合、プロセス4800は次のステップ4809で続行する。そうでない場合、プロセス4800は、ステップ4819に進み、そこで、ユーザが「Apply」を入力したとプロセッサ2305が決定した場合、プロセス4800は、ステップ4821に進む。そうでない場合、プロセス4800は、ステップ4805に戻る。ステップ4821で、プロセッサ2305は、ハード・ディスク・ドライブ2310内の構成ファイル205に構成変更を保存する。ステップ4821で実行されるような構成変更を保存するプロセス4900は、図49を参照しつつ以下で説明される。
プロセス4800は、次のステップ4809で続行し、そこで、保存されていない構成変更があるとプロセッサ2305が決定した場合、プロセス4800は、次のステップ4811に続く。そうでない場合、プロセス4800は終了する。ステップ4811で、ユーザが構成変更を保存することを望んでいる場合、プロセスは、ステップ4813に進む。そうでない場合、プロセス4800は終了する。ステップ4813で、プロセッサ2305は、プロセス4900に従って、ハード・ディスク・ドライブ2310内の構成ファイル205に構成変更を保存する。
次に、プロセス480のステップ4813および4821で実行されるような構成ファイル205を保存するプロセス4900について、さらに詳しく説明する。プロセス4900は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス4900は、第1のステップ4901から始まり、そこで、プロセッサ2305は、構成ファイル205を読み込む。次のステップ4903で、プロセッサ2305は、ハード・ディスク・ドライブ2305に構成ファイル205を再度書き込む。プロセス4900は、次のステップ4905で終了し、そこで、プロセッサ2305は、ストレージ・サーバ2300への構成変更が保存されたことを記録エンジン201に知らせる。
図50は、ストレージ・サーバ2300への構成変更を監視するプロセス5000を示す流れ図である。説明されているように、プロセス5000は、記録エンジン201内のスレッド(つまり、サブルーチン)として実装するのが好ましい。プロセス5000は、ハード・ディスク・ドライブ2310上に常駐するのが好ましく、またプロセッサ2305により実行に際して制御されるのが好ましい。
プロセス5000は、第1のステップ5001から始まり、そこで、プロセッサ2305は、同期オブジェクトを作成する。次のステップ5003で、プロセッサ2305は、構成ツール211からトリガが来るのを待つ。トリガを検出した後、プロセッサ2305は、次のステップ5005で構成ファイル205を読み込む。その後、次のステップ5007で、プロセッサ2305は、ストレージ・サーバの構成を更新し、ステップ5003に戻る。
3.11 イベント管理
図107は、イベントを生成するプロセス10700を示す流れ図である。プロセス10700は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。このプロセス10700は、条件に応じてイベントが生成される場合に必ず実行される。イベントが特定のカメラ112〜115に関連付けられ、そのカメラが現在データを記録中である場合、イベントの詳細がその彼らのイベント・キューに追加される。イベント・キューの目的は、書き込まれる次のビデオ・フレームとともにビデオ・ファイル内に保存できるようにイベント記述を保持することである。
プロセス10700は、生成されるイベントが特定のカメラ112〜115に関連付けられた場合に、プロセス10700がステップ10703に進む第1のステップ10701から始まる。そうでない場合、プロセス10700は、ステップ10707に直接進む。
ステップ10703で、特定のカメラ112〜115の記録速度が0よりも大きいとプロセッサ2305が決定した場合、プロセス10700はステップ10705に進む。そうでない場合、プロセス10700は、ステップ10707に進む。ステップ10705で、プロセッサ2305は、メモリ2306内に構成されたイベント・キューにイベントを追加する。
プロセス10700は、プロセッサ2305がイベントをイベント・ファイルに書き込む次のステップ10707で終了する。
図111は、スケジュール・スレッド・プロセス11100をさらに詳細に示す流れ図である。プロセス11100は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。ステップ11101で、プロセッサ2305は、スケジュールを初期化する。その後、ステップ11103で、プロセッサ2305は、タイマー・イベントを待つ。その後、ステップ11105で、プロセッサ2305は、現在のカメラ・スケジュールを処理する。スケジュールを処理した後、制御の流れはステップ11103に戻り、次のタイマー・イベントを待つ。
図112は、初期化されたスケジュール・プロセス11200を示す流れ図である。プロセス11200は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。ステップ11201で、プロセッサ2305は、カメラ・スケジュールがアクティブ化されないかどうかをチェックする。カメラ・スケジュールがアクティブ化されていない場合(ステップ11201のNoオプション)、プロセス11200は終了する。しかし、カメラ・スケジュールがアクティブ化されていない場合、ステップ11203で、プロセッサ2305は、非アクティブ化スケジュールにより次のカメラを取得する。その後、ステップ11205で、現在のスケジュールが処理される。その後、制御の流れはステップ11201に戻り、アクティブ化されていない他のカメラ・スケジュールをチェックする。
図113は、現在のスケジュールを処理するプロセス11300を示す流れ図である。プロセス11300は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。ステップ11301で、プロセッサ2305は、現在の時刻に対応するカメラ・スケジュール・アイテムを特定する。その後、ステップ11303で、適当なスケジュール・アイテムが見つかったかどうかを決定するチェックが実行される。スケジュール・アイテムが見つからなかった場合(ステップ11303のNoオプション)、ステップ11305で、デフォルト設定を使用してスケジュール・アイテムが作成される。その後、プロセス11300は、ステップ11307に進む。適当なスケジュール・アイテムが見つかった場合(ステップ11303のYesオプション)、プロセス11300はステップ11307に直接進み、ステップ11305をバイパスする。
ステップ11307で、カメラ設定が更新される。その後、ステップ11309で、現在のカメラ112〜115のスケジュール・タイマーは終了される。その後、次のステップ11311で、プロセッサ2305は、スケジュール・アイテムの終わりまでの時間を決定する。次に、ステップ11313で、ステップ11311で計算された時間の後タイムアウトになるようにタイマーを設定する。その後、プロセス11300は終了する。
図114は、カメラ設定を更新するプロセス11400を示す流れ図である。プロセス11400は、ハード・ディスク・ドライブ2310上に常駐するソフトウェアとして実装するのが好ましく、またプロセッサ2305により実行に際して制御される。プロセス11400は、1つのカメラに対し新しいスケジュール・アイテムが起動されるか、またはセンサ、運動またはオペレータ・イベントが発生した場合に実行される。
以下で詳しく説明するように、第1のステップでは、カメラ112〜115に対する現在アクティブなスケジュール・アイテムが得られ、関連付けられたカメラ・サーバ109〜111に格納されたカメラ設定が一時的構造内にコピーされる。センサ、運動、またはオペレータ・イベントが現在トリガされている場合、それらのイベントの最高優先度が特定される。同じ優先度を持つ複数のイベントが見つかった場合、オペレータ・オーバーライド・イベントは、他のイベントを自動的にオーバーライドし、運動イベントは、センサ・イベントをオーバーライドする。2つのセンサ・イベントが存在し、同じ優先度を持つ場合、第1のセンサ・イベントは、第2のセンサ・イベントをオーバーライドする。イベントが選択されると、すでに説明されているデフォルト・カメラ設定は、現在アクティブなスケジュール・アイテム内のそのイベントに関連付けられている設定でオーバーレイされる。
現在のカメラ設定が確立されると、関連付けられている事前イベント記録期間を持つ未トリガ・イベントについて必要な記録速度、運動検出速度、および記録速度のうちの最も高い値を取ることにより必要なフレーム取得速度が計算される。その後、プロセッサ2305は、必要な品質および解像度設定がカメラにより現在使用されている設定に等しいかどうかを決定する。等しくない場合、プロセッサ2305は、次のコマンドを送信するプロセスを使用して制御ソケット上で要求を発行し、それにより、一連の要求をトリガし、その結果、カメラに対する品質および解像度が変更される。
その後、プロセッサ2305は、必要なパン、傾斜、リズム(PTZ)設定がカメラ112〜115により現在使用されている設定に等しいかどうかを決定する。等しくない場合、プロセッサ2305は、次のコマンドを送信するプロセスを使用して制御ソケット上で要求を発行し、それにより、一連の要求をトリガし、その結果、カメラ112〜115に対するPTZが変更される。
その後、プロセッサ2305は、必要な取得フレーム速度がカメラ112〜115に関連付けられている画像ソケットにより現在使用されている設定に等しいかどうかを決定する。等しくない場合、プロセッサ2305は、画像ソケットを再接続し、これにより、ソケットが接続されるとすぐに正しい速度でフレーム取得が自動的に再開される。
プロセス11400は、プロセッサ2305が現在のスケジュールからデフォルト設定を取り出す第1のステップ11401から始まる。そのようなデフォルト設定は、ストレージ・デバイス2309内に格納することができる。
次に、ステップ11403で、プロセス11400は、センサ、運動、またはオペレータ・イベントがトリガされるかどうかを決定する。イベントがトリガされない場合(ステップ11403のNoオプション)、プロセス11400は、ステップ11409に進み、ステップ11405および11407をバイパスする。
トリガされたセンサ、運動、またはオペレータ・イベントがある場合(ステップ11403のYesオプション)、ステップ11405で、最高優先度を持つトリガされたイベントが見けられる。その後、ステップ11407で、プロセス11400は、トリガされたイベントに関係する現在のスケジュールからの設定でデフォルト設定をオーバーレイする。その後、ステップ11409で、プロセス11400は、必要なフレーム取得速度を決定する。その後、ステップ11411は、新しい品質/解像度設定がカメラ112〜115とマッチするかどうかを決定する。設定がマッチしない場合(ステップ11411のNoオプション)、ステップ11415は、次の制御要求を送信する。
しかし、新しい品質/解像度設定がカメラとマッチした場合(ステップ11411のYesオプション)、ステップ11413で、新しいパン、傾斜、およびズーム(PTZ)設定が112〜115とマッチするかどうかをチェックする。PTZ設定がマッチしない場合(ステップ11413のNoオプション)、プロセス11400は、ステップ11415に進む。
新しいPTZ設定がカメラとマッチする場合(ステップ11413のYesオプション)、ステップ11417では、新しい取得速度設定がカメラとマッチするかどうかをチェックする。その場合(ステップ11417のYesオプション)、カメラ設定更新プロセス11400は終了する。しかし、新しい取得速度設定がカメラ112〜115とマッチしない場合(ステップ11417のNoオプション)、ルーチン11400を終了するのに先立って、ステップ11419は、画像ソケットを再接続する。カメラ情報更新スレッドでは、カメラ・サーバ109〜111上の様々な設定を定期的にチェックする。カメラおよびセンサ名およびプリセット位置などのいくつかの設定は、記録エンジン201の制御下にはなく、現在値を記録エンジン201が必ず認識するように定期的にチェックされる。画質および解像度などの他の設定は、記録エンジン201の制御下にあり、設定が変更されたことを記録エンジン201が検出した場合にカメラ・サーバ109〜111上で変更される。
4.0 アクセス・エンジン
アクセス・エンジン203は、ビデオおよびイベント・ファイルの照合および提供を処理するシステム100のコンポーネントである。アクセス・エンジン203は、完了およびアクティブ・ビデオおよびイベント・ファイルとしてストレージ・サーバ2300(または上述のように周辺ストレージ・デバイスおよびネットワーク接続ストレージ・デバイスなどの外部ストレージ・デバイス)のハード・ディスク・ドライブ2310内に記録エンジン201が格納するデータ・ファイル209を監視する。アクセス・エンジン203は、データ・ファイル209のレコードを保持し、ビューア2200が個々のデータ・ファイル209のサイズおよび時間範囲を意識しないようにビューア2200を使用してデータ・ファイル209へのアクセス権を提供する。この方法で、アクセス・エンジン203は、ビューア2200に、格納されているビデオおよびイベント・データに対する継ぎ目のないアクセスを提供する。
アクセス・エンジン203は、図2に例示されているように、ストレージ・サーバ2300の一要素である。アクセス・エンジン203は、ハード・ディスク・ドライブ2310上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図23に示されているように、実行はプロセッサ2305により制御される。
4.1 アクセス・エンジンの構造
図52は、アクセス・エンジン203の5つの機能単位を示している。図52で、実線矢印は、ビデオをまたはイベント・ファイル・ペアからのデータの移動を示すが、波線矢印は、ファイル名からのデータの移動を示す(つまり、波線矢印の目標のユニットがデータ・ファイル209のファイル名を読み込む)。ビデオおよびイベント・ストレージ209を監視しているときに、アクセス・エンジン203は、実際のファイルにアクセスすることに優先して、できるならばファイル名解析を使用する。ファイル名解析を使用することにより、ハード・ディスク2310およびプロセッサ2305の負荷を低減できる。
ビデオ・ファイル・スティッチング・ユニット5200は、データ・ファイル209を含むデータ・ディレクトリ内のビデオ・ファイル・ペア(つまり、メディア・ファイル1800および関連付けられたインデックス・ファイル1805)のファイル名を監視し、スティッチングされたビデオ・ファイル・リストを保持する。ビデオ・ファイル・スティッチング・ユニット5200により保持されるスティッチングされたリストで、個々のビデオ・ファイルをスティッチングしてまとめ、ビューア2200への連続ストリームとして提供されるようにできる。
様々なビデオ情報に対する要求が受信されると、アクセス・エンジン203は、スティッチングされたビデオ・ファイル・リストを使用して、この要求を満たすためにどのビデオ・ファイルが要求されるかを識別する。このように識別されたファイルは、一般に、要求された範囲の先頭の前からのビデオ・サンプル・データ、およびその範囲の終わりの後からのいくつかのビデオ・サンプル・データを含む。このようなビデオ・サンプル・データがデータ・ファイル209内に格納されていなかった場合にファイル・スティッチング・ユニット5200により返されるビデオ・サンプル・データの範囲内にギャップがありうる(例えば、記録エンジン201がスケジュールされた、運動またはセンサ・トリガ記録に合わせて構成されている場合)。
その後、ビデオ・ファイル・リーダー5205は、識別されたビデオ・ファイル・ペアを順に開き、開かれたファイル内のデータをHTTPストリーミング・インターフェース5220に提供し、そこから、ファイルからのデータがWebサーバ213に転送され、そこから、要求を開始したビューア2200に転送される。
同様にして、イベント・ファイル・スティッチャ5210は、データ・ファイル209内に格納されたイベント・レコードを監視し、スティッチングされたイベント・ファイル・リストを保持する。スティッチングされたイベント・ファイル・リストは、イベント・ファイルが互いにどのように関係するかを示す。スティッチングされたリストを使用して、指定された時間範囲内のイベントを要求することができる。ビューア2200からイベント情報に対する要求が受信されると、アクセス・エンジン203は、スティッチングされたイベント・ファイル・リストを使用して、この要求を処理するためにどのイベント・ファイルが必要かを決定する。
その後、イベント・ファイル・リーダー5215は、データ・ファイル209から必要なイベント・ファイルにアクセスし、抽出されたイベント・レコードをHTTPストリーミング・インターフェース5220に転送し、そこから、イベント・レコードが、要求を開始したビューア2200に転送される。
アクセス・エンジン203により新しいイベント・ファイルが通知された場合、アクセス・エンジン203は、イベント・ファイル内でのい時間からオフセットへのマッピングを含む、メモリ2306内に格納される、新しいインデックスを作成する。
イベント・ファイルはビデオ・ファイルよりもかなり小さいため、一配列では、イベント・ファイル・スティッチャ5210およびイベント・ファイル・リーダー5215は、単一の機能ユニットにまとめられる。
図53は、アクセス・エンジン203により実行されるタスクを示している。ステップ5300で、システムが起動される。
アクセス・エンジン203の実行中、3つのタスクが並列実行される。ステップ5310は、ビデオ・ファイル・スティッチングの維持である。ステップ5315は、イベント・ファイル・スティッチングの維持である。ステップ5305では、アクセス・エンジン203は、ビューア2200から受信された要求を処理する。
アクセス・エンジン203は、システムがステップ5320でシャットダウンされるまでタスク5305、5310および5315を実行し続ける。
4.1.1 アクセス・エンジンと記録エンジンとの相互作用
アクセス・エンジン203および記録エンジン201は、両方ともデータ・ファイル209にアクセスするので、緩く統合されている。アクセス・エンジン203がデータ・ファイル209を含むディレクトリ内のファイルを開いた場合、アクセス・エンジン203は、記録エンジン201の活動に干渉する場合があるが、それは、記録エンジン201は開いているファイルのリネームまたは削除を行えないからである。ファイルは、アクセス・エンジン203によりファイルが使用されている間、またはファイルが必要になるすぐ前にしか開かれない。これは、記録エンジン203のオペレーションが必要以上に干渉を受けないようにするために重要である。
上の第3節で説明されているように、記録エンジン201は、データをファイルのマッチしたペアに書き込み、それぞれのペアは、メディア・ファイル1800およびインデックス・ファイル1805からなる。それぞれのメディア・ファイル1800およびインデックス・ファイル1805は、3段階ライフ・サイクルを辿る。非アクティブ・スタンバイ・ファイルは、アクティブ・ファイルになり、次に、これは、完了ファイルになる。イベント・ファイルのライフ・サイクルについては、4.2.2節で説明される。
前述のように、非アクティブ・スタンバイ・ファイルは、カメラ(112〜115)が記録エンジン201の制御に加えられるとすぐに記録エンジン201により作成される。カメラ112〜115に関連付けられた非アクティブ・スタンバイ・ファイルは、カメラが関連付けられた記録スケジュールを持つかどうかに関係なく作成される。結果として、記録エンジン201は、ファイルが作成されるのを待たずに、ビデオ情報が受信されるとすぐにファイルへの記録を開始する。ビデオ記録を開始するのは、スピードが重視されるタスクであり、記録の前にファイル作成により生じる遅延があるのは望ましくない。
非アクティブ・スタンバイ・ファイルは、ビデオ・サンプルを含まず、またその結果、データ・ディレクトリ209を監視するときにアクセス・エンジン203により無視される。
サンプル(つまり、フレーム)がメディア・ファイル1800に書き込まれると、非アクティブ・スタンバイ・ファイルがアクティブ・ファイルになる。3.3.4.1節で説明されているように、非アクティブ・スタンバイまたはアクティブ・ファイルのファイル名形式はファイルの作成時刻(つまり、タイムスタンプ)を含む。作成時刻は、一般に、実際に使用される前にファイルが作成されるときにファイルに格納されるビデオ・サンプル・データの開始時間と異なる
アクティブ・ファイルは、記録エンジン201により現在更新中のファイルである。図18からわかるように、アクティブ・ファイルは、通常、2つの関連付けされたファイル、インデックス・ファイル1805とメディア・ファイル1800からなる構造である。アクティブ・ファイル・ペアの場合、メディア・ファイル1800およびインデックス・ファイル1805は両方とも、開いており、ビデオ・サンプル・データを記録中に記録エンジン201により追加される。
アクセス・エンジン203は、インデックス・ファイル1805を使用して、抽出すべき正しいサンプルを見つける。インデックス・ファイル1805は、現在のサンプル・データで定期的に(例えば、10秒に1回)更新されるだけである、つまり、インデックス・ファイル1805内のデータは、メディア・ファイル1800内のデータを忠実に表さない場合があるということである。最初にファイルを開くと、アクセス・エンジン203は、アクティブ・ファイルの状態のスナップショットを取得する。アクセス・エンジン203がメディア・ファイル1800からビデオ・データをストリーミングしている間に、アクセス・エンジン203は、ファイルの現在状態を定期的にチェックし、メディア・ファイル1800に記録されたビデオ・サンプル・データの量についてアクセス・エンジン203が得ている情報を更新する。
アクティブ・ファイルでは、ファイル名はファイル作成時刻を示す。しかし、作成時刻は第1のサンプルと一致しない場合があるので、メディア・ファイル1800内のサンプルの開始時刻をそのファイルから取り出す必要があることがある。
記録エンジン201がファイルへの記録をいったん終了すると、記録エンジン201はファイルを閉じて完了する。完結したファイルは、ファイル作成時刻ではなく、メディア・ファイル1800内のサンプルの開始および停止時刻を示すようにリネームされる。
ファイルが完了すると、メディア・ファイル1800およびインデックス・ファイル1805は両方とも、整合し、ファイル・ペアへのさらなる更新はできなくなる。
アクセス・エンジン203が実行中でない場合、記録エンジン201により監視されているそれぞれのカメラは、1つの非アクティブ・スタンバイ・ファイル、1つのアクティブ・ファイル、および多数の完了したファイルを持つ。いくつかのオペレーティング・システムの制限のせいで、ファイルのリネームは、そのファイルが現在他のプロセスによって使用されている間は、不可能な場合がある。したがって、アクセス・エンジン203が現在、アクティブ・ファイル内のビデオ・サンプル・データをビューア2200に現在ストリーミングしており、記録エンジン201が現在ストリーミングされているファイルを終了した場合、記録エンジン201は、アクセス・エンジン203がファイルのストリーミングを終了するまでファイルをリネームすることはできない。この制限により、まだリネームされていない完了したファイルを持つ可能性があるため、ファイル命名スキームが複雑なものになる。したがって、カメラ112〜115は、データ・ファイル209を含むディレクトリ内にカメラ112〜115と関連付けられた複数のアクティブ・ファイルを持つ場合があるが、サンプル・データで記録エンジン201により更新されているのは1つだけである。
4.2 ファイル・スティッチング
データ209に対する継ぎ目のないアクセスを可能にするために、アクセス・エンジン203は、カメラ112〜115毎に現在のファイル集合の2つの順序付きリストを保持する。アクセス・エンジン203により保持される順序付きリストに使用されるデータ構造は、図54に示されている。ビデオ・ファイルに関係する複数のリストとイベント・ファイルに関係するリストがある。
図に示されているような順序付きスティッチング・リスト5400は、4つのカメラ・レコード5402、5405、5410、および5415を含む。しかし、実際には、順序付きリスト5400内のカメラ・レコードの個数は、データ・ファイル209として格納されているアクティブまたは完了したファイルを持つカメラ112〜115の個数に依存する。
示されている実施例では、カメラ・レコード5402は、ファイル5420、5425、および5430のシーケンスに関連付けられている。ファイル5420は、9から10時までの間のデータに関係し、ファイル5425は、10から11時までの間のデータに関係し、ファイル5430は、11から12時までの間のデータに関係する。ファイル・データ構造5420、5425、および5430は、開始時刻順に格納される。順序付きリスト5400を組み立てる際に、ファイル名が開始および終了時刻について解析される。ファイル名を使用するのは、それぞれのファイルを開き、ファイル内のデータ構造から時刻を取り出すのよりも高速である。スティッチング・リスト内で参照されているファイルは、アクティブ・ファイルおよび完了したファイルを含む。
図54の実施例では、カメラ・レコード5402は、任意の関連付けられたデータ・ファイル209を持つ唯一のカメラ・レコードである。カメラ・レコード5402は、3つの関連付けられたデータ・ファイルを持つものとして示されている。しかし、これは、例示することのみを目的としており、関連付けられたデータ・ファイルの個数は、システム100の現在のオペレーションに依存する。
一番最近に作成されたアクティブ・ファイルは、現在使用中のアクティブ・ファイルであり、同じカメラ112〜115に関連付けられた他のアクティブ・ファイルは、まだリネームされていないファイルである。上述のように、まだリネームされていないアクティブ・ファイルのファイル名内の時刻は、ファイルの実際の記録開始時刻ではなく、その代わりに、ファイルの作成時刻である。データ・ファイル209のアクティブ・ファイル(または上述のように使用中であったためまだリネームされていない完了したファイル)を順序付きスティッチング・リスト5400に追加した場合、メディア・ファイル内の第1のテキスト・サンプルの時刻データを読み取ることにより第1のイベントの実際の時刻を読み出す必要がある。
アクセス・エンジン203は、記録エンジン201がデータを記録するドライブ2310のそれぞれの中のデータ・ファイル209をチェックする。
4.2.1 ビデオ・ファイル・スティッチング
ビデオ・ファイル・スティッチングを保持するステップ5310は、図55にさらに詳しく示されている。ステップ5310は、ハード・ディスク・ドライブ2310上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図23に示されているように、実行はプロセッサ2305により制御される。
ビデオ・ファイル・スティッチングは、ステップ5500で開始する。初期ビデオ・ファイル・スティッチングは、アクセス・エンジン203が起動したときに実行される。これ以降、ビデオ・ファイル・スティッチングは、新しいデータ・ファイル209があるか、またはデータ・ファイル209がリネームされると必ず、または記録エンジン201がアクセス・エンジン203に、プロセス間通信を介してデータ・ファイル209のステータスに対する変更を通知した場合に実行される。
一実装では、アクセス・エンジン203は、データ・ファイル209を含むディレクトリ内で何らかの変更が生じた場合にWindows(登録商標)ファイル変更通知を使用してそのことを知らせる。通知されると、アクセス・エンジン203は、データ・ファイル209の現在の集合に基づきメモリ内ファイル・リスト5400を再構築する。上述のように、アクセス・エンジン203は、必要ならば複数のディレクトリを監視することができる。
他の実装では、アクセス・エンジン203は、データ・ファイル209のディレクトリ構造内の変更を定期的にチェックする。
次に、アクセス・エンジン203は、ループ5505に入り、データ・ファイル209内のアクティブ・ファイルおよび完了したファイルのそれぞれを調べる。ステップ5510、ループ5505の第1のステップでは、アクセス・エンジン203が、現在調査中のビデオ・ファイルのファイル名を解析する。3.3.4.1節で説明されているように、ファイル名は、調査中のファイルの内容に関係する時刻情報とともに、ファイルが関連付けられているカメラ112〜115に関係する情報を持つ。
ステップ5515で、解析されたカメラ識別子に対応するカメラ・レコード5402〜5415が順序付きリスト5400内にすでに存在しているかどうかをチェックする。カメラ・レコードが存在している場合(つまり、ステップ5515のYesオプション)、制御の流れは直接、ステップ5525に進み、ステップ5520をバイパスする。カメラ・レコードが順序付きリスト5400内に存在していない場合(つまり、ステップ5515のNoオプション)、ステップ5520で、アクセス・エンジン203は、適切なカメラ・レコードを作成し、順序付きスティッチング・リスト5400に追加する。
その後、制御の流れは、ステップ5525に進み、そこで、調査中のデータ・ファイル209に関する必要な情報が、図54に例示されているように、時刻順に、カメラ・レコードに追加される。
順序付きリスト5400は、ビデオ・ファイルの内容を含まない。順序付きリスト5400内に存在するデータ・ファイル情報5420、5425、5430は、単に、開始時刻、停止時刻(知られている場合)、およびカメラ識別子を含むファイル名から導かれた情報を含むだけであり、開始時刻に応じて順序付けられる。
次に、ステップ5530で、アクセス・エンジン203は、順序付きスティッチング・リスト5400にまだ組み込まれていないさらに多くのデータ・ファイル209があるかどうかをチェックする。順序付きリスト5400に含める必要があるファイルがまだある場合、制御の流れは、ステップ5510に戻り、そこで、次のデータが調べられる。
調べるデータ・ファイルがもうない場合(つまり、ステップ5530のNoオプション)、制御の流れは、ループ5505内に存在し、リクエスト・ハンドラ5305により現在使用されている順序付きスティッチング・リストがループ5505により更新された新しい順序付きスティッチング・リスト5400で置き換えられるステップ5535に進む。
新しい順序付きスティッチング・リスト5400がアクセス・エンジン203の他の要素で利用できるようになると、制御の流れは、ステップ5540に進み、そこで、アクセス・エンジン203がまだ実行中かどうかをチェックする。アクセス・エンジン203がシャットダウンのプロセスに入っていない場合(つまり、ステップ5540のYesオプション)、ステップ5545で、アクセス・エンジン203は、データ・ファイル209への変更の通知を待つ。上述のように、ステップ5545の他の実装では、アクセス・エンジン203は、データ・ファイル209のディレクトリ構造への変更を定期的にチェックすることができる。アクセス・エンジン203がデータ・ファイル209への変更に気づくと、ループ5505が再び開始される。
アクセス・エンジン203がシャットダウンのプロセスに入っている場合(つまり、ステップ5540のNoオプション)、ステップ5550で、アクセス・エンジン203は、順序付きスティッチング・リスト5400を空にし、解放する。
4.2.2 イベント・ファイル・スティッチング
イベント・ファイル・スティッチングを保持する、ステップ5315では、ビデオ・ファイル・スティッチングの保持に類似の手順を使用して、様々なイベントへの継ぎ目のないアクセスを可能にする(ステップ5310)。イベント・ファイル・スティッチングは、イベント・ファイルがビデオ・ファイルの3段階ライフ・サイクルを通過しないという点でいくぶん単純である。イベント・ファイルは、アクティブと完了の2つの段階しか持たない。
ファイル名は、両方の段階とも同じである。したがって、ビデオ・ファイルがリネームされたときに生じる問題点は、イベント・ファイルの場合には生じない。
それぞれのイベント・ファイルは、ファイルが作成された時刻である、単一の日付を持つ。これにより、イベント・ファイルの厳密な順序付けが可能になる。ビデオ・ファイルとは異なり、イベント・ファイルは必要になるまで作成されない。ビデオ・サンプルに比べてイベント・レコードのデータ・サイズが小さいということは、イベント・ファイルがファイル・スワップオーバーの後に作成されている間にイベント・レコードをメモリ内のキューに入れることができるということを意味する。キューに入れられているイベント・レコードは、ファイル作成が完了した後、記録エンジン201により新しいファイルに書き込むことができる。
ファイル内の最後のイベントから終了時刻を抽出するには、イベント・ファイルを解析する必要がある。同じカメラ112〜115からのどのイベント・ファイルも、オーバーラップする期間を持たない。しかし、時間順序に関して隣接する2つのイベント・ファイルが、同じ瞬間に(つまり、記録エンジン201により使用される時間の精度である1ミリ秒以内に)発生するイベントに関連付けられた異なるイベント・レコードを含むことは可能である。つまり、与えられたイベント・ファイルは、イベント・ファイルのシーケンスにおける前のファイルの中にあるイベント・レコードと同じ時刻を持つイベント・レコードを含むことができる。しかし、後のイベント・ファイルは、前のイベント・ファイルの中のイベント・レコードよりも早い時刻を持つイベント・レコードを含むことはできない。したがって、時刻の早いファイル内のすべてのイベント・レコードの時刻は、続くファイル内のすべてのイベント・レコードの時刻以内である必要がある。すべてのイベント・レコードは、時間順序で格納される。
アクセス・エンジン203は、イベント・ファイルのインデックスをメモリ2306内に構築し、要求が受信されたときにファイルを次々に探索するのにかかる時間を短縮する。アクセス・エンジン203が、正しいイベントを見つけるまでファイル内のすべてのレコードを探索しなくてもファイル内の特定のイベントを探し出すことができるように、格納されているインデックスではイベント時刻によりインデックスを付けたオフセットを備える。したがって、インデックスを探索することで、必要なオフセットまたは所望のイベント近くのポイントが得られる。
イベント・ファイル・スティッチング・リスト5400(ビデオ・ファイル・スティッチング・リストと同じ構造を持つデータ構造である)は、ビデオ・ファイル・スティッチング保持5310に関して図55に示されているのと同じステップを使用して保持できる。データ・ファイル情報を適切なカメラ・レコードに追加するステップ5525は、イベント・ファイルのライフ・サイクルが比較的直接的あるため、いくぶん単純である。アクセス・エンジン203がイベント・ファイル情報をカメラ・レコードに追加する場合、ファイル名に格納されているように、イベント・ファイルの作成時刻により、イベント・ファイル・リストを単純に順序付けすることができる。
ファイルの終わりに到達すると、次のファイルがその特定のカメラ・サーバ109〜111に対するファイルのリストから読み込まれる。その後、イベントを、新しいファイルから読み込み、要求を開始したビューア2200にストリーミングすることができる。このプロセスは、要求の終了時刻まで続行する。
イベント要求は、さらに、イベント要求が記録エンジン201により行われるときにイベントの連続するストリームを求めることができる。アクセス・エンジン203が格納されているイベントの終わりに到達した後ストリームを終了する代わりに、アクセス・エンジン203は、さらに更新がないかイベント・ファイルを監視し続け、更新が発生したときにそのような更新をビューア2200に送信する。
アクセス・エンジン203は、データ・ファイル209を含むデータ・ディレクトリ内に作成される新しいイベント・ファイルを監視する。新しいイベント・ファイルは、一般に、記録エンジン201が新しいイベント・ファイルにスワップオーバーする際に作成されるが、これは、外部ソフトウェア・アプリケーションがすでに削除されているビデオおよびイベント・ファイルを復元するせいである場合がある。
一実装では、アクセス・エンジン203は、データ・ファイル209を含むディレクトリ内で何らかの変更が生じた場合にWindows(登録商標)ファイル変更通知を使用してそのことを知らせる。通知されると、アクセス・エンジン203は、データ・ファイル209の現在の集合に基づきメモリ内ファイル・リスト5400を再構築する。上述のように、アクセス・エンジン203は、必要ならば複数のディレクトリを監視することができる。
他の実装では、アクセス・エンジン203は、データ・ファイル209のディレクトリ構造内の変更を定期的にチェックする。
4.3 要求の処理
アクセス・エンジン203の主タスクの1つは、データ・ファイル209内に格納されているビデオ・サンプルおよびイベント・レコードに対する要求を処理することである。要求処理ステップ5305は、図56にさらに詳しく示されている。
このプロセスは、ステップ5600で開始され、そこで、ビューア2200は、ビデオ・サンプルまたはイベント・レコードに対する要求をWebサーバ213に送信し、Webサーバ213はアクセス・エンジン203に要求を渡す。要求の中で使用されているデータについては、本明細書の後の方で説明する。
システム100より使用されるファイルは、データ・ファイル209を含むディレクトリにファイルが置かれると、ビューア2200によりアクセス可能になる。同様に、ファイルがデータ・ファイル209を含むディレクトリから削除されると、アクセス・エンジン203は、削除されたビデオ情報に対する他の要求に応じない。オペレーティング・システムの制限により、ファイルがアクセス・エンジン203により現在アクセス中のときにファイルを削除することが妨げられる場合がある。
次に、ステップ5605で、ストリーミング・インターフェース5220は、その要求を復号化する。その要求がイベント・レコードに対するものであれば、アクセス・エンジン203は、ステップ5610に従って要求を処理する。その要求がビデオ・サンプルに対するものであれば、要求は、ステップ5615で処理される。適切なステップ5610または5615が完了すると、要求処理手順がステップ5620で終了する。
ビューア2200の便宜上、逆方向再生により要求の先頭の前から情報を再生することが可能である(つまり、アクセス・エンジン203が再生速度を負の値に設定することにより行うのであるが、これは、例えば、ビューア2200のユーザが巻き戻しボタンを押すことにより行うことができる)。この以前の情報を読み込むために、アクセス・エンジン203は、現在のファイルが与えられた場合に、順序付けファイル・スティッチング・リスト5400を使用して、シリーズの中の前のファイルを識別する。その後、ファイル・スティッチング・ユニット5200は、完了後ファイル名が変更されたかもしれない可能性を考慮して、識別された前のファイルを探索する。その後、ファイル・スティッチング・ユニット5200は、シーケンス内の前のファイル、または前のファイルが見つからない場合には、no−file値を返す。
アクセス・エンジン203は、同様にして未来のサンプル・データに対する要求も処理する。例えば、ビューア2200は、1時間後に開始し、翌朝まで続くビデオ・サンプル・データを要求することができる。明らかに、要求されたデータの最初の時間のみが、データ・ファイル209の集合内で使用可能である。しかし、アクセス・エンジン203がビデオ・サンプル・データの使用可能な時間分を実時間でストリーミングするときまで使用可能なビデオ・サンプル・データの他の時間分があるが、ただし、記録エンジン201がその期間内に記録していた場合である。ビデオ・ファイル・リーダー5205は、その後、現在順序付けスティッチング・リスト5400内にある、次のファイルの名前についてビデオ・ファイル・スティッチング・ユニット5200に問い合わせし、それから、ビューア2200へのストリーミングを続けることができる。再生速度が通常送りの実時間よりも速い場合(例えば、ビューア2200のユーザが早送りボタンを押した場合)、その要求では、最終的に、「ライブ」に追いつき、アクセス・エンジン203は、その要求を完了する(つまり、「end stream」ブロブを送信する)。
したがって、ビューア2200が、データ・ファイル209内に現在入っていない一定範囲のビデオ・サンプル・データを要求することが可能である。
4.3.1 ビデオ・ファイル・ストリーミング
図57は、ビデオ要求処理ステップ5615をさらに詳しく示している。ビデオ要求処理ステップ5615は、ハード・ディスク・ドライブ2310上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図23に示されているように、実行はプロセッサ2305により制御される。
ステップ5700では、ビデオ・ファイル・リーダー5205は、現在の要求を満たすために必要な範囲のファイルを決定するために順序付けビデオ・スティッチング・リスト5400にクエリを実行する。
次に、ステップ5705で、ビデオ・ファイル・リーダー5205は、ステップ5700で識別されたファイルの集合内の第1のファイルを開く。その後、ステップ5710で、ビデオ・ファイル・リーダー5205は、要求された期間の先頭を見つけるために開かれているファイルを探索する。これは、ファイルの開始時刻よりもむしろ正しい時刻にビデオ・ストリーミングを開始するために実行される。リーダー5205は、関連付けられたインデックス・ファイル1805を使用して、メディア・ファイル1800内の必要なオフセットを見つける。
次に、ステップ5715で、アクセス・エンジンは、ビデオ・サンプルを開かれているメディア.ファイル1800からビューア2200にストリーミングする。ステップ5720では、要求が満たされる前にファイルの終わり(EOF)に到達するかどうかをチェックする。ファイルの終わりが見つからず、要求が満たされていた場合(つまり、ステップ5720のNoオプション)、ステップ5730で、アクセス・エンジン203は、「end stream」通知をビューア2200に送信する。
しかし、ファイルの終わりに到達し、要求がまだ満たされていない場合(つまり、ステップ5720のYesオプション)、制御の流れはステップ5725に進み、そこで、ビデオ・ファイル・リーダー5205が順序付けされたスティッチング・リスト5400により決定されたとおりに次のファイルを開く。
ファイルは、ファイルが開かれていない場合に任意の時点においてリネームできる。その結果、ビデオ・ファイル・リーダー5205は、ファイルが順序付けファイル・リスト5400の要求とファイルのオープンとの間にファイルが完了した場合、完了したファイル名ではなくビデオ・サンプル・データの一セクションのアクティブ・ファイル名を開こうとする。この問題に対処するために、ビデオ・ファイル・リーダー5205は、ファイル・スティッチング・ユニット5200に、そのファイル名が変更されたか、または新しいファイル名はどのようなものかを問い合わせる。
次のファイルが開かれると、制御の流れはステップ5715に戻り、そこで、ビデオ・サンプル・データがWebサーバ213を介して開いているメディア・ファイル1800からビューア2200にストリーミングされる。
上記のプロセスは、要求が満たされるまで繰り返される。
4.3.2 イベント・ファイル・ストリーミング
図58は、イベント要求処理ステップ5610をさらに詳しく示している。イベント要求処理ステップ5610は、ハード・ディスク・ドライブ2310上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図23に示されているように、実行はプロセッサ2305により制御される。
ステップ5800で、イベント・ファイル・リーダー5215は、イベント・ファイル・スティッチング・ユニット5210により確定された順序付きイベント・ファイル・リストにクエリを実行する。このクエリにより、現在処理されている要求を満たすために必要なイベント・ファイルの集合が確立される。
次に、ステップ5805で、イベント・ファイル・リーダー5215は、ステップ5800で識別された集合内の第1のファイルを開く。次に、ステップ5810で、リーダー5215は、イベント・インデックスを使用して要求の先頭まで開いているファイルを探索する。イベント・インデックスの粒度のため(つまり、ファイル内のすべてのレコードへの直接インデックス・エントリがない)、ステップ5810で識別された開かれているイベント・ファイル内の位置は、要求された時間範囲の前にある可能性があり、そのため、アクセス・エンジン203は要求された時間範囲の開始を見つけるためイベント・レコードを1ステップずつ辿り続ける必要がある。
その後、ステップ5815で、イベント・ファイル・リーダー5215は、開いているイベント・ファイルから1行を読み込む。ステップ5820では、読み込まれた行がファイルの終わりかどうかをチェックする。これがその場合でなければ(ステップ5820のNoオプション)、ステップ5825で、リーダー5215は、その行を解析して、イベント時刻およびサンプル・データを取得する。次に、ステップ5865で、リーダー5215は、イベントの時刻が要求された範囲の開始よりも前かどうかをチェックする。時刻が早すぎる場合(つまり、ステップ5865のYesオプション)、リーダーはその行をスキップし(ステップ5870)、プロセスの流れはステップ5815に戻り、そこで、次の行が開いているイベント・ファイルから読み込まれる。
イベントの時刻が要求範囲の開始よりも後であれば(つまり、ステップ5865のNoオプション)、ステップ5875で、リーダー5215は、その時刻が要求された範囲の終わりよりも後かどうかをチェックする。そうであれば(つまり、ステップ5875のYesオプション)、ステップ5845で、ストリーミング・インターフェース5220は、「end stream」指示をビューア2200に送信する。
イベント時刻が要求された時間範囲内にある場合(つまり、ステップ5875のNoオプション)、ステップ5880で、ストリーミング・インターフェース5220は、イベントをビューア2200に送信する。イベントが送信された後、プロセスの流れはステップ5815に戻り、そこで、次の行がイベント・ファイルから読み込まれる。
ファイルの終わりが見つかった場合(ステップ5820のYesオプション)、ステップ5830で、イベント・ファイル・リーダー5215は、使用可能な次のイベント・ファイルがあるかどうかをチェックする。もしそうであれば(つまり、ステップ5830のYesオプション)、ステップ5835でリーダー5215は次のファイルを開き、プロセスの流れはステップ5815に戻り、そこで、1行が新しく開かれたファイルから読み込まれる。
ファイルの終わりが見つかったが、使用可能な次のファイルがない場合(つまり、ステップ5830のNoオプション)、ステップ5840で、アクセス・エンジン203は、現在の要求が「Live」要求かどうかを決定する(つまり、その要求で、開始時刻を指定するが、終了時刻は、指定していない)。要求がLive要求でない場合(つまり、ステップ5840のNoオプション)、ステップ5845で、ストリーミング・インターフェース5220は、「end of stream」指示をビューア2200に送信する。
要求がLive要求である場合(つまり、ステップ5840のYesオプション)、ステップ5850で、アクセス・エンジン203は、タスクを適切なカメラ・レコードに追加する。次に、ステップ5855で、アクセス・エンジン203は、それぞれのカメラに関連付けられた最終のイベント・ファイルを監視する。アクセス・エンジン203は、最後のイベント・ファイルがそれぞれのカメラ112〜115に対する唯一のアクティブ・イベント・ファイルであると想定する。アクセス・エンジン203は、現在のファイル・サイズをすでに知られているファイル・サイズと比較することにより、または使用されているオペレーティング・システムに特有の他の方法により、ファイルに対する変更を認識する。
新しいイベント・レコードがイベント・ファイルに追加されると、新しいイベントは、その特定のカメラ112〜115についてLiveイベント要求を持つビューア2200に送信される(ステップ5860)。
記録エンジン201によるイベント・レコードのイベント・ファイルへの書き込みは、アトミックであることを保証されない、つまり、オペレーティング・システムのキャッシュ機能および入出力優先度のせいで、イベントの半分がファイルに書き込まれ、それから残り半分が後から送信される場合がある。したがって、アクセス・エンジン203は、1つまたは複数の完了イベントがイベント・ファイルに追加された場合にのみ、Liveイベントを傾聴ビューア2200に送信する。
4.4 相互非関連ビデオのストリーミング
データ・ファイル209として格納されているビデオ・データは、ギャップを含む場合がある。これらのギャップは、記録がまったく行われていない期間から生じうる。さらに、ビデオ記録が運動検出または所定のイベントによりトリガされた場合、ビデオ記録がトリガされていない期間からの記録済みデータ内に中断がありうる。
相互非関連ビデオ・サンプル・データをビューア2200にストリーミングする場合、ストリームが間断なく継続できるようにビューア2200にビデオ・サンプル・データが存在していないことを知らせるという問題が生じる。
格納されたビデオ・サンプル・データ内にギャップがある場合、アクセス・エンジン203は、フレーム・マーカーを送信して、格納されているビデオ・サンプル・データ内にギャップがあることを示す。4.5.1節でさらに詳しく説明されているように、フレーム・マーカーは、「no video」ブロブの形式をとる。「no video」ブロブは、2つの時間情報断片を含む。第1の情報断片は、サンプル・データ・ストリーム内現在時刻であり、第2の情報断片は、送信される次のサンプル・データの時刻である(送信すべき次のサンプルがある場合)。
ネットワーク・オーバーヘッドを低減するため、「No video」ブロブは、それらが置き換えるビデオよりも遅い速度で送信される。「no video」ブロブを送信する決定は、所定のシステム規模の定数に基づくか(例えば、「no video」ブロブは、次の5秒間にビデオ・サンプル・データがない場合に送信できる)、またはビデオ・ストリームの属性から値を計算することに基づくことが可能なしきい値に基づく。例えば、このしきい値は、ビデオ・ストリームの現在のフレーム速度に基づいて計算することが可能である(例えば、「no video」ブロブは、ビデオの現在のセグメントのフレーム速度が毎秒15フレームであり、次の30フレーム(つまり、サンプル)について送信されるビデオ・サンプル・データがない場合に送信することができる)。使用されるしきい値は、「no−video」しきい値と呼ばれ、送信速度は、「no−video」再送速度と呼ばれる。
「no video」ブロブが送信される速度も、同様にして指定することができる。固定値を設定するか(例えば、「no−video」ブロブは、毎秒2回の速度で送信することができ)、または送信速度を生成することができる(例えば、「no−video」ブロブは、ビデオ・ストリームのフレーム速度の1/4で送信することができる)。
図59Aは、メディア・ファイル1800からビューア2200にサンプル・データをストリーミングするステップ5715をさらに詳しく示している。ステップ5715は、ハード・ディスク・ドライブ2310上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図23に示されているように、実行はプロセッサ2305により制御される。サンプル・データ・ストリームは、ステップ5900で開始する。ビューア2200とアクセス・エンジン203との間の接続を確立する手順については、4.5.2節でさらに詳しく説明される。
次に、ステップ5905で、アクセス・エンジン203は、サンプル・データ・ストリームが開始したときに現在のクロック時刻tsを格納する。さらに、アクセス・エンジン203は、要求された範囲のビデオの開始時刻trを格納する。
ステップ5910で、現在のストリームに関してディレクトリ209内の開いているファイルから読み込まれるそれぞれのサンプルを順に考察するループが開始する。ループ5910の第1のステップである、ステップ5915は、現在のクロック時刻を取得する。次のステップ5920で、現在時刻とストリームの開始時刻tsとの差を計算する。
次に、ステップ5925で、アクセス・エンジン203は、現在のサンプルの時刻(つまり、タイムスタンプ)とストリーム内の第1のサンプルの時刻trとの差を計算する。したがって、ステップ5920では、実時間の受け渡しを計算するが、ステップ5925では、サンプル時刻で経過した時間、つまり、メディア・ファイル1800内に格納されているサンプルの間の時刻を計算する。
次に、ステップ5930で、アクセス・エンジン203は、ステップ5920と5925でそれぞれ計算されるように、サンプル時間よりも実時間のほうが経過しているかをチェックする。サンプル時間よりも実時間のほうが経過していた場合(つまり、ステップ5930のYesオプション)、ステップ5940で、ストリーミング・インターフェース5220が現在のサンプルを送信する。その後、プロセスの流れは、ループ5910の先頭に戻り、開いているメディア・ファイル1800からの次のサンプルを調べる。
しかし、実時間よりもサンプル時間のほうが経過している場合(つまり、ステップ5930のNoオプション)、現在のサンプルはまだ送信されていない(つまり、概念ステップ5935)。現在のサンプルはまだ送信されていないので、ステップ5945で、アクセス・エンジン203は、「no−video」ブロブを送信する必要があるかどうかを決定する。この決定を下す手順については、図59Bを参照しつつ以下で説明する。
ステップ5945が実行された後、制御の流れはステップ5915に戻る。
図59Bは、「no−video」ブロブが送信されるべきかどうかを決定するためにステップ5945で実行されるサブステップを示している。ステップ5945は、ハード・ディスク・ドライブ2310上に常駐するソフトウェア・アプリケーションとして実装するのが好ましく、図23に示されているように、実行はプロセッサ2305により制御される。
ステップ5950で、アクセス・エンジン203は、現在のクロック時刻を取得する。次に、ステップ5955で、アクセス・エンジン203は、メディア・ファイル1800内の次のサンプルの時刻を取得する。ステップ5960で、次のサンプルまでの時間が「no−video」しきい値(上述のようにプリセット値または計算値)よりも大きいかどうかを決定する。そうである場合(つまり、ステップ5960のYesオプション)、ステップ5965で、さらにチェックを行い、最後の「no−video」ブロブが送信された以降の時間が指定された「no−video」再送時間よりも大きいかどうかを調べる。
最後の「no video」ブロブ以降の経過時間が「no−video」再送時間よりも大きい場合(つまり、ステップ5965のYesオプション)、ステップ5970で、アクセス・エンジン203は、「no−video」ブロブを送信する。
サンプルが指定された時間内に使用可能であるか(つまり、ステップ5960のNoオプション)、または「no−video」ブロブが十分最近に送信されている場合(つまり、ステップ5965のNoオプション)、制御の流れは、ステップ5915に直接進み、現在のサンプルを送信する時間かどうかを決定する。
「no−video」ブロブがステップ5970で送信された後、制御の流れは、ステップ5915に進む。
4.5 ストリーミング・アクセスのための接続
アクセス・エンジン203は、HTTP(ハイパーテキスト・トランスポート・プロトコル)の上に層をなすプロトコル(アクセス・エンジン・プロトコルと呼ばれる)を使用して、データ・ファイル209内に格納されたビデオおよびイベント・データにアクセスできるようにする。このようなプロトコルを使用することにより、アクセス・エンジン203およびビューア2200がHTTPプロキシの反対側にある場合にデータにアクセスすることができる。このプロトコルを使用すると、通常、非HTTPトラフィックを使用できるようにファイヤウォールを再構成しなくても、ファイヤウォールを通じてストレージ・サーバ2300上でビューア2200からアクセス・エンジン203にアクセスすることができる。このプロトコルは、(1999年6月にインターネット・エンジニアリング・タスク・フォース(IETF)により公開されているような)HTTP 1.1規格に完全準拠している。アクセス・エンジン・プロトコルの目標は、ビデオおよびイベント・データを要求する待ち時間をできる限り短縮することであり、また時間に厳しいデータ(ビデオなど)に、時間にあまり厳しくないデータと異なる優先度を与えられるようにすることである。
図60は、アクセス・エンジン203のHTTPストリーミング・インターフェース5220とビューア2200との接続を示している。これらの接続は、Webサーバ213を通じて行われる。しかし、Webサーバ213は、図60には示されていない。ビューア2200は、さらに、クライアントと呼ぶこともできる。
アクセス・エンジン203にアクセスするために、ビューア2200は2つのHTTP接続を行う。1つは、制御接続6005であり、他は、データ接続6015である。制御接続6005は、ビューア2200から送信されたデータ6006aの要求をアクセス・エンジン203に送信し、ビューア2200に対し短い応答6006bで応答する。応答6006bは、速度上の理由から短く保持される。
データ接続6015では、ビューア2200からアクセス・エンジン203に単一の初期要求6020aを送信し、その後、ビューア2200により行われる要求に対応するデータ・ファイル209からのデータを含む連続ストリーム6020bをサポートする。
制御接続6005が行われ、その後、ビューア2200が接続をセットアップするために必要な情報を含むHTTP GET要求を制御接続6005で送信する。ファイル・ストリーミング・インターフェース5220は、制御接続6005およびデータ接続6015の両方に対する識別子番号を含む識別情報を含む応答6006bを送信する。これらの識別子は、アクセス・エンジン203のレルム内の接続を一意に識別し、またHTTPがステートレス・プロトコルであるので必要である。必要な機能を備えるために、通信の現在状態に関する情報がアクセス・エンジン・プロトコル内に実装される(つまり、プロトコルは、同じセッションの一部であるすべてのメッセージに含まれるセッション識別子を含む)。
次に、ビューア2200は、セットアップコマンドから返された情報で第2の接続6015を行う。通常のHTTPトランザクションとは異なり、応答が終了した後、ビューア2200のデータ接続6015は終了しない。その代わりに、データ接続6015は、制御接続6005を介して要求されたデータを送信するために使用され、実際のデータが送信されていない場合に定期的な「keep alive」ブロブにより開いたままにされる。データ接続6015を開いたままにする利点は、ビューア2200が新しいビデオ・データを要求する、または既存のビデオ要求を修正する必要があるたび毎にビューア2200側で新しい接続を行う必要がないという点である。
一実装では、制御接続6005およびデータ接続6015は両方とも、複数の要求にまたがって永続的である。このような実装では、データ接続6015も制御接続6010も、ビューア2200とアクセス・エンジン203との間のセッションの存続期間中に閉じなくてよい。システム100は、制御接続6005が閉じられるのに耐えられるが、データ接続6015は、セッションが持続する時間中接続されたままである必要があるか、またはアクセス・エンジン203側で、セッションの終了を考慮し、接続6015に関連付けられているリソースを解放する。接続が、オペレーティング・システムまたは介在するプロキシ・サーバにより早い時期に閉じられないようにするために、制御接続6005およびデータ接続6015の両方が、定期的に送信される「keep alive」メッセージを持つ。ビューア2200は、制御接続を開いておくために定期的「keep alive」要求を出すことが予想される。HTTPストリーミング・モジュール5220も、データ接続を開いておくために「keep alive」要求を送信する。
図61は、Webサーバ213を含む特定の構成を示している。図61に示されている実装では、Apache Webサーバ6110および通信ライブラリ6105(FastCGI(登録商標))を使用する。図61の配列では、HTTP通信の詳細を専用アプリケーション・ソフトウェアにより処理することができ、これにより、アクセス・エンジン203側でHTTPサーバを実装しなくてすむ。他の実装では、Webサーバは、アクセス・エンジン203内に実装される。異なるWebサーバおよび通信ライブラリを使用する他の実装も可能である。すべての場合において、インターフェースおよびプロトコルは実質的に同じままである。
ビューア2200にとっては、アクセス・エンジン203により提示されるインターフェースは従来の共通ゲートウェイ・インターフェース・ページに似て見える。それぞれのコマンドは、サーバ2300上の「リソース」を要求し、IETFにより公開されているRFC1738(Uniform Resource Locators)で説明されている構文を使用して要求に対するパラメータを指定する(Uniform Resource Locatorのクエリ部を使用して)。コマンドの形式は、付録Bで説明する。その要求について要求されるファイルは、すべての要件について同じである。パラメータは、アクセス・エンジン203で実行すべきコマンドを決定するために使用される。本発明の説明では、「アクセス・エンジン203に接続する」というフレーズは、「Webサーバ213に接続し、アクセス・エンジンに「リソース」を要求する」ということを意味する(つまり、要求は、アクセス・エンジンを指定するパスを含む)。さらに、「Xコマンド」の参照は、コマンド・パラメータがXに設定されているアクセス・エンジン・リソースを要求することを示す。
4.5.1 データ接続の形式
ブロブは、ブロブ・ヘッダとオプションによりブロブ・データの一部分とからなる。ブロブが接続を介して送信される場合、それらは、次々に送信される。
図63は、データ接続6015上で送信されるいくつかのデータの形式の一実施例を示している。図63の実施例では、ブロブ・ヘッダ6305の後に、関連付けられたブロブ・データ6310が続き、順に、関連付けられたブロブ・データを持たないブロブ・ヘッダ6315、ブロブ・ヘッダ6320および関連付けられたブロブ・データ6325と続く。
ブロブ・ヘッダ(例えば、6305、6315、および6320)は、それぞれ、ストリーム識別子、ブロブ・データ長さ値、およびブロブ型値からなる。ブロブ・データ・セクション(例えば、6310、6325)は、ブロブの型に依存するそれ専用の形式を持つが、それについて以下で説明する。ブロブ・データ長の値が0の場合、ブロブ・データはない。
それぞれのブロブは、データのさらに大きなストリームの一部である場合がある(ビデオ・データ・サンプル・ストリームなど)。ストリーム識別子は、そのブロブが一部であるストリームを識別する識別子であり、これにより、ビューア2200により、ブロブを別々のストリームに逆多重化することができる。それぞれのストリーム内のブロブは順番に送信され(例えば、ストリームがビデオ・ストリームの場合には、フレームが順に送られる)、ストリームは、もしあればデータの他のストリームと多重化することができる。ビューア2200は、要求されたすべてのストリームを追跡する。ビューア2200は、ビューア2200側で理解できない型のブロブを受け取ると、そのブロブを無視する。
4.5.1.1 ブロブの型
付録Aには、ブロブの使用可能な型のリストをまとめた。
画像ブロブ(またはビデオ・ブロブ)は、単一のJPEG画像およびその画像に関連する時刻(通常は、画像取得時刻)を指定するデータを含む。
イベント・ブロブは、改行文字でそれぞれ区切られた多数のイベントを含む。イベント・ブロブ構造は、ブロブに含まれるイベントの個数を定義する。
開始ブロブは、データ接続6015を介して送信される第1のブロブである。開始ブロブは、データ・ストリームの接続IDを含む。ブロブのストリームIDは、0に設定される。
「keep alive」ブロブは、タイムアウトにより介在するプロキシ・サーバがデータ接続6015を閉じるのを防ぐために一定の不活動期間の後にビューア2200に送信される。接続に、ストリーミング・ビデオなどの他の活動がある場合、「keep alive」ブロブは送信されない。ビューア2200は、タイミング情報に対する「keep alive」ブロブに依存すべきでない。「Keep alive」ブロブには付加データはない。
「End stream」ブロブは、ストリームが終了したときに送信され、アクセス・エンジン203がストリームを終了しつつあることを示す。ビューア2200は、もはや、ストリームからブロブを受信しない。ストリームを修正する(付録Bで説明されているようにビデオ・ストリーム修正コマンドを使用して)他のすべての要求は、「end stream」ブロブが送信された後、失敗する。
「close stream」ブロブは、データ接続上の最後のブロブとして送信される。ビューア2200は、ビューア2200がストリームを閉じるブロブを受信すると、接続をきれいに閉じることができる。ストリームを閉じるブロブには付加データはない。
図59を参照しつつ説明されているように、「no−video」ブロブは、まだストリーミングされるビデオ・サンプル・データが格納されているが、ストリーム内で現在の時刻に使用可能な現在ビデオ・サンプル・データがない場合にビューア2200に送信される。
応答ブロブは、制御接続6005上で送信されるコマンドからの応答を含む。
4.5.2 アクセス・エンジンとビューアとの間の接続の確立
図62は、ビューア2200とアクセス・エンジン203との間の接続を確立する手順のまとめである。
初期ステップ6200で、ビューア2200は、Webサーバ213に接続し、セットアップ・コマンドを発行する。このコマンドは、アクセス・エンジン203に渡される。ステップ6205で、アクセス・エンジン203は、制御接続6005の接続識別子を返し、ステップ6210で、アクセス・エンジン203は、データ接続6015の接続識別子を送信する。アクセス・エンジン203により送信される識別子は、システム100において一意であり、これらを使用してアクセス・エンジン203により、システム100内の多数の潜在的ビューア、例えば、ビューア2200A〜Dから受信されたコマンドのソースを識別する。
制御接続6005が確立されると、ビューア2200は、データ接続を確立する単一の要求を発行する(ステップ6215)。データの要求は、データ接続6015で行われる唯一の要求である。単一要求は、ビューア2200がシャットダウン・コマンドを発行するまで終了しない(ステップ6235)。データ接続6015が、ビューア2200によりシャットダウン要求が発行されたとき以外のときに閉じられた場合、アクセス・エンジン203は、データ接続6015はすでに終了しており、すべての関連付けられたリソースを解放する。これは、制御接続6005およびデータ接続6015に発行された識別子がクリアされることを意味する。したがって、ビューア2200は、アクセス・エンジン203にサンプル.データを要求し続けることをビューア2200側で望んでいる場合にセットアップ要求を再発行する必要がある。前の識別子を再接続し、再利用することを試みると、アクセス・エンジン203からエラーを発生する。
データ接続6015が確立された後、ステップ6220で、ビューア2200は、アクセス・エンジン203にビデオ・サンプル・データおよびイベント・レコードを要求することを開始できる。そのような要求は、制御接続6005を介して送信される。制御接続6005を介したそれぞれの要求は、コマンド識別子およびセットアップ要求により返されたデータ接続識別子を含む。
ステップ6225で、アクセス・エンジン203は、要求されたデータをデータ接続6015を介してビューア2200に送信する。ステップ6230で、データ送信エラーが発生したかどうかをチェックする。エラーが発生した場合(つまり、ステップ6230のYesオプション)、ステップ6240で、アクセス・エンジンは、接続6005、6015を閉じる。データ送信エラーがない場合(ステップ6230のNoオプション)、アクセス・エンジン203は、ビューア2200にデータを送信し続ける。
4.6 他の情報
アクセス・エンジン203が記録エンジン201とは別のソフトウェア・アプリケーションである利点の1つは、システムが記録機能のみを実行する場合に、記録エンジン201のみが実行する必要があり、またこれにより、ストレージ・サーバ2300上の記録のパフォーマンスが向上しうる。逆に、システムがアクセス機能のみを実行する必要がある場合(例えば、システムがアーカイブされたビデオのみを表示できるようにセットアップされている場合)、アクセス・エンジン203だけを実行すればよく、このため、アクセス・パフォーマンスが向上しうる。一実装では、アクセス・エンジン203は、記録エンジン201とは異なるストレージ・サーバ2300上で実行される。このような配列では、記録エンジン201が一連のビデオおよびイベント・データ・ファイル209を閉じた後(つまり、スワップオーバーの後)、ソフトウェア・アプリケーションは、ネットワーク2220を介して、第1のストレージ・サーバ2300Aから第2のストレージ・サーバ2300Bにビデオおよびイベント・データ・ファイルを移動する。この配列では、アクセス・エンジン203は、第2のストレージ・サーバ2300B上で実行され、これにより、ビデオおよびイベント・データがビューア2200から使用できるようになる。さらに他の代替え配列では、アクセス・エンジン203は、未完了の(つまり、アクティブ)ファイルからデータを提供する第1のストレージ・サーバ2003A上で実行している可能性があり、他のアクセス・エンジン203は、上述のようにネットワーク2220を介してコピーされた完了したファイルからデータを提供する第2のストレージ・サーバ2003B上で実行している可能性がある。
5.0 ビューア
5.1 ビューアの概要
ビューア2200は、ハード・ディスク・ドライブ2205上に常駐するビューア・アプリケーション・ソフトウェアを含み、またプロセッサ2205によりその実行に際して制御される。ビューア・アプリケーション・ソフトウェアは、通常、Windows(登録商標)オペレーティング・システムの下で実行される。ビューア・アプリケーション・ソフトウェアは、カメラ112〜115により取り込まれ、カメラ・サーバ109〜111によりネットワーク経由で提供されるライブおよび記録済みサンプル・データ(つまり、ビデオ画像およびイベントを表す)の両方へのローカルまたはリモートでのアクセスを、コンピュータ・ネットワーク2220上で可能にする。
ビューア2200およびそこに常駐し実行されるビューア・アプリケーション・ソフトウェアは、これ以降、特に断りのない限り、ビューア2200と総称される。
ビューア2200は、以下の機能を実行するために使用できる。
(i)カメラ112〜115、カメラ・サーバ109〜111、およびストレージ・サーバ2300の登録およびスケジュールの設定を含むローカルまたはリモート・ストレージ・サーバ2300の構成。この文脈で、ローカル・ストレージ・サーバは、ビューア2200およびストレージ・サーバ2300が同じコンピュータ・モジュール(例えば、コンピュータ・モジュール2301)上に実装される実装を指す。対照的に、リモート・ストレージ・サーバ2300は、図1に示されているように、ストレージ・サーバ2300から離れた場所にある、コンピュータ・モジュール2201などのコンピュータ・モジュール上でビューア2200が実行される実装を指す。
(ii)ビューア2200機能のプリファレンスの構成。
(iii)コンピュータ・ネットワーク2220を介した、リモート・カメラ・サーバ109〜111からのライブ・ビデオ・サンプル・データ・ストリームのビューイング、およびカメラ・サーバ109〜111に関連付けられているカメラ112〜115のパン、傾斜、ズーム、およびバックライト調整を含むそれらのカメラ・サーバ109〜111の制御。
(iv)ローカルまたはリモート・ストレージ・サーバ2300からの記録済みビデオ・サンプル・データ・ストリームのビューイング。
(v)ローカルまたはリモート・ストレージ・サーバ2300からのイベントのビューイング。
(vi)ローカルまたはリモート・ストレージ・サーバ2300からのイベントの検索。
(vii)1つまたは複数のカメラ112〜115に関連付けられた既存のスケジュールをオーバーライドするための記録の開始。
以下の説明では、多数の画面(例えば、図64および65)が示され、説明されている。画面(例えば、6400)のうちの1つまたは複数が、ビューア・アプリケーション・ソフトウェアによりユーザに対しビューア2200のディスプレイ2214上に表示され、これは、システム100上で様々な機能を実行するためのグラフィカル・ユーザ・インターフェースをユーザに提供する。多数のダイアログ・ウィンドウまたはダイアログは、さらに、いくつかのユーザ・アクションに対する応答としてビューア・アプリケーション・ソフトウェアによりディスプレイ2214上にも表示される、メニュー・アイテムとともに記述される。さらに、応答を開始するためにユーザが選択できる多数のボタンが記述される。このような画面、ボタン、ダイアログ、およびメニュー・アイテムは、通常、Windows(登録商標)オペレーティング・システムの下で実行される他のそのような画面、ダイアログ、およびメニュー・アイテムと従来の類似の方法でユーザがマウス2203または他の類似のデバイス(例えば、トラックボール、ジョイスティック、キーボード2202上の矢印など)を使用することにより選択できる。しかし、当業者であれば、他の適当なオペレーティング・システムを使用して、システム100のユーザに後述の機能を備えるグラフィカル・ユーザ・インターフェースを実現することができることも理解するであろう。
ビューア2200は、HTTP上で動作するカスタム・プロトコルを介してストレージ・サーバ2300に接続する。ビューア2200は、HTTP上で動作する異なるカスタム・プロトコルを使用してカメラ・サーバ109〜111に接続する。HTTP上で操作することにより、システム100は、ファイヤウォールまたはゲートウェイをさらに構成しなくてもネットワーク・ゲートウェイ機能を実行するふつうに構成されたファイヤウォールまたは他の形態の機器とともに使用することができる。ファイヤウォールおよび類似のゲートウェイは、通常、他の何らかのプロトコルを禁止する一方で、HTTPトラフィックを通すように構成される。監視システム100がHTTPに従ってコンピュータ・ネットワーク2220上ですべてのトラフィックの送信および受信を行うことにより、複雑なネットワーク・システム構成を行うことなくシステム100をインストールすることができる。
インストール時に、管理者(つまり、管理者権限を持つユーザ)は、ストレージ・サーバ2300と同じコンピュータ・モジュール(例えば、コンピュータ・モジュール2301)または異なるコンピュータ・モジュール(例えば、コンピュータ・モジュール2201)上でビューア2200を実装する(つまり、ビューア・アプリケーション・ソフトウェアをインストールする)ことを選択できる。ストレージ・サーバ2300上にインストールされるビューア2200は、同じコンピュータ・モジュール上に実装されたストレージ・サーバ2300にアクセスし、さらに他のストレージ・サーバ(例えば、2300A、2300B、2300C、2300D)にもアクセスすることができる。他のビューア(例えば、2200A、2200B、2200C、2200D)も、ビューア2200と同じコンピュータ・モジュール(例えば、コンピュータ・モジュール2201)上に実装されたストレージ・サーバ2300にアクセスすることができる。
システム100は、カメラ・サーバ109〜111およびセンサ(図に示されていない)をLocationsおよびZonesという名前の階層に編成し、これにより、ユーザは多数のビデオ・ファイルおよびイベント・ファイルを効率よく探索できる。カメラ・セレクタはビューア2200により、すべてのカメラ・サーバ109〜111のソートされたメニューとともにディスプレイ・デバイス2214上に表示されるユーザに提示することができる。
ディスプレイ・デバイス2214上に提示されるビューイング・ウィンドウ7600(図76を参照)では、ビューポートを、ビューポートの実行中に、追加、削除、再配置、およびサイズ変更できる。ディスプレイ2214上に表示される異なるビデオ・ウィンドウ(例えば、図76の7625)は、ライブ・ビデオ・サンプル・データ・ストリームと、ハード・ディスク・ドライブ2210またはストレージ・サーバ2300のハード・ディスク・ドライブ2310上に格納されているビデオ・ファイルからの記録の再生の組合せを含むことができる。有用なビューイング組合せを含むビデオ・ウィンドウ・レイアウトは、後から再利用されるように、ハード・ディスク・ドライブ2210上に保存することができる。
以下で詳しく説明されるように、ビューア2200によりディスプレイ・デバイス2214上に提示されるイベント・ビュー内で、対話式時刻表7607(図76を参照)は、定義済みの時間範囲内に発生したイベントのフィルタ処理可能なビューを提示する。ユーザは、時刻表7607からイベント(例えば、8919)を選択することができ、そのイベントの周りのビデオ・サンプル・データのセグメントを自動的に再生できる。
5.2 ビューアの起動およびログイン
ビューア2200が起動されると、ダイアログ・ウィンドウがディスプレイ・デバイス2214上に表示される。ダイアログ・ウィンドウは、通常、ビューア・アプリケーション・ソフトウェアに関する情報および「cancel」ボタンを含む。ダイアログが表示されている間、ビューア2200は、マスタ・ストレージ・サーバ(MSS)(例えば、ストレージ・サーバ2300A、2300B、2300C、または2300Dのいずれか1つ)に接続を試みる。マスタ・ストレージ・サーバは、本明細書では、マスタ・ストレージ・サーバ2300Aと呼ばれる。マスタ・ストレージ・サーバ2300Aは、ビューア2200がシステム100の様々な設定を取り出す、取り出し元のストレージ・サーバである(カメラ112〜115、カメラ・サーバ109〜111、Zones、Locations、およびビデオ・ウィンドウ・レイアウト情報など)。これらの設定は、ネットワーク・ビデオ・レコーダ構成データと呼ばれる。
ビューア2200が最初に実行されたときに、ビューア2200は、実行されているビューア2200と同じコンピュータ・モジュール2201上でホスト「localhost」に接続を自動的に試みる。「localhost」は、ビューア・アプリケーション・ソフトウェアが実行されているのと同じコンピュータ・モジュール(例えば、2201)に解決するホスト名を指すために通常使用される名前である。
「cancel」ボタンをクリックすると、ダイアログ・ウィンドウが閉じて、「connect to master storage server dialog」ウィンドウを起動する。「connect to master storage server dialog」ウィンドウを使用することで、ユーザは、マスタ・ストレージ・サーバ2300Aにアクセスするために使用されるホスト名またはIPアドレスを変更し、マスタ・ストレージ・サーバ2300Aにアクセスするために使用されるポート番号を変更することができる。「connect to master storage server dialog」ウィンドウは、さらに、「connect button」および「cancel button」も含む。ユーザが「connect button」を選択した場合、ビューア2200は、指定されたポート番号を使用して指定されたマスタ・ストレージ・サーバ2300Aに接続を試みる。
「connect to master storage server dialog」ウィンドウ上の「cancel」をクリックすると、ダイアログ・ウィンドウが閉じて、ビューア2200は終了する。
ビューア2200によるマスタ・ストレージ・サーバ2300Aへの接続の試みは、上述のように、ビューアがNVR_UserGetコマンドをマスタ・ストレージ・サーバ2200Aに送信して、ネットワーク・ビデオ・レコーダ構成データを取得することを伴う。ネットワーク・ビデオ・レコーダ構成データは、通常、「config.cui.SS」という名前のファイルとしてマスタ・ストレージ・サーバ2200A上に格納され、知られているストレージ・サーバ2300およびカメラ・サーバ109〜111の集合を含み、後述のように、それらの知られているストレージ・サーバ2300上のカメラ・サーバ109〜111をZonesおよびLocationsの集合に関係付ける。
ネットワーク・ビデオ・レコーダ構成データの構造は、以下のとおりである。
− ファイル形式のバージョン
− それぞれのエントリは、名前、そのLocation内のZonesのリストを含み、それぞれのZoneエントリは、それぞれそのカメラに関連付けられているデータを含むカメラ識別子のリストを含む、Locationsのリスト。
− それぞれのストレージ・サーバ・エントリは、そのストレージ・サーバに関連付けられたデータ、そのストレージ・サーバに関連付けられたカメラ・サーバのリストを含み、それぞれのカメラ・サーバ・エントリは、そのカメラ・サーバに関連付けられたカメラのリストを含む、ストレージ・サーバのリスト。
− それぞれのエントリは、カメラ・サーバに関連付けられたカメラのリストを含む、ストレージ・サーバに関連付けられていないカメラ・サーバのリスト。
構成ファイルの実施例を以下に示す。
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... (16進数データ)
%[Camera Server 2] ...
[Camera Server S]...// ストレージ・サーバに関連付けられていないカメラ・サーバ
NVR_UserGetコマンドは、構成され、上述のようにHTTP Getメソッドを使用して要求としてマスタ・ストレージ・サーバ2300Aに送信される。メッセージを送信するために、ビューア2200は、指定されたポートで指定されたホスト名またはIPアドレスに接続することを試み、以下のリソース(14)についてHTTP GETメッセージを送信する。
/webview-nvr/nvr_userget.fcgi?file=config (14)
マスタ・ストレージ・サーバ2300Aが認証を必要とするように構成されていない場合、マスタ・ストレージ・サーバ2200A上のHTTPサーバは、ネットワーク・ビデオ・レコーダ構成データをビューア2200に返す。この場合、後述の「login dialog」ウィンドウは、ユーザに対し示されず、ビューア2200が、ビューイング画面7600とともに提示されるが、これについては、図76を参照しつつ以下で詳しく説明する。
しかし、通常、マスタ・ストレージ・サーバ2300Aは、マスタ・ストレージ・サーバ2300A上のネットワーク・ビデオ・レコーダ構成データにアクセスするためにHTTP認証が必要になるように構成されている。この場合、ネットワーク・ビデオ・レコーダ構成データを取り出す試みにより、HTTP「Authentication Required」メッセージがマスタ・ストレージ・サーバ2300Aからビューア2200に送信される。このメッセージは、システム100に対し指定されたレルムに対する値を含む(例えば、「COMPANYNAME」)。HTTP Digest Authenticationが使用されている場合、nonce(つまり、ランダム文字列)もメッセージに含まれる。
ビューア2200が最初に「Authentication Required」メッセージを受信すると、「login dialog」ウィンドウがディスプレイ・デバイス2214上でユーザに対し提示される。「login dialog」ウィンドウは、通常、「User name」および「Password」、「login」ボタンおよび「cancel」ボタンのフィールドを含む。ユーザは、通常、ユーザ名およびパスワード詳細を入力し、「login」ボタンを選択する。応答として、ログイン・プロセスがプロセッサ2205により実行される。ユーザが「login dialog」ウィンドウの「cancel」ボタンを選択すると、ビューア2200は終了する。
ビューア2200は、指定されたマスタ・ストレージ・サーバ2300Aに接続できない場合(例えば、指定されたホスト名またはIPアドレスおよびポート番号を持つホストが見つからない場合、またはそのホストがストレージ・サーバ2300として構成されていない場合)、ユーザは、ビューア2200が接続できなかったということを示すメッセージを含むダイアログ(つまり、「failed」ダイアログ)を提示される。「failed」ダイアログは、さらに、「hostname or IP address」およびポート番号の編集可能なフィールドだけでなく「connect」および「cancel」ボタンを含む。「failed」ダイアログは、最初、これらの値がビューア2200について設定され、接続しようとして失敗した試みで使用されていた現在値に設定される。ユーザは、これらの値を修正し、「failed dialog」ウィンドウの「connect」ボタンを選択することにより代替えストレージ・サーバ(例えば、2300A、2300B、2300C、または2300D)に接続することを試みることができる。それとは別に、ユーザは、ビューア2200に終了させる「failed dialog」ウィンドウの「cancel」ボタンを選択することができる。
ユーザが「login dialog」ウィンドウの「login」ボタンを選択すると、前のHTTPメッセージを修正してネットワーク・ビデオ・レコーダ構成データを取り出すために、すでに入力されているユーザ名およびパスワードが使用される。ストレージ・サーバ2300上のWebサーバ213がHTTP基本認証を使用するように構成されている場合、ユーザ名およびパスワードが、ビューア2200からWebサーバ213に送信される新しいメッセージに含まれる。ストレージ・サーバ2300がHTTPダイジェスト認証を使用するように構成されている場合、ビューア2200は、Webサーバ213から送信されたnonce、要求の中のユーザ名、パスワード、HTTPメソッド、およびリソースの集合からチェックサムを(例えば、MD5を使用して)生成する。このチェックサムは、新しいメッセージに含まれる(HTTPメソッド、要求されたリソース、およびユーザ名のような)。Webサーバ213が新しいメッセージを受信した場合、Webサーバ213は、ストレージ・サーバ・ユーザ・ファイル内の情報を使用してユーザを認証しようと試みる。Webサーバ213は、情報の同じ集合に同じチェックサム手法を適用することによりこれを実行する(つまり、ビューア2200に送信されたnonce、ストレージ・サーバ・ユーザ・ファイルからのユーザ名、パスワード、およびレルム、使用されているHTTPメソッド、および要求されているリソース)。認証が成功した場合、要求は成功し、ネットワーク・ビデオ・レコーダ構成データがWebサーバ213により返される。
ストレージ・サーバ2300の典型的な構成によれば、Webサーバ213とのすべてのトランザクションに関して上述の種類の認証が必要である。これは、Webサーバ213を通じてのすべての要求を含み、また記録エンジン201へのデータのアクセスおよび設定の要求、アクセス・エンジン203へのクエリ(ビデオまたはイベント・データのクエリを含む)を含み、さらに、記録エンジン201に送信される手動記録の要求も含む。ユーザがパスワードを入力した後、認証情報(HTTP基本認証がWebサーバ213上で構成されているユーザ名およびパスワード、およびHTTPダイジェスト認証が構成されているチェックサムである)は、通常、同じストレージ・サーバ2300へのすべての後続のメッセージに含まれる。認証に対する要求間のトランザクションの時間的長さまたは個数に対するポリシーは、通常、Webサーバ213について構成される。
ビューア2200は、ネットワーク・ビデオ・レコーダ構成データを受信すると、メモリ2206内にこのデータのコピーを作成する。ビューア2200は、ユーザが「Storage and Camera Server Summary」画面を使用しているときに修正が構成に加えられる場合にメモリ内のこの構成データを使用する。
ビューア2200がネットワーク・ビデオ・レコーダ構成データを受信した後、ビューア2200は、マスタ・ストレージ・サーバ2300Aのハード・ディスク・ドライブ2310から「shared video windows(登録商標) layouts data」および「personal video window layouts data」を取り出すために追加HTTPメッセージを定式化する。
共有ビデオ・ウィンドウ・レイアウト・データおよびパーソナル・ビデオ・ウィンドウ・レイアウト・データは、それぞれ、ビューア2200により提示されるビューイング画面7600上にビデオ・ウィンドウ(例えば、7605)をレイアウトし、ディスプレイ・デバイス2214上に表示されるようにするために使用可能な共有ビデオ・ウィンドウ・レイアウトおよびパーソナル・ビデオ・ウィンドウ・レイアウトに関係するデータである。ビデオ・ウィンドウ・レイアウト・データは、レイアウトの種類を指定するデータ(例えば、レイアウトが位置揃えグリッド、小グリッド、中グリッド、またはグリッドなしであるかどうか)、およびビデオ・ウィンドウ・レイアウト・エリア7605(図76を参照)のビデオ・ウィンドウ(例えば、7625)毎に、そのビデオ・ウィンドウ(例えば、7625)に関連付けられている位置、サイズ、およびカメラ112〜115を指定するデータを含む。
共有ビデオ・ウィンドウ・レイアウト・データは、通常、マスタ・ストレージ・サーバ2300A上に、「playout.cui.SS」という名前のファイルとして格納され、パーソナル・ビデオ・ウィンドウ・レイアウト・データは、通常、マスタ・ストレージ・サーバ2300A上に、「ulayout.cui.[username].SS」という名前のファイルとして格納されるが、ただし、[username]は、「login dialog」ウィンドウに入力され、ストレージ・サーバ2300AにHTTPメッセージ内のヘッダとして渡されるユーザの名前である(例えば、ユーザ「bob」の場合、ヘッダは、「username:bob」となる)。
レイアウト・データの構造は以下のとおりである。
− ファイル形式のバージョン
− フォルダ内のレイアウトがレイアウトの入っているフォルダ内にネストされて表されるレイアウトおよびレイアウトのフォルダのリスト。レイアウト毎に、名前およびグリッド・タイプおよび、カメラid、位置、およびサイズのリストがある。
レイアウト・ファイルの実施例を以下に示す。
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]...
共有ビデオ・ウィンドウ・レイアウトは、管理者により作成され、任意のユーザによって読み出すことができる。共有ビデオ・ウィンドウ・レイアウトは、管理者(つまり、管理者権限を有するユーザ)しか修正できない。パーソナル・ビデオ・ウィンドウ・レイアウトは、特定のユーザ名に関連付けられており、そのユーザ名でログインしたユーザしか読み取り、作成、または修正を行うことができない。
共有ビデオ・ウィンドウ・レイアウトを取得するために、ビューア2200は、HTTP Getメソッドを使用して他のNVR_UserGetコマンドを要求としてマスタ・ストレージ・サーバ2300Aに送信する。この場合、ビューア2200は、特定のポートで指定されたホスト名またはIPアドレスに接続することを試み、以下のリソース(15)についてHTTP GETメッセージを送信する。
/webview-nvr/nvr_userget.fcgi?file=ulayout (15)
マスタ・ストレージ・サーバ2300A上の記録エンジン201は、上述のように、ビューア2200から受信されたGETメッセージを処理し、ハード・ディスク・ドライブ2310内に構成された共有ビデオ・ウィンドウ・レイアウトを含むファイル(つまり、「共有レイアウト・ファイル」)を読み込み、コンピュータ・ネットワーク2220を介して共有レイアウト・ファイルからビューア2200にデータを返す。
パーソナル・ビデオ・ウィンドウ・レイアウトは、以下のリソース(16)上でメッセージを送信することにより同様の方法でアクセスされる。
/webview-nvr/nvr_userget.fcgi?file=layout (16)
パーソナル・ビデオ・ウィンドウ・レイアウトの場合、マスタ・ストレージ・サーバ2300A上の記録エンジン201は、上述のように、ビューア2300から受信されたGETメッセージを処理し、要求で使用されるユーザ名に基づいてファイル名を構築し、ハード・ディスク・ドライブ2310内に構成されたパーソナル・ビデオ・ウィンドウ・レイアウトを含むファイル(つまり、「パーソナル・レイアウト・ファイル」)を読み込み、コンピュータ・ネットワークを介して、パーソナル・レイアウト・ファイルからビューア2200にデータを返す。
ビューア2200がマスタ・ストレージ・サーバ2300Aに接続し、ログインできる場合(つまり、マスタ・ストレージ・サーバ2300Aがビューア2200と同じコンピュータ・モジュール上に実装される場合を含む)、ユーザは、ビューイング画面7600を提示されるが、これについては、以下で説明する。
5.3 ビューアのメニュー
ビューア2200は、ディスプレイ・デバイス2214上に表示され、2つの主画面を含むユーザ・インターフェースを備える。第1の画面は、図64に示されているように、「configuration and preferences」画面6401であり、第2の画面は、図76に示されているように、ビューイング画面7600である。
アプリケーション・メニュー・アイテムの共通集合は、「configuration and preferences」画面6401とビューイング画面7600の両方から使用することができる。これら共通のメニュー・アイテムは以下のとおりである。
(i)アイテム「Exit」を含む「File」メニュー。
(ii)アイテム「Delete」、「Cut」、「Copy」、「Paste」、および「Select All」を含む「Edit」メニュー
(iii)アイテム「Viewing screen」、「Configuration」、および「Live Events Log」を含む「View」メニュー
(iv)アイテム「About」を含む「Help」メニュー
以下では、メニュー・アイテムについて説明する。
5.3.1 Exit
「Exit」アイテムは、ビュー・アプリケーション・ソフトウェアを閉じる。
5.3.2 Delete
ビューイング画面7600で、「Delete」アイテムは、ディスプレイ・デバイス2214上に表示されるビューイング画面7600上のビデオ・ウィンドウの現在のレイアウトから選択されたビデオ・ウィンドウ(例えば、7625)を削除する。「Storage」および「Camera Server Summary」ダイアログと呼ばれるビューア2200が備える他のダイアログでは、「Delete」アイテムは、ストレージ・サーバ2300、Locations、Zones、またはカメラ・サーバ109〜111を削除するために使用される。「recording schedule」ダイアログ6403で、「Delete」アイテムは、通常のスケジュールまたは特別日記録スケジュールから選択された記録スケジュール・アイテムを削除する。「Delete」アイテムは、削除可能なディスプレイ2214上に表示される特定のアイテムが選択されていない限り無効である。
5.3.3 Cut
ビューイング画面7600で、「Cut」メニュー・アイテムは、レイアウトから選択されたビデオ・ウィンドウ(例えば、7625)を削除し、コピーをクリップボード内に置いて、これを同じまたは別のレイアウト内に貼り付ける。「Cut」メニュー・アイテムは、ビューイング画面7600内で選択されたビデオ・ウィンドウがない場合には無効である。「configuration and preferences」画面6401の「recording schedules」ダイアログ6403では、「Cut」メニュー・アイテムは無効である。
5.3.4 Copy
ビューイング画面7600で、「Copy」メニュー・アイテムは、選択されたビデオ・ウィンドウ(例えば、7625)のコピーをクリップボード内に置く。「Copy」メニュー・アイテムは、ビューイング画面7600内で選択されたビデオ・ウィンドウがない場合には無効である。「configuration and preferences」画面6401の「recording schedules」ダイアログ6403では、「Copy」メニュー・アイテムは無効である。
5.3.5 Paste
ビューイング画面7600で、「Paste」メニュー・アイテムは、ビデオ・ウィンドウ(例えば、7625)をクリップボード内に現在のレイアウトに貼り付ける。「Paste」メニュー・アイテムは、ビデオ・ウィンドウ(例えば、7625)が切り取り、またはコピーされない限り無効である。「configuration and preferences」画面6401の「recording schedules」ダイアログ6403では、「Paste」メニュー・アイテムは無効である。
5.3.6 Select All
ビューイング画面7600で、「Select All」メニュー・アイテムは、現在のレイアウト内のすべてのビデオ・ウィンドウを選択する。「configuration and preferences」画面6401の「recording schedules」ダイアログ6403では、「Select All」メニュー・アイテムは無効である。
5.3.7 Viewing screen
「Viewing Screen」メニュー・アイテムは、ビューイング画面7600へのビューを変更する。「Viewing Screen」メニュー・アイテムは、ユーザが現在「configuration and preferences」画面6401を表示している場合にのみアクティブである。
5.3.8 Configuration
「Configuration」メニュー・アイテムは、「configuration and preferences」画面6401の「camera summary」ダイアログ6400へのビューを変更する。「Configuration」メニュー・アイテム・オプションは、ユーザがビューイング画面7600を表示している場合にのみアクティブである。
5.3.9 Live Events Log
ビューイング画面7600で、「Live Events Log」メニュー・アイテムは、ライブ・イベント・ログ7619が最後に開かれた位置およびサイズで、図76に示されているように、ライブ・イベント・ログ7619を開く。ライブ・イベント・ログ7619がすでに開いている場合、ライブ・イベント・ログ7619が表示されたときに、「Live Events」メニュー・アイテムの隣にチェックマークが示される。ライブ・イベント・ログ7619がすでに開いている場合に「Live Events Log」メニュー・アイテムを選択すると、ライブ・イベント・ログ7619は閉じて、そのチェックマークが消える。
5.3.10 About
「About」メニュー・アイテムは、製品情報をユーザに提供する「About」ダイアログを開く。「About」メニュー・アイテムは、「OK」ボタンを持ち、ユーザがこのボタンを選択すると、「About」ダイアログは消える。
5.4 ビューアと構成プリファレンス
「configuration and preferences」画面6401は、管理者(つまり、管理者権限を持つユーザ)しかアクセスできない。「configuration and preferences」画面6401にアクセスするには、ユーザは、「View」メニューから「Configuration」メニュー・アイテムを選択する。ユーザが管理者特権を持たない場合、「Configuration」メニュー内で「Configuration」メニュー・アイテムは無効になっている。「configuration and preferences」画面6401は、1つまたは複数のストレージ・サーバ2300を構成し、ローカル・プリファレンスを設定するために使用される。このようなストレージ・サーバ2300は、使用されているローカル・コンピュータ・モジュール2201、ローカル・エリア・ネットワーク(LAN)上の他のコンピュータ・モジュール(例えば、コンピュータ・モジュール2201)、またはネットワーク2220上のリモート・コンピュータ・モジュールに実装することができる。
「configuration and preferences」画面6401は、以下のために使用される。
(i)ストレージ・サーバ2300およびカメラ・サーバ109〜111をシステム100に登録する。
(ii)記録をトリガするイベントを指定することを含む、カメラ・サーバ109〜111に対し記録スケジュールを設定する。
(iii)ビューア設定を構成する。
「configuration and preferences」画面6401は、通常、図64に示されているように、タブ付きインターフェースを備える。「configuration and preferences」画面6401」に入ると、ビューア2200は、マスタ・ストレージ・サーバ2300Aから取り出されたネットワーク・ビデオ・レコーダ構成データで指定されているように知られているすべてのストレージ・サーバ2300に接続を試みる。ビューア2200は、ログイン・ダイアログで入力されたのと同じユーザ名およびパスワードを使用してそれぞれのストレージ・サーバ2300上でWebサーバ213への認証を試みることによりこれを実行する。ビューア2200がストレージ・サーバ2300に接続できない場合、接続警告が表示される。
5.4.1 Storage and Camera Server Summary
「configuration and preferences」画面6401の図64に示されているような「storage and camera server summary」6400では、管理者は、システム100が認識するすべてのストレージ・サーバ2300およびカメラ・サーバ109〜111の要約を表示することができる。「storage and camera server summary」6400では、さらに、ユーザは、システム100に認識されているストレージ・サーバ2300またはカメラ・サーバ109〜111の、メモリ2206内に構成されたリストを修正することができる。
「storage and camera server summary」ダイアログ6400を使用することで、カメラ・サーバ109〜111を登録し、カメラ・サーバ109〜111からのサンプル・データが記録される特定のストレージ・サーバ2300に関連付けることができる。さらに、カメラ・サーバ109〜111は、特定のロケーションおよびゾーンに関連付けることができる。
ビューア2200では、ロケーションおよびゾーンの概念を使用することで、システム100に認識されているカメラ・サーバ109〜111を階層構造に編成することができる。このような階層構造を使用すると、それぞれが任意の数のZonesを含む複数のロケーションをセットアップすることができる。それぞれのZoneは、カメラ・サーバ109〜111をいくつでも含むことができる。
Locationは、特定の物理的ロケーションに対応するようにセットアップできる(例えば、一方のLocationを「Sydney Office」とし、他方のLocationを「Melbourne Office」とすることができる)。Zonesは、Location内の特定の物理的ゾーンを参照するようにセットアップできる(例えば、一方のZoneを「Level 5」とし、他方のZoneを「Level 7」とすることができる)。
LocationsおよびZonesは、上述のように使用できるが、LocationsおよびZonesは、カメラ・サーバ109〜111の階層を作成するために管理者がそれらを使用することを選択する任意の方法で使用できる。例えば、管理者は、特定の国を参照するようにLocationsを構成し、その国の特定の市を参照するようにZonesを構成することができる。他の実施例では、すべてのカメラ・サーバ109〜111が1つのビル内にある場合、管理者は、Locationsがそのビルのレベルを参照し、Zonesはそれぞれのレベル内のエリアを参照するようにLocationsとZonesとを構成することを選択できる。
LocationsおよびZonesの階層構造は、特定のストレージ・サーバ2300が記録のため関連付けられた多数のカメラ・サーバ109〜111を備える階層構造から独立している。例えば、特定のストレージ・サーバ2300は、記録のためストレージ・サーバに関連付けられている複数のカメラ・サーバ109〜111を備えることができ、その場合、それらのカメラ・サーバ109〜111は、異なるZonesまたはさらにはLocationsにも関連付けられる。例えば、それぞれのLocationが特定の国に関連付けられている構成では、ストレージ・サーバ2300は、異なる国にあり、異なるZones内に置かれるように構成されている、カメラ・サーバ109〜111からサンプル・データを記録するように構成することができる。同様に、特定のZoneは、異なるストレージ・サーバ2300にそれぞれ記録されるカメラ・サーバ109〜111で構成できる。
「storage and camera server summary」ダイアログ6400では、ユーザは、ストレージ・サーバ階層に従って、またはLocationsおよびZones階層に従って、カメラ・サーバ6405のリストを表示することができる。ダイアログ6400の左側には、タブ付きパネル6407があり、「Storage Servers」ボタン6409および「Locations/Zones」ボタン6411が配置されている。
ユーザが「Storage Server」ボタン6409をクリックすると、「Storage Servers」ダイアログが表示される。左側パネル6407内の特定のストレージ・サーバ(例えば、6413)を選択することにより、そのストレージ・サーバ6413に関連付けられているカメラ・サーバ6405のリストが、右側パネル6415に表示される。「Storage Server」ダイアログが表示されている場合、管理者は、ストレージ・サーバ2300を登録または削除することができる。
同様に、図65に示されているように、「storage and camera server summary」ウィンドウ6400の「Locations/Zones」ボタン6411上で選択した場合に、「Locations/Zone」ダイアログが表示される。左側パネル6501内の特定のLocation(例えば、「Shopping center」6502)を選択することにより、そのLocation(例えば、「Shopping center」6502)内のすべてのZonesに関連付けられているカメラ・サーバ6503のリストが、右側パネル6509に表示される。左側パネル6501内の特定のZone(例えば、1st Floor)6507を選択することにより、そのZoneに関連付けられているカメラ・サーバ109〜111が、右側パネル6509に表示される。LocationsおよびZonesの階層表示は、通常、展開されていないLocation要素をダブルクリックするとそのLocation内にあるZonesを表示することによりその要素を展開するように従来のツリー・ユーザ・インターフェース要素を使用して表示される。同様に、展開されたLocationをダブルクリックすると、そのLocation内にあるZonesが隠される。
「Storage Server」または「Location/Zone」のいずれかのダイアログがアクティブである場合に表示される「Camera Server summary」ダイアログから、ユーザは、システム100上ですでに登録されていないカメラ・サーバ109〜111を探索し、カメラ・サーバ109〜111のリスティングを追加、編集、または削除することができる。
カメラ・サーバ・リスト6405は、以下を表示する。
(i)カメラ・サーバ名。
(ii)ストレージ・サーバ名(つまり、「Location/Zone」ダイアログがアクティブの場合)、またはロケーション/ゾーン(つまり、「Storage Server」ダイアログがアクティブの場合)。
(iii)カメラ・サーバの種類、記録ステータス(つまり、アイドルまたは記録中)。
(iv)記録モード(つまり、記録している場合)。
(v)解像度。
(vi)毎秒フレーム。
(vii)記録品質。
知られているストレージ・サーバおよびカメラ・サーバのリスト6405に変更が加えられた後、それらの変更をマスタ・ストレージ・サーバ2300Aに保存するために「Save Changes」ボタン6417を選択できる。ユーザが保存の前に他のダイアログに移るか、またはビューイング画面7600に戻ろうとすると、ユーザに対し保存を求めるダイアログを表示する。
ストレージ・サーバ2300およびカメラ・サーバ109〜111の追加および削除、さらにそのプロパティの修正を含む、加えられる修正は、最初に、前に説明されているように構成データを保持するビューア2200のメモリ2206内に構成されたデータ構造に対し実行される。変更は、「Save Changes」ボタン6417が選択されるまで、マスタ・ストレージ・サーバ2300Aまたは他のストレージ・サーバ(例えば、2300A、2300B、2300C、または2300D)上のデータに加えられない。
「Save Changes」ボタン6417が選択されると、ビューア2200は、上述のように、NVR_AdminSetコマンドを構築し、上述のようにHTTP POSTメソッドを使用してNVR_AdminSetを要求としてマスタ・ストレージ・サーバ2300Aに送信する。このような要求を送信するために、ビューア2200は、指定されたポートでマスタ・ストレージ・サーバ2300Aのホスト名またはIPアドレスに接続することを試み、以下のリソース(16)についてHTTP POSTメッセージを送信する。
/webview-nvr/nvr_adminset.fcgi?file=config (16)
このメッセージは、メモリ2206内に格納されている構成データから生成され、POSTメッセージの一部としてWebサーバ213に送信され、構成データをディスク2310に書き込む記録エンジン201に渡される、新しいネットワーク・ビデオ・レコーダ構成データを含む。
管理者が「storage and camera server summary」ダイアログ6400に表示される「Discard Changes」ボタン6419を選択した場合、マスタ・ストレージ・サーバ2300Aにコミットされていない変更は、ローカル・メモリ2206から破棄される。
5.4.1.1 ストレージ・サーバの追加および削除
ユーザが「Add Storage Server」ボタン6421を選択すると、ディスプレイ2214上にダイアログが表示され、そこで、ユーザは、ストレージ・サーバ2300のホスト名またはIPアドレスおよびストレージ・サーバ2300にアクセスするためのポート番号を入力することができる。「Add Storage Server」ダイアログには、さらに、「OK」ボタンおよび「cancel」ボタンもある。ユーザが「OK」ボタンを選択すると、ビューア2300は、指定されたポートを使用してホスト名またはIPアドレスに接続しようと試みる。このような接続が成功しない場合、エラー・メッセージがディスプレイ・デバイス2214上に表示される。ユーザが「cancel」ボタンを選択すると、オペレーションはキャンセルされ、ダイアログが消える。
「追加(する)」という用語が使用されるが、ストレージ・サーバ2300を「追加」するためには対応するストレージ・サーバ2300がすでにネットワーク2220に接続され、すでにストレージ・サーバ2300として構成されているため、このアクションは、システム100にストレージ・サーバ2300を「登録」するという言い方で、より正確に記述することができる。
ストレージ・サーバ2300は、対応する「Storage Server」ダイアログから削除すべきストレージ・サーバ2300を選択し、「Edit」アプリケーション・メニューから「Delete」を選択するか、またはキーボード2202上のdeleteキーを選択することにより削除される(つまり、登録解除される)。「Confirmation」ダイアログは、「Yes」ボタンを選択することにより対応するストレージ・サーバ2300の削除を続行するか、または「No」ボタンを選択してオペレーションをキャンセルするオプションとともに表示される。
ストレージ・サーバ2300を削除すると、メモリ2206内の構成データの中の知られているストレージ・サーバのリストからストレージ・サーバ2300が削除される。上述のように、「save changes」ボタン6417が、ユーザにより選択されると、ネットワーク・ビデオ・レコーダ構成データは、メモリ2206内の構成データから生成され、NVR_AdminSetメッセージでストレージ・サーバ2300に送信され、マスタ・ストレージ・サーバ2300Aのハード・ディスク・ドライブ2310に書き込まれる。ハード・ディスク・ドライブ2210内に構成されたリストから削除されたときに削除されたストレージ・サーバが実行中であった場合、ストレージ・サーバ2300は前のように実行を続ける。削除されたストレージ・サーバは、カメラ・サーバとの対応するすべての関連付けが存在しているまま、システム100に再追加することができる。削除されたストレージ・サーバは、さらに、メモリ2206内の構成データ内の知られているストレージ・サーバのリストに追加することもできる。
5.4.1.2 ロケーションの追加、編集、および削除
図65に示されているようにユーザが「storage camera server summary」6400上の「Add Location」ボタン6511を選択すると、ユーザが追加すべきロケーションに対する名前を入力するためのダイアログが表示される。このダイアログには、さらに、「OK」ボタンおよび「Cancel」ボタンもある。
位置は一意である必要がある。ユーザがすでに存在している名前を使用してLocationを追加しようとすると、ユーザは、警告を表示され、別の名前を使用するよう求められる。追加できるLocationsの数に固定された制限はない。
ユーザが「OK」ボタンを選択すると、Locationが、ビューア2200のメモリ2206内に格納される構成データ内に追加される。「Save Changes」ボタンが選択された場合にマスタ・ストレージ・サーバ2300Aへの構成の変更が更新される。
Locationsは、「storage and camera server summary」ダイアログ6400内のLocationの名前をダブルクリックし、「Edit Location」ダイアログ内の設定を編集することにより編集される。「Edit Location」ダイアログは、「Edit Location」ダイアログが「Edit Location」というタイトルを使用することを除き、「Add Location」ダイアログと同じダイアログである。
「Locations」は、「Locations/Zone」ダイアログ内で「Location」という名前を選択し、「Edit」アプリケーション・メニュー6513から「Delete」を選択するか、またはキーボード2202上のdeleteキーを選択することにより、「storage and camera server summary」6400から削除される。「Locations」は、「Location」が削除されるときに「Locations」に関連付けられた「Zones」を持たないのが好ましい。ユーザが「Zones」を含む「Location」を削除しようと試みた場合、ユーザは、ディスプレイ2214上に警告を表示され、ユーザは、Zonesを最初に削除するよう求められる。
5.4.1.3 ゾーンの追加、編集、および削除
ユーザが「Add Zone」ボタン6517を選択した場合、ユーザがそのZoneに対する名前を入力するためのダイアログが表示される。「Add Zone」ダイアログは、追加すべきZoneを入れるLocationを選択するためのプルダウン・メニューを含む。プルダウン・メニューは、ネットワーク2220に接続されたカメラ・サーバ109〜111の知られているすべてのLocationsのリストを含む。「Add Zone」ダイアログには、さらに、「OK」ボタンおよび「Cancel」ボタンもある。
Zonesは、ロケーションの中で一意である必要がある。ユーザが対応するLocation内にすでに存在している名前を使用してZoneを追加しようとすると、ユーザは、警告を表示され、別の名前を使用するよう求められる。追加できるLocationにZonesの数に固定された制限はない。異なるLocations内にある、同じ名前を持つZonesがありえる(例えば、Location「Sydney」はZones「Level5」および「Level7」を持ち、Location「Melbourne」は、Zones「Level5」および「Level7」を持つことができる)。同じ名前を持つが、異なるLocations内にある、Zones間にシステム100内での関係はない。
ユーザが「Add Zone」ダイアログの「OK」ボタンを選択すると、Zoneが、ビューア2200のメモリ2206内に格納される構成データ内に追加される。図65に示されているように、「Save Changes」ボタン6519がユーザにより選択された場合にマスタ・ストレージ・サーバ2300Aへの構成の変更が更新される。
Zonesは、Zone(例えば、6521)の名前をダブルクリックして、Zoneを選択し、その後、「Edit Zone」ダイアログ内の選択された「Zone」の設定を編集することにより編集される。「Edit Zone」ダイアログは、「Edit Zone」ダイアログは「Edit Zone」というタイトルを使用することを除き、「Add Zone」ダイアログと同じダイアログである。
Zoneは、「Locations/Zones」ダイアログ内の「Zone」の名前を選択し、編集アプリケーション・メニュー6513から「Delete」を選択するか、またはキーボード2202上のdeleteキーを選択することにより削除される。Zonesは、削除される場合にカメラ・サーバ109〜111を中に持たない。ユーザは、カメラ・サーバ109〜111を含むZoneを削除しようとした場合、警告を表示され、ユーザは、カメラ・サーバ109〜111を他のZoneに関連付けるか、または関連付けられているカメラ・サーバ109〜111を削除するよう求められる。
5.4.1.4 カメラ・サーバの探索
図65に示されているように、「find camera server」ボタン6523がユーザによって選択された場合、ビューア2200は、ブロードキャスト・メッセージをネットワーク2220上に送信する。そのようなブロードキャスト・メッセージに応答するように構成されているネットワーク2220上のカメラ・サーバ109〜111は、ビューア2200に応答する。ブロードキャスト・メッセージがビューア2200によって送信された後、ビューア2200は、ディスプレイ2214上で図66に示されているように検索結果ダイアログ6600を表示する。カメラ・サーバ109〜111がブロードキャストに応答した場合、ビューア2200は、名前、IPアドレス、および型をダイアログ6600内のリストに配置する。結果は、ネットワーク2220に接続されたカメラ・サーバ109〜111のすべてのリストである。
ユーザは、システム100に、検索結果ダイアログ6600にリストされているカメラ・サーバ109〜111を登録することができる。カメラ・サーバ109〜111を追加するには、ユーザは、検索結果ダイアログ6600から特定のカメラ・サーバ109〜111を選択し、「Add Camera Server」ボタン6625をクリックするか、またはダイアログ6600内の特定のカメラ・サーバ上をダブルクリックすると、図67に示されているように、「add camera server」ダイアログ6700がディスプレイ2214上に表示される。
5.4.1.5 カメラ・サーバの追加
「add camera server」ダイアログ6700では、ユーザは、新しいカメラ・サーバ109〜111またはカメラ112〜115をシステム100に登録することができる。ユーザが「add camera server」ダイアログ6700にどのようにして辿り着いたかに応じて、フィールドのいくつかが事前に選択されているか、または事前に初期値が入力されている場合がある。「storage and camera summary」ダイアログ6400から来た場合には、「Storage Server」ダイアログがアクティブであれば、対応するストレージ・サーバ設定が、現在選択されているストレージ・サーバとして事前に選択されている。「Locations / Zones」ダイアログがアクティブであれば、「Location and/or Zone」設定が、現在選択されている「Location and/or Zone」として事前に選択されている。
「add camera server」ダイアログ6700が「find camera servers search results」ダイアログ6600から起動された場合、「Find Camera Servers」ボタン6523が選択されたときに「storage server and camera summary」ダイアログ6400内でどのダイアログがアクティブになっていたかに応じて、ホスト名およびストレージ・サーバ2300または「Location」および「Zone」フィールドに事前に初期値が入力される。
「add camera server」ダイアログ6700が起動されたのに応じて、ユーザは、すでに初期値が入っていなければホスト名またはIPアドレスおよびポート番号を、その後、追加されるカメラ・サーバ109〜111に対応して、図67に示されているように、ユーザ名およびパスワードをフィールド6701に入力することができる。入力されるユーザ名およびパスワードは、通常、マスタ・ストレージ・サーバ2300Aにアクセスするためにログイン・ダイアログに入力されたユーザと同じユーザ名およびパスワードではなく、管理者アクセスのために必要とするように特定のカメラ・サーバ109〜111が構成されているユーザ名およびパスワードである。
本明細書で説明されている実装では、カメラ・サーバ・ユーザ名およびパスワードは、システム100内のカメラ・サーバ109〜111に接続するために必要である。ユーザ名およびパスワードを要求することで、ユーザ側で公開表示可能であるが、記録する許可をユーザ側で持たないカメラ・サーバ109〜111から記録することができなくなる。
他の実装では、カメラ・サーバ・ユーザ名およびパスワードは、特定のカメラ・サーバ109〜111に接続するために必要ではない。この場合、誰でも、公開表示可能なカメラ・サーバからビデオを記録することが可能である。
ユーザは、接続設定を入力した後、「connect」ボタン6703を押すことができる。応答として、ビューア2200は、カメラ・サーバ・プロトコルを使用して、HTTP上で指定カメラ・サーバに接続する。
特定のカメラ・サーバ109〜111から応答が受信されると、ネットワーク2220上でカメラ・サーバから受信されたビデオ・サンプルが表示され、「add camera server」ダイアログ6700のプレビュー・ウィンドウ6705内で連続的に更新される。また、ビューア2200は、カメラ・サーバ109〜111によりカメラ112〜115から返された第1のビデオ・サンプルを受け取り、対応するビデオ・ウィンドウ(例えば、7625)をサムネイル・サイズにリサイズし、そのサムネイル・ウィンドウをプレビュー・エリア6705の隣のサムネイル・エリア6707に置く。
さらに、カメラ・サーバとの接続が行われるときに、「save recorded video on」グループ6713内のホスト名6709およびポート6711の入力ボックスに、フィールド6701内のホスト名およびポート入力ボックスと同じ値が自動的に初期化値として入力される。
「connect」ボタン6703が選択されず、「OK」ボタン6715が選択され、登録プロセスが完了する場合、ビューア2200が特定のカメラ・サーバ109〜111に接続を行うことなく、特定のカメラ・サーバがそのまま登録される。このような登録により、まだ使用可能でない、またはまだ構成されていないカメラ・サーバ109〜111をシステム100内で部分的にセットアップすることができる。
特定のカメラ・サーバとの接続の後、ダイアログ6700の右側にある多数の「Camera」ダイアログが選択されたカメラ・サーバ109〜111上で有効にされているカメラの個数に設定される。例えば、Canon(登録商標)VB101、シングル・モードで動作しているCanon(登録商標)VB150、Canon(登録商標)VB−C10、またはCanon(登録商標)VB−C10Rに接続する場合、「Camera Settings」というタイトルを持つ1つのダイアログのみが表示される。マルチプル・モードでCanon(登録商標)VB150に接続する場合(つまり、複数のカメラ112〜115を同時に別々に表示できるカメラ・サーバ109−111)、カメラ112〜115いくつ有効になっているかに応じて、追加ダイアログが表示される。これらのカメラに対応するダイアログは、Cam1、Cam2などのラベルが付けられる。
ユーザは、プルダウン・メニューを使用して、カメラ112〜115を特定のLocationおよびそのLocation内のZoneに関連付けることができる。ユーザが新しいLocationを追加することを望んでいる場合、ユーザは、「Location」フィールド6719の隣の「add」ボタン6717を押すと、上述の「Add Location」ダイアログを表示することができる。ユーザがLocation内に新しいZoneを追加することを望んでいる場合、ユーザは、「Zone」フィールド6725の隣の「add」ボタン6723を押すと、上述の「Add Zone」ダイアログを表示することができる。
プレビュー・エリア6705は、カメラ112〜115が登録されるユーザに視覚的フィードバックを送るために使用され、これにより、プレビュー・エリア6705に基づき、ビューア2200内のサムネイル画像6707を更新することができる。ユーザが「update」ボタンを押すと、ビューア2200は、プレビュー・エリア内に現在表示されているフレームをメモリ2206内の他のロケーションにコピーし、保存されているフレームをプレビュー・エリア6705のそばのサムネイル・エリア6707内にサムネイルとして表示する。いくつかの実装では、メモリ2206内のフレームを保存する前に、ビューア2200は、解像度を下げてそのフレームを変換し、完全なフレームではなくフレームの解像度縮小バージョンを保存する。
サムネイルは、カメラ112〜115の表現を形成することを意図されており、ビューイング画面7600上のカメラ・セレクタ内のカメラ112〜115を表すために使用される管理者は、通常、そのカメラ112〜115に対する表示可能エリアの適切な表現となるサムネイルに基づき特定のカメラ112〜115を表す特定のサムメイルを選択する。例えば、管理者は、カメラが監視に使用される典型的ビューとなるようにサムネイルを選択することができる。他の実施例では、管理者は、特定のカメラが通常、そのエリア内の特定の領域上でズームインするように操作されているとしても監視されている(つまり、ズームアウトされているカメラでとる)エリアのワイド・ビューを持つサムネイルを選択することができる。
管理者がビデオ・ウィンドウ(例えば、7625)内のプレビュー6705のフレーミングに満足しない場合、管理者は、「Start Control」ボタンをクリックするか、またはプレビュー・ビデオ・ウィンドウ6705内でダブルクリックすることにより対応するカメラ112〜115のパン、傾斜、および/またはズーム設定を変更することができる。その結果、図68に示されているように、パン、傾斜コントロール・ツール6800がビデオ・ウィンドウ6705上に表示される。ビューア2200が特定のカメラ112〜115の制御権を持つと、ビデオ・ウィンドウ6705の様々な領域上で異なるカーソルを使用することで視覚的フィードバックが与えられる。68に示されているように、矢印(例えば、6801)は、カーソル位置(つまり、ディスプレイ2214上のマウス矢印の位置)をクリックすると、対応するカメラ112〜115のパンおよび/または傾斜設定を変更することができるかどうかを示すために使用することができ、拡大鏡6803は、カーソル位置でクリックすると、特定のカメラ112〜115がズームインまたはズームアウトするかどうかを示すために使用できる。さらに、ズームは、マウス2203のホイール(つまり、マウス・ホイール)を使用して制御することもできる。
ユーザは、マウス2202を通常の方法で使用する場合に、クリックを使用するか、またはカーソルを異なる領域にドラッグすることにより特定のカメラ112〜115を制御することができる。ユーザがパンおよび傾斜を制御する場合、領域拡大は無効にされ、カーソルはズームすることなくビデオ・ウィンドウ6705の中心を横切って移動することができる。対応するカメラ112〜115のパンおよび傾斜設定を変更する場合、移動の量は、カーソルがビデオ・ウィンドウの中心からどのくらい離れているかにより決定される。パン、傾斜コントロール・ツール6800は、マウス2203、小さなトラックボール、ジョイスティック、タッチスクリーン、またはその他の類似のポインティング・デバイスだけでなく、キーボード2202を使用したカーソルの制御に適している。
ユーザは、さらに、プリセットのリストからプリセット角度を選択することにより対応するカメラ112〜115を制御することもできる。「Connect Button」が選択されたときに関連付けられたカメラ・サーバ109〜111から取り出される、使用可能なプリセットは、ユーザが選択できるプルダウン・メニュー内にリストされる。プルダウン・メニューからプリセットが選択された場合、対応するカメラ112〜115は、対応するプリセット位置に進むように制御される。
ユーザが上述のコントロール・ツール6800を使用して対応するカメラ112〜115の位置を修正した場合、プリセット位置は、対応するカメラ112〜115の現在位置が知られているプリセット位置に対応しないことを示す「カスタム」として表示される。ユーザは、さらに、「backlight compensation」ボタンを押して、バックライト補正のオン、オフを切り替えることもでき、これにより、関連付けられているカメラ112〜115を制御する。
ユーザが、ある位置、あるズーム設定、あるバックライト補正設定、およびユーザが関連付けられているカメラを表したい現在のビューで、対応するカメラ112〜115を持つ場合、上述のように、ユーザは、「update」ボタン6727を押して、サムネイル6707を更新することができる。
上記の説明では、カメラ112〜115を表すために使用されるサムネイル6707がそのカメラ112〜115から取り込まれる場合を説明している。管理者は、上述のように、カメラ・サーバ109〜111に接続し、フィールド6701グループ内のホスト名またはIPアドレスおよび/またはポート番号のフィールドの値を修正し、「OK」を押すことにより、一方のカメラ112〜115から他のカメラ112〜115の表現として取り込まれるサムネイル6707を使用することさえできる。カメラ・サーバ109〜111に対する新しい接続が行われないため、サムネイル6707は置き換えられず、前のカメラ・サーバからのサムネイル6707は一表現として保持される。
管理者は、例えば、ユーザが特定のカメラ112〜115の環境コンテクスト内の特定のカメラ112〜115自体の画像または他のカメラ112〜115から見たとおりに特定のカメラ112〜115によりカバーされるエリアの画像となるように特定のカメラ112〜115の表現を望んでいる場合に、そのような接続を使用することができる。管理者は、さらに、単一のカメラ112〜115に関連付けられているすべてのカメラ112〜115に対するすべてのサムネイルをセットアップするため上記の接続を使用することもできる(例えば、管理者のオフィス内で)。この場合、管理者は、例えば、それぞれのカメラ112〜115の番号または他の何らかの表現を持つカードのシーケンスを物理的に順に保持することができる。この実施例では、管理者は、それぞれのカードの画像を順次取り込み、それぞれの画像をそれぞれの異なるカメラ112〜115に関連付けられたサムネイルとして関連付けることが可能である。
「add camera server」ダイアログ6700から、管理者は、さらに、特定のカメラ112〜115からのサンプル・データの記録にどのストレージ・サーバ2300を使用すべきかを選択することもできる。ビューア2200に認識されているストレージ・サーバ2300は、プルダウン・メニュー内に置かれ、管理者はどれかを選択することができる。デフォルトでは、プルダウン・メニューには、「Do Not Record」があり、これは、特定のカメラ112〜115がストレージ・サーバ2300に関連付けられていないことを意味する。
「add camera server」ダイアログ6700では、管理者は、対応するカメラ112〜115からのビデオの記録に、ストレージ・サーバ2300のストレージ・デバイス2309内に構成された使用すべきドライブを構成することができる。ストレージ・サーバ2300上で使用可能なすべてのドライブのリストをプルダウン・メニュー内にリスト表示することができ、管理者はそれらのうちから1つ選択することができる。
カメラ・サーバ109〜111からの複数の同時表示可能ストリームがある場合(例えば、マルチプル・モードでVB150の場合)、ストレージ・サーバ2300上の異なるドライブ上に記録される特定のカメラ・サーバ109〜111に関連付けられたカメラ112〜115のそれぞれを構成することが可能である。それぞれのカメラ112〜115は、さらに、ストレージ・サーバ2300上の同じドライブに記録することもできる。
ユーザが「add camera server」ダイアログ6700上の「OK」ボタン6715を押すと、ホスト名、ポート、およびストレージ・サーバ(記録するに設定されている場合)がチェックされ、カメラ112〜115が選択されたストレージ・サーバ2300上ですでに登録されているかどうかが調べられる。この場合、そのようなことは許可されないということを知らせる警告メッセージがユーザーに対して提示される。
上記の警告条件が発生しない場合、「OK」ボタン6715を押すと、ビューアのメモリ2206内で構成データが更新される。上述のように、構成データに対するこれらの変更は、「Save Changes」ボタン6519が押されるまで、マスタ・ストレージ・サーバに書き込まれない。
5.4.1.6 カメラ設定の編集
カメラ112〜115は、カメラ・サーバ・リスト上でカメラ112〜115を選択し、「Edit Camera Server」ボタンをクリックするか、または特定のカメラ・サーバの名前をダブルクリックすることにより、編集される。その応答として、ビューア2200は、特定のカメラ112〜115のカメラ・サーバ設定を編集することができる「Edit Camera Server」ダイアログを開く。「Edit Camera Server」ダイアログは、「Edit Camera Server」ダイアログが「Edit Camera Server」というタイトルを使用することを除き、「Add Camera Server」ダイアログと同じダイアログである。
5.4.1.7 カメラ・サーバの削除
カメラ112〜115またはカメラ・サーバ109〜111は、「storage and camera server summary」ダイアログ6400の右パネル6509内の特定のカメラまたはカメラ・サーバの名前(例えば、6521)を選択し、「Remove Camera Server」ボタンをクリックするか、「edit」アプリケーション・メニュー6513から「delete」を選択するか、またはキーボード2202上のdeleteキーを押すことにより、システム100から削除される。「Confirmation」ダイアログは、「Yes」ボタンを押すことによりカメラ・サーバの削除を続行するか、または「No」ボタンを押すことによりオペレーションをキャンセルするオプションとともに表示される。
5.4.2 スケジュールの記録
図69に示されているように、「configuration and preferences」画面6401上の「recording schedules」ダイアログ6403は、それぞれの知られているカメラ112〜115について、イベントおよびセンサ・ベースの記録を含む、記録スケジュールを構成するために使用できる。「recording schedules」ダイアログ6403は、毎日、および指定された日の通常スケジュールをオーバーライドする祝祭日などの特別日に、システム100の通常記録オペレーションをセットアップするために使用することができる。
「recording schedules」ダイアログ6403は、一度に1つのストレージ・サーバ2300に関連付けられたカメラ112〜115を示す。管理者は、「storage server」プルダウン・メニューを使用することにより構成するストレージ・サーバを選択することができる。「storage server」プルダウン・メニューは、システム100に認識されるすべてのストレージ・サーバ2300を初期値として表示する。管理者がストレージ・サーバ2300を選択した場合、「recording schedules」ダイアログ6403は、選択されたストレージ・サーバ2300に関連付けられたスケジュール・アイテム(例えば、1115)を示すように更新される。デフォルトでは、リスト6901内の第1のストレージ・サーバ(例えば、「shopping center」ストレージ・サーバ)は、表示されるその第1のストレージ・サーバに関連付けられているそれぞれのカメラ112〜115に対するスケジュールとともに選択される。
異なるストレージ・サーバを選択すると、表示されているカメラ112〜115のリスト6901が変更され、ユーザは同じスケジュール・タイプ(つまり、通常または特別日)に保持される。
ストレージ・サーバ2300に記録するようにセットアップされたカメラ112〜115のみが、「recording schedules」ダイアログ6403内に表示される。
5.4.2.1 Normal Schedules
「normal schedule」は、それぞれのストレージ・サーバ2300の標準的な毎日の記録設定をセットアップするために使用される。ストレージ・サーバ2300は、指定日の設定をオーバーライドするように代替え「Special Day」スケジュールがセットアップされていない限り、これらの通常のスケジュール設定を使用する。通常のスケジュールは、ストレージ・サーバ2300に関連付けられているそれぞれのカメラ112〜115についてスケジュール・アイテム1115(例えば、図13)を作成することによりセットアップされる。
5.4.2.1.1 スケジュール・アイテム
スケジュール・アイテム1115は、「recording schedules」ダイアログ6403上に個々のカメラ112〜115に対する期間をドラッグすることにより追加される。例えば、図69に示されているように、「Information Desk」カメラ・サーバ6907について、スケジュール・アイテム1115の期間は、図69に示されているように、従来の方法でダイアログ6403上の行6909を選択し、その行をダイアログ6403に関して左または右にドラッグすることにより変更することができる。ユーザがマウス2203を離すと、「add schedule item」ダイアログ7000がディスプレイ2214上に表示される。ユーザは、さらに、スケジュール・エリア6905内でクリックして、「add schedule item」ダイアログ7000を開くこともできる。スケジュール・アイテム1115の詳細は、スケジュール・アイテム・ダイアログ7000を使用して設定できる。デフォルトでは、コンテクスト・メニューを通じて追加されるときのスケジュール・アイテム1115の持続時間は、他のスケジュール・アイテムに干渉しない場合に可能な限り長く取られる。それぞれのスケジュール・アイテムの長さは、最大24時間とすることができる。
ユーザがスケジュール・アイテム1115に対する期間をドラッグ・アウトした場合、ドラッグアウトされる持続時間が24時間よりも長くない限り、関連付けられている選択ボックス(例えば、6911)の左辺が開始時刻として使用され、右辺が終了時刻として使用される。この場合、左辺は、開始時刻として使用され、終了時刻は、開始時刻の後24時間に設定される。ユーザがスケジュール・エリア6905内でクリックすると、ユーザがクリックした位置が開始時刻として使用される。
管理者は、「add schedule item」ダイアログ7000のそれぞれ「Start」および「End」フィールド7001および7003にスケジュール・アイテム1115の開始時刻および終了時刻を設定することができる。「all day」ボタン7005をクリックすると、自動的に、開始時刻フィールド7000に「0000」、終了時刻フィールド7003に「0000」が埋められる。「0000」は、午前0時に始まり、次の日の午前0時まで続くスケジュール・アイテム1115に対応する。管理者は、特定のスケジュール・アイテム1115が適用される週の曜日を選択することができる。
ある日に開始し、次の日に終了する(例えば、月曜2200から火曜0300までの)スケジュール・アイテム1115をセットアップするために、ユーザは、Mondayが、セットアップするスケジュール・アイテムが開始する曜日であるため「Monday」チェックボックス7007をチェックし、2200の開始時刻および0300の終了時刻を入力しなければならない。この場合、終了時刻は開始時刻よりも早く、これは、スケジュール・アイテム1115は前の日から次の日まで続くことを示す。
管理者は、スケジュール・アイテム1115の特定の時刻に対する特定のカメラ112〜115について記録モードを選択することができる。このような記録モードは、以下の1つまたは複数とすることができる。
(i)「continuous recording」:ストレージ・サーバ2300は、スケジュールされた時間内のすべての時間に特定のカメラ112〜115からサンプル・データを記録する。
(ii)「on motion detection」:ストレージ・サーバ2300は、運動が検出されたときにその特定のカメラ・サーバからビデオを記録する。
(iii)「on sensor event」:ストレージ・サーバ2300は、特定のカメラ・サーバに関連付けられたセンサからイベントが受信された場合にビデオを記録する。
複数の記録モードを選択することにより、単一スケジュール・アイテム1115内に複数記録モードをセットアップすることができる。例えば、カメラは、1フレーム/秒(fps)のフレーム速度でいつでも「記録」することができ、同時に30fpsのフレーム速度でいつでも「運動検出」にできる。このようなことにより、低いフレーム速度で、運動活動の時間に関連付けられている高いフレーム速度でカメラ画像の完全な記録をとることができる。
運動検出およびセンサ・イベント記録モードから、対応する設定ボタン(例えば、7009)を押すことにより起動される、「Settings」ダイアログがある。これらのモードにより、「Add/Edit Schedule Item」ダイアログ内の設定をオーバーライドするリセット位置およびフレーム速度を含む記録パラメータを設定することができる。「settings」および「Add/Edit Schedule item」ダイアログについて後述する。
管理者は、サンプル・データを連続的に記録するように使用するフレーム速度を構成することができる。フレーム速度設定は、使用可能なフレーム速度(つまり、フレーム個数/秒)でプルダウン・メニューから行うことができる。通常のフレーム速度は、0.1、0.2、0.5、1、2、5、10、15、20、25、および30を含む。他の実装では、フレーム速度をある範囲(例えば、0.1から30.0)内の最大小数点第1位までの数として指定することができる。
デフォルトで、スケジュール・アイテム1115に関連付けられたプリセット・カメラ112〜115位置は、「Not specified」に設定される。その結果、スケジュール・アイテム1115が開始すると、ストレージ・サーバ2300上の記録エンジン201は、カメラ・サーバ109〜111を介してカメラの位置変更を試みない。記録エンジン201は、特定のカメラ112〜115を現在位置および開始記録のままに残す。
値「Not Specified」だけでなく、プリセット選択のプルダウン・メニューは特定のカメラ・サーバ109〜111から取り出された使用可能なプリセット位置のリストを含む。管理者は、特定のカメラ・サーバ109〜111に関連付けられている特定のカメラ112〜115の位置を変更するために特定のカメラ・サーバ109〜111にメッセージを送信させることになるプリセット位置を選択することができる。バックライト補正ボタンは、カメラ112〜115のバックライト補正設定を切り替えるために特定のカメラ・サーバ109〜111にメッセージを送信するために使用される。
プレビュー・ウィンドウ6705は、図67に示されているように、特定のカメラ・サーバ109〜111からライブ画像を表示するために上述のように使用することができ、また上述のようにコントロール・ツール6800を使用して特定のカメラ112〜115(例えば、パン、傾斜、およびズーム)を制御するために使用することができる。
ユーザが上述のコントロール・ツール6800を使用してカメラ112〜115の位置設定を修正した場合、プリセット位置は、カメラ・サーバ109〜111に関連付けられているカメラ112〜115の現在位置が知られているプリセット位置に対応しえないことを示す「Custom」として表示される。
「schedule item」ダイアログ7000および「Sensor Settings」ダイアログに関連付けられている特定のカメラ・サーバ109〜111を制御しようと試みるときにビューア2200のカメラ・サーバ109〜111を介してカメラを制御する権限(つまり、「制御権限」)は、記録エンジン201の特定のカメラ・サーバ109〜111を制御する権限よりも高い。その結果、管理者は、記録が実行される実際の角度でカメラ112〜115を見ることができる。制御権限のレベルは、ビューイング画面7600内に用意されているオペレータ・オーバーライド機能ほどは高くない。オペレータがビューア2200を使用し、またオペレータ・オーバーライドを使用している場合、「schedule item」ダイアログ7000または「sensor settings」ダイアログが表示されているビューア2200が制御権限を持つことは必ずしも可能ではない。このような場合、管理者は、制御権限を受け取るまで待つ必要がある。
管理者は、「resolutions」プルダウン・メニューを使用することにより、特定のスケジュール・アイテムに関連付けられた期間、特定のカメラ112〜115の解像度設定を変更することができる。解像度設定は、通常、160×120、320×240、640×240、または640×480の集合から選択することができる。使用可能な解像度は、カメラ・サーバのタイプによって異なる。例えば、Canon(登録商標)VB150では160×120、320×240、および640×240をサポートするが、Canon(登録商標)VB−C10では160×120、320×240、および640×480をサポートする。表示される解像度オプションは、使用されているカメラ・サーバ109〜111の特定のタイプで使用可能なオプションである。さらに、プルダウン・メニューは、オプション「Not Specified」を持つ。管理者が解像度を「Not Specified」に設定した場合、ストレージ・サーバ2300上の記録エンジン201は、スケジュール・アイテムの持続時間について、カメラ112〜115の解像度を変更することを試みない。
管理者は、「quality」プルダウン・メニューを使用して、特定のスケジュール・アイテム1115に関連付けられた期間、特定のカメラ112〜115の品質設定(つまり、圧縮レベル)を変更することができる。品質設定は、通常、以下の集まりから選択できる。
(i)Lowest:圧縮比10%に対応する。
(iii)Low:圧縮比30%に対応する。
(iv)Medium:圧縮比50%に対応する。
(v)High:圧縮比70%に対応する。
(vi)Highest:圧縮比90%に対応する。
さらに、「quality」プルダウン・メニューは、オプション「Not Specified」を持つ。管理者が品質を「Not Specified」に設定した場合、ストレージ・サーバ2300上の記録エンジン201は、スケジュール・アイテム1115の持続時間について、カメラ112〜115の品質を変更することを試みない。
スケジュール・アイテム1115に対する設定が設定された後(つまり、すべての適用可能な記録モード設定を含む)、「OK」ボタンをクリックすることにより、スケジュール・アイテム1115がスケジュールに追加される。「OK」ボタンをクリックすると、ビューア2200のメモリ2206内のデータ構造が更新される。しかし、ストレージ・サーバ2300内の対応するスケジュールは更新されない。ストレージ・サーバ2300内のスケジュールは、後述のように管理者が「Save Schedule」ボタン6913を選択した場合にのみ更新される。
更新されたデータ構造から、ビューア2200は、「recording schedule」ダイアログ6403上のスケジュール・ビュー6095内のスケジュール・アイテム1115の視覚的表現を更新する。視覚的表現の更新は、さらに日が追加または削除されたか、時刻が変更されたか、またはモードが変更された場合にのみ必要である。
ユーザが他のスケジュール・アイテムとオーバーラップするスケジュール・アイテム1115をセットアップしようとした場合、スケジューリング上の問題が生じていることを説明するエラー・メッセージが表示される。
従来の方法でマウスをクリックしてドラッグすることにより、スケジュール・アイテムを移動またはサイズ変更できる(つまり、開始および終了時刻を変更する)。スケジュール・アイテムは、削除する特定のアイテムを選択し、キーボード2203上のdeleteキーを押し、「Edit」アプリケーション・メニューから「Delete」を選択するか、または「Schedule Item Context」メニューから「Delete」を選択することにより削除できる。ユーザが。他の日にも繰り返すスケジュール・アイテムから1日を削除することを望んでいる場合、「Edit Schedule Item」ダイアログ上でその日のチェックマークを外す必要がある。
すべてのスケジュール・アイテムが作成された後、「Save Schedule」ボタン6913を押して、スケジュール全体をストレージ・サーバ2300に保存する。
上述のように、スケジュール・アイテムの追加、削除、および修正を含む、「recording schedules」ダイアログ6403から行われた修正は、最初に、メモリ2206内のデータ構造に対し実行される。変更は、「Save Schedule」ボタン6913が選択されるまで、マスタ・ストレージ・サーバ2300Aまたは他のストレージ・サーバ2300上のデータに加えられない。
「Save Schedule」ボタン6913が選択されると、ビューア2200は、上述のようにRE_Setコマンドを構築し、これをスケジュール変更が行われた(つまり、ストレージ・サーバが「storage server」プルダウン・リスト内で選択された)ストレージ・サーバ2300に送信する。RE_Setコマンドは、上述のようにHTTP POSTメソッドを使用して要求として送信される。RE_Setコマンドを送信するために、ビューア2200は、指定されたポートでストレージ・サーバ2300のホスト名またはIPアドレスに接続することを試み、以下のリソース(17)についてHTTP POSTメッセージを送信する。
/webview-nvr/re_set.fcgi?action=scheddetails (17)
メモリ2206内のスケジュール・データは、CAMERA要素409を含むXMLドキュメントに変換され、HTTP POSTメッセージの一部として送信される。これは、Webサーバ213を介して記録エンジン201により受信され、ディスク2310に書き込まれる。
管理者が「Discard Changes」ボタン6915を押すと、ストレージ・サーバ2300にコミットされていない変更は、ストレージ・サーバ2300のハード・ディスク・ドライブ2310から破棄され、「recording schedules」ダイアログ6403は更新され、変更の前のスケジュールのように変更されたスケジュールを反映する。
既存のスケジュール・アイテム1115を編集するには、ユーザは、色付きバーをダブルクリックするか、または「Schedule Item Context」メニューから「Edit Schedule」アイテムを選択して、「Edit Schedule Item」ダイアログを開く。「Edit Schedule Item」ダイアログは、「Edit Schedule Item」ダイアログが「Edit Schedule Item」というタイトルを使用することを除き、「Add Schedule Item」ダイアログと同じダイアログである。
「Edit Schedule Item」ダイアログが表示されたときに、プリセットまたはカスタム位置が選択されると、ビューア2200は、特定のカメラ・サーバ109〜111の制御権を取得し、そのスケジュール・アイテムに対する既存の設定に対応するように位置を変更することを試みる。この制御権は、管理者が「schedule item」ダイアログ内でカメラ・サーバ109〜111の位置を変更するために制御権を取得しようとした際に、上述のと類似の方法で取得される。
5.4.2.1.2 Motion Detection Settings
図71は、「motion detection settings」ダイアログ7100を示す。「motion detection settings」ダイアログ7100で、管理者は、カメラ・サーバ109〜111に関連付けられているセンサにより運動イベントが検出された場合に検出および記録に対する設定をセットアップすることができる。運動検出設定は、「add/edit schedule item」ダイアログ7000で決定されたカメラ・サーバ109〜111の位置設定とともに使用される。
使用可能な運動検出設定は以下のとおりである。
5.4.2.1.2.1 Active Region
アクティブ領域設定は、運動のチェックが実行されるビデオ・フレーム(つまり、サンプル)内に領域を設定するために使用できる。アクティブ設定領域の値は、ビデオ・プレビュー・ウィンドウ7113上にオーバーレイされる領域の境界を示す矩形として表示される。デフォルトでは、この領域は完全画像エリアであり、表示される矩形の辺は、プレビュー・ウィンドウ7113の辺に対応する。管理者は、従来の方法でマウス2203を使用し、表示されている矩形の隅または辺をクリックして、マウス・カーソルを所望のロケーションにドラッグすることができる。ビデオ・プレビュー・ウィンドウ上に描画される表示矩形は、継続的に再描画され、カーソルの移動を追跡し、ユーザが従来の方法でカーソルのドラッグを停止したときに現在位置に留まる。選択された領域は、表示矩形の座標および次元に対応する。
5.4.2.1.2.2 Detect Motion Using
「detect motion using」メニューと呼ばれるプルダウン・メニュー7107は、運動検出が実行される場所を決定するために使用できる。「detect motion using」メニュー7107に関連付けられる値は、運動検出がストレージ・サーバ2300上で実行される場合には「storage server」に設定し、運動検出がカメラ・サーバ109〜111上で実行される場合には「camera server」に設定することができる。デフォルトでは、この値は、「storage server」であることが好ましい。「camera server」のオプションは、カメラ・サーバ109〜111のタイプが運動検出をサポートすると知られている場合にのみプルダウン・メニュー7107内に提示される(例えば、Canon(登録商標)VB150)。カメラ・サーバ109〜111上で運動検出を実行することが、ストレージ・サーバ2300上で運動検出を実行することよりも勝る利点は、ストレージ・サーバ2300が、通常、多数のカメラ・サーバ109〜111からビデオを記録し、運動検出はプロセッサ能力を集中的に使用できる点である。しかし、ストレージ・サーバ2300は、多数のカメラ・サーバ109〜111から同時にアップロードされたビデオ・サンプル・データに対する運動検出を適切に実行することができない場合がある。この場合、管理者側でカメラ・サーバ109〜111上で運動検出を実行させるように選択することが好ましいことが多い。しかし、このようなことは、多くのカメラ・サーバ109〜111が運動検出を直接サポートしていない場合があるため必ずしも可能ではない。
5.4.2.1.2.3 Analysis Frame Rate
運動検出の解析が実行されるフレーム速度を選択するための「analysis frame rate」プルダウン・メニュー7105も用意されている。「analysis frame rate」プルダウン・メニューは、通常、上述のフレーム速度の同じ集まりのうちの1つに設定できる(例えば、0.1から30の範囲内の速度)。
5.4.2.1.2.4 Switch Sensitivity
図からわかるように「switch sensitivity setting」スライダー7101を使用して、低から中までの範囲(つまり、Low〜Med)を表すように、または中から高までの範囲(つまり、Med〜 High)を表すようにスイッチ感度の範囲を変更することができる。
5.4.2.1.2.5 Area Ratio
「area ratio」スライダー7103は、運動検出がトリガされる前に変更しなければならないアクティブ領域の割合を指定するために使用される。スケールは、0%から100%までである。
5.4.2.1.2.6 Duration
「duration」スライダー7109は、運動検出イベントがトリガされる前に運動が生じている時間の長さを指定するために使用することができる。スライダー7109は、0〜5秒である。
5.4.2.1.2.7 Event Priority
「event priority」プルダウン・メニュー7111は、与えられた運動検出設定で運動検出によりトリガされるイベントの優先度を選択するために使用できる。「event priority」フルダウン・メニュー7111は、以下の値のうちの1つに設定できる。
(i)Highest。
(ii)High。
(iii)Medium。
(iv)Low。
(v)Lowest。
5.4.2.1.2.8 Maximum Frame Rate
「maximum frame rate」プルダウン・メニュー7115は、運動イベント(つまり、指定された設定を満たすイベント)がトリガされたときに記録される1秒当たりの最大フレーム数を選択するために使用することができる。
5.4.2.1.2.9 Pre−event recording
「pre−event recording entry」フィールド7117は、イベントの直前に発生したものを取り込むためにイベントが発生する前に記録を実行すべき秒単位の持続時間を入力するために使用することができる。
5.4.2.1.2.10 Post−event recording
「post−event recording entry」フィールド7119は、イベントが発生した後に記録を実行すべき秒単位の持続時間を入力するために使用することができる。「post−event recording entry」フィールド7119が0に設定されている場合、ビデオ・サンプル・データは、運動が検出されている持続時間の間のみ記録される。
「OK」ボタン7121が選択されると、「motion detection settings」ダイアログ7100による運動検出設定が、ビューア2200のメモリ2206内に構成されたデータ構造に追加される。上述のように、運動検出設定は、管理者が「recording schedule」ダイアログ6403の「Save Schedule」ボタン6913を選択するまで、ストレージ・サーバ2300に送信されない。
5.4.2.1.3 Sensor Event Settings
図72に示されているように、「sensor event settings」ダイアログ7200を使用することにより、ユーザは、カメラ・サーバ109〜111に関連付けられたセンサのトリガの発生に基づき記録設定を指定できる。カメラ・サーバ109〜111が複数の関連付けられたセンサを持つ場合、それぞれのセンサは、異なるダイアログ上で表される。
カメラ・サーバ109〜111が複数のカメラのビューイング/記録をサポートしている場合(例えば、マルチプル・モードのCanon(登録商標)VB150)、異なる記録設定を、関連付けられたカメラ・サーバ109〜111上での単一センサのトリガに基づきそれぞれの関連付けられたカメラ・サーバ109〜111(つまり、記録なしの設定を含む)について構成できる。
センサ名7201は、関連付けられたカメラ・サーバ109〜111から取り出され、これは、ダイアログ7200に関連付けられた特定のセンサに関連付けられるようにカメラ・サーバ109〜111のメモリ内に構成される名前である。
「record on this event」チェックボックス7203は、イベントが特定のセンサからトリガされたときに記録を開始するかどうかを指定するために使用される。「record on sensor event」チェックボックス7011が「add/edit schedule item」ダイアログ7000内でチェックされている場合、システム100は、「sensor event settings」ダイアログ7200内の「record events on this sensor」チェックボックス7203がチェックされているかを決定する。「sensor event settings」ダイアログ7200内のチェックボックス(例えば、7203)のどれもがチェックされていない場合、「Sensor 1」ダイアログ7205上のチェックボックス7203は自動的にチェックされる。チェックボックス7203のどれかがチェックされている場合、設定はそのまま残される。ユーザが「record events on this sensor」チェックボックス(例えば、7203)すべてのチェックマークを外し、「OK」ボタン7207をクリックした場合、「add/edit schedule item」ダイアログ7000の「record on sensor event」チェックボックス7011は自動的にチェックマークを外される。「add/edit schedule item」ダイアログ7000の「record on sensor event」チェックボックス7011のチェックマークが外された場合、「sensor event settings」ダイアログ7200内の設定は、そのまま残される。
「priority of this event」プルダウン・メニュー7209は、「sensor event settings」ダイアログ7201に関連付けられている特定のセンサによりトリガされたイベントに関連付けられる優先度を決定するために使用される。「priority of this event」プルダウン・メニュー7209の値は、上の運動検出設定の場合と同じである。
プレビュー・ウィンドウ7211、プリセット・コントロール7213、バックライト補正7215、およびプレビュー・ウィンドウ7211上のカメラ・コントロール7217は、上述の「add/edit schedule item」ダイアログ7000で説明されているように使用される。
関連付けられたカメラ112〜115が制御される位置(つまり、プリセット位置を使用するか、またはプレビュー・ウィンドウ上のカーソル・コントロール・ツール6800を使用してユーザにより制御される)は、メモリ2206内に格納され、イベントが特定のセンサからトリガされた場合に関連付けられたカメラ112〜115が移動される先の位置を表す。したがって、記録スケジュールの構成が完了した後(つまり、設定が行われ、「Save Schedules」ボタン6913がストレージ・サーバ2300に変更を保存するために選択された後)、位置は、与えられたスケジュール・アイテムについて関連付けられたカメラ112〜115に対する特定のセンサに関連付けられるように格納される。
上述のように、ストレージ・サーバ2300上の記録エンジン201は、構成情報を使用することで、特定のスケジュール・アイテムにおいてイベントが特定のセンサから受信された場合に、特定のカメラ・サーバ109〜111に関連付けられたカメラ112〜115を指定された位置をポイントするように再配置する。
最大フレーム速度7221、事前イベント記録7221、および事後イベント記録7223に対する設定は、上記の運動検出について説明されたものに対応する機能を備える。
5.4.2.2 Special Day Settings
「special day schedule」は、祝祭日などの特別日に対する異なる記録設定をセットアップするために使用することができる。図73に示されているように、「Special day schedule」アイテムは、「Days to use this schedule」リスト7301で指定された日付の「normal schedule」アイテムをオーバーライドする。
5.4.2.2.1 Schedule Type
ユーザは、異なる種類の特別日に対しスケジュール・タイプを定義することができる。例えば、週末の祝祭日では、その週の祝祭日に対し異なる記録設定を使用することがありえる。このようなスケジュールは、再利用可能であり、編集または削除できる。その後、特別日スケジュールが適用される日が追加される。「Add」ボタン7303を選択することにより、管理者向けに、管理者側でスケジュール・タイプの名前を入力できるダイアログが表示される。
スケジュール・タイプが削除され、削除されたスケジュールに関連付けられている未来の日付がある場合、ユーザに対し警告が与えられ、そのスケジュール・タイプを削除する前にそれらの日付を削除するよう求められる。
図73に示されているように、スケジューリング・エリア7305は、機能的には、「normal recording schedule」ダイアログ7000のスケジューリング・エリア6905と同じである。しかし、スケジューリング・エリア7305は、単一の日しかカバーしない。特別日では、特別日スケジュールが、0000hrsから2400hrsまでの通常記録スケジュールをオーバーライドする。特別日スケジュールを長い週末に延ばすには(つまり、Fri、Sat、およびSun)、3日すべてを日のリストに追加し、スケジュール7301を使用するようにする必要がある。
ユーザが最初に特別日記録スケジュールをセットアップしたときに、「schedule type」リスト7305は空である。
5.4.2.2.2 Days
スケジュール・タイプが使用されるときに日を追加するには、ユーザが「Add」ボタン7303をクリックすると、カレンダー・コントロールが表示され、そこで、ユーザは、使用されるスケジュール・タイプに対する日を選択する。カレンダー・コントロールは、日を選択するための従来のカレンダー・コントロールである。スケジュール・タイプは、「Add」ボタン7303がクリックされたときに「schedule type」パネル7307内で選択される必要がある。
カレンダー・コントロール内で、日付をクリックしてその日付を選択し、「OK」ボタンをクリックしてカレンダー・コントロールを閉じて、選択された日付を「Days to use this schedule」リスト7301に追加する。
ユーザが同じ日を異なる特別日スケジュールに関連付けようとすると、ユーザは警告を与えられ、新しい日を作成する前に他のエントリを削除するよう求められる。
スケジュールされた特別日が過ぎると、スケジュールされた特別日はイタリック体と灰色でリスト7301内に表示される。このような過ぎ去った日をリスト7301からクリアするには、ユーザは、それらを選択し、「Delete」ボタン7308を使用して削除することができる。
上述の通常スケジュールと同様に、「Save Schedule」ボタン7309が押されるまで、ストレージ・サーバ2300に変更は加えられない。ストレージ・サーバ2300に変更が送られる方法は、上述の通常スケジュールの場合と同じである。
5.4.3 Viewer Settings
図74に示されているように、「configuration and preferences」画面6401の「viewer settings」ダイアログ7400は、それぞれビューア(例えば、2200A、2200B、2200C、および2200D)に特有の設定を構成するために使用することができる。これらの設定は、ビューア2200のハード・ディスク・ドライブ2210内に格納され、ビューア2300によってのみ使用される。これらの設定は、他のビューア2200により使用するためマスタ・ストレージ・サーバ2300A上に格納されない。ビューア設定の値は、通常、ハード・ディスク・ドライブ2210内に構成されたファイル・システム上のビューア構成ファイルに、またはビューア2200のオペレーティング・システムにより保持されているレジストリ内のエントリとして格納される。
ビューア設定は、以下からなる。
(i)Live Video Viewing Settings。
(ii)Master Storage Server。
(iii)Event Notification Settings。
5.4.3.1 Live Video Viewing Settings
「Iive video viewing settings」プルダウン・メニュー7401は、ライブ・ビデオを表示する最大フレーム速度を制御するために使用することができる。フレーム速度は、オプションのリストから選択される。これらのオプションは、通常、上で与えられたフレーム速度の同じリストとなるであろう。デフォルト値は、毎秒5フレームである。
選択されたフレーム速度は、ビューイング画面7600上のそれぞれのビデオ・ウィンドウに適用され、これは、カメラ・サーバ109〜111がネットワーク2220上で単一のライブ・ビデオ・サンプル・ストリームをビューア2200に送信するように構成される最大フレーム速度である。選択されたフレーム速度は、「configuration and preferences」画面6401内のビデオ・ウィンドウ(例えば、7625)のフレーム速度に適用されず、そのフレーム速度は、そのダイアログおよび結果として表示されるダイアログ内の特定の設定に従って選択される。
5.4.3.2 Master Storage Server
マスタ・ストレージ・サーバ2300Aとして使用されている現在のストレージ・サーバ(例えば、2300A、2300B、2300C、および2300D)は、編集不可能テキスト・フィールド7403内に表示される。編集不可能テキスト・フィールド7403は、管理者の情報用である。このフィールドは、マスタ・ストレージ・サーバ2300Aの名前および、マスタ・ストレージ・サーバ2300Aにアクセスするために使用されるホスト名またはIPアドレスを示す。
5.4.3.3 Event Notification Settings
上述のように、特定の時刻に特定のカメラ112〜115に関連付けられた運動イベントまたはセンサ・イベントは、ビデオ・サンプル・データの記録をトリガすることができ、特定の優先度レベルに設定できる。イベントは、以下のように、ビューイング画面7600内で表すために使用される5つの指定優先度に従って分類される。
(i)Highest。
(ii)High。
(iii)Medium。
(iv)Low。
(v)Lowest。
それぞれのイベント優先度は、特に「live events」ウィンドウ内で、ビューイング画面7600上のイベントの外観と処理に影響を及ぼす4つの設定を持つ。
さらに、ビューア2200は、特定の方法でオペレータに通知し、オプションにより、特定の優先度のイベントの発生に基づくオペレータによるアクションを必要とするように構成することができる。
図74に示されているように、特定の優先度に関して「operator notification」チェックボックス(例えば、7405)にチャックマークが入っている場合、このチェックマークの入っているチェックボックスは、対応する優先度のイベントが受信されたときに、ハード・ディスク・ドライブ2210内に構成されたライブ・イベント・ログ7619(図76を参照)内のイベントの表現が点滅しなければならないことを示している。指定された秒数の値は、イベントの表現が点滅しなければならない持続期間を示す。
特定の優先度に関して「operator acknowledgement」チェックボックス(例えば、7407)にチェックマークが入った場合、チェックボックス7407は、対応する優先度のイベントが受信されたときに、オペレータがライブ・イベント・ウィンドウ上をクリックすることによりイベントを承認するまでライブ・イベント・ウィンドウ内でハイライト表示される。
特定の優先度に関して「audio alert」チェックボックス(例えば、7409)にチェックマークが入っている場合、チェックボックス7409は、対応する優先度のイベントが受信されたときに、オーディオ・アラートが与えられることを示す。オーディオ・アラートは、指定された場合、オペレータ通知持続時間設定7411の持続時間の間繰り返される。オペレータ通知持続時間設定7411が指定されていない場合、オーディオ・アラートがイベント毎に1回再生される。
5.4.3.4 Viewer Configuration File
図75は、ビューア構成ファイル7500の一実施例を示す。
5.5 ビューイング画面
図76は、ビューイング画面7600を示す。上述のように、ビューア2200がマスタ・ストレージ・サーバ2300Aに接続し、ログインできる場合、マスタ・ストレージ・サーバ2300Aがビューア2200が実装されるのと同じコンピュータ・モジュール(例えば、2301)上に実装される場合を含めて、ユーザは、ビューイング画面7600を提示される。
ビューイング画面7600は、タイトルおよびメニュー・バー7601、カメラ選択エリア7603、レイアウト・エリア7605、および時刻表エリア7607である4つのメイン・セクションを含む。ビューア2200が起動された(つまり、ビューア・アプリケーション・ソフトウェアが実行された)場合、ビューイング画面7603を含み、本明細書ではビューイング画面7600として総称される、メイン・ウィンドウは、現在の画面解像度で最大化される。ユーザは、メイン・ウィンドウを使用可能な解像度にサイズ変更することができる。メイン・ウィンドウをサイズ変更する場合、メニュー・バー7601、カメラ選択エリア7603、および時刻表7607の高さはすべて、同じままであるが、レイアウト・エリア7605は、残りの領域を占有するようにスケーリングされる。
メニュー・バー7601は、メイン・ウィンドウのタイトルとともに、標準コンポーネントを使用して構築され、従来の方法により、アプリケーション・アイコン、タイトル、ウィンドウ・コントロール、およびメニューを表示する。
5.5.1 カメラ選択
カメラ選択エリア7603は、監視に使用できるカメラ112〜115のそれぞれに関連付けられたサムネイルを表示し、レイアウト・エリア7605内でユーザが表示することを望んでいるカメラ112〜115を選択するために使用される。カメラ選択エリア7603は、「location」7609および「zone」7611メニューおよびカメラ・サムネイル・エリア7613で構成される。
マスタ・ストレージ・サーバ2300Aから取り出されたネットワーク・ビデオ・レコーダ構成データは、カメラ選択エリア7603に初期値を入力するために使用される。
ビューイング画面7600が表されると、ビューア2200は、「location」メニュー7609にネットワーク・ビデオ・レコーダ構成データ内のロケーションのリストを初期値として表示し、「zones」メニュー7611にネットワーク・ビデオ・レコーダ構成データ内のZonesのリストを初期値として表示する。最初に、ビューア2200の起動後に、「Locations」のリスト内の第1の「Location」が表示され、その「Location」に関連付けられた「Zones」のリスト内の第1の「Zone」が表示される。その後、ビューア2200は、「Location」内の第1の「Zone」が選択された場合に対応する方法で、カメラ・サムネイル・エリア7613に「Locations」のリスト内の第1の「Location」内のカメラ112〜115に関連付けられているサムネイル(例えば、7615)を初期値として表示する。
マスタ・ストレージ・サーバ2300A上のネットワーク・ビデオ・レコーダ構成データがまだセットアップされていないか、または空になるように構成されている場合、それぞれのメニュー7609、7611で使用可能なLocationsまたはZonesがなく、またカメラ・サムネイル・エリア7613にカメラ・サムネイル(例えば、7615)がない。
カメラ・サムネイル(例えば、7615)の表示の制御が、「Location」プルダウン・メニュー7609および「Zone」プルダウン・メニュー7611を通じて行われる。ユーザが「Location」メニュー内のロケーション・アイテムを選択した場合、「Zone」メニューは、そのLocation内にあるZonesのみを含むように更新される。それと同時に、カメラ・サムネイル・エリア7613は、さらに、カメラに関連付けられているサムネイルのみが選択されたLocationに表示されるように更新される。
ユーザが「Zone」メニュー7611内で「Zone」アイテムを選択した場合、対応する「Zone」ダイアログがスクロールし、「Zone」ダイアログの左辺がサムネイル・エリアの開始(左辺)に揃えられ、ユーザはそのZone内のカメラのサムネイルを簡単に使用できる。スクロール・バー7623は、画面上のカメラ・サムネイル・エリア7613内に収められるサムネイルがまだあるか、または「Zone」ダイアログが一番左の表示可能位置に表示されるようにZoneが選択された場合にのみ表示されるので、通常選択されたZoneのサムネイルの左へ描画されるカメラ・サムネイル(例えば、7615)は隠される。
カメラ・サムネイル・エリア7613内のカメラ・サムネイル(例えば、7615)は、「Zone」タブ(例えば、「Carpark」7621)に編成されるが、それぞれの「Zone」タブはそのゾーン内にあるカメラのそれぞれに関連付けられたサムネイルを含む。「Zone」タブは、さらに、ゾーンの名前も含む。それぞれのサムネイル(例えば、7615)の下に、対応するカメラ112〜115の名前が表示される。名前がカメラ・サムネイル(例えば、7615)の幅よりも長い場合、サムネイルがサムネイルの下に表示され、隣のサムネイルの名前とオーバーラップしないように名前が切り詰められる。
それぞれの「Zone」タブ(例えば、7621)は、「Zone」プルダウン・メニュー7611と同じ順序で水平方向に順に配列される。ユーザは、スクロールバー7623をクリックしてドラッグすることによりカメラ・サムネイル・エリア7613をスクロールすることができる。その結果、他のカメラ・サムネイルを表示し、使用することができる。サムネイル(例えば、7615)は、カメラ112〜115の詳細がネットワーク・ビデオ・レコーダ構成データ内に格納される順序で「Zone」タブ(例えば、7621)とともに表示される。
カメラ112〜115から取り込まれ、カメラ・サーバ109〜111により送信されるビデオ・サンプル・データを表示するために、ユーザは、レイアウト・エリア7605上にビデオ・ウィンドウ7625を作成できる。ユーザは、レイアウト・エリア7605内で適切なサムネイル(例えば、7615)を選択し、カーソルをレイアウト・エリア7605上にドラッグすることによりビデオ・ウィンドウ7625を作成することができる。ドラッグ・アクションの実行中に、ビデオ・ウィンドウの境界ボックスを表す矩形のアウトラインが作成され、カーソルに追随する。ユーザが押している手を離すと、ビデオ・ウィンドウが矩形アウトラインを同じ位置で置き換わり、ビューア2200は、サムネイルにより表されるカメラ112〜115に関連付けられているカメラ・サーバ109〜111との接続を行い、ビデオ・ウィンドウには、そのカメラ112〜115からの画像を表すライブ・ビデオ・サンプル・データを表示する。
ユーザは、多数のサムネイルを使用して類似のオペレーションを実行し、レイアウト・エリア7605上の異なる位置に異なるカメラ112〜115に関連付けられている異なるビデオ・ウィンドウ(例えば、7625)を形成することができる。ユーザは、同じサムネイルを何回も使用して類似のオペレーションを実行し、それぞれ同じカメラ112〜115からビデオを表示するレイアウト・エリア7605上の異なる位置に異なるビデオ・ウィンドウ(例えば、7625)を形成することができる。
ユーザがマウス2203を使用してカメラ・サムネイル上をロールする場合、関連付けられたカメラ112〜115の完全な名前がディスプレイ2214上にツール・チップで表示される。カメラ・サムネイルの下に収まるように名前が切り詰められている場合、ツール・チップを使用するとユーザはカメラ112〜115の完全な名前を見ることができる。
前に説明したように、それぞれのサムネイルに使用される画像は、「add/edit camera server」ダイアログ7000内で管理者により設定される。
5.5.2 レイアウト・エリア
レイアウト・エリア7605は、カメラ112〜115からのライブ・ビデオ・サンプル・データおよびストレージ・サーバ2300からの記録済みサンプル・データに対応する複数のビデオ・ウィンドウ(例えば、7625)を表示するために使用される。上述のように、それぞれ特定のカメラ・サーバ112〜115に関連付けられた一組のビデオ・ウィンドウ(例えば、7625)の、レイアウト・エリア7605内の特定の配列をレイアウトと呼ぶ。ユーザは、レイアウト・エリア7605上に特定のカメラに関連付けられたビデオ・ウィンドウの配列を行い、その配列を将来使用するレイアウトとして保存することができる。
共有レイアウトのデータおよびマスタ・ストレージ・サーバ2300Aから取り出されたパーソナル・レイアウトのデータを使用して、ビューア2200のメモリ2206内に構成されたツリー構造に初期値を設定する。ツリー構造は、レイアウトを表す最上位ノードを持ち、その中に、共有レイアウトを表すノードおよびパーソナル・レイアウトを表すノードを持つ。それぞれのノード内に、対応するレイアウトの集まりの表現がある。レイアウトは、階層構造に応じてサブフォルダ内の共有およびパーソナル構造のそれぞれにグループ化することができる。例えば、共有レイアウトの構造は、構造の最上位レベルでいくつかのレイアウトを含み、それ自身レイアウトを含むサブフォルダを含むことができる。サブフォルダは、ユーザにより名前を割り当てられる。それらのサブフォルダは入れ子にできる。例えば、会社によりシステム100内で使用される共有レイアウトは、それぞれの市グループ内で、異なる市に関連付けられた別々のグループを持つ可能性があり、それぞれの市内、それぞれのビル・グループ内で異なるビルに関連付けられた別々のグループがありえ、それぞれビルの異なる部分に対する異なるレイアウトを含む、レイアウトの集合がありえる。
特定のレイアウトは、単一レイアウト内のLocationまたはZoneからのカメラ112〜115を含むことができる。レイアウトの階層は、LocationsおよびZonesの階層から独立している。
ビューア2200がビューイング画面7600を表示する場合、ビューア2200は、レイアウト・ツリー構造を使用して、「Layout Selection」メニューに初期値を設定する。「Layout Selection」メニューは、一般的レイアウト・オペレーション(例えば、「new layout」、「save」、「save as」、「organise」)を含み、その後に、水平セパレータ、共有レイアウト構造内の最上位ノードのリスト(つまり、レイアウトおよびサブフォルダ)、水平セパレータ、パーソナル・レイアウト構造の最上位ノードのリスト(つまり、レイアウトおよびサブフォルダ)と続く。
ユーザは、マウス2203などの入力デバイスを使用して、ビデオ・ウィンドウをレイアウト・エリア7605に追加し、ビデオ・ウィンドウ(例えば、7625)の移動、サイズ変更、および削除を行い、レイアウト・エリア7605上に表示されるグリッドのタイプを変更することができる。グリッドのタイプの変更について、以下でさらに説明する。
ユーザは、ビデオ・ウィンドウの現在の配列をレイアウト・エリア7605上にレイアウトとして保存し、特定の名前をそのレイアウトに関連付けることができる。異なるレイアウトを、異なるレイアウト名を使用して保存できるため、サンプル・データを監視し、および/または記録済みサンプル・データを表示するためにそれぞれ使用できる多数の異なるレイアウトがありうる。例えば、ユーザは、そのエリアを都合よく監視するためビルの特定のエリアに対応するようにレイアウトをセットアップすることができる。他の実施例では、ユーザは、特定の日にちに重要な活動のエリアに対応するようにレイアウトをセットアップすることができる。他の実施例では、管理者は、その管理者が監視する必要のあるビデオ・ウィンドウ(例えば、7625)を含む特定のオペレータ用のレイアウトをセットアップすることができる。他の実施例では、ビューア2200がサーフ・ビーチを表示するウェブカメラを見るために使用されている場合、ユーザは、お気に入りのサーフ・ビーチに対応するようにレイアウトをセットアップすることができる。
レイアウトの集合(例えば、共有レイアウトの集合または特定のユーザ名に関連付けられたパーソナル・レイアウトの集合)は、レイアウトの順序付き集合からなる。レイアウトの順序付き集合は、通常、作成順に順序付けされるが、他の実装では、アルファベット順またはユーザ定義順など他の方法で順序付けることができる。
レイアウトは、レイアウト名、グリッド・タイプの値、およびビデオ・ウィンドウの表現のリストからなるデータ構造として、マスタ・ストレージ・サーバ2300Aから取り出された後、マスタ・ストレージ・サーバ2300A上のレイアウト・ファイル、およびビューア2200上のメモリ2206内で表現される。それぞれのビデオ・ウィンドウ表現は、カメラ112〜115の識別子、レイアウト・エリア7605内の対応するビデオ・ウィンドウの左上コーナーに対するXおよびY座標、および対応するビデオ・ウィンドウの幅および高さに対する値からなる。実装のいくつかの変更形態では、カメラ識別子は、カメラ112〜115に関連付けられた一意的な番号、カメラ112〜115に関連付けられた一意的な名前、カメラ112〜115に関連付けられたホスト名またはIPアドレス(オプションにより特定のポート・アドレスを持つ)、または他の何らかの形の特定のカメラ・サーバの識別方法とすることができる。
ビューイング画面7600がビューアが起動した後最初に表示される場合、ビューア2200は、マスタ・ストレージ・サーバ2300Aから返されたレイアウトの構造の第1のパーソナル・レイアウトをロードする。第1のパーソナル・レイアウトは、現在のユーザに対する第1のレイアウトに対応する(つまり、上述のログイン・ダイアログで入力された値により定義される)。第1のパーソナル・レイアウトは、レイアウト・エリア7605内に表示される。マスタ・ストレージ・サーバ2300Aから返されたパーソナル・レイアウトがない場合、代わりに第1の共有レイアウトがロードされる。
ビューア2200がレイアウトをロードする場合、ビューア2300は、グリッド・タイプを決定し、レイアウト・エリア7605上にポイントまたはラインを適宜描画するが、これについて以下で詳述する。その後、ビューア2200は、ビデオ・ウィンドウの表現のリストを1つずつ辿り、指定されたXおよびY位置、指定された幅および高さのビデオ・ウィンドウ(例えば、7625)を作成する。それぞれのビデオ・ウィンドウについて、ビューア2200は、ビデオ・ウィンドウ表現に関連付けられている識別子により識別されるカメラ112〜115に関連付けられているカメラ・サーバ109〜111に接続を試み、カメラ・サーバ109〜111を介してカメラ112〜115からビデオ・ウィンドウ(例えば、7625)に入るビデオ・サンプル・データのライブ・ストリームを表示する。
ビューア2200は、さらに、それぞれのカメラ112〜115に関連付けられているイベントを取得するためにレイアウト・エリア7605内に表示されるカメラ112〜115に関連付けられているそれぞれのストレージ・サーバ2300に要求を行う。その後、ビューア2200は、時刻表7607にそれらのイベントを初期値として設定する。ビューア2200がすでに終了しているときに表示されるライブ・イベント・ログ7619をユーザがすでに持っていた場合、ライブ・イベント・ログ7619が表示される。これはライブ・イベント・ログ7619であるため、クライアント・アプリケーションが起動したときに発生するイベントのみが表示される。
レイアウト・エリアでは、通常、4つの異なるグリッド・タイプが許される。これらは通常以下のとおりである。
(i)Alignment。
(ii)Small。
(iii)Medium。
(iv)None。
他のタイプのグリッドも、他の実装で使用可能にできる。グリッド・タイプは、図77に示されているように、「layout selection」メニュー7700から選択されるか、またはレイアウト・エリア7605内を右クリックして、コンテクスト・メニュー7701から「layout grids」を選択し、その後グリッド・タイプを選択することにより、選択される。グリッド・タイプが選択されると、そのグリッドに関連付けられているポイントまたはラインが、レイアウト・エリア7605上に描画される。グリッドは、「None」を選択することによりオフにされ、その場合、グリッド・ラインまたはドットが画面から削除される。グリッド・タイプを変更しても、レイアウト・エリア7605上にすでに表示されているビデオ・ウィンドウ(例えば、7625)に影響しない。グリッド・タイプを変更すると、ユーザ対話操作に従ってレイアウト・エリア7605上に配置されるその後のビデオ・ウィンドウに影響する。
デフォルトでは、レイアウトは、ビデオ・ウィンドウのサイズおよび位置が定義済みグリッドにスナップする位置揃えグリッドを使用する。このようなスナップ操作により、ユーザはその時刻に最も重要なものに応じて、異なるビデオ・ウィンドウ間に視覚的階層を確立することができる。レイアウトは、さらに、異なるタイプのグリッドを使用して他のグリッド配列に編成することもできる。
位置揃えグリッドは、図78に示されているように、ドット7800からなる規則正しいグリッドとして表示される。ビデオ・ウィンドウ(例えば、7625)は、再配置またはサイズ変更された場合にグリッドにスナップする。位置揃えグリッド7800は、異なるサイズのビデオ・ウィンドウを揃えるために使用される。例えば、図79は、位置揃えグリッド7800を使用して配列された多数のビデオ・ウィンドウ7901、7903、7905、および7907を示している。位置揃えグリッドが使用される場合、ビデオ・ウィンドウは、レイアウト・エリア内の任意のロケーションに配置できる(一番近いグリッド・ポイントの位置にスナップするが)。このようにして、ビデオ・ウィンドウは、様々なサイズとすることができ、ビデオ・ウィンドウは互いにオーバーラップすることができる。小および中グリッド・タイプ(以下参照)と異なり、位置揃えグリッドが使用される場合、ビデオ・ウィンドウのサイズは、互いに厳密な倍数関係にある必要はない(例えば、一方のビデオ・ウィンドウは、他方のビデオ・ウィンドウの幅および高さの1.1倍とすることができる)。これにより、レイアウトに非常に大きな柔軟性が得られる。
グリッド・タイプが選択されない場合(つまり、「None」が選択される)、グリッドまたはグリッド・ポイントはない。この場合、ドラッグ・アウトしてビデオ・ウィンドウを形成する場合の挙動は、グリッドへのスナップがないことを除き位置揃えグリッドの場合と同じである。これにより、ビデオ・ウィンドウの位置設定およびサイズ設定の柔軟性が完全なものとなる。
グリッド・タイプは、さらに、図80に示されているような小グリッド8000、図81に示されているような中グリッド8100のうちの1つに構成することもでき、その場合、グリッド7800のセルは、ボックスの複数の行として表示される。図82は、小グリッド8000を使用して配列されたビデオ・ウィンドウ(例えば、8201)を示しており、図83は、中グリッド8200を使用して配列されたビデオ・ウィンドウ(例えば、8301)を示す。
小および中グリッド・タイプ8000および8100は、それぞれ、すべてのビデオ・ウィンドウが同じサイズであるか、または大きいほうのビデオ・ウィンドウのサイズが小さいほうのビデオ・ウィンドウのサイズの倍数となっている場合にレイアウトを作成するに役立つ。小および中グリッド・タイプでは、グリッド7800の中にドラッグされるビデオ・ウィンドウは、ドラッグがサムネイル(例えば、7615)から開始したか、またはレイアウト・エリア7605上の他の位置から開始した場合に、自動的に再配置され、ビデオ・ウィンドウの辺は、そのビデオ・ウィンドウがドロップされたセルの辺に揃えられる。ビデオ・ウィンドウは、セル内に収まるようにサイズ変更される。ユーザがビデオ・ウィンドウのサイズを変更し、押下する手を離した場合(例えば、ドラッグの後、マウス2203のボタンを離す)、ビデオ・ウィンドウのサイズは、離した時点でビデオ・ウィンドウのサイズに最も近いサイズを持つ領域に収まるようにスナップする。この領域は、単一セルまたは複数のセル(例えば、幅2×高さ2のセルのブロック、または幅3×高さ3のセルのブロックなど)とすることができる。例えば、小グリッド内のビデオ・ウィンドウは、最初に1つのセルを占有することができる。ユーザは、右下隅を選択し、画面の右下に向かってドラッグ・アウトすることによりビデオ・ウィンドウのサイズを変更することが可能である。ユーザが離すと、ビデオ・ウィンドウは、セルの最も近いブロックのサイズに収まるようにサイズ変更される(例えば、4×4グリッド要素)。
グリッド・タイプが変更された場合(例えば、ユーザがグリッド・タイプを「位置揃え」から「小」グリッドに変更するか、またはグリッド・タイプの他の変更)、レイアウト・エリア7605内の既存のビデオ・ウィンドウ(例えば、7625)は、再配置またはサイズ変更されない。その後ユーザがそれらのビデオ・ウィンドウのうちの1つを移動またはサイズ変更する場合、ユーザは、カメラ・セレクタからドラッグ・アウトするのと同じプロセスを実行する。
小グリッドでは、通常、160×120ピクセル・ボックスをセルとして使用し、中グリッドでは、通常、320×240ピクセル・ボックスをセルとして使用する。いくつかの実装では、いくつかの小ボックスといくつかの大ボックスを含むテンプレートを備える、グリッドまたはグリッドの組合せの他のサイズも、類似の方法で配列される。
ユーザがレイアウトを作成し、その後メイン・ウィンドウのサイズを縮小した場合、いくつかのビデオ・ウィンドウ(例えば、8301)は、レイアウト・エリア7605内に収まらない場合がある。この場合、スクロールバーが現れ、レイアウト・エリア7605をスクロールできるようになる。さらに、ビデオ・ウィンドウがレイアウト・エリア7605の下部または右の外にドラッグされると、図76に示されているようにレイアウト・エリア7605に関して、仮想レイアウト・エリアが増大し、スクロールバーが現れ、ユーザは表示されているレイアウト・エリア7605を移動し、仮想レイアウト・エリアの異なる部分を表示することができる。
水平および垂直スクロールバーは、ビューイング画面7600を含むメイン・アプリケーション・ウィンドウのサイズが変更され、表示可能エリアの外に配置されるビデオ・ウィンドウがある場合に使用することができる。レイアウト・エリアは、メイン・アプリケーション・ウィンドウをサイズ変更することによりサイズ変更できる。
レイアウト・エリア7605の異なる要素は以下を含む。
(i)レイアウト名7629および選択ボタン7627、
(ii)ビデオ・ウィンドウ(例えば、7625)、
(iii)「Live Events Log」7619。
5.5.2.1 レイアウト名および選択ボタン
レイアウト選択ボタン7629およびレイアウト名7627は、図76に示されているように、レイアウト・エリア7605の左上隅に表示される。レイアウト名7627の表示は、ユーザが現在使用しているレイアウトに関する情報をユーザに示す。レイアウト選択ボタンは、選択されると、選択メニューを表示し、これにより、ユーザは、レイアウトの保存および編成、および他の保存レイアウトの表示切替えを行うことができる。レイアウトは、レイアウト選択メニューからレイアウトの名前を選択することにより選択メニューから選択される。
レイアウトが表示されると、ビデオ・ウィンドウの追加、移動、サイズ変更、削除、およびグリッド・タイプの変更を行うことができる。いつでも、ユーザは、レイアウト選択メニューから「save」または「save as」アイテムを選択することにより、新しい配列を保存することを選択できる。
「save」アイテムを選択することにより、レイアウトは、現在の名前を使用して保存される。「save as」アイテムを選択すると、ユーザに対し、「save as」ダイアログが表示され、これにより、ユーザは、レイアウトに関連付けられる名前を入力し、レイアウト構造内で、ユーザがレイアウト保存したい場所を選択する。レイアウトは、共有レイアウト構造またはパーソナル・レイアウト構造内のサブフォルダに編成することができ、上述のように、サブフォルダはネストすることができる。ユーザは、「save as」ダイアログ内から、新規サブフォルダを作成するか、またはレイアウトまたはサブフォルダを削除することができる。
管理者は、共有レイアウト構造またはパーソナル・レイアウト構造のいずれかにレイアウトを保存することができる。オペレータは、パーソナル・レイアウト構造のみにレイアウトを保存できる。
管理者が共有レイアウトに変更を加え、その後、レイアウト選択メニューから他のレイアウトを選択し、「configuration and preferences」画面6401に変更を加えるか、またはビューア・アプリケーション・ソフトウェアを閉じると、管理者は、その変更を保存するよう求められる。管理者が「Yes」(つまり、変更を保存する)を選択した場合、変更は、同じ名前を使用して上書き保存される。
オペレータが共有レイアウトに変更を加え、その後、メニューから他のレイアウトを選択し、「configuration and preferences」画面6401に変更を加えるか、またはビューア・アプリケーション・ソフトウェアを閉じると、オペレータは、その変更を保存するよう求められる。オペレータが「Yes」(つまり、変更を保存する)を選択した場合、「save layout」ダイアログが表示され、ユーザは新しいレイアウト名の入力を求められるので、オペレータは共有レイアウトを使用することはできるが、変更を上書き保存することはできない。
上記の場合、管理者またはオペレータが「No」を選択した場合、ビューア2200は、レイアウトへの変更を破棄する。
ユーザがレイアウト選択メニューから新しいレイアウト・オプションを選択した場合、「untitled」という名前の新しい空のレイアウトが作成される。既存のビデオ・ウィンドウが、レイアウト・エリア7605から削除される。
ユーザがレイアウト選択メニューから「organize layouts」を選択した場合、ビューア2200は、「organize layouts」ダイアログ8400を起動する。ユーザは、上述のように、ダイアログ8400により提供される機能を使用して、ビューア2200のハード・ディスク・ドライブ2210内に構成されたレイアウト構造内のレイアウトの位置を変更することができる。ユーザは、さらに、サブフォルダのリネームおよび削除、およびレイアウトの移動、リネーム、および削除を行うこともできる。
「organise layouts」ダイアログ8400は、管理者およびオペレータ向けに異なる外観を持つ。管理者の場合、「organise layouts」ダイアログ8400は、「Shared Layouts」8403に対する子ノードおよび「Personal Layouts」に対する子ノード8405とともに図84に示されている「Layouts」8401と呼ばれる最上位レベルのノードを示す。これらのノードのそれぞれの下に、ビューア2200のハード・ディスク・ドライブ2210内に構成されたレイアウト構造を表す階層構造内のそのノード内にあるレイアウト(例えば、「Andrew’s Layouts」)またはサブフォルダが示される。オペレータの場合、「organise layouts」ダイアログ8400は、図85に示されているように、「Personal Layouts」に対する最上位レベルのノード8501を示す。ノード8501の下に、ビューア2200のハード・ディスク・ドライブ2210内に構成されたレイアウト構造を表す階層構造内のそのノード8501内にあるレイアウト(例えば、「Andrew’s Layouts」)またはサブフォルダが示される。したがって、管理者は、共有レイアウトまたはパーソナル・レイアウトを再編成することができるが、オペレータは、パーソナル・レイアウトのみを再編成できる。
管理者が、「save」オプション、「save as」ダイアログ、または「organise layouts」ダイアログ8400を使用してレイアウト構造内でレイアウトまたはサブフォルダの保存、リネーム、または削除、またはレイアウトの移動を行う場合、レイアウトおよびレイアウト構造への変更は、マスタ・ストレージ・サーバ2300Aに送信される。
管理者が変更を加えた場合、ビューア2200は、共有レイアウトおよびパーソナル・レイアウトをマスタ・ストレージ・サーバ2300Aに送信する。オペレータが変更を加えた場合、ビューア2200は、パーソナル・レイアウトをマスタ・ストレージ・サーバ2300Aに送信する。
共有レイアウト構造を送信するために、ビューア2200は、HTTP POSTメソッドを使用してNVR_AdminSetコマンドを要求としてマスタ・ストレージ・サーバ2300Aに送信する。この場合、ビューア2200は、特定のポートで指定されたホスト名またはIPアドレスに接続することを試み、以下のリソース(19)についてHTTP POSTメッセージを送信する。
/webview-nvr/nvr_adminset.fcgi?file=playout (19)
メモリ2206内に格納された共有レイアウト構造からのデータは、要求の一部として送信される。
マスタ・ストレージ・サーバ2300A上の記録エンジン201は、Webサーバ213からHTTP POSTメッセージを受信し、送信された共有レイアウト構造データを読み込み、上述のように、共有レイアウト・データをハード・ディスク・ドライブ2310内のファイルに、共有レイアウトに通常使用される名前で書き込み、既存のファイルが存在すればそのファイルを上書きする。
パーソナル・レイアウト構造を送信するために、ビューア2200は、HTTP Postメソッドを使用してNVR_UserSetコマンドを要求としてマスタ・ストレージ・サーバ2300Aに送信する。この場合、ビューア2200ソフトウェアは、特定のポートで指定されたホスト名またはIPアドレスに接続することを試み、以下のリソース(20)についてHTTP POSTメッセージを送信する。
/webview-nvr/nvr_userset.fcgi?file=ulayout (20)
メモリ2206内に格納されたパーソナル・レイアウト構造からのデータは、要求の一部として送信される。
マスタ・ストレージ・サーバ2300A上の記録エンジン201は、HTTP POSTメッセージを処理し、送信されたパーソナル・レイアウト構造データを読み込み、上述のように、要求に関連付けられたユーザ名に関連付けられたパーソナル・レイアウトのファイル名を決定し、パーソナル・レイアウト・データをハード・ディスク・ドライブ2310内のファイルに、ファイル名とともに書き込み、既存のファイルが存在すればそのファイルを上書きする。
5.5.2.2 ビデオ・ウィンドウ
ビデオ・ウィンドウ(例えば、7625、8201、8301)は、ビューイング画面7600のレイアウト・エリア7605内にライブまたは事前記録済みビデオ・サンプル・データを表示するために使用される。それぞれのビデオ・ウィンドウは、個々のカメラ112〜115のビデオ画像を表示し、ユーザは、ビデオ・ウィンドウを再配置、サイズ変更、または閉じることができる。
ビデオ・ウィンドウが最初に、レイアウト・エリア7605内にロードされたときに、ビデオ・ウィンドウに関連付けられた特定のカメラ・サーバ109〜111は、関連付けられたカメラ112〜115からライブ・ビデオ・サンプル・データをストリーミングする。ユーザがパン、傾斜、またはズーム設定を調整するためカメラ112〜115の制御権を取得したい、または事前記録済みビデオを見たい場合、ユーザは、ユーザが関心を持つ特定のカメラ112〜115に対する関連付けられたビデオ・ウィンドウを選択する。
ビデオ・ウィンドウは、従来の方法で、マウス2203、または類似のデバイスでクリックすることにより選択される。ビューア2200は、自動的にビデオ・ウィンドウを選択する。ビデオ・ウィンドウを選択すると、再生ヘッド9001(図90を参照)が有効になり、後述のように、時刻表7607上のイベントの表示が切り替わる。
選択ボックスをビデオ・ウィンドウの周りでドラッグすることにより多数のビデオ・ウィンドウを選択できる。レイアウト・エリア7605内のすべてのビデオ・ウィンドウは、類似の方法で選択できるか、またはビューイング画面7600の「edit」アプリケーション・メニューから「Select All」を選択することにより、選択できる。
同じビデオ・ウィンドウの複数のインスタンスをレイアウト・エリア7605内にロードすることで、ユーザは、異なるタイムコードから同じカメラ・サーバ109〜111からのビデオ・サンプル・データを比較するか、または一方のビデオ・ウィンドウ内の事前記録済みサンプル・データを、他のウィンドウでライブ・ビデオ・サンプル・データを見ながら、検討することができる。
一方のカメラ・サーバ109〜111に関連付けられている一方のビデオ・ウィンドウ(例えば、7625)が選択され、ユーザが他方のビデオ・ウィンドウをクリックした場合、ビューア2200は、第1のカメラの選択を解除する。1つまたは複数のカメラ・サーバ109〜111に関連付けられた複数のカメラを選択するために、ユーザは、追加ビデオ・ウィンドウを選択しながら「CTRLキー」を押し下げたままにするか、またはユーザが関心を持っているビデオ・ウィンドウの周りで選択ボックスをドラッグすることができる。
複数のビデオ・ウィンドウを選択する場合、選択されたすべてのビデオ・ウィンドウのタイムコードは、第1の選択されたビデオ・ウィンドウと自動的に同期する。例えば、第1の選択されたビデオ・ウィンドウがライブであれば、他のすべての選択されたビデオ・ウィンドウは、ライブ・ビデオを表示するように更新される。第1の選択されたビデオ・ウィンドウが特定の時刻の特定の日付からのビデオ・サンプル・データを再生している場合、他のすべての選択されたビデオ・ウィンドウは、特定の曜日および時刻からの記録済みビデオ・サンプル・データを表示するように調整される。
レイアウト・エリア7605内の空の領域をクリックするか、またはCTRLキーを押し下げたままにし、選択されたビデオ・ウィンドウをクリックすることによりビデオ・ウィンドウの選択が解除される。
ビデオ・ウィンドウは、ウィンドウの右下隅をドラッグすることによりサイズ変更することができる。いくつかの実装では、ビデオ・ウィンドウのサイズに制限がある。本明細書で説明されている実装では、ビデオ・ウィンドウをスケーリングできる最小サイズは、96×72ピクセルである。
ビデオ・ウィンドウが最初にロードされるか、またはカメラ選択エリア7603からドラッグ・ダウンされる場合、ビューア2200は、適切なカメラ・サーバ109〜111へのライブHTTP接続を確立することを試みる。ライブHTTP接続は、米国特許第6,484,195号(Canon Kabushiki Kaisha)で説明されているようなHTTP上のカメラ・サーバ・プロトコルを使用して実行される。接続管理オブジェクトは、すべての進行中のカメラ接続を追跡する。複数のビデオ・ウィンドウが同じカメラ112〜115のレイアウト・エリア7605内に存在する場合、接続管理オブジェクトは、接続およびビデオ・ストリームが再利用されることを保証する。接続管理オブジェクトは、カメラ接続オブジェクトのベクトルおよびそれぞれのビデオ・ウィンドウの識別子および接続コールバック関数のアドレスを保持する構造を保持する。カメラ・サーバ109〜111への接続がビデオ・ウィンドウにより必要とされる場合、接続管理オブジェクトに対し、カメラ接続へのポインタについてのクエリが実行される。接続管理オブジェクトは、カメラ接続の要素を所望のホスト名およびポートと比較することにより既存の接続があるかどうかを決定する。カメラ接続が存在しない場合、新しい接続オブジェクトが作成されて返され、存在すれば、既存のオブジェクトが返される。両方の場合において、カメラ接続オブジェクトを特定のビデオ・ウィンドウと接続する新しい関係オブジェクトも作成される。カメラ接続オブジェクトへの参照回数のカウントを保持する関係オブジェクトが存在し、またこれにより、特定のビデオ・ウィンドウが利用するカメラ接続オブジェクトの探索が容易になる。
それぞれのカメラ接続オブジェクトは、さらに、カメラ接続オブジェクトに関連付けられたコールバック関数ポインタの複数のベクトルを持ち、それらはすべて、接続失敗、画像受信、およびイベント・トリガなどの特定のイベントに関する通知を受け取る。ビデオ・ウィンドウが閉じられると、接続管理オブジェクトは、カメラ・オブジェクトに関連付けられているコールバック関数の登録を解除し、関係オブジェクトを削除する。最後の関係オブジェクトが削除されると、カメラ接続オブジェクトが削除される。接続は、カメラ接続要求が失敗するか、または接続が途絶した場合に再試行される。
カメラ112〜115とのライブ接続が確立された後、ビデオ・サンプル・データは、メモリ2206内に構成されたバッファにフレームをストリーミングすることを開始する。カメラ接続オブジェクト内のコールバック関数は、サンプルが受信される毎に呼び出される。次に、カメラ112〜115に関連付けられている開いているビデオ・ウィンドウ内のコールバック関数は、ビデオ・ウィンドウが他のサンプルを受信する準備ができている場合であっても呼び出される。関連付けられたビデオ・ウィンドウは、ビデオ・ウィンドウが前のフレーム上の処理を完了しておらず、コールバック関数経由ですでに通知されている場合、追加サンプルを受信する準備はできていない。この場合、ユーザ・インターフェース・スレッドは、新しい画像の処理が必要であるということをコールバック関数で通知されない。アクセスに関して要素をロックする、長さ2の保護されたバッファがある。ビデオ・アイコンが最新の要素を読み込んだ場合、より新しいサンプルがバッファの非ロック要素内のサンプルを更新する可能性がある。
図86および87に示されているように、ビデオ・ウィンドウ(例えば、8700)は、タイトル・バー8601、ビデオ・ディスプレイ8701、事前記録済みビデオ・インジケータ8603、およびイベント・インジケータ8705からなる。さらに、ビューア2200がカメラ112〜115を制御する場合、ビデオ・ウィンドウに、方向およびズーム・カーソル・コントロールを表示する(カーソルは、図68に示されているように、ビデオ・ウィンドウ内の位置に応じて異なるカーソルに変化する)。
5.5.2.2.1 タイトル・バー
ビデオ・ウィンドウ(例えば、8700)は、以下を表示するタイトル・バー8601を持つ。
(i)メニュー・ボタン8605、
(ii)カメラ名8607、
(iii)運動検出またはセンサ8705などのイベント、
(iv)ライブ・ビデオ8703または事前記録済み8603ビデオ・アイコンおよびタイムコード。
ビデオ・ウィンドウ8700がタイトル・バーのすべての要素を表示するだけの十分な広さを持たない場合、それらの要素は、以下の順序で切り詰められる−ライブ・ビデオを表示するときに、切り詰められる第1の文字列はLIVEテキストであり、続いてカメラ名である。ビデオ・ウィンドウ・メニューおよびライブ8703または再生アイコンは常に表示される。事前記録済みビデオを表示する場合、切り詰められる第1の文字列は日付であり、その後、時刻、カメラ名と続く。テキストを切り詰めた場合、表示できない文字は、切り捨てられ、「...」で置き換えられる。
メニュー・ボタン8605は、以下のように、個別のビデオ・ウィンドウおよび特定のカメラ・サーバ109〜111に特有の機能にアクセスする。
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
ユーザがビデオ・ディスプレイ・メニューからビデオ・ディスプレイ・サイズ(つまり、small(小)、medium(中)、large(大))を選択した場合、ビデオ・ウィンドウは、選択されたサイズに合わせてサイズ変更される(例えば、smallでは160×120ピクセル、mediumでは320×240、largeでは640×480)。
ユーザが「Get Camera Control」または「Release Camera Control」を選択した場合、ビューア2200は、それぞれ、特定のカメラ・サーバ109〜111の制御権を取得するか、または解放するが、これについて以下で詳述する。
表示するプリセット位置を決定するために、ビューア2200は、プリセットを取り出す要求を特定のカメラ・サーバ109〜111に送信し、それらを使用して、プリセット・カメラ角度メニューに初期値を設定する。表示されるプリセット・カメラ角度の数は、返されるプリセットの数によって決定される。プリセット・カメラ角度がない場合、「Preset Camera Angles」の選択は無効である。
ユーザが「Backlight Compensation On」または「Backlight Compensation Off」を選択した場合、ビューア2200は、カメラ・サーバ109〜111上のバックライト補正設定を変更するメッセージを特定のカメラ・サーバ109〜111に送信する。「Backlight Compensation On」または「Backlight Compensation Off」のうちの一方のみが、特定のカメラ・サーバ109〜111上の現在設定に応じて有効化された状態で表示される。
表示する外部デバイス名を決定するために、ビューア2200は、外部デバイス名を取り出す要求を特定のカメラ・サーバ109〜111に送信し、それらを使用して、メニューに初期値を設定する。外部デバイスがない場合、上記で示されているような「Control External Devices」メニュー・オプションは無効にされる。それぞれの外部デバイスについて、「On」メニュー・オプションが有効になっている場合、そのようなものは、特定の外部デバイスがオフにされていることを示し、またその逆も示す。そのような指示により、ユーザは、外部デバイスの現在状態を知ることができ、そのような指示は、特定のカメラ・サーバ109〜111をユーザが制御できる場合にのみアクセス可能である。
上記で示されている「Record Now」選択では、オペレータが、ビデオ・サンプル・データの記録を開始し、現在のスケジュール設定をオーバーライドすることができる。このボタンが選択された場合、ビューア2200は、選択が行われたビデオ・ウィンドウに関連付けられているカメラ112〜115に関連付けられているストレージ・サーバ2300を決定する。ビューア2200は、その後、HTTP POSTメソッドを使用してRE_Triggerコマンドを要求として指定されたストレージ・サーバ2300に送信する。この場合、ビューア2200は、特定のポートを持つストレージ・サーバ2300に対する指定されたホスト名またはIPアドレスに接続することを試み、以下のリソース(21)を使用してHTTP POSTメッセージを送信する。
/webview-nvr/re_trigger.fcgi (21)
上述のように、RE_Triggerコマンドのストレージ・サーバ構成オブジェクトは、要求メッセージの本体内で供給することができる。RE_Triggerコマンドのストレージ・サーバ構成オブジェクトは、選択が行われたビデオ・ウィンドウに関連付けられているカメラ112〜115のカメラ識別子を使用して上述のように構築される。ストレージ・サーバ2300への他のコマンドと同様に、このコマンドは、ユーザを認証するWebサーバ213を介して送信される。通常、ユーザの認証情報がHTTPヘッダに含まれる要求が送信される(前に述べたように)。ユーザ名ヘッダは、記録エンジン201により取り出され、イベント・レコードの一部としてイベント・ファイルに書き込まれ、イベントの優先度は、「highest priority」に設定され、イベントの型は、「manual rec.」に設定される。これにより、それ以降「Record Now」イベントを追跡することができるが、これは、「Record Now」イベントがスケジュールされた設定をオーバーライドするので必要であり、頻繁に使用すると、管理者側で想定していないディスク所要量になる可能性がある。例えば、データを上書きする前の総持続時間は、予想ほど長くない場合がある。ユーザ名および「Manual Rec.」の型は、時刻表にそってビューア2200上に表示される(後述)。
記録エンジン201が手動記録を開始すると、記録は最初に、特定のカメラ・サーバ109〜111から取り出せる最大フレーム速度(通常、毎秒25フレームまたは毎秒30フレーム)で実行され、記録エンジン201は、1分の間、記録する。記録中に、カウントダウンが表示される。ユーザが記録期間中に再びビデオ・ウィンドウ・メニューから「Record Now」を選択した場合、他のRE_Triggerコマンドがストレージ・サーバ2200に送信され、カウントは1分にリセットされる。
選択されたビデオ・ウィンドウに関連付けられた特定のカメラ112〜115に関連付けられているストレージ・サーバ2300がない場合、「Record Now」ボタンは無効である。
ユーザが上記のメニューから「Capture Still Frame」を選択した場合、ビューア2200は、「save as」ダイアログを開く。ユーザは、ファイルの名前を「save as」ダイアログに入力することができ、現在のフレームがそのファイルに取り込まれる。
5.5.2.2.2 ビデオ・ディスプレイ
ビデオ・サンプル・データは、特定のカメラ・サーバ109〜111から来るライブ・ビデオ・サンプル・データの解像度または記録されたビデオ・サンプル・データの解像度に関係なく、関連付けられているビデオ・ウィンドウを作成するサイズで表示される。
ほとんどの場合、ユーザは、ライブ・ビデオ・サンプル・データを見るか、または事前記録済みサンプル・データを再生する。しかし、ときには、ビューア2200の再生ヘッド9001(図90を参照)は、表示されるビデオ・ウィンドウがある特定のカメラ・サーバ109〜111に関連付けられている使用可能な記録済みビデオがない時刻表の領域内に移動する。再生ヘッド9001のこのような移動は、特定の時間に記録されたビデオが決してなかったため生じうる(例えば、スケジュールされた記録がなかったか、または記録が運動検出に基づいており、その特定の時間に運動がなかった)。他の実施例では、ストレージ・サーバ2300上に使用可能な記憶領域を増やすために、ビデオ・サンプル・データが削除されてしまった場合がある。このような、使用可能なビデオがない場合には、ビデオ・ウィンドウに表示されるビデオ・サンプルは、黒色で表示され、「No recorded video」というメッセージがビデオ・ウィンドウ上の黒色の上に表示される。
カメラ・サーバ109〜111からストレージ・サーバ2300上のビデオ・サンプル・データまたはライブ・ビデオ・サンプルにアクセスことに関して問題がある場合、関連付けられているビデオ・ウィンドウは、黒色で表示され、適切なメッセージがビデオ・ウィンドウ内に表示される。
ビデオ・ウィンドウがカメラ・サーバ109〜111との接続をセットアップすることに加えて作成される場合(すでに説明されている)、ビデオ・ウィンドウは、メモリ2206内に「Video Playback」オブジェクトの新規インスタンスを作成する。このオブジェクトは、ビデオ・ウィンドウとそのビデオ・ウィンドウに関連付けられているカメラ112〜115から記録されたビデオを保持するストレージ・サーバ2300との間の関係を管理する。
「Video Playback」オブジェクトは、ストレージ・サーバ2300のアドレス(つまり、ホスト名またはIPアドレスおよびポート番号)、およびビューア・ログイン・プロセスでユーザによって使用されるユーザ名およびパスワードで初期化される。「Video Playback」オブジェクトがストレージ・サーバとの接続を必要とする最初のものである場合、「Video Playback」オブジェクトは、ストレージ・サーバ2300への接続を生成する(つまり、アクセス・エンジン・プロトコルの一部である初期メッセージを送信する)。その特定のストレージ・サーバ2300への接続を必要とするのが最初のビデオ再生オブジェクトでない場合、既存の接続へのアクセス権を取得する。
上述のように、ユーザのアクションに応じて、ビデオ・ウィンドウは、「Camera connection」オブジェクトからのライブ・ビデオまたは「Video Playback」オブジェクトからのすでに記録されているビデオを表示することができる。レイアウト・エリア・コンポーネント14004は、それぞれのオブジェクト(つまり、ビデオ再生オブジェクトおよびカメラ接続オブジェクト)をビデオを開始または停止するコマンド(つまり、一方に停止を指示し、他方に開始を指示する)に送信することにより、またビデオ画像を受信するために使用されるコールバック・プロシージャの有効および無効を設定することにより、表示されるビデオのソースを制御する(つまり、カメラ・サーバ109〜111とストレージ・サーバ2300とを切り替える)。
記録済みビデオを受信すると(ビデオ再生オブジェクトを使用して)、記録済みビデオは、ビデオが記録されなかったセグメントにより区切られた記録済みフレームのセグメントで構成することができる。アクセス・エンジンは、ビデオが実際には記録されていないビデオのNO_VIDEOブロブ・セグメントを提供する。レイアウト・エリア・コンポーネント14004は、「Video Playback」オブジェクトを介してビデオ・データの代わりにそれらのメッセージを受信する。NO_VIDEOブロブがレイアウト・エリア・コンポーネント14004に渡されると、ディスプレイは、ビデオ・ウィンドウに黒色画像を表示するように切り替えられ、テキストは「No recorded video」でオーバーレイされる。NO_VIDEOブロブは、タイムスタンプを含み、これを使用して、表示するビデオ・フレームがある場合と同じ方法でビデオ・ウィンドウのキャプション・エリア上に時間値を表示する。
5.5.2.2.3 事前記録済みビデオ・インジケータ
事前記録済みビデオ・サンプル・データがビデオ・ウィンドウ内に表示されていることを示すために、タイトル・バー8601は、異なる色で表示され、再生ビデオ・インジケータ8607は、図86に示されているように、事前記録済みビデオを見ているときに表示される。さらに、再生されているビデオのタイムコードおよび日付8607はタイトル・バー8601内に表示される。
5.5.2.2.4 イベント・インジケータ
イベント・インジケータ8707は、図87に示されているように、イベントがトリガされたときにビデオ・ウィンドウ8700の最上部に表示される色付きバンドである。イベント・インジケータ8707は、レイアウト・エリア7605内にすでにロードされているビデオ・ウィンドウにのみ適用される。イベント・インジケータ8707の色は、イベントの優先度により決定される。
イベントが最初にトリガされると、インジケータ8707はユーザ定義期間の間点滅し、その後、点灯したままになり、1分過ぎると消える。これらの持続時間は、「configuration and preferences」画面6401で特定の優先度イベントについて構成可能である。
5.5.2.5 パン、傾斜、およびズーム・コントロール
関連付けられているカメラ・サーバ109〜111のカメラ112〜115を制御しパン、傾斜、およびズーム設定を変更するには、ユーザは、ビデオ・ウィンドウ・メニュー内の「Get Camera Control」を選択するか、または特定の関連付けられているビデオ・ウィンドウ上でダブルクリックする。ビューア2200が制御権を持つと、ビデオ・ウィンドウの異なる領域上で異なるカーソルを使用することで、視覚的フィードバックが送られ、これにより、「Add Camera」ダイアログに関して上記で説明したのと同じ形式のパン、傾斜、およびズーム(PTZ)コントロールを使用できる。
ユーザがカメラ112〜115および関連付けられているカメラ・サーバ109〜111の制御権を有しているが、関連付けられているビデオ・ウィンドウは、そのまま、関連付けられているビデオ・ウィンドウのタイトル・バー8601をドラッグすることによりレイアウト・エリア7605の周りを移動することができる。
カメラ112〜115の制御は、制御がタイムアウトになるか、またはユーザがビデオ・ウィンドウ・メニューから「Release Camera Control」を選択する場合に失われる。30秒の期間の間にユーザがパン、傾斜、およびズーム設定を変更するのを停止しておらず、ユーザに与えられた警告期間に制御を延長していない場合にタイムアウトが発生する。
ユーザがパン、傾斜、およびズーム設定を30秒の期間、停止した場合、「Control will be lost in x sec.」という警告がビデオ・ウィンドウの上部に表示されるが、ただし、xは10秒から開始するカウントダウンである。この警告は、ユーザが制御を失いかけていることをユーザに知らせるもので、ビデオ・ウィンドウ内で再びダブルクリックすることにより制御を保持する機会をユーザに与える。制御は、ユーザがカメラ113〜115のパン、傾斜、およびズーム設定を変更する場合に自動的に延長される。
ユーザがカメラ112〜115の制御権を取得しようとしたときにビデオが現在記録エンジン201により記録されている場合、ユーザはそのままカメラ112〜115の制御権を取得することができる。この場合、ビューイング画面7600でビューア2200により使用される制御権限は、記録エンジン201により使用される制御権限よりも高い。カメラ112〜115を制御した後、ユーザは前記制御権を放棄する。特定のカメラ112〜115およびカメラ・サーバ109〜111に関連付けられている記録設定がプリセット位置を必要とする場合、ストレージ・サーバ2300は、その後、特定のカメラ112〜115をプリセット位置に戻す。
ビューア2200よりも高いカメラ制御権限を持つ他のユーザがすでに特定のカメラ112〜115を制御している場合、カメラ112〜115の制御の要求は拒絶され、「Can’t get camera control」というメッセージがビデオ・ウィンドウ内に表示される。
5.5.2.6 ビデオ・ウィンドウのエラー・メッセージ
特定のカメラ112〜115および関連付けられたカメラ・サーバ109〜111に関連付けられたビデオ・ウィンドウ(例えば、7625)に表示されるメッセージは、以下を含む。
(i)「Could not connect to camera」:ライブ・ビデオ・サンプル・データを表示するためにユーザがカメラ・サーバ109〜111に接続することを許可されていない場合に表示される。
(ii)「Getting camera control」:ユーザが特定のカメラ112〜115の制御を要求した後、制御が与えられるまでに表示される。
(iii)「Can’t get camera control」:制御が要求されたが、特定のカメラ112〜115が高いカメラ制御特権を持つ誰かによりすでに制御されている場合に表示される。
(iv)「Control will be lost in x sec.」:パン、傾斜、およびズームの不活動状態から30秒後に表示され、カメラの制御が10(カウントダウン)秒以内に失われることを示すメッセージが表示される。
(v)「Camera control lost」:オペレータが特定のカメラ112〜115の制御を持ち、より高いカメラ制御優先度を持つ他の要求がカメラ・サーバ109〜111に送信されるのでその制御が失われる場合に表示される。
(vi)「No recorded video」:事前記録済みビデオ・サンプル・データを再生しており、再生ヘッド9001が位置決めされた現在のタイムコードで記録されたビデオがない場合に表示される。
(vii)「Can’t connect to storage server」:ユーザが事前記録済みビデオを再生するためにストレージ・サーバ2300に接続できない場合に表示される。
ビデオ・ウィンドウ内のメッセージは、テキストの2つの層を使用して表示される。上位層は色付けされ、下位層は黒色であり、右および下に1ピクセルだけオフセットされ、ドロップ・シャドウを形成する。
5.5.2.3 Live Events Log
図88に示されているように、「live events log」7619は、カメラ112〜115がレイアウト・エリア7605内に表示されているかどうかに関係なく、すべての知られているカメラ112〜115に対するイベントのリストを含む。
ビューア2200が起動した後(つまり、ビューア・アプリケーション・ソフトウェアが実行された後)に生じるイベントは、「live events log」7619にリストされ、関連付けられている優先度レベルに応じて色分けされる。新しいイベントは、図88に示されているように、ログ7619の上部に配置される。以下の情報は、イベント毎に表示される。
(i)受領確認ステータス、
(ii)優先度、
(iii)イベントの型(例えば、運動検出には「motion」、センサ・イベントにはカメラ・サーバ上のセンサの名前)、
(iv)カメラ・サーバ名、
(v)日付および時刻、
(vi)ロケーションとゾーン。
上述のようにビューア設定で構成されているようなオペレータ受領確認を必要とする優先度レベルのイベントは、図88に示されているように、警報ベル・アイコン8801を含む太字テキストと通常テキストとの間で点滅する形で表示される。これらのイベントは、ビューア設定で構成された持続時間の間、点滅し続ける。イベントが受領確認された後、アイコン8801は、ドット・アイコンにより置き換えられ、通常テキスト(非太字)を使用してイベント詳細が静的に表示される。
「live events log」7619内のイベントをダブルクリックすると、イベントの受領確認が行われ、関連付けられたビデオ・ウィンドウが表示される。ビデオ・ウィンドウがレイアウト・エリア7605内にすでに表示されている場合、ビデオ・ウィンドウは自動的に選択状態になる。ビデオ・ウィンドウがレイアウト・エリア7605内にない場合、新しいフローティング・ビデオ・ウィンドウがレイアウト・エリア7605の上に表示され、自動的に選択される。両方の場合、再生ヘッド9001は、図90に示されているように、そのイベントに対するタイムコードに自動的に移動される。
オーディオ・アラートについて構成されている優先度レベルの着信イベントについては、ビューア2200は、点滅と同期してオーディオ・サンプルを再生する(つまり、点滅毎に1回)。イベントが到着する時間に関係なく、通知状態にあるすべての非受領確認イベントは、同時に点滅する。イベント通知期間が経過すると、非受領確認イベントは太字のままである。オペレータがイベントの受領確認を行った場合、通知サイクルは即座に終了し、イベントは点滅を停止する。
イベントを1回クリックしただけでそのイベントが選択される。イベントは一度に1つだけ選択できる。「live events log」7619は、サイズ変更されるか、再配置されるか、閉じられることができる。開いている間、ログ7619は常に上に表示される(つまり、ビューイング画面7600上のビデオ・ウィンドウの上に表示される)。ログ7619を上に表示すると、「live events log」7619は、ビデオ・ウィンドウの後に隠れることがなくなる。ビューア2200を最初に使用すると、「live events log」7619は閉じられ、「View」メニューから「Live Events Log」を選択することにより開かれる。その後、ビューア2200が起動されると、「live events log」7619が、ビューア2200が閉じられたときのログ7619のサイズおよびロケーションに表示される。
オペレータ受領確認を必要とするイベントが発生したときに「live events log」7619が閉じられた場合、「live events log」7619は、最後に開かれたときのログ7619のサイズおよび位置で自動的に開かれる。
「live events log」7619内のイベントの最大数は200である。新しいイベントがトリガされると、最新のイベントの余地を確保するため、最も古いイベントがログ7619から削除される。
5.5.3 時刻表
時刻表7607は、レイアウト・エリア7605内の選択されたビデオ・ウィンドウ(例えば、7625)に関連付けられたカメラ112〜115に対するイベントを表示する。ビデオ・ウィンドウが選択されていない場合、時刻表7607は、レイアウト・エリア7605内のすべてのビデオ・ウィンドウに関連付けられたカメラ112〜115に対するイベントを表示する。
時刻表は、タイトル8901、再生ヘッド9001、再生コントロール8903、ズーム・コントロール8905、「jump to time」8907、「extract video」ボタン8909、「return to live」ボタン8911、イベント表示エリア8913、イベント(例えば、8913)、スクロールバー8915、時刻表ナビゲーション、「event search」8917からなる。
5.5.3.1 タイトルおよび再生ヘッド
図90に示されているように、タイトル8901は、単一のカメラ112〜115が選択されている場合に現在選択されているカメラ112〜115の名前を表示する。カメラ112〜115選択されていない場合、タイトルは「No cameras selected」である。複数のカメラ112〜115選択されている場合、タイトルは「Multiple cameras selected」である。
再生ヘッド9001は、選択されたビデオ・ウィンドウ内のビデオ・サンプル・データが再生されるときの時間的開始位置に対応する視覚的フィードバックを供給する。再生ヘッド9001は、記録済みビデオ・サンプル・データのタイムコードの視覚的表現である。
ビデオ・ウィンドウ(例えば、7625)が1つだけ選択されている場合、再生ヘッド9001は、その1つのビデオ・ウィンドウに関連付けられた記録済みビデオ・サンプル・データのタイムコードを表す。複数のビデオ・ウィンドウが選択された場合、再生が実行される際の時間的開始位置は1つの再生ヘッド9001と同期し、それにより表され、ユーザは、複数のカメラ112〜115に対し記録済みビデオ・サンプル・データを同時に検討することができる。
ビデオ・ウィンドウが選択されていない場合、再生ヘッド9001は、無効状態に設定され、再生ヘッド9001の最後の位置に留まる。
以下のように2つのビデオ・ビューイング・モードがある。
(i)ライブ・ビデオ・サンプル・データの監視、
(ii)事前記録済みビデオ・サンプル・データの再生
5.5.3.1.1 ライブ・ビデオ・サンプル・データの監視
デフォルトで、レイアウト・エリア7605にロードされたビデオ・ウィンドウは、ライブ・ビデオ・サンプル・データを表示し、これは、時刻表7607上の「Live」位置にある再生ヘッド9001の位置により指示される。ライブ位置は、スクロールバー8915が図90に示されているように時刻表7607に関して右へずっとスクロールされるときの時刻表の右辺からの固定距離である。ユーザがライブ・ビデオ・サンプル・データを見続ける場合、再生ヘッド9001は静止したままであるが、時刻表7607は、再生ヘッド9001の下で左にスクロールし、時間の経過を表す。
5.5.3.1.2 事前記録済みビデオ・サンプル・データの再生
事前記録済みビデオ・サンプル・データを表示するには、再生ヘッド9001を「Live」位置以外の時刻表7607上のある位置に移動する。再生ヘッド9001は、以下を使用して再配置できる。
(i)再生コントロール8903
(ii)再生ヘッド90001を新しいタイムコードにドラッグする
(iii)時刻表7607のイベント表示エリア8913内をクリックする
(iv)時刻表7607内のイベントをクリックする
(v)「live events log」7619内のイベントをクリックする
再生ヘッド9001は、例えば、マウス2203を使用して再生ヘッド9001をクリックしてドラッグすることにより再配置するか、または再生ヘッド9001の周りのアクティブ領域内に再配置するか、または再生ヘッド9001の底部のグリップ・エリア9003に再配置することができる。再生ヘッド9001は、ユーザがドラッグを離し、選択されたすべてのビデオ・ウィンドウ上のビデオ・サンプル・データの再生が、ユーザがドラッグ・オペレーションを開始する前の特定の選択されたビデオ・ウィンドウの状態に応じて再生または一時停止に戻る場合に再配置される。再生ヘッド9001を再配置する前にユーザがライブ・ビデオ・サンプル・データを見ていた場合に、再生は自動的に再生に設定される。
再生ヘッド9001を移動することにより、レイアウト・エリア7605内の選択されたすべてのビデオ・ウィンドウを制御する。つまり、再生ヘッド9001を時刻表7607上の特定の時刻にドラッグすると、選択されたすべてのビデオ・ウィンドウに関連付けられているカメラ・サーバ109〜111に関連付けられている記録済みビデオ・サンプル・データが時間的に再配置され、記録済みビデオ・サンプル・データの再生が同じ特定の時間的位置から再生される。しかし、選択されていないレイアウト・エリア7605内のビデオ・ウィンドウは、再生ヘッド9001の移動の影響を受けない。例えば、記録済みビデオ・サンプル・データを再生している未選択ビデオ・ウィンドウは、再生ヘッド9001の移動前、移動中、および移動後に記録済みビデオ・サンプル・データを再生し続ける。同様に、ライブ・ビデオ・サンプル・データを再生している未選択ビデオ・ウィンドウは、再生ヘッド9001の移動前、移動中、および移動後にライブ・ビデオ・サンプル・データを再生し続ける。
イベント表示エリア8913内でクリックすると、再生ヘッド9001の位置は、クリックが生じたときのカーソルの位置に変更される。このような方法で再生ヘッド9001の位置を決めると、選択されたすべてのビデオ・ウィンドウに関連付けられている記録済みビデオ・サンプル・データは時間的に再配置され、すべてのビデオ・ウィンドウに関連付けられたカメラ・サーバに関連付けられている記録済みビデオの再生が同じ時間的位置から再生される。
ユーザが時刻表7607内のイベント(例えば、8913)をクリックした場合、ビューア2200は、再生ヘッド9001をそのイベントの開始タイムコードに移動し、そのイベントに関連付けられている特定のカメラ・サーバ109〜111に関連付けられたビデオ・ウィンドウを選択する。その特定のカメラ・サーバ109〜111から記録されたストレージ・サーバ2300上の記録済みビデオ・サンプル・データは、そのイベントの時刻から開始する形で再生される。
ビューア2200が特定のビデオ・ウィンドウに関連付けられたビデオ・サンプル・データを再生するよう指令された場合、ビューア2200は、ビデオ・ウィンドウに関連付けられた特定のカメラ・サーバ109〜111を識別し、その後、そのカメラ・サーバ109〜111が記録されているストレージ・サーバ2300を識別する。その後、ビューア2200は、HTTPプロトコル上で、上述のように、アクセス・エンジン201コマンドを使用してそのストレージ・サーバ2300に接続する。
ユーザは、異なるビデオ・データ・サンプル・ストリームが異なる時点に配置され、並行して異なる時刻から再生されるように異なるカメラ・サーバ109〜111に関連付けられているビデオ・サンプル・データを再生することができる。例えば、ユーザは、1つのビデオ・ウィンドウを選択し、時刻表7607上の1つの位置を選択することができる。再生ヘッド9001は、その後、選択された時刻に配置され、そのビデオ・ウィンドウに関連付けられた記録済みビデオ・サンプル・データ(つまり、対応するカメラ・サーバ109〜111から記録されたビデオ・サンプル・データ)は、選択された時刻から開始する形で再生される。この実施例を続けると、ユーザは、その後、新しいウィンドウを選択し、前のウィンドウの選択を解除することの影響を有する新しいビデオ・ウィンドウを選択することができる(例えば、マウス2203を使用して新しいウィンドウをクリックすることにより)。すでに選択されているウィンドウ内で再生されているビデオ・サンプル・データは、再生を続ける。ユーザは、次に、時刻表7607上の異なる位置をクリックすることが可能である。その結果、新しく選択されたビデオ・ウィンドウに関連付けられている記録済みビデオ・サンプル・データは、時刻表7607上の新しく選択された位置に対応する時間的位置で再生する。しかし、すでに選択されているビデオ・ウィンドウに関連付けられている記録済みビデオ・サンプル・データの再生は、時刻表7607上の新しい位置をユーザがクリックすることによる影響を受けず、これまでどおり再生を続ける。したがって、異なる時点に異なるカメラ・サーバ109〜111上で記録された画像を示す、多数のビデオ・ウィンドウを再生することができる。例えば、オペレータは、ビル内を特定の人が移動することを示す異なるカメラ112〜115から記録されたビデオ・サンプル・データを見たい場合がある。オペレータは、サンプル・データが異なる時刻に記録されたとしても、この人物に関連付けられている記録資料のすべてが同時に再生されるように、異なる時刻に再生する異なるカメラ・サーバ109〜111から記録済みビデオ・サンプル・データを設定することができる。
上記の実施例は、異なる時点に記録された異なるカメラ・サーバ109〜111からビデオ・サンプル・データを再生することを説明している。システム100をさらに同様に使用し、異なる時点に同じカメラ・サーバ109〜111から記録されたビデオ・サンプル・データを再生するが、異なるビデオ・ウィンドウ内で並行してビデオ・サンプル・データを再生することができる。ビデオ・サンプル・データを異なるビデオ・ウィンドウ内で並行して再生することは、同じカメラ・サーバ109〜111に関連付けられている複数のビデオ・ウィンドウを作成することにより実現できる。
そのような方法で複数のビデオ・ウィンドウを作成することは、カメラ・サーバ109〜111を表すサムネイル(例えば、7615)をレイアウト・エリア7605上のある位置にドラッグしてカメラ・サーバ109〜111に関連付けられている第1のビデオ・ウィンドウを作成し、その後、同じサムネイルからレイアウト・エリア上の他の位置にドラッグして同じカメラ・サーバ109〜111に関連付けられている第2のビデオ・ウィンドウを作成することにより行われる。その後、ユーザは、1つのビデオ・ウィンドウを選択し、時刻表7607上の位置を選択して選択された時刻から記録されたビデオ・サンプル・データを表示する。その後、ユーザは、第2のビデオ・ウィンドウを選択し、選択された第1の時刻と異なる時刻表7607上の時刻を選択することが可能である。その後、第2のビデオ・ウィンドウは、異なる時点から記録されたビデオ・サンプル・データを表示する。2つのビデオ・ウィンドウは、異なる時点で記録された画像を表示するストレージ・サーバ2300からの記録済みビデオ・サンプル・データを再生し続ける。そのようなものとして、ユーザは、同じカメラ・サーバ109〜111から記録された2つの異なる時間的位置から記録された画像を比較することができる。
5.5.3.1.3 ライブ・ビデオに戻る
ライブ・ビデオ画像を見ることに戻るには、再生ヘッド9001が「Live」位置に当たるまで再生ヘッド9001を右へずっとドラッグするか、または「Return to Live」ボタンをクリックすることにより、再生ヘッド9001を再配置できる。「Return to Live」ボタンが押されると、再生ヘッド9001は時刻表7607の右側の「Live」位置に移動される。「Return to Live」ボタンは、再生ヘッド9001がライブ位置にない場合にのみ使用可能である。
5.5.3.1.4 ビデオのセグメントの選択
ビデオ・サンプル・データのセグメントは、単一のビデオ・ウィンドウを選択し、時刻表7607内のエリアをクリックしてドラッグすることにより、抽出目的のために選択することができる。選択されたセグメントは、左辺がイン・ポイント(つまり、開始タイムコード)として使用され、右辺がアウト・ポイント(つまり、終了タイムコード)として使用される、左から右または右から左からドラッグ・アウトすることができる。選択されたエリアは、半透明ハイライト表示エリアで表示される。
ユーザが「extract video」ボタンを選択した場合、「save」ダイアログが表示され、ビデオ・サンプル・データを保存するためのファイル名およびロケーションの入力が求められる。ファイル・ロケーションは、通常、ビューア2200ソフトウェアが実行されているコンピュータ・モジュール2201上にあるが、リモート・ファイル・システムとすることも可能である(例えば、リモート・ファイル・システム・プロトコルを使用してマウントされたもの)。ユーザは、ファイル名を入力し、「OK」を押す。その結果、メッセージが、選択されたビデオ・ウィンドウに関連付けられている、ビデオ・サンプル・データを記録したカメラ・サーバ109〜111に関連付けられているストレージ・サーバ2300に送信される。指定された時間範囲に関連付けられているビデオのセグメントが要求される。ビューア2200は、通常、そのような要求で「transfer」フラグ(後述)を使用し、ストレージ・サーバ2300が、通常の再生速度ではなくできる限り高速にビデオ・サンプル・データを送信するようにする。「transfer」フラグを使用する他の理由は、ストレージ・サーバ2300が、ストレージ・サーバ2300上で使用できないビデオ・サンプル・データの時間範囲に対応する「no video」ブロブを多数送信しないようにすることである。一実装では、ストレージ・サーバ2300は、この場合に「no video」ブロブをいっさい送信しないようにできる。他の実装では、ストレージ・サーバ2300は、送信されたビデオにより表される時間にギャップがある場合を示すために1つの「no video」ブロブまたは指示フレーム(例えば、黒色フレームまたは欠落ビデオを示すメッセージを含むフレーム)を送信することができる。さらに、ビューア2200は、指定された時間範囲に関連付けられているビデオのセグメントに対する要求の中で「no−skip」フラグ(後述)を使用し、ストレージ・サーバ2300により落とされるフレームがないようにすることができる。
ビューア2200が要求されたビデオ・サンプル・データを受信すると、ビューア2200は、「save」ダイアログでユーザにより選択されたファイル名およびロケーションを使用して、サンプル・データをハード・ディスク・ドライブ2210または他の記録媒体に保存する。一実装では、ビューア2200が「no video」ブロブを受信した場合、ビューア2200は、指示フレーム(例えば、黒色フレームまたは欠落ビデオ・サンプル・データを示すメッセージを含むフレーム)をファイル名により表されるファイル内のビデオ・サンプル・データ内の対応する位置に保存する。これにより、抽出されたビデオ・サンプル・データがビデオ再生ソフトウェア(例えば、Apple QuickTime Player(登録商標))で再生される場合、このビデオ再生ソフトウェアは、抽出されたビデオ・サンプル・データがない時間領域の開始から指示フレームを表示する。通常、抽出されたビデオ・サンプル・データを実時間で再生するビデオ再生ソフトウェアは、ビデオ・サンプル・データ内のギャップにより表される全持続時間に対する指示フレームを表示し続ける。再生時間がビデオ・サンプル・データの次に使用可能な断片に到達した場合、ビデオ再生ソフトウェアは、そのビデオ・サンプル・データの再生を再開することができる。
ビデオ・サンプル・データのセグメントは、通常、標準またはデ・ファクト・スタンダード・ファイル形式で保存されるので、このビデオ・サンプル・データは他のソフトウェア・アプリケーションとともに使用することができる。例えば、ビデオ・サンプル・データは、Microsoft(登録商標)Windows(登録商標)Media Player(WMP)で再生する場合にはAVI(登録商標)またはWMAファイルで保存し、Apple(登録商標)QuickTime(登録商標)で再生する場合にはMOVファイルとして保存することが可能である。それとは別に、ビデオ・サンプル・データは、AVIファイルに保存することができ、またMOVファイル内にはインデックス・データとともに保存することができる。この場合、AVI(登録商標)ファイルも存在する場合、AVI(登録商標)ファイルはWMPで再生され、MOVファイルはQuickTime(登録商標)で再生される。
ビデオ・サンプル・データのセグメントを取り出すときに、モードレスのビデオ抽出ダイアログが表示され、ビデオ抽出が実行中であることを示す。ビデオ・サンプル・データの選択がディスプレイ2214上に表示されている間、再生ヘッド9001はそのまま移動できる(例えば、再生ヘッド9001を新しいロケーションにドラッグすることにより)。新しいロケーションは、選択されたビデオ・セグメントの内側に入っている必要はない。ユーザが選択されたセグメントの内側の時刻表7607をクリックした場合、再生ヘッド9001は、クリックの位置に移動し、セグメントは選択されたままである。選択されたセグメントの外側で時刻表7607をクリックすると、再生ヘッド9001はその位置に移動し、選択されたエリアの選択が解除される。
「extract video」ボタンは、ビデオのセグメントが選択されており、ただ1つのビデオ・ウィンドウが選択されている場合にのみ有効にされる。
一実装では、時刻表7607の選択の最大持続時間には制限がありうる(例えば、1時間)。この場合、セグメントは、この最大持続時間を超えるようにドラッグ・アウトすることはできない。
5.5.3.2 再生コントロール
図91に示されているように、再生コントロール8903は、再生ヘッド9001の位置を変更する。これらは、以下を含み、それぞれ従来の記号で表される。
(i)Previous Event
(ii)Rewind
(iii)Nudge Back
(iv)Play/Pause
(v)Nudge Forward
(vi)Fast Forward
(vii)Next Event
再生コントロールは、1つまたは複数のビデオ・ウィンドウが選択されるまで無効状態である。
一実装では、再生コントロール8903は、再生ヘッド9001がライブ位置にある場合に無効である。他の実装では、再生コントロール8903は、再生ヘッド9001がライブ位置にあり、オペレーションがライブ・ビデオ・サンプル・データ上で直接実行できる場合に有効にできる。例えば、「pause」を押すと、ライブ・ビデオ・サンプル・データの再生が一時停止し、「pause」ボタンが押されたときにビデオの現在フレーム(つまり、サンプル)を表示している対応するビデオ・ウィンドウを残す。いくつかの実装では、ライブ・ビデオ・ウィンドウが選択されている場合に「pause」を押した後に「pause」を再び押すと、ビデオ・ウィンドウは再生モードに戻り、「pause」ボタンが押された時点から開始する形でビデオ再生を表示する。他の実装では、ビデオ・ウィンドウが選択されている場合に「pause」を押した後、「pause」を再び押すと、ビデオ・ウィンドウにライブ・ビデオ・サンプル・データが再び表示される。
「Play / Pause」ボタンは、ユーザがこのボタンをクリックしたときに、再生と一時停止とを切り替える。
事前記録済みビデオ・サンプル・データを再生するときに、時刻表7607は静止状態であるが、再生ヘッド9001は右に移動する。再生ヘッド9001が時刻表7607の表示可能エリアの右辺に到達すると、時刻表7607は左にジャンプし、表示可能エリアの右辺にあったものは、今度は左辺に揃えられ、その後、再生ヘッド9001は右に移動し続ける。
「rewind」および「fast forward」ボタンは、ユーザがボタンをクリックした回数に応じて、速度を変えて再生ヘッド9001を巻き戻しまたは早送りする。例えば、「rewind」ボタンをクリックすると、通常速度の2倍の速度から始めて、5×、10×と1ステップずつ異なる巻き戻し速度に変わり、その後、2×、5×、10×などとループする。例えば、「fast forward」ボタンをクリックすると、通常速度の2倍の速度から始めて、5×、10×と1ステップずつ異なる早送り速度に変わり、その後、2×、5×、10×などとループする。
ユーザが巻き戻しまたは早送りを停止すると、ビデオ・サンプル・データの再生は、開始したときの再生の状態に応じて再生または一時停止に戻る。
早送りまたは巻き戻しを停止するには、ユーザが「Play/Pause」ボタンをクリックする。反対のボタンをクリックすると、そのボタンがアクティブになり、例えば、ユーザが早送りをしている場合、ユーザが「Rewind」ボタンをクリックすると、ビデオは早送りを停止し、巻き戻しを開始する。
巻き戻しまたは早送り中に「Previous」または「Next Event」ボタンをクリックすると、再生ヘッド9001は前または次のイベントに移動し、巻き戻しまたは早送りを続ける。
「nudge」ボタンは、再生ヘッド9001を一度に1フレームずつ送るか、または戻す。
「Previous Event」および「Next Event」ボタンは、再生ヘッド9001を時刻表の現在位置から時刻表の前または次の一次イベントに移動する。その後、再生は開始時の再生のモードに戻る。後述のように、一次イベントは、選択されたビデオ・ウィンドウ(または、ビデオ・イベントが選択されていない場合、レイアウト・エリア7605内のすべてのビデオ・ウィンドウ)に関連付けられているカメラ112〜115に関連付けられているイベントである。したがって、現在ビデオ・ウィンドウが選択されていない場合、「Previous Event」または「Next Event」ボタンを押すと、再生ヘッド9001は前または次のイベントに関連付けられている時刻表7607上の位置に移動する。1つまたは複数のビデオ・ウィンドウが選択されている場合、「Previous Event」または「Next Event」ボタンを押すと、再生ヘッド9001は、選択された1つまたは複数のビデオ・ウィンドウに関連付けられている、カメラ112〜115に関連付けられている前または次のイベントに関連付けられている時刻表上の位置に移動する。
ユーザが何回も特定のイベントを見ることを望んでいる場合、ユーザは、再生ヘッド9001をイベントの先頭に置き、「Play」ボタンをクリックし、その後、「Previous Event」ボタンをクリックすることによりイベントの先頭にジャンプして戻ることができる。再生ヘッド9001は、イベントの先頭に戻った後も再生を続ける。
これらのボタンが押されたときに時刻表上に前または次の一次イベントがない場合、再生ヘッド9001は、再生ヘッドが置かれている場所に留まり、何も起きない。
5.5.3.3 イベント表示エリア
イベント表示エリア8913は、イベントが時刻表7607上に表示される場所である。イベント表示エリア8913は、さらに、日にちの間の区切り、および選択されたビデオ・ウィンドウに使用可能な記録済みビデオ・サンプル・データがある時期を示すために使用される。
通常時間と夏時間との切替えがある場合に、実際の時間は時刻表7607上で連続しており、時間ラベルは夏時間が始まるのか、終わるのかに応じてスキップまたは重複する。ビデオ・サンプル・データがこれらの時間にまたがって記録される場合、ビデオ・サンプル・データは、1時間スキップされる場合には切り詰められ、1時間重複する場合には記録が延長される。
5.5.3.4 イベント
特定のカメラ・サーバ109〜111に接続されているセンサからのイベントを含む特定のカメラ・サーバ109〜111に関連付けられたイベント、ドア開放、運動検出など、およびストレージ・サーバ2300内の画像ベースの運動検出からのイベントは、視覚的に表現することができる(例えば、図90に示されているようなイベント9005)。このようなイベントは、イベントがいつ発生したか、およびその重要度レベルを示すために、イベント表示エリア8913内に表示される。表示されるイベントは、さらに、再生ヘッド9001の位置を変更するクリック可能なオブジェクトでもあり、ビデオ・ウィンドウを選択し、対応する時間からビデオを再生するようにビデオ・ウィンドウを設定することができる。
表示されるイベントは、イベントの実際のタイムコードを取ることにより時刻表7607上に配置される。このような表示されるイベントは、最高、高、中、低、および最低を含む5つの色分け優先度レベルを持ち、これ以降「イベント」と呼ぶ。
色分けに加えて、選択されたビデオ・ウィンドウに関連付けられているカメラ・サーバ109〜111に関連付けられているイベントは、一次イベント(つまり、視覚的に強い)として表示され、選択されたビデオ・ウィンドウに関連付けられていないカメラ・サーバ109〜111に対するイベントは、二次イベント(つまり、視覚的に弱い)として表示される。
選択されたカメラ・サーバ109〜111がない場合、レイアウト・エリア7605内に表されているすべてのカメラ・サーバ109〜111が選択されているとしても、時刻表7607は、そのような非選択を特別なケースとして取り扱う。この場合、レイアウト・エリア7605上にあるビデオ・ウィンドウに関連付けられているすべてのカメラ・サーバに対するイベントは、一次イベントとして表示される。
二次イベントに対するロールオーバーおよびマウス・ダウン状態は、一次イベントに対するロールオーバーおよびマウス・ダウン状態と同じく表示される。
イベントが同時に表示される場合、一次イベントは、常に、二次イベントの前に表示される。イベントが両方とも一次である場合、優先度の高いイベントが前に表示され、優先度の低いイベントを隠す。
イベントをクリックすると、再生ヘッド9001はそのイベントの開始タイムコードにジャンプする。一次イベントと二次イベントは両方とも、クリック可能である。
1つのカメラ・サーバ109〜111のみが選択された場合、選択されたカメラ・サーバ109〜111に関連付けられているイベントのうちの1つをクリックすると、再生ヘッド9001はそのイベントの開始タイムコードに移動し、対応する時間的位置から再生するようにビデオの位置が決められる。
複数のカメラ・サーバ109〜111が選択された場合、一次イベントをクリックすると、イベントがどのカメラ・サーバに属しているかに関係なく、同じカメラ・サーバすべてが選択状態に保たれ、再生ヘッド9001はそのイベントの時刻に移動し、選択されたすべてのビデオ・ウィンドウは、対応する時間的位置から再生するように位置が決められる。
二次イベントをクリックすると、現在選択されているカメラの選択が解除され、再生ヘッド9001が移動し、そのイベントに関連付けられているカメラ・サーバ109〜111が選択される。
イベントは、ロールオーバー状態を持ち、クリック可能である。イベントのロールオーバーも、カメラ名、イベント名、および時間を含むイベントに関する情報をツール・チップと同様にして表示する。
5.5.3.5 スクロールバー
スクロールバー8915は、図90に示されているように、時刻表7607にそってナビゲーションを行う。スクロールバー8915は、再生ヘッド9001の位置を変更しない。左にスクロールすると、時刻表のビューは時間的に逆方向に移動し、右にスクロールすると、ビューは順方向に移動する。時刻表7607は、現在の「Live」時間と同じように一番右にのみスクロールできる。
ライブ・ビデオ・サンプル・データを表示する場合、図90に示されているように、スクロールバー8915は、できる限り一番右に配置され、右スクロール・ボタンに対して押し上げられる。時間が経過すると、時刻表7607自体が左に移動するとしても、スクロールバー8915はこの位置に留まる。
「Live」位置から、時刻表7607は過去への1週間分を表す。週の先頭に移動するには、ユーザがスクロールバー8915を左に移動する。その週内で表示可能な時間の量は、時刻表7607のビュー内でどれくらいズームされるかによって決まる。ズームインおよびズームアウトにより表示される時間の量は変化するが、スクロールバー7607により表される時間の量は変化しない。
スクロールバー7607により表される週の外の日または週にジャンプするには、前の週、前の日、次の日、および次の週ボタンが日付表示の下に用意される。
5.5.3.6 ズーム・コントロール
時刻表7607をズームインすることにより、詳細を表示し、ズームアウトすることにより、表示期間を長く取ることができる。ズームアウトを実行すると、イベント活動の概要がさらに表示され、パターンの認識がさらにしやすくなる。
ユーザは、時刻表7607上でズームインして、時刻を詳細に表示することができ、これにより、表示される時間分割の間の距離が増える。ユーザがさらにズームインすると、追加時間セグメント・マーカーおよびタイムコードが表示される。
ズーム・コントロール8905は、時刻表の上に配置される。ズームインまたはズームアウトを行うと、ライブ、早送り、および巻き戻しで見る場合に再生ヘッド9001が移動する速度を変えられる。例えば、時刻表7607がズームインされる場合、時刻表7607がズームインされたときに同じ持続時間の表現がより広くなるので、再生ヘッド9001は、再生ヘッド9001がズームアウトされるときよりも速く移動する。したがって、カバーする再生ヘッド9001に対する距離が同じ時間量について大きいため、再生ヘッドはより高速に移動する。
5.5.3.7 時刻表ナビゲーション
時刻表ナビゲーションは、時刻表7607内に表示される日付範囲を制御する。時刻表ナビゲーションは、再生ヘッド9001の位置を変更しない。時刻表ナビゲーション・コントロールは、Calendar、Previous Week、Previous Day、Next Day、Next Weekを含む。
前の週ボタンをクリックすると、現在の週から前の週までの時刻表7607に表示される日付範囲が変化し、前の日ボタンをクリックすると、時刻表は24時間戻る。しかし、時刻表7607は、そのまま、合計7日を表示する。例えば、ユーザが「15:00 on 23 Aug 2003」を見ていて、ユーザが前の日ボタンをクリックした場合、時刻表7607は「15:00 on 22 Aug 2003」にジャンプし、適切なイベントが表示される。
日付表示は、時刻表7607に表示されている時間領域の日付を示す。時刻表7607がズームアウトされ、複数の日が時刻表7607内で表示可能であれば、時刻表7607内に表示される第1の日の日付が使用される。スクロールバー7607が移動されるときに、日付表示は、異なる日が時刻表7607内で表示可能にされると自動的に更新される。
カレンダー・アイコンをクリックすると、ユーザが時刻表7607内で表示する日を選択できる標準カレンダー・コントロールを起動する。このようなアクションは、時刻表7607のビューを変更するだけであり、再生ヘッド9001の位置を変えない。日付をクリックすると、その日付が選択され、「OK」ボタンをクリックすると、カレンダー・コントロールは閉じて、選択された日付を表示するように時刻表が更新される。
5.5.3.8 Event Search
「event search」ボタン8917を押すと、図92に示されているように、「event search」ダイアログ9200が表示され、これは、イベントの検索に使用することができる。「event search」ダイアログ9200を使用することで、ユーザは、検索条件を指定する、検索結果を表示する、「event search」ダイアログ8917から直接、イベントに関連付けられているビデオ・ウィンドウを開くという操作を行うことができる。
検索条件は、以下のフィールドに入力することができる。
(i)Priority 9201:これによりユーザは優先度レベルを選択することができる。
(ii)Location 9203:ユーザは、マスタ・ストレージ・サーバ2300Aから返されたロケーションのリストからロケーションを選択することができる。
(iii)Zone 9205:ユーザは、現在選択されたロケーションの中にあるマスタ・ストレージ・サーバ2300Aから返されたゾーンのリストからゾーンを選択することができる。
(iv)From date/time 9207:ユーザは、検索を制約するために使用したい開始日付および時刻を入力することができる。
(v)To date/time 9209:ユーザは、検索を制約したい終了日付および時刻を入力することができる。
ユーザは、検索条件を入力すると、検索を開始する「search」ボタン9209を押すことができる。
入力されたに検索基準に対応するヒットがストレージ・サーバから受信されると(例えば、2300A、2300B、2300C、および2300D)、イベントが受信されるときにそれぞれのイベントが表示される。ユーザは、検索結果リスト9211内のイベントをダブルクリックするか、またはイベントを選択し、「view event in camera」ボタン9213をクリックすることによりビデオ・ウィンドウ内のイベントに関連付けられている記録済みビデオ・サンプル・データを表示することができる。
「view event in camera」ボタン9213は、検索結果が選択された場合のみ有効にされる。アイテムは同時に1つだけ選択できる。
イベントが見つからないか、またはビューア2200がストレージ・サーバ2300に接続できない場合、「There are no events to display」がダイアログ9200に表示される。
「stop search」9215をクリックすると検索が停止し、表示されている検索から現在の結果を残す。「cancel」9217をクリックすると、検索が停止し、ダイアログが閉じる。
5.5.3.9 Jump to Time
特定のタイムコードにジャンプするために、ユーザは、時刻表7607の上にある「jump to time」ボタン8907をクリックすることができる。その結果、「jump to time」ダイアログが起動され、そこで、ユーザはタイムコードを入力し、「OK」を押すことができる。再生ヘッド9001および時刻表が、再生ヘッド9001が現在置かれている日にち内の入力された時刻に移動される。
「jump to time」ボタンは、1つまたは複数のビデオ・ウィンドウが選択されるまで無効状態である。
ユーザが夏時間調整の開始のため欠落している時刻にジャンプしようとすると、再生ヘッド9001は指定された時刻よりも1時間前の時刻にジャンプする。ユーザが夏時間調整の終了のため重複している時刻にジャンプしようとすると、再生ヘッド9001はその時刻の第2のインスタンスにジャンプする。
5.5.4 ビューアのエラーと警告
ビューア2200は、例えば、カメラ・サーバ109〜111への接続に問題が生じた場合にユーザに知らせる。ユーザに提示される可能性のあるエラーおよび警告メッセージの例を以下に示す。
(i)指定されたマスタ・ストレージ・サーバ2300Aをネットワーク2220上で見つけられないときに、ユーザがビューア2200を起動しようとした場合(つまり、ビューア・アプリケーション・ソフトウェアを実行する)、「Failed to connect to Master Storage Server」というエラーが表示される。
(ii)管理者が「configuration and preferences」画面6401にアクセスしようとした場合、ビューア9001は知られているストレージ・サーバ2300に接続しようとする。知られているストレージ・サーバ2300が見つからない場合、「Failed to connect to Storage Server.Recording settings for camera servers on these storage servers will not be available.」というメッセージが表示される。
(iii)管理者が変更を「configuration and preferences」画面6401のいくつかのダイアログのうちのどれかに保存しようとし、関連するストレージ・サーバ2300がネットワーク2220上に見つからない場合、「Failed to connect to Storage Server.The changes you are trying to save cannot be sent to the storage server and will be lost.」というエラーが表示される。
(iv)システム100が「Configuration」画面からカメラ・サーバ109〜111に接続しようとして失敗した場合、「Connection to the camera server could not be established.」というエラーが表示される。
(v)「configuration and preferences」画面6401のいくつかのダイアログのうちのどれかからカメラ・サーバ109〜111への接続が途絶した場合、「Connection to the camera server has been Iost.」というエラーが表示される。
(vi)管理者がすでに追加されているストレージ・サーバを追加しようとすると、「This storage server has already been added.」というエラーが表示される。
(vii)1つまたは複数の関連付けられたカメラ・サーバ109〜111に対し保留されている変更があるときに管理者がストレージ・サーバ2300のアドレスを編集しようとした場合、「Please save or discard your changes before changing your Storage Server settings.」というエラーが表示される。
(viii)ユーザが「live events log」7619を開いたままビューア2200を起動しようとした場合(つまり、ビューア・アプリケーション・ソフトウェアを実行する)、またはユーザが「live events log」7619を開こうとした場合、ビューア2200は知られているすべてのストレージ・サーバ2300に接続しようとする。接続問題がある場合、使用不可能なそれぞれのストレージ・サーバ2300について、「Failed to connect to Storage Server.Recorded video and event information for camera servers recording to this Storage Server will not be available.」というエラー・メッセージが表示される。
(ix)ユーザが現在のレイアウトまたは現在のレイアウトを含むフォルダを削除しようとした場合、「You cannot delete this because it is the current layout or it contains the current layout.」というエラーが表示される。
5.6 コマンド、フラグ、およびパラメータ
次に、アクセス・エンジン203とビューア2200との間で送信されるような多数のコマンド、フラグ、およびパラメータについて、説明する。
ビデオ要求は、アクセス・エンジン203にビデオ・サンプル・データを要求するために使用される。このような要求は、ビデオ・コマンド、カメラ識別子、時間範囲、再生速度、フレーム速度、およびビデオ・サンプル・データを送信する方法に影響を及ぼすフラグからなる。
時間範囲により、送信するビデオ・サンプル・データの範囲を指定する。開始時刻は必須であるが、終了時刻はオプションである。終了時刻が与えられない場合、サンプリングされたデータが、指定された時刻から送信するビデオ・サンプル・データがなくなるまでストリーミングし続ける。したがって、記録エンジン201がビデオ・サンプル・データを記録している限り、アクセス・エンジン203は、ビデオ・サンプル・データをストリーミングし続ける。それとは別に、指定された時間範囲値は、値「Live」に設定することができ、これは、指定されたカメラからのライブ・フィードがほぼ指定フレーム(つまり、サンプル)速度で供給されることを意味する。
再生速度により、ビデオ・サンプル・データが送信される速さを指定する。再生速度が100ならば、ビデオ・サンプル・データは、実時間で送信される。再生速度が低いと、ビデオ・サンプル・データは実時間よりも遅い速度で送信される。再生速度50は、半分の速度を指定する。再生速度200は、2倍の速度を示す。再生速度が負の数に設定されると、データを逆方向に再生する。
フレーム速度は、送信する毎秒フレーム数である。これは、ビデオ転送速度を決定するが、受信されたビデオを再生できる時間には影響しない。したがって、フレーム速度に関係なく、1分のビデオ・サンプル・データは、そのまま、ビューア2200により1分のビデオ・サンプル・データとして表示される。フレーム数は異なることがあるが、カバーされる時間の量は同じである。要求されるフレーム速度が使用可能なビデオ・フレーム速度よりも高い場合、フレーム速度はビデオ・サンプル・データのフレーム速度にまで下げられる。フレーム速度は、0.1から上限値30までの範囲の値である。
ビデオ・サンプル・データ要求に使用できるフラグは、「transfer」フラグと「no−skip」フラグである。「transfer」フラグでは、ビデオ・サンプル・データを、指定された再生速度ではなく、できる限り高速に送信すべきであるかどうか指定する。「transfer」フラグがtrueである場合、アクセス・エンジン203は、指定された再生速度でビデオ・サンプル・データを送信することを試みない。むしろ、アクセス・エンジン203は、使用可能な帯域幅が許す限り高速にビデオ・サンプル・データを送信する。「transfer」フラグをtrueにセットすると、さらに、「no−skip」フラグもtrueにセットされ、コマンドの中の「no−skip」フラグは無視される。
「no−skip」フラグにより、アクセス・エンジン203は、すべてのサンプルが送信されるようにサンプルをビューア2200に送信するアルゴリズムを変更する。「no−skip」フラグがfalseの場合、アクセス・エンジン203は、与えられたタイム・クアンタムで送信する必要があるサンプルを収集し、サンプルが多すぎる場合には、アクセス・エンジン203は、使用可能なサンプルのうちの一部を送信する。例えば、アクセス・エンジン203は、サンプルのグループ内の最後のサンプルを送信するだけであるが、これはビューア2200に最も関係する。このような配列だと、ネットワーク輻輳またはビューアの過負荷が防止される。ビューア2200がすべての使用可能なサンプルを受信することを望んでいる場合、「no−skip」フラグをtrueにセットしなければならない。アクセス・エンジン203は、その後、すべてのサンプルを送信するが、これは、エンジン201および203が同じコンピュータ・モジュール2301上で実行されている場合にアクセス・エンジン203および記録エンジン201のパフォーマンスに悪影響を及ぼす可能性がある。
要求の開始時にビデオ・サンプル・データがないが、要求された時間範囲の一部についてビデオ・サンプル・データがある場合、フレーム・マーカー(つまり、「no−video」ブロブとも呼ばれる)は、ビデオ・データ・サンプルが存在しない場合にビデオ・データ・サンプルの代わりにビューア2200に送信される。「No−video」ブロブは、さらに、要求された時間範囲に対しビデオ・サンプル・データ内にギャップがある場合にも送信される。ビデオ・コマンドは、ビデオ・データ・サンプル・ストリーム識別子を応答の一部としてビューア2200に返す。ビデオ・サンプル・データ・ストリーム識別子は、データ接続6015に到着したときにビデオ・ブロックを識別するためにビューア2200により使用される。ビデオ・データ・サンプル・ストリームを修正するコマンドも、識別子を必要とする。識別子は、識別子を返す制御接続6005に関してのみ有効である。識別子は、決して、他の制御接続では使用できない。
「event」コマンドは、アクセス・エンジン203に一定範囲のイベントを要求するために使用される。コマンドは、「event」コマンド、カメラ識別子、および時間範囲からなる。時間範囲は、ビデオ・コマンドで使用されるのと同じ形式を持つ。終了時刻が指定されていない場合、要求は終了せず、指定されたカメラ・サーバ109〜111上の新しいイベントはビューア2200に送信される。未来の終了時刻を指定することは、終了時刻をまったく指定しないこととは同じでない。未来の終了時刻が指定された場合、終了時刻にまだ到達してなくても、またはまだ未来であっても、現在のすべてのイベントが送信されると転送は終了する。終了時刻が与えられない場合、アクセス・エンジン203は、ビデオ・データ・サンプル・ストリームが停止されるまでイベントが届くとともにイベントをビューア2200に送信し続ける。イベント要求は、ビデオ要求と同じようにして計時されず、したがって、できる限り速く送信される。
「event」コマンドは、応答の一部としてストリーム識別子を返す。この識別子は、ビデオ要求のストリーム識別子と同じ方法で使用される。
「stop」コマンドは、要求されたサンプル・データ・ストリームを終了するために使用される。stopコマンドは、単一のパラメータを持ち、これは、終了すべきサンプル・データ・ストリームのストリーム識別子である。「end」コマンドは、ビデオおよびイベント要求を停止するために使用される。「stop」コマンドを使用すると、サンプル・データ・ストリームは、できる限り速やかに、データの送信を停止する。タイミング問題があるため、ビューア2200は、「stop」コマンドが発行された後、受信されるビデオまたはイベント・データはもうないとは仮定しない。ビューア2200は、代わりに、データ接続6015上にビデオまたはイベント・データがもうないことを知らされるのを待つ。
「pause」コマンドは、要求ストリームを一時停止するために使用される。「pause」コマンドは、単一のパラメータを持ち、これは、一時停止すべきサンプル・データ・ストリームのストリーム識別子である。ビデオとイベントの両方のストリームを一時停止にすることができる。タイミング問題があるため、ビューア2200は、「pause」コマンドが発行された後、データ接続6015上で受信されるビデオまたはイベント・サンプル・データはもうないとは仮定しない。
「resume」コマンドは、すでに一時停止されていたサンプル・データ・ストリームを再開するために使用される。「resume」コマンドは、単一のパラメータを持ち、これは、再開すべきストリームのストリーム識別子である。サンプル・データ・ストリーム上のデータ転送は、転送が中断された場所から拾われる。ビデオ・データ・サンプル・ストリームでは、ストリーマが一時停止される前に使用されていたのと同じ速度でストリーミングを再開する。アクセス・エンジン203は、ストリームが一時停止されていなかったなら送信されたであろうサンプルの送信をキャッチアップすることを試みない。
「shut−down」コマンドは、アクセス・エンジン203とカメラ・サーバ109〜111との間の接続をきれいにファイナライズするために使用される。「shut−down」コマンドは、付加的パラメータを持たない。「shut−down」コマンドが送信された後、ビューア2200は、ビューア2200がアクセス・エンジン203との新しい制御接続6005を確立するまでそれ以上コマンドを発行することはできなくなる。すべてのサンプル・データ・ストリームは終了し、データ接続6015は閉じられる。
「next」コマンドは、ビデオ・サンプル・データ・ストリーム内の次のn個のフレームを要求するために使用される。「next」コマンドは、2つのパラメータ、サンプルがフェッチされるストリームの識別子と送信するサンプル(つまり、フレーム)の個数を持つ。「next」コマンドは、ビデオ・ストリームでしか使用できない。要求が行われたときにストリームが一時停止されない場合、アクセス・エンジン203は、「next」コマンドが実行される前にストリームを一時停止にする。この場合、ストリームが一時停止したポイントは時間依存である。その結果、n個のフレームのどれが「next」コマンドにより送信されるのかについて正確には予測不可能である。しかし、順不同で送信されるフレームはない。
「previous」コマンドは、ビデオ・サンプル・データ・ストリーム内の前のn個のフレームを要求するために使用される。このコマンドは、2つのパラメータ、サンプルがフェッチされるデータ・サンプル・ストリームの識別子と送信するサンプルの個数を持つ。イベント・ストリーム上で「previous」コマンドを使用することは有効でない。要求が行われたときにイベント・ストリームが一時停止されなかった場合、アクセス・エンジン203は、コマンドが実行される前にストリームを一時停止にする。この場合、ストリームが一時停止したポイントは時間依存である。その結果、n個のフレームのどれがコマンドの一部として送信されるのかについて予め明らかではない。しかし、順不同で送信されるフレームはない。
「modify」コマンドは、すでに起動されているビデオ・サンプル・データ・ストリームを修正するために使用される。修正できるビデオ・データ・サンプル・ストリームの属性は、ストリームのフレーム速度、ストリームの再生速度、および要求された範囲、さらにストリームが転送であるかどうかである。転送ストリームでは、すべてのサンプルは、ネットワーク輻輳に関係なく送信され、ビデオは、実時間ではなく、可能な限り高速に送信される。範囲を変更すると、ストリームは、与えられた範囲の先頭から再び開始する。他のすべてのパラメータは、ストリームが要求されたときに設定されている場合に及ぼされるのと同じ影響をストリームに及ぼす。
「keep alive」コマンドは、不活動により介在するプロキシ・サーバがデータ接続6005を閉じないように定期的にビューア2200によって送信される。Apache Webサーバ6110およびFastCGIモジュール6105を使用して図61に示されている実装では、ビューア2200が接続を開いておく必要はない。したがって、「keep alive」コマンドは、図61の特定の実装では冗長である。これは、他の実装ではそうならない場合もある。「keep alive」コマンドは、失敗せず、パラメータを取らない。接続識別子は、「keep alive」コマンドでは必要ない。
5.7 ビューア・コンポーネント
図116は、ビューア2200のソフトウェア・コンポーネントを示す。記録エンジン通信モジュール14024は、記録エンジン201との通信を実行する。これは、上述のように記録エンジン・プロトコルを使用して構成情報および他の情報の読み書きを行うことができる(例えば、NVR_AdminSet、RE_Trigger、RE_Set、NVR_UserGetコマンドなど)。
カメラ通信モジュール14023は、カメラ・サーバ109〜111との通信を受け持つ。カメラ通信モジュール14023は、カメラ・サーバ109〜111に格納されている設定についてカメラ・サーバ109〜111に問い合わせを行い、ビデオ・ストリームを受信し、カメラ・サーバからのイベント通知を監視し、カメラ112〜115のパン、傾斜、およびズームを制御することができる。構成コンポーネント14010により実行されるいくつかの機能、例えば、「add camera server」ダイアログ6700の制御、「add schedule item」ダイアログ7000、および「motion detection」ダイアログ7100では、カメラ通信モジュール14023にアクセスする。
レイアウト・エリア・コンポーネント14004は、レイアウト・エリア7605のオペレーションを受け持つ。これは、レイアウト・エリア・コンポーネントの制御の下でレイアウト・エリア内に表示されるビデオ・ウィンドウ(例えば、7625、8201、8301)のオペレーションを含む。これらのビデオ・ウィンドウでは、カメラ通信モジュール14023を利用して、ライブ・ビデオ・ストリームを受信し、カメラPTZおよび外部出力のユーザ制御を可能にすることを含む機能を実現する。さらに、レイアウト・エリア・コンポーネント14004は、アクセス・エンジン通信モジュール14021を通じてストレージ・サーバから記録済みビデオの再生を行う。
ライブ・イベント・コンポーネント14001は、「Live Events Log」7619のオペレーションを受け持つ。イベント検索コンポーネント14002は、「Event Search」ダイアログ9200のオペレーションを受け持つ。時刻表コンポーネント14003は、時刻表7607のオペレーションを受け持つ。これらのコンポーネント(14001、14002、14003)はそれぞれ、イベント・キャッシュ・マネージャ14022を利用して、アクセス・エンジン203からイベント・データを取り出すこと、および不要な通信を避けるためキャッシュ内にイベント・レコードを格納することを管理する。
カメラ選択エリア・コンポーネント14005は、カメラ選択エリア7603のオペレーションを受け持つ。
5.8 ビューアにおけるイベント処理
イベント・キャッシュ・マネージャ14022は、プロセッサ2205により実行されるソフトウェア・コンポーネントであり、イベント情報を収集し、保持することを受け持つ。システム100に知られているカメラ112〜115毎に別々のイベント・キャッシュ・マネージャ14022が作成される。内部的には、イベント・キャッシュ・マネージャ14022は、アクセス・エンジン203との通信をアクセス・エンジン通信モジュール14021にデリゲートする。
特定のストレージ・サーバ2300に関連付けられているそれぞれのカメラ112〜115について、ライブ・イベント・コンポーネント14001はそのストレージ・サーバ2300上に格納されているイベント・レコードに関心を持ったことをイベント・キャッシュ・マネージャ14022に登録する。関心は、ライブ・イベント・コンポーネント14001がその時間範囲にログインされていたすべてのイベントを知ることに関心を持つ定義済み時間範囲である。ライブ・イベント・コンポーネント14001は、イベントが発生するときにそのイベントに関心を持つので、現在のシステム時刻から未来までイベントへの関心を登録する(上述のようにアクセス・エンジン・プロトコルを使用して)。ライブ・イベント・コンポーネント14001は、さらに、コールバック・アドレスをイベント・キャッシュ・マネージャ14022に登録する。コールバックは、ライブ・イベント・コンポーネントの関心の範囲内にあるイベントの通知を受信するために使用される。
時刻表コンポーネント14003は、レイアウト・エリア上で現在表されているカメラ112〜115に対するイベント・データのみを表示する。レイアウトがロードされると、時刻表コンポーネント14003は、時刻表コンポーネント14003に関連付けられているイベント・データを更新するよう指令される。レイアウト・エリア上に表されるそれぞれのカメラ112〜115について(また、カメラ112〜115がストレージ・サーバ2300に関連付けられている場合のみ)、時刻表コンポーネント14003は、イベントに関心を持っていることを、そのカメラ112〜115に関連付けられているイベント・キャッシュ・マネージャ14022に登録する。時刻表コンポーネント14003は、さらに、関心の範囲内にあるイベントの通知を受信するようにイベント・キャッシュ・マネージャ14022のコールバック・アドレスをセットアップする。時刻表コンポーネント14003は、時刻表内で現在使用可能な時間の範囲に基づいて関心を登録する(つまり、通常は1週間の完全なスクロール可能な範囲)。
イベント検索コンポーネント14002は、上述のように、ユーザの指令に従って必要に応じて初期化され閉じられる。「event search」ダイアログ9200上の「search」ボタン9209が押された場合、イベント検索コンポーネント14002は、カメラ112〜115毎に、「Location」および「Zone」プルダウン・コントロール9203、9205により決定された集合に関心があることをイベント・キャッシュ・マネージャ14022に登録する(また、カメラ112〜115がストレージ・サーバ2300に関連付けられている場合のみ)。例えば、この集合は、指定されたZoneに関連付けられているカメラ112〜115のすべてを含み、または「All Locations」が指定されている場合には、この集合は、システム100内の知られているすべてのカメラ112〜115を含む。関心に対する時間範囲は、「from」および「to」コントロール9207内の値により決定される。イベント検索コンポーネント14002は、さらに、関心の範囲内にあるイベントを通知するために使用するイベント・キャッシュ・マネージャ14022のコールバック・アドレスも登録する。
時刻表コンポーネント14003、イベント検索コンポーネント14002、およびライブ・イベント・コンポーネント14001はすべてイベントに関心のあることを登録することができるので、このコンポーネントの集合は、イベント使用コンポーネントと呼ぶことができる。
図117は、特定のカメラ112〜115に関連付けられた関心、知られている範囲、およびイベントの間の関係を示すグラフである。水平矢印14101は、時間の経過を表す。垂直ライン14102は、現在の時刻を表し、このラインの右の位置は、未来の時間を表し、このラインの左の位置は、過去の時間を表す。一連の垂直ライン14130は、記録エンジン201によりログに取られているイベントをマークする。
14110(14111、14112、14113を含む)のブロックは、特定の期間に特定のカメラ112〜115に関連付けられているイベントに関心のあることを表すが、イベント使用コンポーネントによりイベント・キャッシュ・マネージャ14022に登録されている。関心は、以下のデータ構造を使用して実装することができる。
struct interest
{
time_t mi_begin; // 関心の開始時刻
time_t mi_end; // 関心の終了時刻(未来を表す特別な値−1に設定することができる)
bool mi_complete; // 関心が完全に完了したことを示すフラグ。つまり、この関連付けられたカメラ112〜115に対するこの時間範囲内のすべてのイベントが、イベント・キャッシュ・マネージャ14022に知られていること。
}
14120(14121、14122、14123、14124を含む)のブロックは、イベント・キャッシュ・マネージャがストレージ・サーバ2300から取り出したイベントの知られている範囲を表す。知られている範囲は、以下のデータ構造を使用して実装することができる。
struct known_range
{
list<Events> mk_events; // イベント・データのリスト
time_t mk_begin; // 範囲の開始時刻
time_t mk_end; // 範囲の終了時刻
bool mk_complete; // 知られている範囲が完全に完了したことを示すフラグ。つまり、関連付けられたカメラ112〜115に対するこの時間範囲内のすべてのイベントが、イベント・キャッシュ・マネージャ14022に知られていること。
}
イベント・データのリスト(上述のデータ構造のmk_events)は、時間範囲内(つまり、mk_begin以上で、mk_end未満)にあるタイムスタンプを持つイベントのリストである。
イベント・キャッシュ・マネージャ14022は、例えば、関心の集合14110に対応する、関心のコンテナを保持する。イベント・キャッシュ・マネージャ14022は、さらに、イベント・キャッシュと呼ばれる知られている範囲のコンテナも保持する。イベント・キャッシュ内の知られているイベントは、コンテナ内のイベント範囲の順序がmk_begin時間に基づくようにソートされる。
上述のように、イベント使用コンポーネントは、イベント・データを受信することに関心を持つ期間の関心を登録する。例えば、ライブ・イベント・コンポーネント14001は、所定の時刻から未来に延びるイベントへの関心14113を持つことができる。ユーザ・アクションに対する応答としてイベント検索コンポーネント14002は、過去の時間範囲に関係する関心14111を登録することができる。
イベント検索コンポーネント14002および関心14111の例について考察する。イベント・キャッシュ・マネージャ14022は、関心のコンテナに関心14111を格納する。関心14111は、登録されている関心の時間範囲内にあるイベント・キャッシュ・マネージャに知られているイベントと突き合わせてチェックされる。関心の時間範囲内にあるそれぞれのイベントについて、イベントをイベント検索コンポーネント14002に通知するためコールバックが実行される。次に、イベント・キャッシュをテストし、知られている範囲(14121、14122、14123など)が関心範囲の完全なカバーを形成しているか調べる(知られている範囲の集合に含まれていない関心の範囲の一部があるかどうかを決定することにより)。完全なカバーがある場合(つまり、時間にギャップがない)、関心範囲は完全のマークが付けられ、イベント検索コンポーネント14002に対する他のコールバックが実行され、この関心に対するイベント・データが完了していることをイベント検索コンポーネント14002に通知する(つまり、関心の時間範囲内のすべてのイベントがイベント検索コンポーネント14002に通知されている)。
実施例では、知られているイベント範囲14121および14122は、部分的に、関心14111の時間範囲をカバーするので、イベント・キャッシュ・マネージャ14022により埋められる必要があるギャップが知られている範囲内にある。2つの別々のタスク(通常は、別々のスレッドとして実装される)が、イベント・キャッシュ・マネージャ14022内で実行され、アクセス・エンジン通信モジュール14021を使用するイベント通信タスクを受け持つ。第1のタスクは、関心時間範囲内にあるが、知られている範囲内にはなく、過去にある(つまり、未来にはない)イベントについてイベント・データを取り出すアクセス・エンジン203への要求を開始する役割を持つ。第2のタスクは、現在発生しているイベントを取り出す役割を持つ、つまり、終了時刻が未来にある場合である(つまり、mi_end値が特別な値−1に設定されている)。
イベント検索コンポーネント14002によるイベントの要求に関する実施例が示されている。他のイベント使用コンポーネント(つまり、ライブ・イベント・コンポーネント14001または時刻表コンポーネント14003)からの要求である場合のオペレーションは、実質的に同じである。
上述の第1のイベント通信タスクを考察する。新しい関心が登録された場合(つまり、イベント・キャッシュ・マネージャ14022上のコンテナに追加される)、タスク・イベント通信タスクは、イベント・キャッシュ・マネージャ(上述のように)内の関心のリストを検索し、第1の不完全な関心を特定する。不完全な関心から、タスクは、知られている範囲のコンテナ内を探索し、関心の時間範囲内にある知られている範囲内の第1のギャップを特定する。このような理由から、イベント・キャッシュは、オーバーラップする期間のないソート順序で知られている範囲を保持する。
関心14111および知られている範囲14121、14122の実施例に従い、イベント通信タスクは、14121と14122との間の範囲内のイベントについてアクセス・エンジン203上で要求を形成する。さらに、新しい知られている範囲構造が作成され、イベント・キャッシュ内に配置される。新しい知られている範囲の開始時刻は、前のイベント範囲の終了時刻またはイベント関心の開始時刻である。この実施例では、新しい知られている範囲の開始時刻は、前のイベント範囲14121の終了時刻である。新しいイベント範囲の終了時刻は、新しい知られている範囲の開始時刻に等しくなるように設定される。
イベントの要求は、新しいイベント範囲およびイベント・キャッシュ・マネージャ14022に関連付けられているカメラ112〜115を含む。この要求は、付録Bで説明されているアクセス・エンジン・プロトコルを使用してアクセス・エンジン通信モジュール14021を通じてアクセス・エンジン203に送信される(通常、「fetch event」コマンドを使用する)。アクセス・エンジン203は、一連のEVENT_BLOBデータ送信で応答する。アクセス・エンジン203は、イベントを時間順に送信する。これらは、イベント・データについて解析される。受信されたイベントは、新しい知られている範囲内のイベントのリスト内でソートされ、新しい知られている範囲の終了時刻は、最後に受信されたイベントの時刻に設定される。また、この時刻を含む(例えば、時刻表コンポーネント、イベント検索コンポーネント、またはライブ・イベント・コンポーネントにより)登録されている関心は、イベントにも通知される。
要求に対する最後のイベントが受信されると、アクセス・エンジンは、要求が完了していることを示すインジケータを送信する(ストリームの終わりブロブ)。この時点で、イベント・キャッシュ・マネージャは、終了時刻をイベントの要求の終了時刻に設定し、それに完了のマークを付けることにより新しい知られている範囲をファイナライズする。この時点で、イベント・キャッシュ・マネージャ内のすべての関心がチェックされ、この新しい知られている範囲の完了により完了したものは何でも、完了のマークが付けられ、関心を登録されたイベント・データが最新のものであることをイベント使用コンポーネントに知らせる通知コールバックが実行される。
最後に、新しい知られている範囲が完了すると、イベント・キャッシュ・マネージャは、その関心および新しいギャップに対する知られている範囲を探索し、イベント・データを要求する他のサイクルを開始する。
前述の好ましい(複数の)方法は、特定の制御の流れを含む。本発明の精神または範囲値から逸脱することなく異なる制御の流れを使用する好ましい(複数の)方法の他の変更形態が多数ある。さらに、(複数の)好ましい方法のステップの1つまたは複数は、逐次的にではなく並列に実行できる。
上述の方法は、代わりに、説明されているプロセスの機能または下位機能を実行する1つまたは複数の集積回路などの専用ハードウェアで実装することができる。このような専用ハードウェアは、グラフィック・プロセッサ、デジタル・シグナル・プロセッサ、または1つまたは複数のマイクロプロセッサおよび関連するメモリを含むことができる。
以上では、本発明のいくつかの実施形態のみを説明し、本発明の範囲および精神から逸脱することなく修正および/または変更を加えることができ、これらの実施形態は、例示的であり、制約的ではない。
本明細書の文脈では、「含む、備える」という用語は、「主に含むが、必ずしももっぱらというわけではない」、または「持つ」、または「含む、包含する」を意味し、「のみからなる」を意味しない。「含む、備える(comprise、comprises)」などの「含む、備える(comprising)」の変更形態は、それに応じて変えた意味を有する。

付録A:ブロブの形式
アクセス・エンジン203とビューア2200との間の通信で使用されるブロブの形式を以下に示す。
「Image」ブロブ
struct AE_VideoBlob
{
CNV_Time time;
Image im;
}
それぞれのビデオ・ブロブは、時間構造体の中で指定された時刻の単一のjpeg画像を含む。時刻構造体は、年の後に、当年の0から始まる日の通し番号(つまり、1月1日は日0、2月2日は日32)、フレームが記録された日までのミリ秒数が続く。
「Event」ブロブ
Struct event
{
uint16 num_events;
struct event events [] ;
};
イベントの数は、番号の後のイベントの数である。それぞれのイベントは、改行文字により区切られる。
「Start」ブロブ
struct start
{
uint32 connection_id;
}
これは、データ接続上で送信される第1のブロブである。これは、データ・ストリームの接続idを含む。ブロブのストリームidは、0に設定される。
「Keepalive」ブロブ
このブロブは、タイムアウトにより介在するプロキシ・サーバが接続を閉じるのを防ぐために一定の不活動期間の後にクライアント(ビューア2200)に送信される。接続上で他の活動がある場合(ストリーミング・ビデオなど)、keepaliveブロブは送信されない。このようなブロブは、クライアント(つまり、ビューア2200)によりタイミングに関して依存されるべきでない。このブロブ・タイプには付加データはない。
「End Stream」ブロブ
struct start
{
uint32 stream_id;
}
「End stream」ブロブは、ストリームが終了している場合に送信される。これは、アクセス・エンジン203がストリームを終了しつつあり、クライアント(ビューア2200)がもはやこのストリームからブロブを受信しなくなることを意味する。終了したストリームを修正する他のすべての要求は失敗する。
「Close Stream」ブロブ
「Close stream」ブロブは、データ接続上の最後のブロブとして送信される。クライアント(ビューア2200)は、ビューアが「close stream」ブロブを受信すると、接続をきれいに閉じる。このブロブ・タイプには付加データはない。
「No video」ブロブ
struct no_video blob
{
CNV_Time curr_time;
CNV_Time next_time;
}
「No video」ブロブは、ビデオはまだ来るが、現在、ストリーム内の現在時刻には何もない場合に、ビデオ・ブロブの代わりに、クライアント(つまり、ビューア2200)に送信される。これらのブロブは、no video期間に定期的に送信されるが、ビデオと同じ速度では送信されない。現在時刻は、ストリーム内の現在時刻である。この現在時刻値は、欠落ビデオの期間中にアクセス・エンジン203との同期を保持するためにクライアント(つまり、ビューア2200)により使用されることができる。次のフレームまでの時間は、ストリーム内の次のフレームが送信されるべきときまでの時間である。

付録B:アクセス・エンジンおよびビューアによって使用されるヘッダ、応答、およびコマンド
ヘッダ
以下のヘッダは、クライアント(つまり、ビューア2200)により送信される要求のすべてまたはほとんど、またはサーバ(つまり、アクセス・エンジン203)により送信される応答内に存在していなければならない。特定のコマンドに関して他のヘッダを含めることもできる。
nvr-protocol-version: <version>
クライアント(つまり、ビューア2200)またはサーバ(つまり、アクセス・エンジン203)が使用しているプロトコルのバージョン。versioinはプロトコルのバージョンを指定する整数である。本書では、veersion 1と記述する。これは、クライアント(つまり、ビューア2200)からのすべての要求、およびサーバ(つまり、アクセス・エンジン203)からの応答に含まれなければならない。
nvr-client: <name>
クライアント(つまり、ビューア2200)の名前。nameは、ブラウザを記述するために使用されるUser−agent文字列などのような自由形式文字列である。これは、クライアント(つまり、ビューア2200)からのすべての要求に含まれなければならない。
nvr-client-version: <version>
クライアント(つまり、ビューア2200)のバージョン。versionは、「1.2.3」の形のドット数値記表文字列である。これは、クライアント(つまり、ビューア2200)からのすべての要求に含まれなければならない。
nvr-server: <name>
サーバ(つまり、アクセス・エンジン203)の名前。nameは、Webサーバ応答の中のServer文字列のような自由形式文字列であり、サーバ(つまり、アクセス・エンジン203)からのすべての応答に含まれなければならない。
nvr-server-version: <version>
サーバのバージョン。versionは、「1.2.3」の形式のドット数値記表文字列であり、サーバ(つまり、アクセス・エンジン203)からのすべての応答に含まれなければならない。
nvr-connection-id: <id>
これは、現在のクライアント(つまり、ビューア2200)接続の接続idであり、セットアップ要求を除きクライアント(つまり、ビューア2200)からのすべての要求で送信されなければならない。idは、10進数形式の32ビット整数である。
共通応答
いくつかの応答は、すべての、またはほとんどすべてのコマンドにわたって共通である。これらは、すべてのコマンドに関して以下で繰り返されないエラー・メッセージである。
Internal error
これは、未指定の発信源のサーバ(つまり、アクセス・エンジン203)内のエラーを示す。サーバ(つまり、アクセス・エンジン203)は、不規則に実行を開始する場合がある。この応答は、すべてのコマンドに適用される。
Not Setup
クライアント(つまり、ビューア2200)は、セットアップ・コマンドを発行していない。サーバ(つまり、アクセス・エンジン203)は、クライアント(つまり、ビューア2200)がセットアップまたは再接続を呼び出すまで、セットアップまたは再接続を除き、この応答でコマンドに応答する。試みられていたコマンドは失敗し、データ接続がもし存在すればそれに対し変更が加えられていない。
コマンド
以下に、制御接続6005上でクライアント(つまり、ビューア2200)によりサーバ(つまり、アクセス・エンジン203)に送信されるコマンドのリストをまとめた。これらはコマンドとして説明されているが、実際には、キャンバス・ストリーミング・サーバ「ファイル」をフェッチするHTTP GETコマンドへのパラメータである。例えば、セットアップ・コマンドは、実際には、以下のHTTPコマンド(最低限のヘッダを持つ)である。
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応答であり、応答のデータ・セクション内に追加情報が含まれる。例えば、次のようである。
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
それぞれのコマンドは、URLに入れるコマンド・テキスト、他のパラメータ、および可能な応答をリストにしたものである。
Setup
これは、ビューア2200が接続した後、クライアント(つまり、ビューア2200)によりサーバ(つまり、アクセス・エンジン203)に送信される第1のコマンドである。これの前に送信される他のコマンドはどれも、サーバ(つまり、アクセス・エンジン203)からエラーを生成する。setupは、クライアント(つまり、ビューア2200)がセットアップ応答で示されているデータ接続回数を確定するまで完了しない。
コマンド:setup
パラメータ:なし
応答:
OK
セットアップの第1の部分は、正常に完了した。クライアント(つまり、ビューア2200)がデータ接続を完了するまで、セットアップ手順は終了しない。この応答の中野データは以下のフィールドを持つ。
Connection−id
これは、コマンド接続のコマンド接続idを指定する。
Data−connection−id
データ接続のid
Num−data−connections
クライアント(つまり、ビューア2200)がサーバ(つまり、アクセス・エンジン203)に対し開く必要があるデータの数。プロトコルのこのバージョンでは、これは常に1である。
OK already setup
クライアント(つまり、ビューア2200)はすでにセットアップされている。データ接続はまだ有効である。この応答ではデータはない。
Shutdown
このコマンドは、サーバ(つまり、アクセス・エンジン203)へのクライアント(つまり、ビューア2200)の接続をシャットダウンするために使用される。すべてのデータ・ストリームは、閉じられ、すべてのサーバ(つまり、アクセス・エンジン203)リソースは、解放される。このコマンドが完了すると、ビューアは接続を閉じなければならない。クライアント(つまり、ビューア2200)は、「close」ブロブが受信されるまでデータ接続を閉じてはならない。
コマンド:shutdown
パラメータ:
Connection−id
セットアップ応答の中のクライアント(つまり、ビューア2200)に与えられたコマンド接続id。
応答:
OK
シャットダウンは正常に完了した。クライアント(つまり、ビューア2200)は、データ接続上で「close」ブロブを予期すべきである。サーバ(つまり、アクセス・エンジン203)によって新しいデータは送信されないが、出力バッファ内のデータが送信されている間に遅延がありうる。
Fetch Video
このコマンドは、サーバ(つまり、アクセス・エンジン203)からのビデオ・データのストリーミングを開始するために使用される。クライアント(つまり、ビューア2200)は、サーバ(つまり、アクセス・エンジン203)ができる限り速くビデオを転送するか、またはビューイング速度でストリーミングすることを要求することができる。サーバ(つまり、アクセス・エンジン203)は、ビデオ・ストリームの到達に使用される接続を決定する。
コマンド:video
パラメータ:
Connection−id
セットアップ応答の中のクライアント(つまり、ビューア2200)に与えられたコマンド接続id。このパラメータは必須である。
Frame_rate
要求されたビデオの望むフレーム速度。これが、使用可能なフレーム速度よりも高い場合、ストリーミングは、そのまま開始し、クライアント(つまり、ビューア2200)は、第1のビデオ・フレームの前にコマンド接続応答またはデータ接続のいずれかでこのことを通知される。この値は、0.1から25(PAL記録システムの場合)、または30(NTSC記録システムの場合)までの範囲の値である。
Play_rate
再生速度は、ビューアでビデオを見ることが望まれている知覚される速度である。値は、100を超える比であるため、100は通常再生速度であり、200は倍速であり、25は1/4倍速である。巻き戻し再生の場合、再生速度を負の数に設定する。パラメータは、オプションである。
Camera−id
ビデオが生成されたカメラのid。
No−skip
ネットワーク輻輳のため、フレームをスキップするのではなく、ビデオ内のすべてのフレームをストリーミングするようにサーバ(つまり、アクセス・エンジン203)に通知する論理値フラグである。このフラグは、転送が設定された場合に暗示され、設定は、転送がURL内で設定されている値に関係なく設定される場合に常に真である。すべてのサーバがフレームのスキップをサポートしているわけではないことに注意されたい。
Transfer
このストリームが転送ストリームであることサーバ(つまり、アクセス・エンジン203)に知らせる論理値フラグ。これは、2つの影響を持つ。第1に、ネットワーク輻輳に関係なくすべてのフレームが送信されるようにno−skipフラグをセットすることであり、第2に、サーバ(つまり、アクセス・エンジン203)が実時間ではなく可能な限り速くビデオを送信しようとすることを意味する。サーバ(つまり、アクセス・エンジン203)は、そのまま、転送により使用される帯域幅を絞り、ネットワーク帯域幅の実時間ビデオ転送の不足を生じさせないようにすることを選択することができる。
Time−range
これは、取り出すビデオの時間範囲または特別な値「live」のいずれかである。「live」が設定されている場合、カメラからのライブ・フィードは、ほぼ指定されたフレーム速度で供給される。ライブ要求では、転送およびno−skipオプションを無視する。時間範囲形式は以下のとおりである。
Yyyymmdd_hhmmss[uuu][_yyyymmdd_hhmmss[uuu]]
つまり、4桁の年、2桁の月、2桁の日、下線、2桁の時(24時間UTC)、2桁の分、オプションの3桁のミリ秒、オプションの下線、その後、開始時刻と同じ形式のオプションの終了時刻。終了時刻がない場合、後続の下線はあってはならない。終了時刻がない場合、時間は、連続要求であると想定される。
応答
OK
要求は成功した。ビデオは、指定されたストリーム内の指定されたデータ接続で到着を始める。この応答は以下のフィールドを持つ。
Connection−id
ビデオが送信されるデータ接続。このフィールドは、常に、コマンド応答の中にある。
Stream−id
ビデオ・ストリームのストリームid。このフィールドは、常に、コマンド応答の中にある。
No such camera
要求されたカメラは存在しない。ビデオはストリーミングされない。
Fetch Frame
このコマンドは、フレーム・シーケンス番号、カメラ、および位置指定子(次、現在、または前)が与えられた場合、サーバ(つまり、アクセス・エンジン203)から単一フレームをフェッチする。これにより、クライアント(つまり、ビューア2200)は、順方向または逆方向に、1フレームずつビデオ・フレームのセクションを辿る。
コマンド:frame
パラメータ:Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。
Camera−id
フレームを生成したカメラのid。
Seq−num
参照フレームのシーケンス番号。
位置
seq−numに関して取り出すフレームを参照する「current」、「next」、または「previous」のうちの1つ。「Current」は、与えられたseq−numに最も近いフレームを取得することを意味する。最も近いフレームが2つある場合、一番最近のものが返される。「next」は、与えられたシーケンス番号の後の次のフレームを返し、「previous」は、与えられたシーケンス番号の前の前のフレームを返す。
応答:
OK
要求は成功した。フレームは、返されたストリームの中で、返された接続id上に到着する。この応答は以下のフィールドを持つ。
Connection−id
フレームが届く接続id。これは、クライアント(つまり、ビューア2200)が開いているデータ接続のうちの1つとなる。このフィールドは、常に、コマンド応答の中にある。
Stream−id
フレームが届くストリームid。このフィールドは、コマンド応答の中にある。
No video
使用可能なフレームがないため要求は失敗した。これは、例えばビデオ内の最後のフレームの後の次のフレームが要求された場合に発生することがある。
No such camera
要求されたカメラは存在しない。
Fetch event
このコマンドは、サーバ(つまり、アクセス・エンジン203)から与えられた時間範囲内のイベント・データを要求する。また、ロケーション、ゾーン、またはカメラのオプション・パラメータを持つこともできる。
コマンド:event
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。
Time−range
イベントが発生した時間範囲。これは、ビデオ要求と同じ形式である。このパラメータは必須である。
Camera
このカメラに関係するイベントを返す。このパラメータは必須である。
応答:
OK
要求は成功した。イベント・データは、返されたデータ接続およびストリーム上に到着し始める。この応答は以下のフィールドを持つ。
Connection−id
イベント・データが到着する接続の接続id。これは、クライアント(つまり、ビューア2200)が開いているデータ接続のうちの1つとなる。このフィールドは、常に、コマンド応答の中にある。
Stream−id
イベント・データが届くストリームid。このフィールドは、常に、コマンド応答の中にある。
No such camera
指定されたカメラは存在しない。
Too much data
送信するイベント・データが多すぎるため、サーバ(つまり、アクセス・エンジン203)は、要求を完了することができない。クライアント(つまり、ビューア2200)は、小さな時間範囲を要求し、複数のさらに小さなチャンクで要求を完了しなければならない。
No events in range
指定されたクエリ内にイベント・データがない。
Pause stream
このコマンドは、進行中のストリームを一時停止する。ビデオとイベントの両方に適用可能である。ストリームは、ストリームに対しresumeを呼び出すことにより後から再開できる。
コマンド:pause
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、一時停止させるストリームを含むデータ接続の接続idではない。
Stream−id
一時停止させるビデオまたはイベント・ストリームのストリームid。
応答:
OK
コマンドは正常に完了した。ストリームは、近い将来一時停止される。いくつかのブロブは、そのまま、ネットワークのバッファリングにより、アクセス・エンジン203から受信できる。
No such stream
指定されたストリームが存在しない。
Resume stream
このコマンドは、すでに一時停止されているストリームを再開する。ストリームは、ちょうど一時停止されたところから継続する。
コマンド:resume
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、再開させるストリームを含む接続の接続idではない。
応答:
OK
コマンドは正常に完了した。ストリームは、そのデータについて再開される。
No such stream
指定されたストリームが存在しない。
Next frame
一時停止ストリーム内の次のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、(複数の)次のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
コマンド:next
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、フレームを取り出したいストリームを含む接続の接続idではない。
Stream−id
フレームを取り出したいストリームのストリームid。
応答:
OK
コマンドは正常に完了した。1つのフレームがデータ接続上でクライアント(つまり、ビューア2200)に送信される。
No such stream
指定されたストリームが存在しない。
Prev frame
一時停止ストリーム内の前のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、前のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
コマンド:prev
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、フレームを取り出したいストリームを含む接続の接続idではない。
Stream−id
フレームを取り出したいストリームのストリームid。
応答:
OK
コマンドは正常に完了した。1つのフレームがデータ接続上でクライアント(つまり、ビューア2200)に送信される。
Modify video stream
このコマンドは、指定されたビデオ・ストリームのフレーム速度を修正する。ストリーミングされる実際のフレーム速度は、指定されたフレーム速度と異なる場合がある。
コマンド:modify
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、修正したいストリームを含む接続の接続idではない。
Stream−id
修正するビデオ・ストリームのストリームid。これは、ビデオ・ストリームでなければならない。
Frame_rate
ストリームが変更されなければならないフレーム速度。これは、絶対値(つまり、20)、または相対値(つまり、−2)とすることができる。プラスまたはマイナス記号で始まる値は、相対値である。フレーム速度は、サーバ(つまり、アクセス・エンジン203)が使用可能である値よりも高くすることはできない。
Range
要求の範囲を変更する。これにより、ストリームは、範囲の先頭から再び開始する。
Play_rate
ストリームの再生速度を変更する。これは、ストリームが最初に要求されたときの再生速度を設定するのと同じ影響を持つ。ビデオ・ストリームの位置は変化しない。
Transfer
ビデオの「transfer」フラグをセットまたはクリアする。これは、ストリームが要求されたときの設定と同じ影響を持つ。
応答:
OK
コマンドは正常に完了した。この応答が受信された後、その時点以降のすべてのフレームは、新しいフレーム速度になる。
No such stream
指定されたストリームは存在しないか、またはこのクライアント(つまり、ビューア2200)に送信されていない。
Not a video stream
指定されたストリームは、ビデオ・ストリームではない。
Stop stream
このコマンドは、クライアント(つまり、ビューア2200)に現在送信されているストリームを停止する。これは、イベント要求などのビデオ・ストリームを含まない。
コマンド:stop
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、停止すべきストリームを含む接続の接続idではない。
Stream−id
停止すべきストリームid。
応答:
OK
コマンドは正常に完了した。ストリームは、停止される。「close」ブロブは、ストリーム内の最後のブロブを示すためにストリームを介して送信される。クライアント(つまり、ビューア2200)はこのブロブを受信した後、stream−idは有効でなくなる。
No such stream
指定されたストリームは存在しないか、またはこのクライアント(つまり、ビューア2200)に送信されていない。
Keep alive
このコマンドは、no−opコマンドであり、接続が閉じられないようにするために定期的にクライアント(つまり、ビューア2200)によりサーバ(つまり、アクセス・エンジン203)に送信されなければならない。クライアント(つまり、ビューア2200)がコマンド接続上で他のデータを送信していない場合にのみ必要である。
コマンド:keepalive
パラメータ:なし
応答
OK
このコマンドは失敗しえない。どのデータ接続にもブロブは送信されない。
データ接続の開始
クライアント(つまり、ビューア2200)がコマンド接続を行い、セットアップ・コマンドを発行した後、クライアント(つまり、ビューア2200)は、サーバ(つまり、アクセス・エンジン203)との1つまたは複数のデータ接続を行う必要がある。これは、ただ1つのパラメータ、つまり、データ接続の接続idとともに、コマンドをサーバ(つまり、アクセス・エンジン203)に発行するのと同じ方法で実行される。
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
これに対する可能な応答は以下のとおりである。
OK
データ接続はこれで準備完了である。サーバ(つまり、アクセス・エンジン203)は、チャンク符号を指定し、HTTP応答は、終了しない。
Invalid data connection id
与えられた接続idが割り当てられていないか、与えられたコマンドidに割り当てられていないか、またはデータ接続ではない。
Invalid command connection id
与えられたコマンド接続idは、有効なコマンド接続idでないか、またはそのデータ接続に関連付けられていない。
Too many data connections
与えられたコマンド接続には、すでに必要な回数のデータ接続がある。
OK応答が受信された後、HTTPチャンク符号化を使用する上記形式のデータが到着する。クライアントでは、ブロブ全体が単一チャンクに含まれことを想定することも、それぞれのチャンクが単一のブロブのみを含むことも想定すべきでない。

付録B:ブロブの形式
アクセス・エンジン203とビューア2200との間の通信で使用されるブロブの形式を以下に示す。
「Image」ブロブ
struct AE_VideoBlob
{
CNV_Time time;
Image im;
}
それぞれのビデオ・ブロブは、時間構造体の中で指定された時刻の単一のjpeg画像を含む。時刻構造体は、年の後に、当年の0から始まる日の通し番号(つまり、1月1日は日0、2月2日は日32)、フレームが記録された日までのミリ秒数が続く。
「Event」ブロブ
struct event
{
uint16 num_events;
struct event events[];
};
イベントの数は、番号の後のイベントの数である。それぞれのイベントは、改行文字により区切られる。
「Start」ブロブ
struct start
{
uint32 connection_id;
}
これは、データ接続上で送信される第1のブロブである。これは、データ・ストリームの接続idを含む。ブロブのストリームidは、0に設定される。
「Keepalive」ブロブ
このブロブは、タイムアウトにより介在するプロキシ・サーバが接続を閉じるのを防ぐために一定の不活動期間の後にクライアント(ビューア2200)に送信される。接続上で他の活動がある場合(ストリーミング・ビデオなど)、keepaliveブロブは送信されない。このようなブロブは、クライアント(つまり、ビューア2200)によるタイミングに関して依存されるべきでない。このブロブ・タイプには付加データはない。
「End Stream」ブロブ
struct start
{
uint32 stream_id;
}
「End stream」ブロブは、ストリームが終了している場合に送信される。これは、アクセス・エンジン203がストリームを終了しつつあり、クライアント(ビューア2200)がもはやこのストリームからブロブを受信しなくなることを意味する。終了したストリームを修正する他のすべての要求は失敗する。
「Close Stream」ブロブ
「Close stream」ブロブは、データ接続上の最後のブロブとして送信される。クライアント(ビューア2200)は、ビューアが「close stream」ブロブを受信すると、接続を閉じる。このブロブ・タイプには付加データはない。
「No video」ブロブ
struct no_video_blob
{
CNV_Time curr_time;
CNV_Time next_time;
}
「No video」ブロブは、ビデオはまだ来るが、現在、ストリーム内の現在時刻には何もない場合に、ビデオ・ブロブの代わりに、クライアント(つまり、ビューア2200)に送信される。これらのブロブは、no video期間に定期的に送信されるが、ビデオと同じ速度では送信されない。現在時刻は、ストリーム内の現在時刻である。この現在時刻値は、欠落ビデオの期間中にアクセス・エンジン203との同期を保持するためにクライアント(つまり、ビューア2200)により使用されることができる。次のフレームまでの時間は、ストリーム内の次のフレームが送信されるべきときまでの時間である。

付録C:アクセス・エンジンおよびビューアによって使用されるヘッダ、応答、およびコマンド
ヘッダ
以下のヘッダは、クライアント(つまり、ビューア2200)により送信されるすべてまたはほとんどの要求、またはサーバ(つまり、アクセス・エンジン203)により送信される応答内に存在していなければならない。特定のコマンドに関して他のヘッダを含めることもできる。
nvr-protocol-version: <version>
クライアント(つまり、ビューア2200)またはサーバ(つまり、アクセス・エンジン203)が使用しているプロトコルのバージョン。versionはプロトコルのバージョンを指定する整数である。本書では、version 1と記述する。これは、クライアント(つまり、ビューア2200)からのすべての要求、およびサーバ(つまり、アクセス・エンジン203)からの応答に含まれなければならない。
nvr-client: <name>
クライアント(つまり、ビューア2200)の名前。nameは、ブラウザを記述するために使用されるUser−agent文字列などのような自由形式文字列である。これは、クライアント(つまり、ビューア2200)からのすべての要求に含まれなければならない。
nvr-client-version : <version>
クライアント(つまり、ビューア2200)のバージョン。versionは、「1.2.3」の形のドット数値記表文字列である。これは、クライアント(つまり、ビューア2200)からのすべての要求に含まれなければならない。
nvr-server: <name>
サーバ(つまり、アクセス・エンジン203)の名前。nameは、Webサーバ応答の中のServer文字列のような自由形式文字列であり、サーバ(つまり、アクセス・エンジン203)からのすべての応答に含まれなければならない。
nvr-server-version : <version>
サーバのバージョン。versionは、「1.2.3」の形式のドット数値記表文字列であり、サーバ(つまり、アクセス・エンジン203)からのすべての応答に含まれなければならない。
nvr-connection-id: <id>
これは、現在のクライアント(つまり、ビューア2200)接続の接続idであり、セットアップ要求を除きクライアント(つまり、ビューア2200)からのすべての要求で送信されなければならない。idは、10進数形式の32ビット整数である。
共通応答
いくつかの応答は、すべての、またはほとんどすべてのコマンドにわたって共通である。これらは、すべてのコマンドに関して以下で繰り返されないエラー・メッセージである。
Internal error
これは、未指定の発信源のサーバ(つまり、アクセス・エンジン203)内のエラーを示す。サーバ(つまり、アクセス・エンジン203)は、不規則に実行を開始する場合がある。この応答は、すべてのコマンドに適用される。
Not Setup
クライアント(つまり、ビューア2200)は、セットアップ・コマンドを発行していない。サーバ(つまり、アクセス・エンジン203)は、クライアント(つまり、ビューア2200)がセットアップまたは再接続を呼び出すまで、セットアップまたは再接続を除き、この応答でコマンドに応答する。試みられていたコマンドは失敗し、データ接続がもし存在すればそれに対し変更が加えられていない。
コマンド
以下に、制御接続6005上でクライアント(つまり、ビューア2200)によりサーバ(つまり、アクセス・エンジン203)に送信されるコマンドのリストをまとめた。これらはコマンドとして説明されているが、実際には、キャンバス・ストリーミング・サーバ「ファイル」をフェッチするHTTP GETコマンドへのパラメータである。例えば、セットアップ・コマンドは、実際には、以下のHTTPコマンド(最低限のヘッダを持つ)である。
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応答であり、応答のデータ・セクション内に追加情報が含まれる。例えば、次のようである。
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
それぞれのコマンドは、URLに入れるコマンド・テキスト、他のパラメータ、および可能な応答をリストにしたものである。
Setup
これは、ビューア2200が接続した後、クライアント(つまり、ビューア2200)によりサーバ(つまり、アクセス・エンジン203)に送信される第1のコマンドである。これの前に送信される他のコマンドはどれも、サーバ(つまり、アクセス・エンジン203)からエラーを生成する。setupは、クライアント(つまり、ビューア2200)がセットアップ応答で示されているデータ接続回数を確定するまで完了しない。
コマンド:setup
パラメータ:なし
応答:
OK
セットアップの第1の部分は、正常に完了した。クライアント(つまり、ビューア2200)がデータ接続を完了するまで、セットアップ手順は終了しない。この応答の中のデータは以下のフィールドを持つ。
Connection−id
これは、コマンド接続のコマンド接続idを指定する。
Data−connection−id
データ接続のid
Num−data−connections
クライアント(つまり、ビューア2200)がサーバ(つまり、アクセス・エンジン203)に対し開く必要があるデータの数。プロトコルのこのバージョンでは、これは常に1である。
OK already setup
クライアント(つまり、ビューア2200)はすでにセットアップされている。データ接続はまだ有効である。この応答ではデータはない。
Shutdown
このコマンドは、サーバ(つまり、アクセス・エンジン203)へのクライアント(つまり、ビューア2200)の接続をシャットダウンするために使用される。すべてのデータ・ストリームは、閉じられ、すべてのサーバ(つまり、アクセス・エンジン203)リソースは、解放される。このコマンドが完了すると、ビューアは接続を閉じなければならない。クライアント(つまり、ビューア2200)は、「close」ブロブが受信されるまでデータ接続を閉じてはならない。
コマンド:shutdown
パラメータ:
Connection−id
セットアップ応答の中のクライアント(つまり、ビューア2200)に与えられたコマンド接続id。
応答:
OK
シャットダウンは正常に完了した。クライアント(つまり、ビューア2200)は、データ接続上で「close」ブロブを予期すべきである。サーバ(つまり、アクセス・エンジン203)によって新しいデータは送信されないが、出力バッファ内のデータが送信されている間に遅延がありうる。

Fetch Video
このコマンドは、サーバ(つまり、アクセス・エンジン203)からのビデオ・データのストリーミングを開始するために使用される。クライアント(つまり、ビューア2200)は、サーバ(つまり、アクセス・エンジン203)ができる限り速くビデオを転送するか、またはビューイング速度でストリーミングすることを要求することができる。サーバ(つまり、アクセス・エンジン203)は、ビデオ・ストリームの到達に使用される接続を決定する。
コマンド:video
パラメータ:
Connection−id
セットアップ応答の中のクライアント(つまり、ビューア2200)に与えられたコマンド接続id。このパラメータは必須である。
Frame_rate
要求されたビデオの望ましいフレーム速度。これが、使用可能なフレーム速度よりも高い場合、ストリーミングは、そのまま開始し、クライアント(つまり、ビューア2200)は、第1のビデオ・フレームの前にコマンド接続応答またはデータ接続のいずれかでこのことを通知される。この値は、0.1から25(PAL記録システムの場合)、または30(NTSC記録システムの場合)までの範囲の値である。
Play_rate
再生速度は、ビューアがビデオを見せようと望む知覚速度である。値は、100を超える比であるため、100は通常再生速度であり、200は倍速であり、25は1/4倍速である。巻き戻し再生の場合、再生速度を負の数に設定する。パラメータは、オプションである。
Camera−id
ビデオが生成されたカメラのid。
No−skip
ネットワーク輻輳のため、フレームをスキップするのではなく、ビデオ内のすべてのフレームをストリーミングするようにサーバ(つまり、アクセス・エンジン203)に通知する論理値フラグである。このフラグは、転送が設定された場合に暗示され、設定は、転送がURL内で設定されている値に関係なく設定される場合に常に真である。すべてのサーバがフレームのスキップをサポートしているわけではないことに注意されたい。
Transfer
このストリームが転送ストリームであることサーバ(つまり、アクセス・エンジン203)に知らせる論理値フラグ。これは、2つの影響を持つ。第1に、ネットワーク輻輳に関係なくすべてのフレームが送信されるようにno−skipフラグをセットすることであり、第2に、サーバ(つまり、アクセス・エンジン203)が実時間ではなく可能な限り速くビデオを送信しようとすることを意味する。サーバ(つまり、アクセス・エンジン203)は、そのまま、転送により使用される帯域幅を絞り、ネットワーク帯域幅の実時間ビデオ転送の不足を生じさせないようにすることを選択することができる。
Time−range
これは、取り出すビデオの時間範囲または特別な値「live」のいずれかである。「live」が設定されている場合、カメラからのライブ・フィードは、ほぼ指定されたフレーム速度で供給される。ライブ要求では、転送およびno−skipオプションを無視する。時間範囲のフォーマットは:
Yyyymmdd_hhmmss[uuu][_yyyymmdd_hhmmss[uuu]]
つまり、4桁の年、2桁の月、2桁の日、下線、2桁の時(24時間UTC)、2桁の分、オプションの3桁のミリ秒、オプションの下線、その後、開始時刻と同じ形式のオプションの終了時刻。終了時刻がない場合、後続の下線はあってはならない。終了時刻がない場合、時間は、連続要求であると想定される。
応答
OK
要求は成功した。ビデオは、指定されたストリーム内の指定されたデータ接続で到着を始める。この応答は以下のフィールドを持つ。
Connection−id
ビデオが送信されるデータ接続。このフィールドは、常に、コマンド応答の中にある。
Stream−id
ビデオ・ストリームのストリームid。このフィールドは、常に、コマンド応答の中にある。
No such camera
要求されたカメラは存在しない。ビデオはストリーミングされない。
Fetch Frame
このコマンドは、フレーム・シーケンス番号、カメラ、および位置指定子(次、現在、または前)が与えられた場合、サーバ(つまり、アクセス・エンジン203)から単一フレームをフェッチする。これにより、クライアント(つまり、ビューア2200)は、順方向または逆方向に、1フレームずつビデオ・フレームのセクションを辿る。
コマンド:frame
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。
Camera−id
フレームを生成したカメラのid。
Seq−num
参照フレームのシーケンス番号。
位置
seq−numに関して取り出すフレームを参照する「current」、「next」、または「previous」のうちの1つ。「Current」は、与えられたseq−numに最も近いフレームを取得することを意味する。最も近いフレームが2つある場合、一番最近のものが返される。「next」は、与えられたシーケンス番号の後の次のフレームを返し、「previous」は、与えられたシーケンス番号の前の前のフレームを返す。
応答:
OK
要求は成功した。フレームは、返されたストリームの中で、返された接続id上に到着する。この応答は以下のフィールドを持つ。
Connection−id
フレームが届く接続id。これは、クライアント(つまり、ビューア2200)が開いているデータ接続のうちの1つとなる。このフィールドは、常に、コマンド応答の中にある。
Stream−id
フレームが届くストリームid。このフィールドは、コマンド応答の中にある。
No video
使用可能なフレームがないため要求は失敗した。これは、例えばビデオ内の最後のフレームの後の次のフレームが要求された場合に発生することがある。
No such camera
要求されたカメラは存在しない。
Fetch event
このコマンドは、サーバ(つまり、アクセス・エンジン203)から与えられた時間範囲内のイベント・データを要求する。また、ロケーション、ゾーン、またはカメラのオプション・パラメータを持つこともできる。
コマンド:event
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。
Time−range
イベントが発生した時間範囲。これは、ビデオ要求と同じ形式である。このパラメータは必須である。
Camera
このカメラに関係するイベントを返す。このパラメータは必須である。
応答:
OK
要求は成功した。イベント・データは、返されたデータ接続およびストリーム上に到着し始める。この応答は以下のフィールドを持つ。
Connection−id
イベント・データが到着する接続の接続id。これは、クライアント(つまり、ビューア2200)が開いているデータ接続のうちの1つとなる。このフィールドは、常に、コマンド応答の中にある。
Stream−id
イベント・データが届くストリームid。このフィールドは、常に、コマンド応答の中にある。
No such camera
指定されたカメラは存在しない。
Too much data
送信するイベント・データが多すぎるため、サーバ(つまり、アクセス・エンジン203)は、要求を完了することができない。クライアント(つまり、ビューア2200)は、小さな時間範囲を要求し、複数のさらに小さなチャンクで要求を完了しなければならない。
No events in range
指定されたクエリ内にイベント・データがない。
Pause stream
このコマンドは、進行中のストリームを一時停止する。ビデオとイベントの両方に適用可能である。ストリームは、ストリームに対しresumeを呼び出すことにより後から再開できる。
コマンド:pause
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、一時停止させるストリームを含むデータ接続の接続idではない。
Stream−id
一時停止させるビデオまたはイベント・ストリームのストリームid。
応答:
OK
コマンドは正常に完了した。ストリームは、近い将来一時停止される。いくつかのブロブは、まだネットワークのバッファリングにより、アクセス・エンジン203から受信できる。
No such stream
指定されたストリームが存在しない。
Resume stream
このコマンドは、すでに一時停止されているストリームを再開する。ストリームは、ちょうど一時停止されたところから継続する。
コマンド:resume
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、再開させるストリームを含む接続の接続idではない。
応答:
OK
コマンドは正常に完了した。ストリームは、そのデータについて再開される。
No such stream
指定されたストリームが存在しない。
Next frame
一時停止ストリーム内の次のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、(複数の)次のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
コマンド:next
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、フレームを取り出したいストリームを含む接続の接続idではない。
Stream−id
フレーム形式を取り出したいストリームのストリームid。
応答:
OK
コマンドは正常に完了した。1つのフレームがデータ接続上でクライアント(つまり、ビューア2200)に送信される。
No such stream
指定されたストリームが存在しない。
Prev frame
一時停止ストリーム内の前のフレームを要求する。ストリームは、すでに一時停止されていない場合、まず一時停止され、その後、前のフレームが送信される。この場合、送信されるフレームは、ネットワーク待ち時間およびバッファリングのせいで不確定である。すべてのフレームが順序正しく、この場合は一度だけ、送信されることが保証される。
コマンド:prev
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、フレームを取り出したいストリームを含む接続の接続idではない。
Stream−id
フレーム形式を取り出したいストリームのストリームid。
応答:
OK
コマンドは正常に完了した。1つのフレームがデータ接続上でクライアント(つまり、ビューア2200)に送信される。
Modify video stream
このコマンドは、指定されたビデオ・ストリームのフレーム速度を修正する。ストリーミングされる実際のフレーム速度は、指定されたフレーム速度と異なる場合がある。
コマンド:modify
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、修正したいストリームを含む接続の接続idではない。
Stream−id
修正するビデオ・ストリームのストリームid。これは、ビデオ・ストリームでなければならない。
Frame_rate
ストリームが変更されなければならないフレーム速度。これは、絶対値(つまり、20)、または相対値(つまり、−2)とすることができる。プラスまたはマイナス記号で始まる値は、相対値である。フレーム速度は、サーバ(つまり、アクセス・エンジン203)が使用可能である値よりも高くすることはできない。
Range
要求の範囲を変更する。これにより、ストリームは、範囲の先頭から再び開始する。
Play_rate
ストリームの再生速度を変更する。これは、ストリームが最初に要求されたときの再生速度を設定するのと同じ影響を持つ。ビデオ・ストリームの位置は変化しない。
Transfer
ビデオの「transfer」フラグをセットまたはクリアする。これは、ストリームが要求されたときの設定と同じ影響を持つ。
応答:
OK
コマンドは正常に完了した。この応答が受信された後、その時点以降のすべてのフレームは、新しいフレーム速度になる。
No such stream
指定されたストリームは存在しないか、またはこのクライアント(つまり、ビューア2200)に送信されていない。
Not a video stream
指定されたストリームは、ビデオ・ストリームではない。
Stop stream
このコマンドは、クライアント(つまり、ビューア2200)に現在送信されているストリームを停止する。これは、イベント要求などのビデオ・ストリームを含まない。
コマンド:stop
パラメータ:
Connection−id
セットアップ・コマンドによりクライアント(つまり、ビューア2200)に割り当てられたコマンド接続id。これは、停止すべきストリームを含む接続の接続idではない。
Stream−id
停止すべきストリームid。
応答:
OK
コマンドは正常に完了した。ストリームは、停止される。「close」ブロブは、ストリーム内の最後のブロブを示すためにストリームを介して送信される。クライアント(つまり、ビューア2200)がいったんこのブロブを受信すると、stream−idは有効でなくなる。
No such stream
指定されたストリームは存在しないか、またはこのクライアント(つまり、ビューア2200)に送信されていない。
Keep alive
このコマンドは、no−opコマンドであり、接続が閉じられないようにするために定期的にクライアント(つまり、ビューア2200)によりサーバ(つまり、アクセス・エンジン203)に送信されなければならない。クライアント(つまり、ビューア2200)がコマンド接続上で他のデータを送信していない場合にのみ必要である。
コマンド:keepalive
パラメータ:なし
応答
OK
このコマンドは失敗しえない。どのデータ接続にもブロブは送信されない。
データ接続の開始
クライアント(つまり、ビューア2200)がコマンド接続を行い、セットアップ・コマンドを発行した後、クライアント(つまり、ビューア2200)は、サーバ(つまり、アクセス・エンジン203)との1つまたは複数のデータ接続を行う必要がある。これは、ただ1つのパラメータ、つまり、データ接続の接続idとともに、コマンドをサーバ(つまり、アクセス・エンジン203)に発行するのと同じ方法で実行される。
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
これに対する可能な応答は以下のとおりである。
OK
データ接続はこれで準備完了である。サーバ(つまり、アクセス・エンジン203)は、チャンク符号を指定し、HTTP応答は、終了しない。
Invalid data connection id
与えられた接続idが割り当てられていないか、与えられたコマンドidに割り当てられていないか、またはデータ接続ではない。
Invalid command connection id
与えられたコマンド接続idは、有効なコマンド接続idでないか、またはそのデータ接続に関連付けられていない。
Too many data connections
与えられたコマンド接続には、すでに必要な回数のデータ接続がある。
OK応答が受信された後、HTTPチャンク符号化を使用する上記形式のデータが到着する。クライアントでは、ブロブ全体が単一チャンクに含まれことを想定することも、それぞれのチャンクが単一のブロブのみを含むことも想定すべきでない。
付録A
アクセス・エンジンとビューアとの間の通信で使用されるブロブの形式の説明。
付録B
アクセス・エンジンおよびビューアにより使用されるヘッダ、応答、およびコマンドの説明。

Claims (9)

  1. 複数のカメラから配信されるライブ・ビデオデータ、および該複数のカメラから配信され記録手段に記録されたビデオデータを取得する取得手段と、
    前記複数のカメラから配信され前記記録手段に記録されたビデオデータの同時再生を行う再生手段と、
    時刻の範囲を示す時刻表と、前記時刻表上に配置され且つ前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータの再生時刻を示す再生ヘッドと、を表示するための表示処理手段とを備え、
    前記再生手段は、
    前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生し、
    前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻が現在時刻を示す場合、前記複数のカメラから選択されたカメラから配信されるライブ・ビデオデータを再生することを特徴とするビデオデータの再生装置。
  2. 前記再生手段は、第1のカメラのビデオデータの再生中に第2のカメラのビデオデータが選択されて再生時刻が指示された場合でも、前記第1のカメラのビデオデータの再生を継続することを特徴とする請求項1に記載のビデオデータの再生装置。
  3. 前記複数のカメラからカメラを選択する選択手段を更に有し、
    前記再生手段は、前記選択手段により選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生することを特徴とする請求項1に記載のビデオデータの再生装置。
  4. 複数のカメラから配信されるライブ・ビデオデータ、および該複数のカメラから配信され記録手段に記録されたビデオデータを取得する取得工程と、
    前記複数のカメラから配信され前記記録手段に記録されたビデオデータの同時再生を行う再生工程と、
    時刻の範囲を示す時刻表と、前記時刻表上に配置され且つ前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータの再生時刻を示す再生ヘッドと、を表示するための表示処理工程とを備え、
    前記再生工程では、
    前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生し、
    前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻が現在時刻を示す場合、前記複数のカメラから選択されたカメラから配信されるライブ・ビデオデータを再生することを特徴とするビデオデータの再生方法。
  5. 前記再生工程では、第1のカメラのビデオデータの再生中に第2のカメラのビデオデータが選択されて再生時刻が指示された場合でも、前記第1のカメラのビデオデータの再生を継続することを特徴とする請求項に記載のビデオデータの再生方法。
  6. 前記複数のカメラからカメラを選択する選択工程を更に有し、
    前記再生工程では、前記選択工程により選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生することを特徴とする請求項4に記載のビデオデータの再生方法。
  7. コンピュータを、
    複数のカメラから配信されるライブ・ビデオデータ、および該複数のカメラから配信され記録手段に記録されたビデオデータを取得する取得手段、
    前記複数のカメラから配信され前記記録手段に記録されたビデオデータの同時再生を行う再生手段、
    時刻の範囲を示す時刻表と、前記時刻表上に配置され且つ前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータの再生時刻を示す再生ヘッドと、を表示するための表示処理手段、として機能させ、
    前記再生手段が、
    前記複数のカメラから選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生し、
    前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻が現在時刻を示す場合、前記複数のカメラから選択されたカメラから配信されるライブ・ビデオデータを再生することを特徴とするコンピュータプログラム。
  8. 前記再生手段は、第1のカメラのビデオデータの再生中に第2のカメラのビデオデータが選択されて再生時刻が指示された場合でも、前記第1のカメラのビデオデータの再生を継続することを特徴とする請求項に記載のコンピュータプログラム。
  9. 前記複数のカメラからカメラを選択する選択手段として更にコンピュータを機能させ、
    前記再生手段は、前記選択手段により選択されたカメラから配信され前記記録手段に記録されたビデオデータを、前記時刻表上に配置された前記再生ヘッドの位置に対応する再生時刻から再生することを特徴とする請求項7に記載のコンピュータプログラム。
JP2009104537A 2003-09-12 2009-04-22 ビデオデータの再生装置、再生方法、コンピュータプログラム Expired - Fee Related JP5173919B2 (ja)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
AU2003905158A AU2003905158A0 (en) 2003-09-12 Stitching and Streaming Files in a Networked Video Recording System
AU2003905159 2003-09-12
AU2003905163 2003-09-12
AU2003905163A AU2003905163A0 (en) 2003-09-12 Representation of Networked Video Cameras in a User Interface
AU2003905159A AU2003905159A0 (en) 2003-09-12 Streaming Non-Continuous Video Data
AU2003905160 2003-09-12
AU2003905160A AU2003905160A0 (en) 2003-09-12 Initiating Video Recording in a Networked Video Recording System
AU2003905162A AU2003905162A0 (en) 2003-09-12 Configurable Video Window Layouts
AU2003905161 2003-09-12
AU2003905157 2003-09-12
AU2003905157A AU2003905157A0 (en) 2003-09-12 Event Caching Method
AU2003905161A AU2003905161A0 (en) 2003-09-12 Re-establishment of Camera Control
AU2003905158 2003-09-12
AU2003905162 2003-09-12

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006525576A Division JP4612906B2 (ja) 2003-09-12 2004-09-10 シーケンスを送信する方法、装置、及びコンピュータ・プログラム

Publications (2)

Publication Number Publication Date
JP2009201127A JP2009201127A (ja) 2009-09-03
JP5173919B2 true JP5173919B2 (ja) 2013-04-03

Family

ID=34317814

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006525576A Expired - Fee Related JP4612906B2 (ja) 2003-09-12 2004-09-10 シーケンスを送信する方法、装置、及びコンピュータ・プログラム
JP2009104537A Expired - Fee Related JP5173919B2 (ja) 2003-09-12 2009-04-22 ビデオデータの再生装置、再生方法、コンピュータプログラム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006525576A Expired - Fee Related JP4612906B2 (ja) 2003-09-12 2004-09-10 シーケンスを送信する方法、装置、及びコンピュータ・プログラム

Country Status (3)

Country Link
US (2) US7683940B2 (ja)
JP (2) JP4612906B2 (ja)
WO (1) WO2005027068A1 (ja)

Families Citing this family (358)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038108B2 (en) 2000-06-28 2015-05-19 Verizon Patent And Licensing Inc. Method and system for providing end user community functionality for publication and delivery of digital media content
US7970260B2 (en) 2001-06-27 2011-06-28 Verizon Business Global Llc Digital media asset management system and method for supporting multiple users
US8990214B2 (en) * 2001-06-27 2015-03-24 Verizon Patent And Licensing Inc. Method and system for providing distributed editing and storage of digital media over a network
US8972862B2 (en) 2001-06-27 2015-03-03 Verizon Patent And Licensing Inc. Method and system for providing remote digital media ingest with centralized editorial control
US8321534B1 (en) * 2003-10-15 2012-11-27 Radix Holdings, Llc System and method for synchronization based on preferences
US20050097046A1 (en) 2003-10-30 2005-05-05 Singfield Joy S. Wireless electronic check deposit scanning and cashing machine with web-based online account cash management computer application system
US8135261B1 (en) 2003-12-09 2012-03-13 Apple Inc. Insertion and usage of metadata in digital video
US8041186B1 (en) 2003-12-09 2011-10-18 Apple Inc. Propagating metadata associated with digital video
US8064752B1 (en) 2003-12-09 2011-11-22 Apple Inc. Video encoding
US9460346B2 (en) * 2004-04-19 2016-10-04 Google Inc. Handheld device for capturing text from both a document printed on paper and a document displayed on a dynamic display device
JP4182932B2 (ja) * 2004-08-04 2008-11-19 ソニー株式会社 記録装置および方法、再生装置および方法、記録再生装置および方法、並びにプログラム
WO2006034135A2 (en) 2004-09-17 2006-03-30 Proximex Adaptive multi-modal integrated biometric identification detection and surveillance system
US20060095539A1 (en) 2004-10-29 2006-05-04 Martin Renkis Wireless video surveillance system and method for mesh networking
US7728871B2 (en) 2004-09-30 2010-06-01 Smartvue Corporation Wireless video surveillance system & method with input capture and data transmission prioritization and adjustment
US7821533B2 (en) * 2004-09-23 2010-10-26 Smartvue Corporation Wireless video surveillance system and method with two-way locking of input capture devices
US8842179B2 (en) 2004-09-24 2014-09-23 Smartvue Corporation Video surveillance sharing system and method
US7797288B2 (en) * 2004-12-27 2010-09-14 Brocade Communications Systems, Inc. Use of server instances and processing elements to define a server
US7590648B2 (en) * 2004-12-27 2009-09-15 Brocade Communications Systems, Inc. Template-based development of servers
JP4529775B2 (ja) * 2005-04-15 2010-08-25 ソニー株式会社 再生装置、その表示方法および表示プログラム、表示装置および表示方法、ならびに記録再生装置およびその表示方法
US20060242678A1 (en) * 2005-04-20 2006-10-26 Anthony Pugliese, Remote network video content recorder system
JP4551813B2 (ja) * 2005-04-28 2010-09-29 株式会社東芝 コンピュータおよびプログラム
US7650069B1 (en) * 2005-05-06 2010-01-19 Caringfamily, Llc GrannySnap architecture
US20060268330A1 (en) * 2005-05-10 2006-11-30 Tetsuhiro Takanezawa Image reproduction apparatus and image reproduction method
US8001076B2 (en) * 2005-07-12 2011-08-16 International Business Machines Corporation Ranging scalable time stamp data synchronization
US9401080B2 (en) 2005-09-07 2016-07-26 Verizon Patent And Licensing Inc. Method and apparatus for synchronizing video frames
US8631226B2 (en) 2005-09-07 2014-01-14 Verizon Patent And Licensing Inc. Method and system for video monitoring
US9076311B2 (en) 2005-09-07 2015-07-07 Verizon Patent And Licensing Inc. Method and apparatus for providing remote workflow management
DE102005046664B4 (de) * 2005-09-29 2016-11-17 Robert Bosch Gmbh Verfahren zur Erzeugung eines flexiblen Anzeigebereichs für ein Videoüberwachungssystem
US7312703B2 (en) * 2005-10-20 2007-12-25 Hoogenboom Christopher L Initialization of a sensor for monitoring the structural integrity of a building
US20070093973A1 (en) * 2005-10-20 2007-04-26 Hoogenboom Christopher L Digital communication system for monitoring the structural integrity of a building and sensor therefor
US20070090945A1 (en) * 2005-10-20 2007-04-26 Hoogenboom Christopher L Power conserving mode for a sensor for monitoring the structural integrity of a building
US20070093974A1 (en) * 2005-10-20 2007-04-26 Hoogenboom Christopher L Remote configuration of a sensor for monitoring the structural integrity of a building
US20070093975A1 (en) * 2005-10-20 2007-04-26 Hoogenboom Christopher L Link establishment in a system for monitoring the structural integrity of a building
WO2007045051A1 (en) 2005-10-21 2007-04-26 Honeywell Limited An authorisation system and a method of authorisation
CA2633895A1 (en) * 2005-12-27 2007-07-05 Massive Incorporated Streaming media casts, such as in a video game or mobile device environment
US8214516B2 (en) * 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
US20070177519A1 (en) * 2006-01-30 2007-08-02 Thomsen Jan H Systems and methods for transcoding bit streams
US8068541B2 (en) * 2006-01-30 2011-11-29 Jan Harding Thomsen Systems and methods for transcoding bit streams
US8954852B2 (en) * 2006-02-03 2015-02-10 Sonic Solutions, Llc. Adaptive intervals in navigating content and/or media
US7823056B1 (en) * 2006-03-15 2010-10-26 Adobe Systems Incorporated Multiple-camera video recording
TWI288918B (en) * 2006-03-30 2007-10-21 Sunplus Technology Co Ltd Optical storage media for real-time recording AVI-format file and method therefor
KR100848128B1 (ko) * 2006-04-24 2008-07-24 한국전자통신연구원 실시간 스트리밍 프로토콜을 이용한 프로그래시브 스트리밍방법
US7877777B2 (en) * 2006-06-23 2011-01-25 Canon Kabushiki Kaisha Network camera apparatus and distributing method of video frames
JP4337849B2 (ja) * 2006-07-26 2009-09-30 ソニー株式会社 記録装置、記録方法および記録プログラム、ならびに、撮像装置、撮像方法および撮像プログラム
CN101146217A (zh) * 2006-09-14 2008-03-19 鸿富锦精密工业(深圳)有限公司 摄像监控系统以及该系统的控制装置和控制方法
US9986414B1 (en) 2006-09-29 2018-05-29 Sprint Communications Company L.P. Dynamic CSCF assignment
US8274564B2 (en) * 2006-10-13 2012-09-25 Fuji Xerox Co., Ltd. Interface for browsing and viewing video from multiple cameras simultaneously that conveys spatial and temporal proximity
US8351677B1 (en) 2006-10-31 2013-01-08 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US8708227B1 (en) 2006-10-31 2014-04-29 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US7885451B1 (en) 2006-10-31 2011-02-08 United Services Automobile Association (Usaa) Systems and methods for displaying negotiable instruments derived from various sources
US7873200B1 (en) 2006-10-31 2011-01-18 United Services Automobile Association (Usaa) Systems and methods for remote deposit of checks
US7876949B1 (en) 2006-10-31 2011-01-25 United Services Automobile Association Systems and methods for remote deposit of checks
US8799147B1 (en) 2006-10-31 2014-08-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instruments with non-payee institutions
US8375302B2 (en) * 2006-11-17 2013-02-12 Microsoft Corporation Example based video editing
JP2008129821A (ja) * 2006-11-20 2008-06-05 Canon Inc 検索システム及び前記システムにおける検索結果の表示方法
JP4795212B2 (ja) * 2006-12-05 2011-10-19 キヤノン株式会社 録画装置、端末装置及び処理方法
JP5546865B2 (ja) * 2006-12-13 2014-07-09 ジョンソン コントロールズ テクノロジー カンパニー メディアシステムのソースコンテンツプレビュー
GB0625178D0 (en) * 2006-12-18 2007-01-24 Ubc Media Group Plc Improvements relating to downloading data
AU2006252090A1 (en) * 2006-12-18 2008-07-03 Canon Kabushiki Kaisha Dynamic Layouts
US8276098B2 (en) 2006-12-22 2012-09-25 Apple Inc. Interactive image thumbnails
US20080288869A1 (en) * 2006-12-22 2008-11-20 Apple Inc. Boolean Search User Interface
US9142253B2 (en) * 2006-12-22 2015-09-22 Apple Inc. Associating keywords to media
US8544040B2 (en) 2006-12-29 2013-09-24 Google Inc. System and method for displaying multimedia events scheduling information
US20080163048A1 (en) * 2006-12-29 2008-07-03 Gossweiler Iii Richard Carl System and method for displaying multimedia events scheduling information and Corresponding search results
US8291454B2 (en) * 2006-12-29 2012-10-16 Google Inc. System and method for downloading multimedia events scheduling information for display
US8205230B2 (en) 2006-12-29 2012-06-19 Google Inc. System and method for displaying and searching multimedia events scheduling information
US20080178232A1 (en) * 2007-01-18 2008-07-24 Verizon Data Services Inc. Method and apparatus for providing user control of video views
US8959033B1 (en) 2007-03-15 2015-02-17 United Services Automobile Association (Usaa) Systems and methods for verification of remotely deposited checks
US10380559B1 (en) 2007-03-15 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for check representment prevention
US9544563B1 (en) 2007-03-23 2017-01-10 Proximex Corporation Multi-video navigation system
US7777783B1 (en) 2007-03-23 2010-08-17 Proximex Corporation Multi-video navigation
BRPI0721555A2 (pt) 2007-04-11 2015-06-16 Thomson Licensing Indicação de relação de aspecto para janelas de exibição que podem ser redimensionadas
IL182701A0 (en) * 2007-04-19 2007-09-20 Zeev Rojanski A novel interface for previewing records of a network video recorder
US8799952B2 (en) 2007-04-24 2014-08-05 Google Inc. Virtual channels
US8972875B2 (en) * 2007-04-24 2015-03-03 Google Inc. Relevance bar for content listings
US8538124B1 (en) 2007-05-10 2013-09-17 United Services Auto Association (USAA) Systems and methods for real-time validation of check image quality
US8433127B1 (en) 2007-05-10 2013-04-30 United Services Automobile Association (Usaa) Systems and methods for real-time validation of check image quality
US8212884B2 (en) * 2007-05-22 2012-07-03 University Of Washington Scanning beam device having different image acquisition modes
JP5100215B2 (ja) * 2007-06-20 2012-12-19 キヤノン株式会社 画像表示装置、画像表示装置の制御方法、及びコンピュータ読み取り可能なプログラム
US7822702B2 (en) * 2007-06-27 2010-10-26 International Business Machines Corporation Creating a session log for studying usability of computing devices used for social networking by filtering observations based on roles of usability experts
US7912803B2 (en) * 2007-06-27 2011-03-22 International Business Machines Corporation Creating a session log with a table of records for a computing device being studied for usability by a plurality of usability experts
US20090006108A1 (en) * 2007-06-27 2009-01-01 Bodin William K Creating A Session Log For A Computing Device Being Studied For Usability
US20090031381A1 (en) * 2007-07-24 2009-01-29 Honeywell International, Inc. Proxy video server for video surveillance
US9084025B1 (en) 2007-08-06 2015-07-14 Google Inc. System and method for displaying both multimedia events search results and internet search results
EP2191643A4 (en) * 2007-09-21 2010-10-06 Pelco Inc METHOD AND DEVICE FOR CONFIGURING THE STORAGE OF VIDEO DATA FROM MULTIPLE SOURCES
US9178957B2 (en) * 2007-09-27 2015-11-03 Adobe Systems Incorporated Application and data agnostic collaboration services
US9058512B1 (en) 2007-09-28 2015-06-16 United Services Automobile Association (Usaa) Systems and methods for digital signature detection
US8380045B2 (en) * 2007-10-09 2013-02-19 Matthew G. BERRY Systems and methods for robust video signature with area augmented matching
US9898778B1 (en) 2007-10-23 2018-02-20 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US9159101B1 (en) 2007-10-23 2015-10-13 United Services Automobile Association (Usaa) Image processing
US8358826B1 (en) 2007-10-23 2013-01-22 United Services Automobile Association (Usaa) Systems and methods for receiving and orienting an image of one or more checks
US9892454B1 (en) 2007-10-23 2018-02-13 United Services Automobile Association (Usaa) Systems and methods for obtaining an image of a check to be deposited
US8001051B1 (en) 2007-10-30 2011-08-16 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996316B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association Systems and methods to modify a negotiable instrument
US7996315B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8046301B1 (en) 2007-10-30 2011-10-25 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US7996314B1 (en) 2007-10-30 2011-08-09 United Services Automobile Association (Usaa) Systems and methods to modify a negotiable instrument
US8290237B1 (en) 2007-10-31 2012-10-16 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US8320657B1 (en) 2007-10-31 2012-11-27 United Services Automobile Association (Usaa) Systems and methods to use a digital camera to remotely deposit a negotiable instrument
US8661096B2 (en) * 2007-11-05 2014-02-25 Cyberlink Corp. Collaborative editing in a video editing system
US7896232B1 (en) 2007-11-06 2011-03-01 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US7900822B1 (en) 2007-11-06 2011-03-08 United Services Automobile Association (Usaa) Systems, methods, and apparatus for receiving images of one or more checks
US9420014B2 (en) 2007-11-15 2016-08-16 Adobe Systems Incorporated Saving state of a collaborative session in an editable format
AU2007237206B2 (en) * 2007-11-27 2009-12-10 Canon Kabushiki Kaisha Method, apparatus and system for displaying video data
KR100885734B1 (ko) * 2007-12-17 2009-02-26 한국전자통신연구원 영상정보 처리 시스템 및 방법
CN101472146B (zh) * 2007-12-28 2010-11-10 鸿富锦精密工业(深圳)有限公司 视频监控系统及方法
CA2617119A1 (en) * 2008-01-08 2009-07-08 Pci Geomatics Enterprises Inc. Service oriented architecture for earth observation image processing
US8477811B2 (en) 2008-02-02 2013-07-02 Qualcomm Incorporated Radio access network (RAN) level keep alive signaling
US10380562B1 (en) 2008-02-07 2019-08-13 United Services Automobile Association (Usaa) Systems and methods for mobile deposit of negotiable instruments
US10341615B2 (en) 2008-03-07 2019-07-02 Honeywell International Inc. System and method for mapping of text events from multiple sources with camera outputs
US10354689B2 (en) 2008-04-06 2019-07-16 Taser International, Inc. Systems and methods for event recorder logging
US7856402B1 (en) 2008-04-07 2010-12-21 United Services Automobile Association (Usaa) Video financial deposit
US7912785B1 (en) 2008-04-07 2011-03-22 United Services Automobile Association (Usaa) Video financial deposit
US7792752B1 (en) * 2008-04-07 2010-09-07 United Services Automobile Association (Usaa) Video financial deposit
US8892689B1 (en) * 2008-04-30 2014-11-18 Netapp, Inc. Method and apparatus for a storage server to automatically discover and join a network storage cluster
US9959471B2 (en) 2008-05-06 2018-05-01 Careview Communications, Inc. Patient video monitoring systems and methods for thermal detection of liquids
US20170155877A1 (en) * 2008-05-06 2017-06-01 Careview Communications, Inc. System and method for predicting patient falls
US8531522B2 (en) 2008-05-30 2013-09-10 Verint Systems Ltd. Systems and methods for video monitoring using linked devices
US8351678B1 (en) 2008-06-11 2013-01-08 United Services Automobile Association (Usaa) Duplicate check detection
CN101605246A (zh) * 2008-06-13 2009-12-16 索尼株式会社 监控设备计划的管理系统及方法
US7882173B2 (en) * 2008-06-30 2011-02-01 International Business Machines Corporation Interactive remote command execution over a stateless client/server network protocol
EP2230629A3 (en) 2008-07-16 2012-11-21 Verint Systems Inc. A system and method for capturing, storing, analyzing and displaying data relating to the movements of objects
JP2010041535A (ja) * 2008-08-07 2010-02-18 Hitachi Ltd データ配信装置
US8422758B1 (en) 2008-09-02 2013-04-16 United Services Automobile Association (Usaa) Systems and methods of check re-presentment deterrent
US10504185B1 (en) 2008-09-08 2019-12-10 United Services Automobile Association (Usaa) Systems and methods for live video financial deposit
US8300098B1 (en) * 2008-09-16 2012-10-30 Emc Corporation Techniques for providing access to video data using a network attached storage device
US7962411B1 (en) 2008-09-30 2011-06-14 United Services Automobile Association (Usaa) Atomic deposit transaction
US7974899B1 (en) 2008-09-30 2011-07-05 United Services Automobile Association (Usaa) Atomic deposit transaction
US8275710B1 (en) 2008-09-30 2012-09-25 United Services Automobile Association (Usaa) Systems and methods for automatic bill pay enrollment
US7885880B1 (en) 2008-09-30 2011-02-08 United Services Automobile Association (Usaa) Atomic deposit transaction
US8391599B1 (en) 2008-10-17 2013-03-05 United Services Automobile Association (Usaa) Systems and methods for adaptive binarization of an image
US20100097472A1 (en) * 2008-10-21 2010-04-22 Honeywell International Inc. Method of efficient camera control and hand over in surveillance management
US7949587B1 (en) 2008-10-24 2011-05-24 United States Automobile Association (USAA) Systems and methods for financial deposits by electronic message
US7970677B1 (en) 2008-10-24 2011-06-28 United Services Automobile Association (Usaa) Systems and methods for financial deposits by electronic message
US9294291B2 (en) 2008-11-12 2016-03-22 Adobe Systems Incorporated Adaptive connectivity in network-based collaboration
US8831090B2 (en) 2008-11-18 2014-09-09 Avigilon Corporation Method, system and apparatus for image capture, analysis and transmission
US20100208082A1 (en) * 2008-12-18 2010-08-19 Band Crashers, Llc Media systems and methods for providing synchronized multiple streaming camera signals of an event
US8306522B1 (en) * 2008-12-23 2012-11-06 Sprint Communications Company L.P. Dynamic interface for mobile devices
US8452689B1 (en) 2009-02-18 2013-05-28 United Services Automobile Association (Usaa) Systems and methods of check detection
US10956728B1 (en) 2009-03-04 2021-03-23 United Services Automobile Association (Usaa) Systems and methods of check processing with background removal
WO2010106474A1 (en) 2009-03-19 2010-09-23 Honeywell International Inc. Systems and methods for managing access control devices
US8745186B2 (en) * 2009-03-31 2014-06-03 Canon Kabushiki Kaisha Network streaming of a video media from a media server to a media client
JP5393236B2 (ja) 2009-04-23 2014-01-22 キヤノン株式会社 再生装置及び再生方法
CN102090072A (zh) * 2009-05-11 2011-06-08 松下电器产业株式会社 内容发送装置及内容发送方法
US8078870B2 (en) * 2009-05-14 2011-12-13 Microsoft Corporation HTTP-based authentication
US8836601B2 (en) 2013-02-04 2014-09-16 Ubiquiti Networks, Inc. Dual receiver/transmitter radio devices with choke
US9496620B2 (en) 2013-02-04 2016-11-15 Ubiquiti Networks, Inc. Radio system for long-range high-speed wireless communication
US20110002548A1 (en) * 2009-07-02 2011-01-06 Honeywell International Inc. Systems and methods of video navigation
CN102484740B (zh) * 2009-07-08 2015-02-18 霍尼韦尔国际公司 用于管理视频数据的系统和方法
US8542921B1 (en) 2009-07-27 2013-09-24 United Services Automobile Association (Usaa) Systems and methods for remote deposit of negotiable instrument using brightness correction
US20110035700A1 (en) * 2009-08-05 2011-02-10 Brian Meaney Multi-Operation User Interface Tool
US9779392B1 (en) 2009-08-19 2017-10-03 United Services Automobile Association (Usaa) Apparatuses, methods and systems for a publishing and subscribing platform of depositing negotiable instruments
US8977571B1 (en) 2009-08-21 2015-03-10 United Services Automobile Association (Usaa) Systems and methods for image monitoring of check during mobile deposit
US8699779B1 (en) 2009-08-28 2014-04-15 United Services Automobile Association (Usaa) Systems and methods for alignment of check during mobile deposit
ITMI20091600A1 (it) * 2009-09-18 2011-03-19 March Networks Corp Tolleranza ai guasti in un sistema di video sorveglianza
US8881012B2 (en) * 2009-11-17 2014-11-04 LHS Productions, Inc. Video storage and retrieval system and method
KR101337876B1 (ko) 2009-12-14 2013-12-06 한국전자통신연구원 영상보안시스템용 서버/카메라 및 영상보안시스템용 서버/카메라의 이벤트 처리 방법
US9280365B2 (en) * 2009-12-17 2016-03-08 Honeywell International Inc. Systems and methods for managing configuration data at disconnected remote devices
US9167275B1 (en) 2010-03-11 2015-10-20 BoxCast, LLC Systems and methods for autonomous broadcasting
US8718440B2 (en) * 2010-03-22 2014-05-06 Streaming Networks, Inc. Decentralized symmetric network of autonomous digital video recorders and its method of use
US20110242327A1 (en) * 2010-04-05 2011-10-06 Honeywell International Inc. Intelligent camera display based on selective searching
IT1399749B1 (it) 2010-04-30 2013-05-03 March Networks Corp Configurazione automatica di connessione da telecamera a server di gestione video
US9253548B2 (en) * 2010-05-27 2016-02-02 Adobe Systems Incorporated Optimizing caches for media streaming
US9129340B1 (en) 2010-06-08 2015-09-08 United Services Automobile Association (Usaa) Apparatuses, methods and systems for remote deposit capture with enhanced image detection
US8453186B2 (en) 2010-09-15 2013-05-28 At&T Intellectual Property I, L.P. Method and system for remote control
WO2012040725A2 (en) * 2010-09-24 2012-03-29 Pelco, Inc. Method and system for configuring a sequence of positions of a camera
CN102413274A (zh) * 2010-09-24 2012-04-11 鸿富锦精密工业(深圳)有限公司 影像监控设备及影像监控方法
US8922658B2 (en) * 2010-11-05 2014-12-30 Tom Galvin Network video recorder system
US10477158B2 (en) 2010-11-05 2019-11-12 Razberi Technologies, Inc. System and method for a security system
US11082665B2 (en) 2010-11-05 2021-08-03 Razberi Secure Technologies, Llc System and method for a security system
US9860490B2 (en) 2010-11-05 2018-01-02 Tom Galvin Network video recorder system
US10157526B2 (en) 2010-11-05 2018-12-18 Razberi Technologies, Inc. System and method for a security system
US8787725B2 (en) 2010-11-11 2014-07-22 Honeywell International Inc. Systems and methods for managing video data
DE102010053181A1 (de) * 2010-12-03 2012-06-06 Mobotix Ag Überwachungskameraanordnung
WO2012080786A2 (en) * 2010-12-16 2012-06-21 Sony Ericsson Mobile Communications Ab A calendar application for communication devices
US9036001B2 (en) * 2010-12-16 2015-05-19 Massachusetts Institute Of Technology Imaging system for immersive surveillance
US20120236147A1 (en) * 2011-03-15 2012-09-20 Honeywell International Inc. Systems and methods of central station video alarm verification using an on site user video system
US8392526B2 (en) 2011-03-23 2013-03-05 Color Labs, Inc. Sharing content among multiple devices
US9876840B2 (en) * 2011-05-09 2018-01-23 Wyse Technology L.L.C. Method and apparatus for dynamically generating media sequences on demand for HTTP live streaming
JP2012239001A (ja) * 2011-05-11 2012-12-06 Hitachi Kokusai Electric Inc Cctvシステムの操作器
US8644620B1 (en) * 2011-06-21 2014-02-04 Google Inc. Processing of matching regions in a stream of screen images
WO2012174603A1 (en) 2011-06-24 2012-12-27 Honeywell International Inc. Systems and methods for presenting dvm system information
US9344684B2 (en) 2011-08-05 2016-05-17 Honeywell International Inc. Systems and methods configured to enable content sharing between client terminals of a digital video management system
KR101119848B1 (ko) * 2011-08-05 2012-02-28 (주)리얼허브 영상 입력 기기의 접속 장애 판별 장치 및 접속 장애 판별 방법
US10362273B2 (en) 2011-08-05 2019-07-23 Honeywell International Inc. Systems and methods for managing video data
CN104137154B (zh) * 2011-08-05 2019-02-01 霍尼韦尔国际公司 用于管理视频数据的系统和方法
JP2013051462A (ja) * 2011-08-30 2013-03-14 Sony Corp 上映管理システム、上映管理方法及びプログラム
US8473550B2 (en) 2011-09-21 2013-06-25 Color Labs, Inc. Content sharing using notification within a social networking environment
JP6080346B2 (ja) * 2011-10-03 2017-02-15 株式会社日立国際電気 映像表示装置
US8839109B2 (en) * 2011-11-14 2014-09-16 Utc Fire And Security Americas Corporation, Inc. Digital video system with intelligent video selection timeline
US20130128038A1 (en) * 2011-11-21 2013-05-23 Ronald Steven Cok Method for making event-related media collection
US9003124B2 (en) 2011-12-13 2015-04-07 International Business Machines Corporation Managing a region cache
WO2013100911A1 (en) * 2011-12-27 2013-07-04 Intel Corporation Method and system to play linear video in variable time frame
US10380565B1 (en) 2012-01-05 2019-08-13 United Services Automobile Association (Usaa) System and method for storefront bank deposits
EP2613530A1 (en) * 2012-01-06 2013-07-10 Alcatel Lucent A method for video surveillance, a related system, a related surveillance server, and a related surveillance camera
US8824750B2 (en) * 2012-03-19 2014-09-02 Next Level Security Systems, Inc. Distributive facial matching and notification system
US20130283330A1 (en) * 2012-04-18 2013-10-24 Harris Corporation Architecture and system for group video distribution
TWI540886B (zh) * 2012-05-23 2016-07-01 晨星半導體股份有限公司 音訊解碼方法及音訊解碼裝置
WO2013186804A1 (ja) * 2012-06-11 2013-12-19 株式会社ソニー・コンピュータエンタテインメント 画像生成装置および画像生成方法
US9298717B2 (en) * 2012-06-14 2016-03-29 Empire Technology Development Llc Data deduplication management
US8880204B2 (en) 2012-06-27 2014-11-04 Ubiquiti Networks, Inc. Method and apparatus for monitoring and processing sensor data in an interfacing-device network
CN102789187B (zh) * 2012-07-05 2014-12-10 华为技术有限公司 云台设备识别方法、云台设备、摄像机及云台设备控制系统
US9081821B2 (en) * 2012-07-25 2015-07-14 Ebay Inc. Spell check using column cursor
US9158768B2 (en) 2012-07-25 2015-10-13 Paypal, Inc. System and methods to configure a query language using an operator dictionary
US9749373B2 (en) * 2012-08-14 2017-08-29 Apple Inc. System and method for improved content streaming
US20140053065A1 (en) * 2012-08-16 2014-02-20 Motorola Mobility Llc System and method for adjusting website displays
US9612713B2 (en) * 2012-09-26 2017-04-04 Google Inc. Intelligent window management
US20150199092A1 (en) * 2012-09-26 2015-07-16 Google Inc. Intelligent window placement
US9674723B2 (en) * 2012-11-05 2017-06-06 Telefonaktiebolagent L M Ericsson (Publ) Systems and methods for maintaining time stamping accuracy to meet a non-linear time drift constraint
US10552810B1 (en) 2012-12-19 2020-02-04 United Services Automobile Association (Usaa) System and method for remote deposit of financial instruments
EP2752724B1 (de) * 2013-01-08 2016-06-01 VEGA Grieshaber KG Verfahren zur Kontrolle von Feldgeräten, Steuergerät, Programmelement und computerlesbares Medium
US9967524B2 (en) 2013-01-10 2018-05-08 Tyco Safety Products Canada Ltd. Security system and method with scrolling feeds watchlist
US9397820B2 (en) 2013-02-04 2016-07-19 Ubiquiti Networks, Inc. Agile duplexing wireless radio devices
US9543635B2 (en) 2013-02-04 2017-01-10 Ubiquiti Networks, Inc. Operation of radio devices for long-range high-speed wireless communication
US8855730B2 (en) 2013-02-08 2014-10-07 Ubiquiti Networks, Inc. Transmission and reception of high-speed wireless communication using a stacked array antenna
US11039108B2 (en) 2013-03-15 2021-06-15 James Carey Video identification and analytical recognition system
RU2637481C2 (ru) 2013-03-15 2017-12-04 Джеймс КАРЕЙ Самовосстанавливающаяся система видеонаблюдения
US10657755B2 (en) 2013-03-15 2020-05-19 James Carey Investigation generation in an observation and surveillance system
US11100334B2 (en) 2013-04-19 2021-08-24 James Carey Video identification and analytical recognition system
CA2861652C (en) 2013-03-15 2019-01-08 James Carey Investigation generation in an observation and surveillance system
US11032520B2 (en) 2013-03-15 2021-06-08 James Carey Self-healing video surveillance system
US9762865B2 (en) 2013-03-15 2017-09-12 James Carey Video identification and analytical recognition system
US11743431B2 (en) 2013-03-15 2023-08-29 James Carey Video identification and analytical recognition system
JP6320068B2 (ja) * 2013-03-29 2018-05-09 キヤノン株式会社 情報処理装置、ネットワークカメラ及びシステム
RU2635886C2 (ru) * 2013-04-18 2017-11-16 Руслан Альбертович Шигабутдинов Системы и способы для управления файлами посредством мобильных вычислительных устройств
US8984558B1 (en) * 2013-05-14 2015-03-17 Google Inc. System and method for transitioning video
KR102081087B1 (ko) * 2013-06-17 2020-02-25 삼성전자주식회사 동기적 영상과 비동기적 영상을 위한 영상 정합 장치 및 이미지 센서
USD736823S1 (en) * 2013-06-21 2015-08-18 Tencent Technology (Shenzhen) Company Limited Display screen with animated graphical user interface
US9742627B2 (en) * 2013-06-25 2017-08-22 Idis Co., Ltd. System for automatic connection between NVR and IP camera
CN104253974A (zh) * 2013-06-28 2014-12-31 中兴通讯股份有限公司 移动前端动态接入的方法、移动前端和视频监控平台
JP5506990B1 (ja) * 2013-07-11 2014-05-28 パナソニック株式会社 追跡支援装置、追跡支援システムおよび追跡支援方法
US11138578B1 (en) 2013-09-09 2021-10-05 United Services Automobile Association (Usaa) Systems and methods for remote deposit of currency
US9544534B2 (en) * 2013-09-24 2017-01-10 Motorola Solutions, Inc. Apparatus for and method of identifying video streams transmitted over a shared network link, and for identifying and time-offsetting intra-frames generated substantially simultaneously in such streams
US9734681B2 (en) * 2013-10-07 2017-08-15 Ubiquiti Networks, Inc. Cloud-based video monitoring
EP3648359A1 (en) 2013-10-11 2020-05-06 Ubiquiti Inc. Wireless radio system optimization by persistent spectrum analysis
US9286514B1 (en) 2013-10-17 2016-03-15 United Services Automobile Association (Usaa) Character count determination for a digital image
US10523903B2 (en) 2013-10-30 2019-12-31 Honeywell International Inc. Computer implemented systems frameworks and methods configured for enabling review of incident data
USD768161S1 (en) * 2013-12-01 2016-10-04 Vizio, Inc Television screen with a graphical user interface
USD768661S1 (en) * 2013-12-01 2016-10-11 Vizio Inc Television screen with a transitional graphical user interface
USD771083S1 (en) * 2013-12-01 2016-11-08 Vizio Inc Television screen with a graphical user interface
USD773495S1 (en) * 2013-12-01 2016-12-06 Vizio, Inc Television screen with a transitional graphical user interface
USD768662S1 (en) * 2013-12-01 2016-10-11 Vizio Inc Television screen with a graphical user interface
USD768160S1 (en) * 2013-12-01 2016-10-04 Vizio Inc Television screen with a graphical user interface
US9699229B2 (en) * 2014-01-16 2017-07-04 Qualcomm Incorporated Robust live operation of dash
EP3114884B1 (en) 2014-03-07 2019-10-23 Ubiquiti Inc. Cloud device identification and authentication
US20150256355A1 (en) 2014-03-07 2015-09-10 Robert J. Pera Wall-mounted interactive sensing and audio-visual node devices for networked living and work spaces
US9912053B2 (en) 2014-03-17 2018-03-06 Ubiquiti Networks, Inc. Array antennas having a plurality of directional beams
US20150281122A1 (en) * 2014-03-31 2015-10-01 Byron L. Hoffman Method and Apparatus for Facilitating Accessing Home Surveillance Data by Remote Devices
WO2015153717A1 (en) 2014-04-01 2015-10-08 Ubiquiti Networks, Inc. Antenna assembly
US10700950B2 (en) 2014-04-15 2020-06-30 Splunk Inc. Adjusting network data storage based on event stream statistics
US9762443B2 (en) 2014-04-15 2017-09-12 Splunk Inc. Transformation of network data at remote capture agents
US10523521B2 (en) 2014-04-15 2019-12-31 Splunk Inc. Managing ephemeral event streams generated from captured network data
US11086897B2 (en) 2014-04-15 2021-08-10 Splunk Inc. Linking event streams across applications of a data intake and query system
US10366101B2 (en) 2014-04-15 2019-07-30 Splunk Inc. Bidirectional linking of ephemeral event streams to creators of the ephemeral event streams
US10127273B2 (en) 2014-04-15 2018-11-13 Splunk Inc. Distributed processing of network data using remote capture agents
US9923767B2 (en) 2014-04-15 2018-03-20 Splunk Inc. Dynamic configuration of remote capture agents for network data capture
US9838512B2 (en) 2014-10-30 2017-12-05 Splunk Inc. Protocol-based capture of network data using remote capture agents
US10462004B2 (en) 2014-04-15 2019-10-29 Splunk Inc. Visualizations of statistics associated with captured network data
US10693742B2 (en) 2014-04-15 2020-06-23 Splunk Inc. Inline visualizations of metrics related to captured network data
US11281643B2 (en) 2014-04-15 2022-03-22 Splunk Inc. Generating event streams including aggregated values from monitored network data
US10360196B2 (en) 2014-04-15 2019-07-23 Splunk Inc. Grouping and managing event streams generated from captured network data
US9232187B2 (en) * 2014-06-04 2016-01-05 Apple Inc. Dynamic detection of pause and resume for video communications
US9544540B2 (en) 2014-06-04 2017-01-10 Apple Inc. Dynamic display of video communication data
US9516269B2 (en) 2014-06-04 2016-12-06 Apple Inc. Instant video communication connections
KR20150141095A (ko) * 2014-06-09 2015-12-17 주식회사 아이티엑스시큐리티 Nvr 자동 등록 기능을 구비한 무선 카메라, 무선 카메라 자동 등록 기능을 구비한 무선 nvr 장치 및 무선 카메라를 무선 nvr 장치에 자동으로 등록하는 방법
US20150370462A1 (en) 2014-06-20 2015-12-24 Microsoft Corporation Creating calendar event from timeline
US11495102B2 (en) * 2014-08-04 2022-11-08 LiveView Technologies, LLC Devices, systems, and methods for remote video retrieval
US20160037138A1 (en) * 2014-08-04 2016-02-04 Danny UDLER Dynamic System and Method for Detecting Drowning
JP2016046598A (ja) 2014-08-20 2016-04-04 キヤノン株式会社 通信装置、通信方法、及び、プログラム
USD772288S1 (en) 2014-10-06 2016-11-22 Vixlet LLC Display screen with computer icons
USD775198S1 (en) * 2014-10-06 2016-12-27 Vixlet LLC Display screen with icons
USD774085S1 (en) 2014-10-06 2016-12-13 Vixlet LLC Computer display with icons
USD772928S1 (en) 2014-10-06 2016-11-29 Vixlet LLC Display screen with computer icons
USD772929S1 (en) 2014-10-06 2016-11-29 Vixlet LLC Display screen with icons
US9596253B2 (en) 2014-10-30 2017-03-14 Splunk Inc. Capture triggers for capturing network data
US10412342B2 (en) 2014-12-18 2019-09-10 Vivint, Inc. Digital zoom conferencing
KR101539544B1 (ko) 2014-12-18 2015-07-24 (주) 넥스트칩 프로토콜 교환 방법 및 장치
US10417883B2 (en) 2014-12-18 2019-09-17 Vivint, Inc. Doorbell camera package detection
US10133935B2 (en) * 2015-01-13 2018-11-20 Vivint, Inc. Doorbell camera early detection
US10635907B2 (en) 2015-01-13 2020-04-28 Vivint, Inc. Enhanced doorbell camera interactions
US10586114B2 (en) * 2015-01-13 2020-03-10 Vivint, Inc. Enhanced doorbell camera interactions
US10334085B2 (en) 2015-01-29 2019-06-25 Splunk Inc. Facilitating custom content extraction from network packets
CN106162219B (zh) * 2015-04-21 2019-08-16 杭州海康威视系统技术有限公司 视频云存储方法及系统
US10402790B1 (en) 2015-05-28 2019-09-03 United Services Automobile Association (Usaa) Composing a focused document image from multiple image captures or portions of multiple image captures
US10643442B2 (en) * 2015-06-05 2020-05-05 Withings Video monitoring system
US9940746B2 (en) * 2015-06-18 2018-04-10 Apple Inc. Image fetching for timeline scrubbing of digital media
US10255361B2 (en) 2015-08-19 2019-04-09 International Business Machines Corporation Video clips generation system
US10560544B2 (en) * 2015-08-25 2020-02-11 Box, Inc. Data caching in a collaborative file sharing system
FR3040810B1 (fr) * 2015-09-07 2017-10-13 Docapost Dps Systeme informatique de gestion securisee d'informations numeriques
US10299017B2 (en) * 2015-09-14 2019-05-21 Logitech Europe S.A. Video searching for filtered and tagged motion
US9805567B2 (en) * 2015-09-14 2017-10-31 Logitech Europe S.A. Temporal video streaming and summaries
GB2544296B (en) * 2015-11-11 2020-06-03 Canon Kk Method and apparatus for serving and managing storage of data streams in a surveillance and/or monitoring system
US20170148291A1 (en) * 2015-11-20 2017-05-25 Hitachi, Ltd. Method and a system for dynamic display of surveillance feeds
US10733456B2 (en) 2015-12-21 2020-08-04 A9.Com, Inc. Sharing video footage from audio/video recording and communication devices
US10650247B2 (en) 2015-12-21 2020-05-12 A9.Com, Inc. Sharing video footage from audio/video recording and communication devices
CA3008441A1 (en) 2015-12-21 2017-06-29 Amazon Technologies, Inc. Sharing video footage from audio/video recording and communication devices
US10187255B2 (en) * 2016-02-29 2019-01-22 Red Hat, Inc. Centralized configuration data in a distributed file system
CA3016434A1 (en) 2016-03-01 2017-09-08 James Carey Theft prediction and tracking system
CN107147945B (zh) * 2016-03-01 2021-01-01 腾讯科技(深圳)有限公司 多媒体资源播放系统、方法及装置
US11417202B2 (en) 2016-03-01 2022-08-16 James Carey Theft prediction and tracking system
US10126736B2 (en) * 2016-04-25 2018-11-13 Rockwell Automation Technologies, Inc. Industrial process historian time synchronization of source based timestamp event data
KR101809044B1 (ko) * 2016-04-26 2017-12-14 주식회사 아이디스 프리-이벤트 순환 저장 방식 영상녹화장치
US11039181B1 (en) 2016-05-09 2021-06-15 Google Llc Method and apparatus for secure video manifest/playlist generation and playback
US10595054B2 (en) 2016-05-10 2020-03-17 Google Llc Method and apparatus for a virtual online video channel
US10785508B2 (en) * 2016-05-10 2020-09-22 Google Llc System for measuring video playback events using a server generated manifest/playlist
US10771824B1 (en) * 2016-05-10 2020-09-08 Google Llc System for managing video playback using a server generated manifest/playlist
US11069378B1 (en) 2016-05-10 2021-07-20 Google Llc Method and apparatus for frame accurate high resolution video editing in cloud using live video streams
US10750248B1 (en) 2016-05-10 2020-08-18 Google Llc Method and apparatus for server-side content delivery network switching
US10750216B1 (en) 2016-05-10 2020-08-18 Google Llc Method and apparatus for providing peer-to-peer content delivery
US11032588B2 (en) 2016-05-16 2021-06-08 Google Llc Method and apparatus for spatial enhanced adaptive bitrate live streaming for 360 degree video playback
US10567460B2 (en) * 2016-06-09 2020-02-18 Apple Inc. Managing data using a time-based directory structure
DK179925B1 (en) 2016-06-12 2019-10-09 Apple Inc. USER INTERFACE FOR MANAGING CONTROLLABLE EXTERNAL DEVICES
US10154317B2 (en) 2016-07-05 2018-12-11 BoxCast, LLC System, method, and protocol for transmission of video and audio data
US10079828B2 (en) * 2016-07-06 2018-09-18 Chekt Llc CCTV monitoring system for registering camera and managing permission and control method thereof
US10084868B2 (en) * 2016-09-03 2018-09-25 Microsoft Technology Licensing, Llc IoT gateway for weakly connected settings
US11197040B2 (en) * 2016-10-17 2021-12-07 Mediatek Inc. Deriving and signaling a region or viewport in streaming media
WO2018081328A1 (en) * 2016-10-26 2018-05-03 Ring Inc. Customizable intrusion zones for audio/video recording and communication devices
US20180176512A1 (en) * 2016-10-26 2018-06-21 Ring Inc. Customizable intrusion zones associated with security systems
US10891839B2 (en) * 2016-10-26 2021-01-12 Amazon Technologies, Inc. Customizable intrusion zones associated with security systems
US20180205907A1 (en) * 2017-01-16 2018-07-19 JVC Kenwood Corporation Registration apparatus that registers registration target apparatus and method thereof
US11087271B1 (en) 2017-03-27 2021-08-10 Amazon Technologies, Inc. Identifying user-item interactions in an automated facility
US11494729B1 (en) * 2017-03-27 2022-11-08 Amazon Technologies, Inc. Identifying user-item interactions in an automated facility
US11238401B1 (en) 2017-03-27 2022-02-01 Amazon Technologies, Inc. Identifying user-item interactions in an automated facility
US10567502B2 (en) * 2017-04-06 2020-02-18 Avid Technology, Inc. Format-independent media file indexing
EP3445057A1 (en) * 2017-08-18 2019-02-20 NXP USA, Inc. Electronic device and method for coherent enable/disable on a virtual data channel
US10693709B2 (en) * 2018-03-28 2020-06-23 Salesforce.Com, Inc. Processing gap events in a change detection management system
US11030752B1 (en) 2018-04-27 2021-06-08 United Services Automobile Association (Usaa) System, computing device, and method for document detection
AU2019267527A1 (en) * 2018-05-07 2020-11-19 Apple Inc. User interfaces for viewing live video feeds and recorded video
US20190347915A1 (en) * 2018-05-11 2019-11-14 Ching-Ming Lai Large-scale Video Monitoring and Recording System
US10720123B2 (en) * 2018-10-05 2020-07-21 International Business Machines Corporation Self-adjusting curved display screen
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US10904029B2 (en) 2019-05-31 2021-01-26 Apple Inc. User interfaces for managing controllable external devices
US11363071B2 (en) 2019-05-31 2022-06-14 Apple Inc. User interfaces for managing a local network
EP4068791A4 (en) * 2019-11-26 2023-11-01 Hanwha Vision Co., Ltd. EVENT-ORIENTED MULTI-CHANNEL IMAGE SECURITY DEVICE AND METHOD THEREOF AND NETWORK SURVEILLANCE CAMERA SYSTEM THEREFOR
US20210183222A1 (en) * 2019-12-13 2021-06-17 Sony Corporation Efficient User Interface Navigation for Multiple Real-Time Streaming Devices
US10904446B1 (en) 2020-03-30 2021-01-26 Logitech Europe S.A. Advanced video conferencing systems and methods
US10972655B1 (en) 2020-03-30 2021-04-06 Logitech Europe S.A. Advanced video conferencing systems and methods
US10951858B1 (en) 2020-03-30 2021-03-16 Logitech Europe S.A. Advanced video conferencing systems and methods
US10965908B1 (en) 2020-03-30 2021-03-30 Logitech Europe S.A. Advanced video conferencing systems and methods
CN113630643B (zh) * 2020-05-09 2023-10-20 中央电视台 媒体流收录方法、装置及计算机存储介质、电子设备
US11513667B2 (en) 2020-05-11 2022-11-29 Apple Inc. User interface for audio message
US11436906B1 (en) * 2020-05-18 2022-09-06 Sidhya V Peddinti Visitor detection, facial recognition, and alert system and processes for assisting memory-challenged patients to recognize entryway visitors
US11589010B2 (en) 2020-06-03 2023-02-21 Apple Inc. Camera and visitor user interfaces
US11657614B2 (en) 2020-06-03 2023-05-23 Apple Inc. Camera and visitor user interfaces
USD984457S1 (en) * 2020-06-19 2023-04-25 Airbnb, Inc. Display screen of a programmed computer system with graphical user interface
US11646905B2 (en) 2020-06-19 2023-05-09 Airbnb, Inc. Aggregating audience member emotes in large-scale electronic presentation
USD985005S1 (en) * 2020-06-19 2023-05-02 Airbnb, Inc. Display screen of a programmed computer system with graphical user interface
CN116195261A (zh) 2020-09-05 2023-05-30 苹果公司 用于管理媒体项目的音频的用户界面
US11416269B2 (en) * 2020-11-20 2022-08-16 Motorola Solutions, Inc. Method, system and computer program product for serving user settings interface components
US11900755B1 (en) 2020-11-30 2024-02-13 United Services Automobile Association (Usaa) System, computing device, and method for document detection and deposit processing
DE102021103102A1 (de) * 2021-02-10 2022-08-11 Pandia GmbH Verfahren und Vorrichtung zur Maschinenüberwachung sowie Computerprogrammprodukt zur Maschinenüberwachung
WO2022178076A1 (en) * 2021-02-22 2022-08-25 Activevideo Networks, Inc. Systems and methods of alternative networked application services
US20220311881A1 (en) * 2021-03-24 2022-09-29 Canon Kabushiki Kaisha Information processing system, image processing apparatus, information processing apparatus, server apparatus, information processing method, and storage medium
JP2023069323A (ja) * 2021-11-05 2023-05-18 i-PRO株式会社 監視カメラ映像共有システムおよび監視カメラ映像共有方法
US11734919B1 (en) * 2022-04-19 2023-08-22 Sas Institute, Inc. Flexible computer architecture for performing digital image analysis
ES2955369A1 (es) * 2022-04-25 2023-11-30 Biogreen Eng S L Sistema de grabacion, localizacion y recuperacion de imagenes para videovigilancia y metodo para dicho sistema
KR20240027435A (ko) * 2022-08-23 2024-03-04 주식회사 팀그릿 실시간 데이터 송수신 방법 및 그 장치
EP4343647A1 (en) * 2022-09-20 2024-03-27 Rohde & Schwarz GmbH & Co. KG Task scheduling system for spectrum monitoring

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE118286T1 (de) 1989-07-17 1995-02-15 Siemens Ag Integriertes langsames abtastungs- und alarmsystem.
US5999634A (en) 1991-09-12 1999-12-07 Electronic Data Systems Corporation Device and method for analyzing an electronic image signal
US7448063B2 (en) * 1991-11-25 2008-11-04 Actv, Inc. Digital interactive system for providing full interactivity with live programming events
US5552824A (en) * 1993-02-18 1996-09-03 Lynx System Developers, Inc. Line object scene generation apparatus
US6167143A (en) * 1993-05-03 2000-12-26 U.S. Philips Corporation Monitoring system
US6542183B1 (en) * 1995-06-28 2003-04-01 Lynx Systems Developers, Inc. Event recording apparatus
US5594660A (en) * 1994-09-30 1997-01-14 Cirrus Logic, Inc. Programmable audio-video synchronization method and apparatus for multimedia systems
US5815634A (en) * 1994-09-30 1998-09-29 Cirrus Logic, Inc. Stream synchronization method and apparatus for MPEG playback system
WO1996016497A1 (en) * 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
US5806005A (en) * 1996-05-10 1998-09-08 Ricoh Company, Ltd. Wireless image transfer from a digital still video camera to a networked computer
JP2001245281A (ja) * 2000-02-29 2001-09-07 Fujitsu Ltd ネットワークシステム
AT500721B1 (de) 2000-05-10 2007-03-15 Oesterr Forsch Seibersdorf Verfahren und einrichtung zur übertragung von bildfolgen
KR100327385B1 (en) * 2000-07-18 2002-03-13 Lg Electronics Inc Spatio-temporal three-dimensional noise filter
JP3838012B2 (ja) * 2000-09-25 2006-10-25 日本ビクター株式会社 番組記録再生装置
JP3591443B2 (ja) * 2000-09-25 2004-11-17 日本ビクター株式会社 番組信号記録再生装置
JP2002118827A (ja) * 2000-10-04 2002-04-19 Aiwa Co Ltd 画像表示方法及び信号記録再生装置
US20030110511A1 (en) * 2001-12-11 2003-06-12 Schutte Mark E. Controlling personal video recording functions from interactive television
FI112018B (fi) 2001-12-18 2003-10-15 Hantro Products Oy Menetelmä ja laite liikkeen tunnistamiseksi
US7050096B2 (en) * 2002-03-29 2006-05-23 Hewlett-Packard Development Company, L.P. Real-time image transfer by selective frame dropping between a camera and host computer
JP2004088466A (ja) * 2002-08-27 2004-03-18 Nec Corp ライブ映像配信システム
US8218052B2 (en) * 2003-03-07 2012-07-10 Iconix Video, Inc. High frame rate high definition imaging system and method

Also Published As

Publication number Publication date
US7683940B2 (en) 2010-03-23
JP2009201127A (ja) 2009-09-03
WO2005027068A1 (en) 2005-03-24
JP2007505523A (ja) 2007-03-08
US20100135643A1 (en) 2010-06-03
JP4612906B2 (ja) 2011-01-12
US8599277B2 (en) 2013-12-03
US20060279628A1 (en) 2006-12-14

Similar Documents

Publication Publication Date Title
JP5173919B2 (ja) ビデオデータの再生装置、再生方法、コンピュータプログラム
US6698021B1 (en) System and method for remote control of surveillance devices
US20120098970A1 (en) System and method for storing and remotely retrieving video images
US7595833B2 (en) Visualizing camera position in recorded video
US8160425B2 (en) Storing video data in a video file
US10157526B2 (en) System and method for a security system
US7859571B1 (en) System and method for digital video management
US20060171453A1 (en) Video surveillance system
EP1222821B1 (en) System and method for controlling the storage and remote retrieval of surveillance video images
CA2403270C (en) Digital video system using networked cameras
US7627138B2 (en) System and method for remotely monitoring and/or viewing images from a camera or video device
EP1222820A1 (en) Automated publication system with networkable smart camera
KR100792240B1 (ko) 멀티 비전 구현 방법 및 그 시스템
EP2092746B1 (en) Dynamic layouts
AU2005200021B2 (en) Pre-event buffer management for operator triggered video recording
AU778463B2 (en) System and method for digital video management
AU2006264221A1 (en) Storing video data in a video file

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120618

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121227

R151 Written notification of patent or utility model registration

Ref document number: 5173919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160111

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees