以下、本発明の好ましい実施の形態を添付の図面を用いて詳細に説明する。
(実施例1)
図1(a)は本実施例における監視カメラ1000(送信装置)を示す図である。パン機構1101は監視カメラ1000の撮像系の向きをパン方向に変更する機構である。また、チルト機構1102は監視カメラ1000の撮像系の向きをチルト方向に変更する機構である。また、ズーム機構1103は監視カメラ1000の撮像系のズーム倍率を変更する機構である。本発明において、パン機構1101、チルト機構1102、及びズーム機構1103は必須の構成ではない。
図1(b)は、監視カメラ1000を含む通信システムの構成図である。監視カメラ1000とクライアント2000(受信装置)は、IPネットワーク網1500を介して相互に通信可能な状態に接続されている。クライアント2000は、監視カメラ1000に対して、後述する撮像パラメータ変更や雲台駆動、映像ストリーミング開始等の各種コマンドを送信する。監視カメラ1000は、それらのコマンドに対するレスポンスや映像ストリーミングをクライアント2000に送信する。
図2は、監視カメラ100の構成を示す図である。
制御部1001は、図2に示した監視カメラ1000の各構成の制御を行う。制御部1001は、例えばCPU(Central Processing Unit)等により構成される。
制御部1001は、後述するように、撮像部1003が生成する撮像データを所定の設定値(例えば、所定の解像度、所定のフレームレート、又は、所定の符号化形式)とする場合に監視カメラ1000の再起動処理を行う。
また制御部1001は、後述するように、クライアント2000からの命令に応じて、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定値を更新する制御を行う。
また制御部1001は、後述するように、クライアント2000からの命令に応じて、撮像部1003が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定値を更新する制御を行う。
記憶部1002は、主に制御部1001が実行するプログラム格納領域、プログラム実行中のワーク領域、後述する撮像部1003が生成する画像データの格納領域等、様々なデータの格納領域として使用される。
撮像部1003は、撮像データを生成する。撮像部1003は、被写体を撮影して取得したアナログ信号をデジタルデータに変換し、撮像画像として記憶部1002に出力する。撮像部1003は、出力する画像データの解像度、フレームレート、及び使用可能な符号化方式の設定モード(VidoeSourceMode)を複数サポートする。このVideoSourceModeは、後述のSetVideoSourceModeコマンドによって切り換えが可能である。
符号化部1004は、撮像部1003が生成した撮像データを符号化して画像データを生成する。符号化部1004は、撮像部1003が出力した撮像画像に対してJPEG或いはH.264等の形式に基づき符号化処理を行う。符号化処理された画像データは、記憶部1002に出力される。符号化部1004が出力する画像データの解像度の種類には、撮像部1003の各モードとの間に、後述する図4に示すような対応関係が存在する。
通信部1005は、各制御コマンドを外部機器から受信する。また通信部1005は、各制御コマンドに対するレスポンスを外部機器へ送信する。
通信部1005は、後述するように、撮像部1003が生成する撮像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定値を設定する命令をクライアント2000から受信する。設定値として、撮像部1003が撮像データを生成するための複数サイズの解像度、フレームレートの範囲、又は、複数種類の符号化形式を含むことができる。
また、通信部1005は、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定値を設定する命令をクライアント2000から受信する。設定値として、符号化部1004が画像データを生成するための複数サイズの解像度、フレームレートの範囲、又は、複数種類の符号化形式を設定することができる。
また、通信部1005は、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定を監視カメラが自動的に更新したことを示す更新通知をクライアント2000に送信する。
また、通信部1005は、撮像部1003が生成する撮像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定を監視カメラ1000が自動的に更新したことを示す更新通知をクライアント2000に送信する。
撮像制御部1006は、制御部1001が入力するパン角度、チルト角度、ズーム倍率の値に従って、チルト機構1102、パン機構1101、及びズーム機構1103を制御する。また撮像制御部1006は、制御部1001の問い合わせに応じて、現在のパン角度値、チルト角度値、ズーム倍率値を提供する。
以上、図2を参照し監視カメラ1000の構成について説明したが、図2に示す処理ブロックは、本発明におけるセキュリティカメラの好適な実施例の一例を説明したものでありこの限りではない。音声入力部を備える、或いは撮像制御部を取り除くなど、本発明の要旨の範囲内で、種々の変形及び変更が可能である。
次に、本実施例にて使用するコマンド、パラメータ等の名称と内容を以下に説明する。
図3は、本実施例における監視カメラ1000が保持するパラメータの構造を図示している。
MediaProfile6100は、監視カメラの各種設定項目を関連づけて記憶するためのパラメータセットである。MediaProfile6100は、MediaProfile6100のIDであるProfileTokenを含む。また、MediaProfile6100は、VideoSourceConfiguration(以下、VSC)6102、VideoEncoderConfiguration(以下、VEC)6103、PTZConfiguration6104を含む。さらにMediaProfile6100は、音声のエンコーダ等を含む各種設定項目へのリンクを保持する。
VideoSource6101とは、監視カメラが備える1つの撮像部1003の性能を示すパラメータの集合体である。VideoSource6101は、VideoSource6101のIDであるVideoSourceTokenと、撮像部1003が出力可能な画像データの解像度を示すResolutionを含む。
VideoSource6101は、出力可能な画像データの最大解像度、フレームレート、及び使用可能な符号化方式を含むVideoSourceMode(以下、VSM)を複数サポートする。このVSMは、SetVideoSourceModeコマンドによって切り替えが可能である。VSMの詳細は後述する。
VSC6102は、監視カメラが備えるVideoSource6101をMediaProfile6100に関連付けるパラメータの集合体である。VSC6102は、VideoSource6101が出力する画像データのうち、どの部分を切り出して配信画像とするかを指定するBoundsを含む。
VEC6103は、画像データの符号化に関するエンコーダ設定をMediaProfile6100に関連付けるパラメータの集合体である。
監視カメラ1000の撮像部1003は、VideoSource6101、及びVSC6102の内容に基づいて画像データを出力する。符号化部1004は、撮像部1003から出力された画像データを、VEC6103内に設定される符号化方式(例えばJPEGやH.264)、フレームレート、或いは解像度等のパラメータに従って符号化する。通信部1005は、符号化部1004が符号化した画像データを配信画像としてクライアント2000に配信する。
VEC6103は、VEC6103を識別するためのIDであるVideoEncoderConfigurationTokenを含む。またVEC6103は、符号化方式を指定するEncoding、出力画像の解像度を指定するResolutionを含む。さらにVEC6103は、符号化品質を指定するQuality、出力画像の最大フレームレートを指定するFramerateLimit、及び最大ビットレートを指定するBitrateLimitを含む。
PTZConfiguration6104は、監視カメラ1000のパン機構1101、チルト機構1102、及びズーム機構1103に関する設定をMediaProfile6100に関連付けるパラメータの集合体である。PTZConfiguration6104は、パン機構、チルト機構、及びズーム機構における実際のパン・チルト角度値とズーム倍率値を表現する座標系に関する情報を含む。
図4のテーブルは、監視カメラ1000がサポートするVSMと、各VSMと対応するVEC6103の設定内容を示している。各VSMに対応づけられたVECは、各VSMと整合するVECである。図4のテーブルは、監視カメラ100における記憶部1002に予め記憶されており、制御部1001によって随時参照される。
ModeNo.4000は、監視カメラ1000が内部処理で使用するVSMのモード番号を示している。本例において監視カメラ1000はS1、S2、及びS3の3つのVSMをサポートしている。
MaxResolution4001は、各VSMにおいて撮像部1003が出力する最大の解像度を示すパラメータである。
MaxFramerate4002は、各VSMにおいて撮像部1003が出力可能な最大フレームレートを示すパラメータである。
Encoding4003は、各VSMにおいて使用可能なVECの符号化方式を示すパラメータである。
RebootFlag4004は、各VSMに切り替えられた際に、撮像部1003が再起動を要するかどうかを示すパラメータである。SetVideoSourceModeコマンドによってRebootFlag4004がTrueであるVSMに切り替えが発生すると、監視カメラ1000の再起動処理が発生する。
これらのパラメータに加えて、VSMはEnabledフラグを含む。現在撮像部1003に設定されている有効なVSMのEnabledフラグはTrue、それ以外にはFalseが設定される。
パラメータ4005から4007は、VSM毎に、外部機器からSetVideoEncoderConfgiurationコマンドによってVEC6103に設定可能な、VEC6103の各パラメータの設定可能範囲、選択肢を示している。
選択肢4005は、符号化方式の選択肢を示している。例えば、VSMがS1である場合は、H.264のみが符号化方式として選択可能であることを示している。
このように、撮像データを生成するために設定された符号化方式の選択肢に含まれる符号化方式となるように、画像データを生成するための解像度が設定される。
選択肢4006は、VECの解像度(Resolution)の選択肢を示している。図4の例では、VSMがS2の場合、3200x2400、2048x1536、1024x768、及び640x480の解像度が選択可能であることを示している。
このように、撮像データを生成するために設定された解像度の選択肢に含まれる解像度となるように、画像データを生成するための解像度が設定される。
選択肢4007は、VECのFramerateLimitの設定可能な範囲を示している。例えば、VSMがS3の場合は、1から30fpsのFramerateLimitが指定可能であることを示している。
このように、撮像データを生成するために設定されたフレームレート以下となるように、画像データを生成するためのフレームレートが設定される。
これら4005、4006、及び4007の選択肢は、GetVECOptionsコマンドに対する応答として、クライアント2000へ通知される。ここで、GetVideoEncoderConfigurationOptionsコマンドは、監視カメラ1000の符号化部1004に対して設定可能な設定値の選択肢の通知を、クライアント2000が監視カメラ1000に要求するためのコマンドである。以下、GetVideoEncoderConfigurationOptionsコマンドを、GetVECOptionsコマンドと表記する。
図5(a)は、監視カメラ1000とクライアント2000の間における、設定開始から映像配信までのコマンドシーケンスの例を示している。クライアント2000から監視カメラ1000へ送信されるコマンドと、それに対して監視カメラ1000がクライアント2000へ返送するレスポンスのペアのことをトランザクションという。
イベント7098は、ネットワーク加入通知(再接続通知)イベントである。監視カメラ1000は、本イベントをマルチキャストでネットワークに送信し、接続されている外部機器に対して、コマンド受け付け可能となったことを示す。
トランザクション7099は、GetServiceCapabilitiesコマンドのトランザクションである。GetServiceCapabilitiesコマンドは、監視カメラ1000がサポートする機能を示す機能情報を返送するよう指示するコマンドである。本機能情報には、監視カメラ1000がVSMの切り替えに対応するどうかを示す情報が含まれる。
トランザクション7100は、GetVideoSourceConfigurationsコマンドのトランザクションである。このコマンドを監視カメラ1000に送信することにより、クライアント2000は、監視カメラ1000が保持するVSC6102のリストを取得する(送信手順)。
トランザクション7101は、GetVideoEncoderConfigurationsコマンドのトランザクションである。このコマンドを監視カメラ1000に送信することにより、クライアント2000は、監視カメラ1000が保持する保持するVEC6103のリストを取得する(送信手順)。
トランザクション7102は、GetConfigurationsコマンドのトランザクションである。このコマンドにより、クライアント2000は、監視カメラ1000が保持する保持するPTZConfiguration6104のリストを取得する。
トランザクション7103は、CreateProfileコマンドのトランザクションである。CreateProfileコマンドにより、クライアント2000は、監視カメラ1000に新たなMediaProfile6100を作成し、そのProfileTokenを得る。本コマンド処理後、監視カメラ1000は、MediaProfileに変更があったことをネットワーク上のクライアントに通知するべくMediaProfileの変更通知イベントを送信する。
トランザクション7104は、AddVideoSourceConfigurationコマンドのトランザクションである。
トランザクション7105は、AdddVideoEncoderConfigurtionコマンドのトランザクションである。
トランザクション7109は、AddPTZConfigurationコマンドのトランザクションである。
これらのトランザクション7104、7105、及び、7109のコマンドにおいてクライアント2000は、MediaProfileのIDを指定する。このようにしてクライアント2000は、指定したMediaProfileに所望のVSC、VEC、及びPTZConfigurationを関連付けることができる。
これらのコマンド処理後、監視カメラ1000は、MediaProfileに何らかの変更があったことをネットワーク上のクライアントに通知するべくMediaProfileの変更通知イベントを送信する。
トランザクション7106は、GetVECOptionsコマンドのトランザクションである。このコマンドにより、クライアント2000は、IDによって指定したVECにおいて、監視カメラ1000が受付可能な各パラメータの選択肢や設定値の範囲を取得する。
トランザクション7107は、SetVideoEncoderConfigurationコマンドのトランザクションである。このコマンドにより、クライアント2000は、VEC6103の各パラメータを設定する。本コマンド処理後、監視カメラ1000は、VECに変更があったことをネットワーク上のクライアントに通知するためにVECの変更通知イベントを送信する。
トランザクション7110は、GetStreamUriコマンドのトランザクションである。このコマンドにより、クライアント2000は、指定したMediaProfileの設定に基づいて監視カメラ1000が配信ストリームを取得するためのアドレス(例えば、URI:Uniform Resource Identifier)を取得する。
トランザクション7111は、Describeコマンドのトランザクションである。トランザクション7110において取得したURIを使用してこのコマンドを実行することにより、クライアント2000は、監視カメラ1000がストリーム配信するコンテンツの情報を要求し取得する。
トランザクション7112は、Setupコマンドのトランザクションである。トランザクション7110において取得したURIを使用してこのコマンドを実行することにより、クライアント2000と監視カメラ1000の間で、セッション番号を含むストリームの伝送方法が共有される。
トランザクション7113は、Playコマンドのトランザクションである。トランザクション7112において取得したセッション番号を使用してこのコマンドを実行することにより、クライアント2000は、監視カメラ1000に対してストリームの開始を要求する。
トランザクション7114は、配信ストリームである。監視カメラ1000は、トランザクション7113において開始を要求されたストリームを、トランザクション7112において共有された伝送方法によって配信する。
トランザクション7115は、Teardownコマンドのトランザクションである。トランザクション7112において取得したセッション番号を使用してこのコマンドを実行することにより、クライアント2000は、監視カメラ1000に対してストリームの停止を要求する。
トランザクション7116は、ネットワーク離脱通知イベント(離脱通知)である。監視カメラ1000は、本イベントをマルチキャストでネットワークに送信し、接続されている外部機器に対して、コマンド受け付け不可能となったことを示す。
図5(b)は、監視カメラ1000とクライアント2000の間において、再起動を伴わないVSMのモード変更を行う場合のコマンドシーケンスを示している。本実施例では、図4に示した表を参照して、選択するVSMのモードのRebootFlag4004がFalseである場合に、再起動を伴わずにVSMのモード変更が行われる。すなわち、選択するVSMのモードに関連付けられた再起動情報が、当該VSMに変更する際に再起動を必要としないことを示す場合、以下のコマンドシーケンスによりVSMのモード変更を行う。
トランザクション7200は、GetServiceCapabilitiesコマンドのトランザクションである。GetServiceCapabilitiesコマンドは、監視カメラ1000がサポートする機能を示す機能情報を返送するよう指示するコマンドである。本機能情報には、監視カメラ1000がVSMの切り替えに対応するどうかを示す情報が含まれる。
トランザクション7201は、GetVideoSourceModeコマンドのトランザクションである。GetVideoSourceModeコマンドは、クライアント2000が指定したIDのVideoSource6101がサポートするVSMのリストを返送するよう指示するコマンドである。クライアント2000は、GetServiceCapabilitiesコマンド7200によって監視カメラ1000がVSMの切り替えに対応していると判断した場合に、本コマンドによって監視カメラ1000のサポートするVSMを取得する。監視カメラ1000の制御部1001は、GetVideoSourceModeコマンドを受信すると、記憶部1002に保存されている図4に示すS1からS3の各VSMのパラメータを取得し、通信部1005を介してクライアント2000に返信する。
トランザクション7202は、SetVideoSourceModeコマンドのトランザクションである。SetVideoSourceModeコマンドは、クライアント2000が指定したVideoSource6101のVSM(例えば、図4のS1からS3)を変更するよう指示するコマンドである。監視カメラ1000の制御部1001は、VSMの切り替え後、VSMの変更をネットワーク上のクライアントに通知するためVSM変更通知イベントを送信する。
トランザクション7203は、トランザクション7202に示すSetVideoSourceModeの切り替えによってVideoSurceModeとの間に発生したVECの不整合を更新する処理を示している。更新が行われた場合は、監視カメラ1000の制御部1001は、VEC変更通知イベントを送信し、VECの設定値と、VECの設定値の選択肢の再取得をネットワーク上のクライアントに通知する。
このように、本実施例にかかる監視カメラ1000は、撮像部1003の設定を所定のVSMに変更したときに再起動処理を必要しない場合でも、VSMの変更に伴ってVECを自動的に更新した場合はその旨をクライアント2000に通知する。
すなわち、監視カメラ1000が撮像データを生成するための設定値を設定した場合、再起動処理を行うか否かに関わらず、クライアント2000に画像データを生成するための設定値(例えば、VEC)を取得させるための通知を前記ネットワークを介して行う。
トランザクション7204は、GetVECOptionsコマンドのトランザクションである。また、トランザクション7205は、GetVideoEncoderConfigurationsコマンドのトランザクションである。トランザクション7203に示すVEC変更通知イベントを受信したクライアント2000は、これらのコマンドによって、更新されたVECの設定値と、VECの設定値の選択肢を取得する。
このように、監視カメラ1000は、VSM変更通知を受信したクライアント2000から、更新した設定値(VEC)の取得要求を受信する。
図5(c)は、監視カメラ1000とクライアント2000の間において、再起動を伴うVSMのモード変更を行う場合のコマンドシーケンスを示している。
図5(c)において、トランザクション7201以前のトランザクションと、トランザクション7204以後のトランザクションは図5(b)と同様である。
本実施例では、図4に示した表を参照して、選択するVSMのモードのRebootFlag4004がTrueである場合に、再起動を伴ってVSMのモード変更が行われる。すなわち、選択するVSMのモードに関連付けられた再起動情報が、当該VSMに変更する際に再起動を必要とすることを示す場合、以下のコマンドシーケンスによりVSMのモード変更を行う。
トランザクション7399は、再起動を要するVSMへ変更するSetVideoSourceModeコマンドのトランザクションである。図5(c)に示したコマンドシーケンスの例においては、監視カメラ1000は、トランザクション7399においてVSM変更通知イベントを送信しない。
処理7400は、トランザクション7399に示すSetVideoSourceModeの切り替えによってVSMとVECとの間に発生した不整合を更新する処理を示している。この場合、監視カメラ1000は、このタイミングではVEC変更通知イベントを送信しない。
イベント7401は、監視カメラ1000の再起動処理である。監視カメラ1000は、まずネットワーク離脱通知イベントをネットワークに送信する。次に監視カメラ1000は再起動処理を行う。そして、監視カメラ100は再起動後、ネットワーク加入通知イベントをネットワークに送信する。
イベント7402はVSM変更通知イベントである。また、イベント7403は、VEC変更通知イベントである。監視カメラ1000は、再起動後にこれらのイベントを送信し、クライアント2000に設定値の再取得を促す。
このように、本実施例にかかる監視カメラ1000は、撮像部1003の設定を所定のVSMに変更したときに再起動処理を必要とする場合に、VSMの変更に伴ってVECを自動的に更新した場合はその旨をクライアント2000に通知する。
すなわち、監視カメラ1000が撮像データを生成するための設定値を設定した場合、再起動処理を行うか否かに関わらず、クライアント2000に画像データを生成するための設定値を取得させるための通知を前記ネットワークを介して行う。クライアント2000に画像データを生成するための設定値を取得させるための通知とは、例えば、VEC変更通知である。
次に本実施例の監視カメラ1000が行う処理について図6(a)から(d)を用いて説明する。監視カメラ1000の制御部1001がプロセッサを内蔵する形態では、図6(a)から(d)の処理フローは、図6に示す手順を制御部1001に実行させるためのプログラムを示す。制御部1001が内蔵するプロセッサはコンピュータであり、監視カメラ1000が内蔵する記憶部1002から読み出したプログラムを実行する。
図6(a)は、監視カメラ1000が前述のSetVideoSourceModeコマンドをクライアント2000から受信(受信手順)した場合の処理を示している。SetVideoSourceModeコマンドは、クライアント2000が指定したVideoSource6101のVSM(例えば、図4のS1からS3)を変更するよう指示するコマンドである
ステップS1000において制御部1001は、通信部1005を介して配信中のビデオストリームを停止させる。
ステップS1001において制御部1001は、入力されたVSMがS1からS3の何れであるかを判別し、該当するVSMの設定値を記憶部1002より取得し、撮像部1003へ設定する。
ステップS1002において制御部1001は、ステップS1001において判別したVSMに対応するEnableフラグをTrueに設定し、他のVSMに対応するEnableフラグをFalseに設定する。
ステップS1003において制御部1001は、クライアント2000へ正常レスポンスを送信する。この正常レスポンスは例えば、図5(b)のトランザクション7202、図5(c)のトランザクション7399に示したSetVideoSourceModeレスポンスである。
ステップS1004において制御部1001は、設定されたVSMのRebootFlagを参照し、再起動を要するVSMに変更されたかどうかを判定する。制御部1001は、再起動要の場合はステップS1010へ、再起動不要の場合はステップS1005へ処理を移す。
ステップS1005において制御部1001は、通信部1005を介して、VSMの変更をネットワーク上のクライアントに通知するべくVSM変更通知イベントを送信する。このように、監視カメラ1000は、撮像部1003が生成する撮像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定が完了したことを示す完了通知によって、更新通知を行う。更新通知とは、撮像部1003又は符号化部1004に対する設定を更新したことをクライアント2000に通知するものである。
ステップS1020において制御部1001は、VSM変更通知イベント送信フラグをONに設定する。本フラグは後述する再起動処理において、制御部1001が参照する。
ステップS1021において制御部1001は、再起動開始フラグをONに設定する。本フラグは、各コマンド処理終了後に制御部1001によって参照され、ON場合は、制御部1001は、各コマンド処理に引き続いて再起動処理(制御手順)を実行する。
ステップS1006において制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、変更後のVSMが、現在設定されているVECと整合するか判定する。VECの設定は図4を用いて説明したように、画像データの符号化形式(Encoding)、解像度(Resolution)、及び最大フレームレート(FramerateLimit)についての設定を含む。監視カメラ1000に設定されている複数のVECのうち何れか一つでも整合しないVECが存在する場合、制御部1001は処理をステップS1007に移す。
一方、整合しないVECが存在しない場合は、本コマンドの処理を終了する。このようにVSMの変更命令を受信した場合であって符号化部1004が生成する画像データに対する設定を更新しない場合、クライアント2000に対して更新通知を行わない。
ステップS1007において制御部1001は、ステップS1006において不整合が発生したVECのパラメータを、変更後のVSMと整合する内容に変更する(更新手順)。変更の方法にはさまざまな実装が考えられる。
例えば、VSMを図4のS3のモードからS1のモードに変更する場合について説明する。
VSMの変更前(VSM=S3)においてVECの設定は、Encoding=JPEG、Resultion=320x240、FramerateLimit=25fpsとなっているとする。図4に示した例において、変更前のVSMとVECの設定は整合している。
VSMがS3からS1に変更されると、VSMの設定は、MaxResolution=3840x2160(縦横比16:9)、MaxFramerate=20fps、Encoding=H.264、RebootFlag=Falseに変更される。
一方、VECの設定は、Encoding=JPEG、Resolution=320x240(縦横比4:3)、FramerateLimit=25fpsのままである。
このとき、変更後のVSMと設定されているVECとの間で、Encoding、Resolutionの縦横比、FramerateLimitが不整合となる。
そこでVSMがS3からS1に変更された場合、VECの設定をEncodingはJPEGからH.264へ、Resolutionは320x240から960x540へ、FramerateLimitは25fpsから20fpsへ変更することができる。
同様にして、VECが変更され、変更後のVECとVSMが不整合となった場合に、VSMを変更して、VECとVSMが整合するようにしてもよい。VSMを変更する例についての詳細は、実施例2において説明する。
VSMとVECが不整合である状態から整合した状態となるように、監視カメラ1000が自動的にVSM又はVECを変更する場合、自動的に変更するVSM又はVECの設定値の選択肢が複数存在することがある。この場合、監視カメラ1000は、複数の設定値の選択肢のうちから所定の選択肢を自動的に選択して設定することができる。
例えば、クライアント2000から受信したコマンドに応じてVSMを図4に示すS2のVSMに変更し、監視装置1000がVECをVSM(S2)と整合するように自動的に変更する場合について説明する。
この場合、図4の例では、自動変更後のVECの符号化方式の設定値として、H.264又はMPEG4のうちいずれかを選択して設定することができる。また、自動変更後のVECのResolutionの設定値として、3200x2400、2048x1536、1024x768、640x480のうちいずれかを選択して設定することができる。さらに、自動変更後のフレームレートの設定として、1から30fpsの間でフレームレートを選択して設定することができる。
VSM又はVECを自動変更する際に監視カメラ1000が設定可能な設定値の選択肢が複数ある場合、設定する選択肢の選択方法は特に限定しない。
例えば、設定可能な複数の選択肢(設定値)のうち、予め決められた所定の選択肢を自動的に設定することができる。例えば、設定可能なEncodingの選択肢としてH.264とMPEG4が存在する場合、自動的にH.264が設定されるようにすることができる。また例えば、設定可能なResolutionの選択肢として複数の解像度が存在する場合、それらの解像度のうち最も大きい(画素数の多い)解像度が自動的に設定されるようにすることができる。
あるいは、設定可能な複数の選択肢(設定値)のうち、変更前の設定値に対応する設定値を変更後の設定値とすることができる。
例えば、設定可能なResolutionの選択肢のうち、変更前のResolutionに対応する解像度を自動的に設定するようにしてもよい。例えば解像度大きさの序列が変更前と変更後で対応するように設定してもよい。
例えばVSMがS2からS1に変更され、変更前のResolutionが640x480(解像度の大きさの序列が大きい順に2番目)である場合、変更後のResolutionを1920x1080(S1において序列2番目の解像度)とすることができる。
また例えば、VSMがS2からS1に変更され、変更前のFramerateLimitが28fpsであった場合、変更後のVSM(S1)に整合するFramerateLimitのうち最も近い値に変更されるようにしても良い。即ち、VSM=S2からS1に変更されたとき、S2において28fpsであったFramerateLimitは、S1において20fpsに変更されるようにしてもよい。
図6(a)のフローチャートの説明に戻る。ステップS1008において制御部1001は、新しいVSMは再起動を要するかどうかを判定する。再起動が必要であるか否かは、図4に示したテーブルを参照して、新しいVSMのRebootFlagがTrueであるかFalseであるかを確認することにより判定することができる。再起動不要(RebootFlagがFalse)の場合はステップS1009へ、再起動を要する(RebootFlagがTrue)の場合はステップS1030へ処理を移す。
このようにして、VSMの変更に伴って再起動が不要である場合は、ステップS1007の処理後にVEC変更通知がクライアント2000に通知される。また、VSMの変更に伴って再起動が行われる場合は、図6(d)を用いて説明する再起動処理に伴ってVEC変更通知がなされるように、VEC変更通知イベント送信フラグがONにされる。
ステップS1009において制御部1001は、通信部1005を介して、VECの変更をネットワーク上のクライアントに通知するべくVEC変更通知(更新通知)イベントを送信する(通知手順)。このように、監視カメラ1000は、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定の完了に応じて更新通知を行う。更新通知とは、撮像部1003又は符号化部1004に対する設定を更新したことをクライアント2000に通知するものである。
ステップS1030において制御部1001は、VEC変更通知イベント送信フラグをONに設定する。本フラグは後述する再起動処理において、制御部1001が参照する。本フラグがONの場合、制御部1001は、再起動処理後、VEC変更通知イベントをクライアント2000に送信する(通知手順)。
図6(b)は、監視カメラ1000がGetVECOptionsコマンドをクライアント2000から受信した場合の処理を示している。GetVECOptionsコマンドは、図4に示した4005、4006、及び4007の選択肢をクライアント2000が取得するために監視カメラ1000に送信するコマンドである。
ステップS1100において制御部1001は、現在VideoSource6101に設定されているVSMがS1からS3の何れであるかを、Enableフラグを参照して判別する。
ステップS1101において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照して、現在のVSMに整合する符号化形式(Encoding)の選択肢を取得する。
ステップS1102において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照して、現在のVSMに整合するVECの解像度(Resolution)の選択肢を取得する。
ステップS1103において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照して、最大フレームレート(FramerateLimit)の選択肢を取得する。
例えば、現在のVSMがS3であった場合、符号化方式Encodingの選択肢としてH.264とJPEGが取得される。また、Resolutionの選択肢として1024x768、640x480、320x240、及び、176x144が取得される。さらに、FramerateLimitとして1から30fpsが取得される。
ステップS1104において制御部1001は、記憶部1002から現在のVSMに依存しないVECの選択肢や設定範囲を取得する。例えば符号化品質(Quality)の設定可能範囲として1から5が取得される。また、最大ビットレート(BitrateLimit)の選択肢として1から60Mbpsが取得される。
ステップS1105において制御部1001は、ステップS1101からステップS1104において取得した選択肢や設定範囲を、正常レスポンスに含めて、通信部1005を介してクライアント2000へ返送する。
図6(c)は、監視カメラ1000が前述のSetVideoEncoderConfigurationコマンドをクライアント2000から受信した場合の処理を示す。
ステップS1200において制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、本コマンドによって受信したSetVECに入力されている解像度、符号化形式、及び最大フレームレートが現在のVSMに整合するかどうかを判定する。何れか一つでも整合しない場合、制御部1001は処理をステップS1210に移す。
ステップS1201において制御部1001は、符号化品質、最大ビットレート、符号化形式、最大フレームレート、及び、解像度を含むVECの設定値を記憶部1002に記憶し、符号化部1004に設定する。
ステップS1202において制御部1001は、クライアント2000へ正常レスポンスを送信する。
ステップS1203において制御部1001は、通信部1005を介して、VECの変更をネットワーク上のクライアントに通知するべくVEC変更通知イベントを送信する。
ステップS1210において制御部1001は、クライアント2000へエラーレスポンスを送信する。
図6(d)は、再起動処理である。本処理は図5(c)におけるSetVideoSourceModeコマンドのトランザクション7399の後に、再起動開始フラグがONであった場合に制御部1001によって実行される処理である。
すなわち、監視カメラ1000はSetVideoSourceModeコマンドを受信すると図6(a)の処理を実行する。そして図6(a)の処理の終了後、再起動開始フラグがONの場合に、図5(c)のトランザクション7401において再起動処理が行われる。再起動処理は図5(c)のネットワーク離脱通知イベントとネットワーク加入イベントとの間に監視カメラ1000において行われる。
ステップS1700において制御部1001は、通信部1005を介して、再起動の開始をネットワーク上のクライアントに通知するべく、ネットワーク離脱通知イベントを送信する。
ステップS1701において制御部1001は、監視カメラ1000の実際の再起動処理を行う。
ステップS1702において制御部1001は、通信部1005を介して、再起動の完了をネットワーク上のクライアントに通知するべく、ネットワーク加入通知イベントを送信する。
ステップS1703において制御部1001は、VEC変更通知イベント送信フラグを判定する。ONであった場合、ステップS1704に処理を移す。
ステップS1704において制御部1001は、通信部1005を介して、VECの変更をネットワーク上のクライアントに通知するべくVEC変更通知イベントを送信する。
ステップS1705において制御部1001は、VSM変更通知イベント送信フラグを判定する。ONであった場合、ステップS1706に処理を移す。
ステップS1706において制御部1001は、通信部1005を介して、VSMの変更をネットワーク上のクライアントに通知するべくVSM変更通知イベントを送信する。
図7は、本実施例における監視カメラ1000のVSM、及びVECの設定を行うクライアント2000の設定画面の例を示している。この設定画面は、図2に示したクライアント2000の制御部2001が、記憶部2002に記憶されたプログラムを実行して、表示部2003に表示させる表示制御を行うことができる。
領域9000は、LiveViewエリアである。クライアント2000は、設定画面が開かれたときに、前述の図5(a)を用いて説明したシーケンスを実行し、トランザクション7113において得られる映像のストリームを領域9000に表示する。
領域9001は、監視カメラ1000の撮像部1003が撮像データを生成するための設定値を設定するためのグラフィカルユーザインタフェース(GUI)を表示する第1の設定領域である。本実施例において、領域9001は、VSM選択エリアである。クライアント2000は、設定画面が開かれたときに併せて実行するGetServiceCapabilitiesのトランザクション7099によって、監視カメラ1000がVSMの切り替えに対応しているかを判定する。
監視カメラ1000がVSMの切り替えに対応している場合、GetVideoSourceModeのトランザクション7200によって変更することができるVSMを、ユーザが選択できるようにリストする(領域9002)。
領域9002において、現在の設定とは異なるVSMが選択されると、クライアント2000の通信部2004は、SetVideoSourceModeコマンドを監視カメラ1000に送信し、監視カメラ1000のVSMを変更する。このようにして、撮像データを生成するための設定値(例えば、VSM)を第1の設定領域に表示されるGUIを介して変更したときに、変更した設定値を設定する命令を監視カメラ1000に送信する。
第1の設定領域におけるモード選択に応じて実行されるSetVideoSourceModeコマンドの送信は、図5(b)のトランザクション7202、及び、図5(c)のトランザクション7399においてクライアント2000が実行する処理に対応する。
ここで、図5(b)のトランザクション7200は省略してもよい。上述のとおり、設定画面が開かれたときに併せて実行するGetServiceCapabilitiesのトランザクション7099によって、監視カメラ1000がVSMの切り替えに対応しているかをクライアント2000は判定できるためである。
監視カメラ1000は、クライアント2000から送信されたSetVideoSourceModeコマンドを受信すると、図6(a)を用いて説明したSetVideoSourceModeコマンド処理を実行する。
VSMの変更に伴い再起動が必要である場合は、監視カメラ1000は、図6(a)の処理を実行した後、図6(d)に示した再起動処理を実行する。この再起動処理は図5(c)のトランザクション7401のネットワーク離脱イベントとネットワーク加入イベントとの間に実行される。
一方、VSMの変更に伴い再起動が不要である場合は、監視カメラ1000は、図6(a)のステップS1009に示したとおり、再起動処理を行わずに、VEC変更通知をクライアント2000に送信する。
監視カメラ1000における図6(a)の処理によりVSMが変更されると、クライアント2000は、監視カメラ1000からVideoSourceMode変更通知を受信する(図5(b)のトランザクション7202、図5(c)のイベント7402)。
クライアント2000は、VideoSouceMode変更通知を受信すると、図5(b)、(c)に示したトランザクション7204、7205を実行して、更新されたVECを監視カメラ1000から取得する。
更新されたVECを監視カメラ1000から取得すると、クライアント2000は設定画面の表示を更新し、更新後のVideoEncoderの各パラメータの選択肢や設定範囲を表示する。これにより、クライアント2000は、常にVSMと整合するVECの設定値の選択肢や設定範囲をユーザに提示することができる。
タブ9003、タブ9004は、監視カメラ1000の符号化部1004が画像データを生成するための設定値を設定するためのグラフィカルユーザインタフェースを表示する第2の設定領域である。本実施例において、タブ9003、タブ9004は、監視カメラ1000のVEC6103の設定値をユーザが変更するために用いられる。ユーザはタブを選択することにより、設定を行うVideoEncoderを切り替えることができる。ユーザがタブを選択すると、選択されたタブに対応するVideoEncoderの設定画面が表示される。
図7に示した例においてタブの数は2であるが、GetVideoEncoderConfigurationsコマンドによって得られる監視カメラ1000がサポートするVEC6103の数に応じた数のタブを表示することができる。
領域9005は、各VECの符号化形式をユーザに選択させるエリアである。領域9005には、図5(a)のトランザクション7106によって得られた符号化形式の選択肢が表示される。また領域9005には、VSM選択エリアで新しいVSMが選択されたときの図5(b)のトランザクション7204によって得られた符号化形式の選択肢が表示される。
領域9006は、図7の設定画面を開いたときの監視カメラ1000、又は、新たにVSMが設定された監視カメラ1000に対して設定可能な符号化形式を示す。また領域9007は、図7の設定画面を開いたときの監視カメラ1000、又は、新たにVSMが設定された監視カメラ1000に対して選択することができない符号化形式を示す。
領域9008は、VEC6103に含まれる最大フレームレート、最大ビットレート、及び符号化品質を選択させるDetailエリアである。
領域9009は、図7の設定画面を開いたときの監視カメラ1000、又は、新たにVSMが設定された監視カメラ1000に対して設定することができるフレームレートの範囲をスクロールバーによって表す。領域9009に表示されるフレームレートの範囲は、図5(a)に示したトランザクション7106、又は、図5(b)に示したトランザクション7204によって得られる最大フレームレートに基づいて決定される。
領域9010は、図7の設定画面を開いたときの監視カメラ1000、又は、新たにVSMが設定された監視カメラ1000に対して設定することができるビットレートの範囲をスクロールバーによって表す。領域9010に表示されるビットレートの範囲は、図5(a)に示したトランザクション7106、又は、図5(b)に示したトランザクション7204によって得られる最大ビットレートに基づいて決定される。
領域9011は、図7の設定画面を開いたときの監視カメラ1000、又は、新たにVSMが設定された監視カメラ1000に対して設定することができる符号化品質の範囲をスクロールバーによって表す。領域9010に表示される符号化品質の範囲は、図5(a)に示したトランザクション7106、又は、図5(b)に示したトランザクション7204によって得られる符号化品質に基づいて決定される。
領域9012は、VEC6103の解像度を選択するエリアである。領域9013のドロップダウンリストには、図5(a)に示したトランザクション7106、又は、図5(b)に示したトランザクション7204によって得られる符号化形式のパラメータの選択肢が表示される。
ボタン9014は、Applyボタンである。ユーザによってApplyボタンが押されると、クライアント2000は、SetVideoEncoderconfigurationコマンドを監視カメラ1000に対して送信する。このコマンドの送信により、領域9005、領域9008、及び領域9012おいて選択されたパラメータが監視カメラ1000の符号化部に設定される。
VSMモードがMode1からMode2に変更された場合の設定画面の例を図12に示す。VSMモードが変更されると、図4のテーブルを参照して、タブ9003、タブ9004に表示されるVECの設定範囲がMode2のVSMモードと整合する設定範囲に変更される。すなわち、領域9005において選択できる符号化形式はH.264又はMPEG4となる。また、領域9008において設定可能なフレームレートは1から30fpsとなる。さらに、領域9012において選択可能な解像度の選択肢も変更される。
本実施例における監視カメラ1000によれば、クライアント2000から受信したコマンドに応じてVSMを変更する場合に、VECの設定内容を変更後のVSMに整合する内容に更新することができる。
このようにして、撮像部1003における画像データの生成に関する設定が変更された場合に、撮像部1003における画像データの生成に関する設定と、符号化部1004における画像データの生成に関する設定とを整合させることができる。
例えば、撮像部1003が生成する画像データの解像度の設定が変更された場合に、撮像部1003が生成する画像データの解像度の設定と、符号化部1004が生成する画像データの解像度の設定とを整合させることができる。例えば、撮像部1003が生成する画像データの縦横比と、符号化部1004が生成する画像データの解像度の縦横比とを一致させることができる。
また本実施例における監視カメラ1000は、VSMの変更に伴ってVECを変更した場合に、新しいVSMの設定に伴って再起動を要する設定がなされているか否かに関わらず、VECの内容を再取得するようにクライアント2000に促す。即ち、受信した命令に応じて撮像部1003が生成する撮像データの設定値を設定した場合に再起動処理を行うか否かに関わらず、符号化部1004が生成する画像データの設定値の設定を自動的に更新したことを示す更新通知をクライアント2000に送信する。ここで、本実施例において、設定値には、解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定値が含まれる。
これによって、監視カメラ1000とクライアント2000の間で、監視カメラ1000の撮像部1003に対する設定値、及び、符号化部1004に対する設定値が整合するようにすることができる。
さらに、本実施例における監視カメラ1000は、VSMを変更した場合に、クライアント2000が送信したGetVECOptionsコマンドの応答として提供する選択肢の内容を変更する。この際、選択肢の内容は変更後のVSMに整合する内容にして応答する。
このようにして、監視カメラ1000の符号化設定を変更した場合に、クライアント2000において行う監視カメラ1000に対する設定を適切に行うことができる。
(実施例2)
実施例1では、受信したGetVECOptionsコマンドの応答として提供する符号化部1004の設定値の選択肢として、VSMに整合する選択肢を通知する場合について説明したが、この限りではない。
本実施例では、GetVECOptionsコマンドに対する応答として、VSMと整合する設定値以外の設定値も含めた選択肢をクライアント2000に提供する場合について説明する。ただし、監視カメラ1000の符号化部1004に設定可能な設定値として取り得る値が全て現在のVSMと整合する場合は、GetVECOptionsコマンドに対する応答は全てVSMと整合する設定値となる。
本実施例において、GetVECOptionsコマンドに対する応答として、ライアント2000に通知される選択肢は、現在設定されているVSMに依存しない。
また本実施例では、クライアント2000がSetVideoEncoderConfigurationコマンドにより設定する符号化部1004の設定値と整合するように、監視カメラ1000がVSMを切り替える場合について説明する。なお、実施例1において既に説明した内容については説明を省略する。
本実施例にかかる監視カメラシステムの構成、監視カメラ1000の構成、及び、監視カメラ1000が保持するパラメータの構造については、実施例1において図1から図3を用いて説明した内容と同じであるため説明を省略する。
また本実施例では、監視カメラ1000がサポートするVSMと、各VSMに整合するVEC6103の設定可能範囲の内容の例として、実施例1と同様に、図4のテーブルを用いて説明する。
次に、監視カメラ1000とクライアント2000との間でのコマンドシーケンスについて説明する。監視カメラ1000とクライアント2000の間における、設定開始から映像配信までのコマンドシーケンスは、実施例1において図5(a)を用いて説明した内容と同じであるため説明を省略する。
次に、本実施例において、監視カメラ1000とクライアント2000の間において、符号化部1004の出力解像度の変更を行う場合のコマンドシーケンスについて、図8(a)を用いて説明する。
実施例1において図5(a)を用いて説明したトランザクションについては、図5(a)と同じ符号を付して説明を省略する。
イベント7300は、トランザクション7107に示すVECの設定変更によって発生したVSMとVECの不整合を解消するよう、VSMを更新する処理である。
イベント7300において、新たに設定されるVSMが再起動を要しない場合は、監視カメラ1000の制御部1001は、VSM変更通知イベントをクライアント2000に送信し、VSMの再取得をネットワーク上のクライアントに促す。
トランザクション7301は、GetVECOptionsコマンドのトランザクションである。
トランザクション7302は、GetVideoEncoderConfigurationsコマンドのトランザクションである。
トランザクション7107に示すVEC変更通知イベントを受信したクライアント2000は、トランザクション7301により更新されたVECの設定値を取得する。また、トランザクション7107に示すVEC変更通知イベントを受信したクライアント2000は、クライアント2000は、トランザクション7302により更新されたVECの設定値の選択肢を取得する。
トランザクション7303は、GetVideoSourceModeコマンドのトランザクションである。イベント7300に示すVSM変更通知イベントを受信したクライアント2000は、トランザクション7303によって、更新されたVSMに含まれるEnableフラグを参照することで、VSMの更新を確認することができる。
次に、監視カメラ1000とクライアント2000の間において、符号化部1004が出力する画像データの解像度の変更を行う場合で、且つ、新たに設定するVSMが再起動を伴う場合のコマンドシーケンスについて図8(b)を用いて説明する。図8(a)を用いて説明したトランザクションについては図8(a)と同じ符号を付して説明を省略する。
処理7500は、トランザクション7107に示すVECの設定変更によって発生したVSMとVECの不整合を解消するよう、VSMを更新する処理を示している。ここで更新時に再起動を必要とするVSMへ更新が行われた場合は、監視カメラ1000は、VSM変更通知イベントを送信しない。
イベント7502は、VSM変更通知イベントであり、監視カメラ1000は、再起動後にイベント7502を送信し、クライアント2000に設定値の再取得を促す。
次に本実施例において監視カメラ1000が行う処理について図9(a)および(g)を用いて説明する。監視カメラ1000の制御部1001がプロセッサを内蔵する形態では、図9(a)及び(b)の処理フローは、図6に示す手順を制御部1001に実行させるためのプログラムを示す。制御部1001が内蔵するプロセッサはコンピュータであり、監視カメラ1000が内蔵する記憶部1002から読み出したプログラムを実行する。
図9(a)は、監視カメラ1000がGetVideoSourceConfigurationOptionsコマンドをクライアント2000から受信した場合の処理を示している。ここで、GetVideoSourceConfigurationOptionsコマンドは、監視カメラ1000の撮像部1003に対して設定可能な設定値の選択肢の通知を、クライアント2000が監視カメラ1000に要求するためのコマンドである。以下、GetVideoSourceConfigurationOptionsコマンドを、GetVSCOptionsコマンドと表記する。
ステップS1300において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、設定されているVSMと整合する設定値以外の設定値も含めたVECの選択肢を取得する。
ステップS1301において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、設定されているVSMと整合する設定値以外の設定値を含むVECの符号化形式の選択肢を取得する。図4の例では、JPEG、MPEG4、及びH.264を取得する。
ステップS1302において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、設定されているVSMと整合する設定値以外の設定値を含むVECの最大フレームレートの値を取得する。図4の例では、30fpsを取得する。
ステップS1303において制御部1001は、記憶部1002からVECの選択肢や設定範囲を取得する。例えば符号化品質の設定可能範囲として1から5、最大ビットレートの設定値として60Mbpsが取得される。
ステップS1304において制御部1001は、ステップS1300からステップS1303において取得した選択肢や設定範囲を、正常レスポンスに含めて、通信部1005を介してクライアント2000へ返送する。
図9(b)は、監視カメラ1000がSetVideoEncoderConfigurationコマンドをクライアント2000から受信した場合の処理を示している。
実施例1において図6(c)を用いて説明した処理については、同じ符号を付して説明を省略する。
ステップS1400において制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、受信したVECに設定されている符号化形式、解像度、及び、最大フレームレートが、現在のVSMに整合するかどうかを判定する。
整合する場合はコマンド処理を終了させる。このように、このようにVECの変更命令を受信した場合であって撮像部1003が生成する画像データに対する設定を更新しない場合、クライアント2000に対して更新通知を行わない。
整合しない場合、制御部1001は処理をステップS1410に移す。ステップS1410において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、入力されたVECに整合するVSMに設定を切り替える。例えば、VSMがS1であるときに、符号化部1004の解像度を640x480とするコマンドに入力された場合、この解像度に整合するS3にVSMが切り替えられる。
ステップS1411において、制御部1001は、設定されたVSMのRebootFlagを参照し、再起動を要するVSMに変更されたかどうかを判定する。制御部1001は、再起動要の場合はステップS1010へ、再起動不要の場合はステップS1005へ処理を移す。
ステップS1412において、制御部1001は、通信部1005を介して、VSMの変更をネットワーク上のクライアントに通知するべくVSM変更通知イベントを送信する。このように、VECの変更命令に応じて、変更後のVECと整合するように撮像部1003が生成する撮像データの設定(VSM)を更新した場合、VSMの変更に伴って再起動を必要としない場合にも、VSMが変更されたことを示す更新通知を行う。
ステップS1411において、制御部1001は、更新されたVSMのRebootFlagを参照し、再起動を要するVSMに変更されたかどうかを判定する。制御部1001は再起動要(RebootFlagがTrue)の場合はステップS1420へ、再起動不要(RebootFlagがFalse)の場合はステップS1412へ処理を移す。
ステップS1412において制御部1001は、通信部1005を介して、VSMの変更をネットワーク上のクライアント2000に通知するべくVSM変更通知イベントを送信する。
ステップS1420において制御部1001は、VSM変更通知イベント送信フラグをONに設定する。
ステップS1421において制御部1001は、再起動開始フラグをONに設定する。
再起動処理については、実施例1において図6(d)を用いて説明した内容と同じであるため、説明を省略する。再起動処理においては、後述するように、VSMが変更されたことがクライアント2000に通知される。
このように、VECの変更命令に応じて、変更後のVECと整合するようにVSMを変更した場合、VSMの変更に伴って再起動を必要とするか否かに関わらず、VSMが変更されたことを示す更新通知を行う。
すなわち、クライアント2000からの命令に応じて撮像データを生成するための設定値(VSM)を更新した場合、再起動処理を行うか否かに関わらず、ネットワークを介して通知(VSM変更通知)を行う。VSM変更通知は、クライアント2000に、更新されたVSMを取得させるための通知である。
本実施例における監視カメラ1000のVSM、及びVECの設定を行うクライアント2000の設定画面について、図7を用いて説明する。
領域9103のドロップダウンリストには、本設定画面が開かれたときに実行されるGetVECOptionsによって得られる符号化形式パラメータの選択肢の内容が表示される。本実施例では、領域9103のドロップダウンリストには、設定されているVSMと整合する符号化形式以外の符号化形式も含めた符号化形式の選択肢が表示される。
クライアント2000の通信部2004は、監視カメラ1000の符号化部1004に設定する設定値をタブ9003又はタブ9004のドロップダウンリストを用いて変更したときに、変更した設定値を設定する命令を監視カメラ1000に送信する。変更した設定値を設定する命令は、本実施例では、例えば、SetVideoEncoderConfigurationコマンドである。
クライアント2000の通信部2004は、SetVideoEncoderConfigurationコマンドに応じて、監視カメラ1000が撮像データを生成するための設定(例えば、VSM)を変更した場合、VSM変更通知イベントを受信する。
クライアント2000は、VSM変更通知イベントを受信した場合、GetVideoSourceModeコマンドの送信によって得られるEnableフラグを参照し、更新されて有効になっているVSMを判定し、9001のVSM選択エリアに反映する。このGetVideoSourceModeコマンドは、撮像データを生成するための設定値の取得要求である。
設定画面についてのその他の説明は、実施例1において説明した内容と同じであるため、説明を省略する。
第2の実施例では、監視カメラ1000は、現在のVSMの設定に関わらず、符号化部1004に設定し得るVECの設定内容の全てを選択肢としてクライアント2000に提供する。
現在のVSMに整合しないVECのパラメータがクライアントによって指定された場合は、本実施例の監視カメラ1000はVSMを新たに設定されたVECに整合するVSMに自動的に更新する。
またVECが更新された際、監視カメラ1000は、新たに設定されたVSMが再起動を要するかどうかに関わらず、VSMの内容を再取得するようにクライアントに促す。
このようにして、符号化部1004における画像データの生成に関する設定が変更された場合に、撮像部1003における画像データの生成に関する設定と、符号化部1004における画像データの生成に関する設定とを整合させることができる。
例えば、符号化部1004が生成する画像データの解像度の設定が変更された場合に、撮像部1003が生成する画像データの解像度の設定と、符号化部1004が生成する画像データの解像度の設定とを整合させることができる。例えば、撮像部1003が生成する画像データの縦横比と、符号化部1004が生成する画像データの解像度の縦横比とを一致させることができる。
また本実施例における監視カメラ1000は、VECの変更に伴ってVSMを変更した場合に、新しいVSMの設定に伴って再起動を要する設定がなされているか否かに関わらず、VECの内容を再取得するようにクライアント2000に促す。
これによって、監視カメラ1000とクライアント2000の間で、監視カメラ1000の撮像部1003に対する設定値、及び、符号化部1004に対する設定値が整合するようにすることができる。
(実施例3)
実施例1及び実施例2では、VSMの設定値の再取得をクライアントに促す方法としてVSM変更通知イベントを監視カメラ1000がクライアント2000に送信する方法について説明した。また、実施例1及び実施例2では、VECの設定値の再取得をクライアント2000に促す方法として、VEC変更通知イベントを監視カメラ1000がクライアント2000に送信する方法について説明した。しかし、VSM又はVECの変更の通知方法はこれに限られない。
第3の実施では、監視カメラ1000からクライアント2000に対して、ネットワークからの離脱通知イベント、及び、ネットワーク加入通知イベントを送信して、クライアント2000にVSM又はVECの設定値を再取得するよう促す場合について説明する。本実施例において、監視カメラ1000は、符号化部1004が生成する画像データの設定を更新したことを、監視カメラ1000がネットワークから離脱した後にネットワークに再接続したことを示す再接続通知により更新通知を行う。なお、実施例1又は実施例2において既に説明した内容については説明を省略する。
本実施例にかかる監視カメラシステムの構成、監視カメラ1000の構成、及び、監視カメラ1000が保持するパラメータの構造については、実施例1において図1から図3を用いて説明した内容と同じであるため説明を省略する。
また本実施例では、監視カメラ1000がサポートするVSMと、各VSMに整合するVEC6103の設定可能範囲の内容の例として、実施例1と同様に、図4のテーブルを用いて説明する。
次に、監視カメラ1000とクライアント2000との間でのコマンドシーケンスについて説明する。監視カメラ1000とクライアント2000の間における、設定開始から映像配信までのコマンドシーケンスは、実施例1において図5(a)を用いて説明した内容と同じであるため説明を省略する。
次に、本実施例の監視カメラ1000とクライアント2000の間における、VSMの設定変更から映像配信までのコマンドシーケンスを図10(a)を用いて説明する。図10(a)において、図5(b)と同様の内容については同じ符号を付して説明を省略する。
トランザクション7600は、SetVideoSourceModeコマンドのトランザクションである。SetVideoSourceModeコマンドは、VideoSource6101のVSMを変更するようにクライアント2000が監視カメラ1000に指示するために用いるコマンドである。
処理7601は、トランザクション7600におけるSetVideoSourceModeの切り替えによってVSMとVECとの間に発生した不整合を更新する処理である。
処理7602は、監視カメラ1000の制御部1001が、VSM、及び、VECの変更をネットワーク上のクライアントに通知するために、ネットワーク離脱通知イベント(Bye)、及び、ネットワーク加入通知イベント(Hello)を送信する処理である。ここで、トランザクション7600におけるVSMの切り替えが再起動を要するものである場合、ネットワーク離脱通知イベントとネットワーク加入通知イベントの間に、監視カメラ1000の再起動処理が行われるようにすることができる。
クライアント2000は、ネットワーク加入通知イベント(Hello)を受信すると監視カメラ1000に設定された設定値(VEC)を取得するために、設定値の取得要求を送信する。
すなわち、GetVideoEncoderConfigurationsOptionsを送信する。そして、GetVideoEncoderConfigurationsOptionsコマンドに対してGetVideoEncoderConfigurationsOptionsレスポンスを受信する(処理7204)。
続いてクライアント2000は、GetVideoEncoderConfigurationsコマンドを監視カメラ1000に送信する。そして、GetVideoEncoderConfigurationsコマンドの応答として、更新後のVECを取得する(処理7205)。
図10(b)は、監視カメラ1000とクライアント2000の間において、符号化部1004の出力解像度の変更を行う場合のコマンドシーケンスを示している。図10(b)において、実施例1で図5(d)を用いて説明した内容については同じ符号を付して説明を省略する。
トランザクション7700は、SetVideoEncoderConfigurationコマンドのトランザクションである。トランザクション7700において、クライアント2000は、VECの各パラメータを設定する。
トランザクション7701は、トランザクション7700におけるVECの設定変更によって発生したVSMとVECの不整合を解消するために、VSMを更新する処理である。
処理7702は、監視カメラ1000の制御部1001が、VEC、及び、VSMの変更をネットワーク上のクライアントに通知するべくネットワーク離脱通知イベント、及びネットワーク加入通知イベントを送信する処理である。ここで、トランザクション7701に示すVSMの切り替えが再起動を要するものであった場合、ネットワーク離脱通知イベントとネットワーク加入通知イベントの間に、監視カメラ1000の再起動処理が行われるようにしてもよい。
次に本実施例の監視カメラ1000が行う処理について図11(a)及び(b)を用いて説明する。監視カメラ1000の制御部1001がプロセッサを内蔵する形態では、図11(a)及び(b)の処理フローは、図11に示す手順を制御部1001に実行させるためのプログラムを示す。制御部1001が内蔵するプロセッサはコンピュータであり、監視カメラ1000が内蔵する記憶部1002から読み出したプログラムを実行する。
図11(a)は、監視カメラ1000がGetVSCOptionsコマンドをクライアント2000から受信した場合の処理のフローチャートである。
図11(b)は、監視カメラ1000が前述のSetVideoSourceコマンドをクライアント2000から受信した場合の処理のフローチャートである。図11(b)において図6(a)と同じ処理については同じ符号を付して説明を省略する。
図11(a)のステップS1500において制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、変更後のVSMが、現在設定されているVECと整合するか判定する。何れか一つでも整合しないVECが存在する場合、制御部1001は処理をステップS1007に移し、存在しない場合は、ステップS1502に処理を移す。
ステップS1502において、制御部1001は、ネットワーク離脱通知イベントをクライアント2000に送信する。
ステップS1503において制御部1001は、設定されたVSMのRebootFlagを参照し、再起動を要するVSMに変更されたかどうかを判定する。制御部1001は、再起動要(RebootFlagがTrue)の場合はステップS1701を実行し、再起動不要(RebootFlagがFalse)の場合はステップS1505へ処理を移す。
ステップS1701において制御部1001は、監視カメラ1000の実際の再起動処理を行う。このようにして、制御部1001は、撮像部1003に対し撮像データを所定の設定値で生成させる命令を受信した場合、監視カメラ1000がネットワークから離脱したことを示す離脱通知をクライアント2000に送信した後に再起動処理を行う制御を行う。ここで、本実施例において、撮像データ所定の設定値で生成する命令とは、撮像部1003に対して撮像データを所定の解像度、所定のフレームレート、又は、所定の符号化形式とする命令である。
ステップS1505において制御部1001は、ネットワーク加入通知イベントをクライアント2000に送信する。クライアント2000は、ネットワーク加入通知イベントを受信すると、カメラ1000に設定された設定値を再取得する。この再取得される設定値にはVECが含まれる。
こうして監視カメラ1000は、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定の更新に応じて、クライアント2000に監視カメラ1000の設定値の再取得を促すことができる。すなわち受信した命令に応じて撮像データを生成するための設定値(例えば、VSM)を設定した場合、ネットワークを介して、監視カメラ1000がネットワークに接続したことを示す通知を行う。この通知は再起動処理を行うか否かに関わらず行われる。
図11(b)は、監視カメラ1000が前述のSetVideoEncoderConfigurationコマンドをクライアント2000から受信した場合の処理を示している。
ステップS1201からステップS1203の処理は、実施例1において図6(c)を用いて説明した処理と同様である。
ステップS1400において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、受信したVECに設定されている符号化形式、解像度、及び、最大フレームレートが、現在のVSMに整合するかどうかを判定する。
整合する場合はコマンド処理を終了させる。このように、このようにVECの変更命令を受信した場合であって撮像部1003が生成する画像データに対する設定を更新しない場合、クライアント2000に対して更新通知を行わない。
整合しない場合、制御部1001は処理をステップS1410に移す。ステップS1410において、制御部1001は、記憶部1002に記憶されている図4のテーブルを参照し、入力されたVECに整合するVSMに設定を切り替える。
次にステップS1502において、制御部1001は、VSMの変更をネットワーク上のクライアント2000に通知するために、ネットワーク離脱通知イベントをクライアント2000に送信する。
ステップS1503において制御部1001は、設定されたVSMのRebootFlagを参照し、再起動を要するVSMに変更されたかどうかを判定する。制御部1001は、再起動要(RebootFlagがTrue)の場合はステップS1701を実行し、再起動不要(RebootFlagがFalse)の場合はステップS1505へ処理を移す。
ステップS1701において制御部1001は、監視カメラ1000の実際の再起動処理を行う。このようにして、制御部1001は、符号化部1004に対して画像データを所定の設定値で生成させる命令を受信した場合、監視カメラ1000がネットワークから離脱したことを示す離脱通知をクライアント2000に送信した後に再起動処理を行う制御を行う。ここで、本実施例において、撮像データ所定の設定値で生成する命令とは、撮像部1003に対して撮像データを所定の解像度、所定のフレームレート、又は、所定の符号化形式とする命令である。
ステップS1505において制御部1001は、VECの変更をネットワーク上のクライアント2000に通知するべく、ネットワーク加入通知イベントをクライアント2000に送信する。こうして監視カメラ1000は、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式のうち少なくともいずれかの設定を更新したことを、再起動処理が完了した後にネットワークに再接続したことを示す再接続通知により通知する。
上述のとおり、クライアント2000は、ネットワーク加入通知イベント(Hello)を受信すると監視カメラ1000に設定された設定値(VEC)を取得するために、設定値の取得要求(GetVideoEncoderConfigurationsOptions)を送信する。
図7は、本実施例説明される監視カメラ1000のVSM、及びVECの設定を行うクライアント2000の設定画面を示している。
実施例3では、監視カメラ1000は、クライアント2000によってVSM、或いは、VECの一方が変更された場合、他方を整合する内容に更新する。
このようにして、撮像部1003における画像データの生成に関する設定と、符号化部1004における画像データの生成に関する設定とを整合させることができる。
また更新された際、監視カメラ1000は、新しいVSMへの設定に再起動を要するかどうかに関わらず、ネットワーク離脱、及びネットワーク再加入通知イベントをクライアント2000に送信する。
これによって、監視カメラ1000とクライアント2000の間で、監視カメラ1000の撮像部1003に対する設定値、及び、符号化部1004に対する設定値が整合するようにすることができる。
(その他の実施例)
以上、本発明を実装した監視カメラ、アプリケーションプログラム、及び、クライアントの動作を実施例1から3に示したが、実施例は必ずしも上述の限りでなく、部分的に変更されてもよい。
実施例2の図9(a)では、監視カメラ1000がGetVECOptionsのコマンドを受信すると、監視カメラ1000が取り得る全てのVECの設定値の選択肢をクライアント2000に提供する場合について説明したが、この限りではない。例えば、クライアント2000が監視カメラ1000に接続してから最初にVECの設定値を指定する前と後とでGetVECOptionsのコマンドに対する応答を切り換えてもよい。
すなわち、クライアント2000が監視カメラ1000に接続してから最初にVECの設定値を指定する前にGetVECOptionsのコマンドを受信した場合、監視カメラ1000は、応答としてS1300の処理を行う。一方、一度VECの設定値がクライアント2000から監視カメラ1000に対して設定された後にGetVECOptionsのコマンドを受信した場合、監視カメラ1000は応答として、実施例1の図6(b)の処理を行うこととしてもよい。
すなわち監視カメラ1000は、符号化部1004が生成する画像データの解像度、フレームレート、又は、符号化形式として設定可能な設定値(VEC)の候補の送信要求を受信する。クライアント2000から撮像部1003の設定値(VSM)を設定する命令を受信する前に送信要求を受信した場合には符号化部1004に設定可能な設定値(VEC)の候補を示す情報をクライアント2000に通知する。また、クライアント2000から撮像部1003の設定値(VSM)を設定する命令を受信した後に送信要求を受信した場合は符号化部1004に設定可能な設定値(VEC)の候補のうち受信した命令と整合する設定値を示す情報をクライアント2000に通知する。
このようにすれば、クライアント2000が監視カメラ1000に対して最初に設定を行う場合には、監視カメラ1000の符号化部1004に対して設定可能な全ての設定値のうちから選択してVECを設定することができる。さらに、設定したVECに整合するVSMが監視カメラ1000によって自動的に設定される。そして、一度監視カメラ1000に対してVEC及びVSMが設定された後は、設定されているVSMと整合するVECのうちから、クライアント2000が設定値を選択することができる。このように、実施例1の処理と実施例2の処理を併用することとしてもよい。
また、ステップS1410において、SetVideoEncoderConfigurationコマンドによって符号化部1004に対して設定される解像度に適合するVSMが設定される場合について説明したがこの限りではない。例えば、設定された解像度に適合するVSMが複数存在する場合も考えられる。従って、解像度のみならず、符号化形式、最大フレームレート等、他の複数の符号化部の設定に基づいて、適合するVSMを選択するようにしてもよい。
また、ステップS1301においては、全ての取り得るVECの符号化形式を選択肢として取得しているがこの限りではない。全てのVSMに共通して整合する符号化形式の選択肢のみを取得するようにしてもよい。こうすることで、選択肢の提供範囲が減る一方、ステップS1201において、その時点で選択されているVSMと整合しない符号化形式がSetVideoEncoderConfigurationコマンドによって指定されることを防ぐことができる。
図9(a)のステップS1300からS1302の処理においては、全ての取り得るVECを取得するようになっているがこの限りではない。監視カメラ1000に設定可能なVSM(例えば、図4の例ではS1からS3)に共通して整合する設定値の選択肢を取得するようにしてもよい。こうすることで、選択肢の提供範囲が減る一方、監視カメラ1000に設定されているVSMに不整合なVEC設定がなされることを防ぐことができる。
この場合、最大フレームレート、最大ビットレートについては、監視カメラ1000に設定可能なVSM(例えば、図4の例ではS1からS3)に共通して整合する設定値のうち、最大のフレームレート、最大のビットレートを設定値として提供することができる。
また、監視カメラ1000の再起動処理は、例えば、変更されたVSC及びVECの処理に関連する実行プロセスの再起動、或いは監視カメラ1000のオペレーティングシステムの再起動などであってもよい。
VSM変更通知イベント7402、VEC変更通知イベント7403の両通知について、ネットワーク離脱イベント・加入通知イベント7401に続いて送られる場合について図5(c)や図5(e)を用いて説明したが、この限りではない。VSM変更通知イベント7402、VEC変更通知イベント7403の両通知の後に、ネットワーク離脱イベント・加入通知イベント7401がなされてもよい。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。