以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は、図示された構成に限定されるものではない。
(実施例1)
以下に、図1を参照して本実施例に係るネットワーク構成について説明する。より詳細には、図1は、本実施例に係る監視システムのシステム構成の一例を示す図である。
本実施例における監視システムにおいて、動画像を撮像する監視カメラ1000とクライアント装置2000とクライアント装置2100とは、IPネットワーク網1500を介して(ネットワーク経由で)相互に通信可能な状態で接続される。これにより、監視カメラ1000は、撮像画像をIPネットワーク網1500経由でクライアント装置2000及びクライアント装置2100に配信することができる。
なお、本実施例におけるクライアント装置2000及びクライアント装置2100のそれぞれは、PC等の外部装置の一例である。又、本実施例における監視システムは、撮像システムに相当する。
また、IPネットワーク網1500は、例えばEthernet(登録商標)等の通信規格を満足する複数のルータ、スイッチ、ケーブル等から構成されるものとする。しかしながら、本実施例においては、監視カメラ1000とクライアント装置2000及びクライアント装置2100との間の通信を行うことができるものであれば、その通信規格、規模、構成を問わない。
例えば、IPネットワーク網1500は、インターネットや有線LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)等により構成されていても良い。なお、本実施例における監視カメラ1000は、例えば、PoE(Power Over Ethernet(登録商標))に対応していても良く、LANケーブルを介して電力を供給されても良い。
クライアント装置2000及びクライアント装置2100のそれぞれは、監視カメラ1000に対し、各種コマンドを送信する。これらのコマンドは、例えば、監視カメラ1000の圧縮符号化方式の変更を指示するためのコマンドや、動画や音声などのストリーミング配信を開始させるためのコマンド等である。
一方、監視カメラ1000は、これらのコマンドに対するレスポンスを、クライアント装置2000及びクライアント装置2100に送信する。また、監視カメラ1000は、クライアント装置2000及びクライアント装置2100に対し、動画や音声などのストリーミング配信を開始する。
続いて、図2は、本実施例に係る、監視カメラ1000及びクライアント装置2000及びクライアント装置2100のそれぞれのハードウェア構成の一例を示す図である。ここで、図2(a)は、本実施例に係る、監視カメラ1000のハードウェア構成の一例を示す図である。
図2(a)における制御部1001は、監視カメラ1000の全体の制御を行う。制御部1001は、例えばCPU(Central Processing Unit)により構成され、後述の記憶部1002に記憶されたプログラムを実行する。又は、制御部1001は、ハードウェアを用いて制御を行うこととしても良い。なお、本実施例における制御部1001は、記憶部1002に情報を記憶させる記憶制御機能を備える。
1002は、記憶部である。この記憶部1002は、ハードディスクやフラッシュメモリ等で構成される。また、記憶部1002は、主に制御部1001が実行するプログラム格納領域、各種設定値及びプログラム実行中のワーク領域、後述する撮像部1004で生成される撮像画像の格納領域など、様々なデータの格納領域として使用される。
例えば、記憶部1002は、通信プロトコルを示す通信プロトコル情報と圧縮符号化方式を示す圧縮符号化方式情報とが対応付けられて格納される圧縮符号化方式テーブルを記憶する。また、1003は、配信画像メモリである。配信画像メモリ1003は、後述する圧縮符号化部1006で圧縮符号化された画像データを一時的に保存しておくための記憶領域である。
1004は、撮像部である。撮像部1004は、監視カメラ1000の撮像光学系(不図示)により結像された被写体の像を撮像する。また、撮像部1004は、この撮像により、アナログ信号を生成する。そして、撮像部1004は、生成したアナログ信号をデジタル信号に変換する。次に、撮像部1004は、変換したデジタル信号を撮像画像として、記憶部1002に出力する。
1005は、画像処理部である。画像処理部1005は、画像処理設定の内容に基づき、撮像部1004から出力された撮像画像に対して画像処理を施す。例えば、画像処理部1005は、撮像部1004から出力された撮像画像を反転させる反転処理を施す。
1006は、圧縮符号化部である。この圧縮符号化部1006は、圧縮符号化設定の内容に基づき、画像処理部1005から出力された撮像画像に対し、JPEGやH.264等の圧縮符号化処理を施す。圧縮符号化部1006は、圧縮符号化処理が施された撮像画像を、配信画像メモリ1003に出力する。
1007は、通信部である。通信部1007は、クライアント装置2000及びクライアント装置2100とのデータのやり取りに用いられる。例えば、通信部1007は、クライアント装置2000及びクライアント装置2100からのリクエストコマンドをIPネットワーク網1500経由で受信する。そして、通信部1007は、受信したリクエストコマンドを制御部1001に出力する。
また、通信部1007は、制御部1001の指示を受け、制御部1001から出力されたレスポンスをIPネットワーク網1500経由で、クライアント装置2000及びクライアント装置2100に送信する。このように、通信部1007により、監視カメラ1000は、クライアント装置2000及びクライアント装置2100とネットワーク経由で通信可能となる。
続いて、図2(b)は、本実施例に係る、クライアント装置2000のハードウェア構成の一例を示す図である。なお、クライアント装置2100の各構成要素は、クライアント装置2000の各構成要素と同一なので、その説明を省略する。また、本実施例におけるクライアント装置2000及びクライアント装置2100は、IPネットワーク網1500に接続されるコンピュータ装置として構成される。
制御部2001は、クライアント装置2000の全体の制御を行う。制御部2001は、例えば、CPUにより構成され、記憶部2002に記憶されたプログラムを実行する。又、制御部2001は、ハードウェアを用いて制御を行うこととしてもよい。そして、記憶部2002は、制御部2001が実行するプログラム格納領域、プログラム実行中のワーク領域、データの格納領域として使用される。
表示部2003は、例えば、LCD、有機ELディスプレイ等で構成される。この表示部2003は、クライアント装置2000のユーザに情報を表示するものである。具体的には、表示部2003は、後述の配信画像設定画面を含む様々な設定画面や、監視カメラ1000からストリーミング配信されたライブ映像や、各種メッセージ等を表示する。
入力部2004は、例えば、ボタン、十字キー、タッチパネル、マウス等で構成される。この入力部2004は、ユーザからの指示の入力を受け付ける。
例えば、入力部2004は、ユーザからの指示として、監視カメラ1000に対する各種のコマンドの送信指示の入力を受け付けることができる。又、入力部2004は、制御部2001が記憶部2002に記憶されたプログラムを実行することにより生成されるユーザへの問い合わせメッセージ等に対する、ユーザの応答の入力を受け付けることができる。
そして、入力部2004は、ユーザによる画面操作の内容を、制御部2001に通知する。
復号部2005は、通信部2006から出力された撮像画像に対し、JPEGやH.264等の圧縮符号化形式で復号化処理を施す。そして、復号部2005は、復号化処理が施された撮像画像を記憶部2002に展開する。
通信部2006は、監視カメラ1000からのレスポンスをIPネットワーク網1500経由で受信する。また、通信部2006は、受信したレスポンスを制御部2001に出力する。また、通信部2006は、動画や音声などのストリーミングを監視カメラ1000から受信する。
以上、監視カメラ1000及びクライアント装置2000のそれぞれの内部構成について説明したが、図2に示す処理ブロックは、本発明における撮像装置及び外部装置の好適な実施例を説明したものであり、この限りではない。
例えば、音声入力部、音声出力部を、監視カメラ1000、クライアント装置2000、及びクライアント装置2100に設けるなど、本発明の要旨の範囲内で、種種の変形及び変更が可能である。同様に、撮像部1004をパン方向及びチルト方向に回転させるパンチルト機構を、監視カメラ1000に設けるなど、本発明の要旨の範囲内で、種々の変形及び変更が可能である。
続いて、図3は、ストリーミング配信される撮像画像のパラメータの設定開始から撮像画像がストリーミング配信されるまでの、典型的なコマンドシーケンスを説明するためのシーケンス図である。このコマンドシーケンスは、監視カメラ1000とクライアント装置2000とクライアント装置2100との間で行われるものである。
図3では、まず、クライアント装置2000と監視カメラ1000とが接続され、監視カメラ1000からクライアント装置2000へ撮像画像がストリーミング配信される。次に、クライアント装置2000とは異なるクライアント装置2100と監視カメラ1000とが接続され、監視カメラ1000からクライアント装置2100へ撮像画像がストリーミング配信される。その後、監視カメラ1000は、ストリーミング配信を停止する。
このように、本実施例に係る監視カメラ1000は、同時に複数台のクライアント装置と接続されることがある。
なお、図3では、クライアント装置2000と監視カメラ1000との間の通信(トランザクション3000乃至3008)は、ONVIFで策定されたプロトコルに従うものとする。また、クライアント装置2100と監視カメラ1000との間の通信(トランザクション3009乃至3014)は、GB28181で策定されたプロトコルに従うものとする。
ここで、本実施例では、ONVIFで策定されたプロトコルは、第1のプロトコルに相当するものとする。また、本実施例では、GB28181で策定されたプロトコルは、ONVIFで策定されたプロトコルとは異なる第2のプロトコルに相当するものとする。
また、本実施例におけるトランザクションとは、例えば、クライアント装置2000から監視カメラ1000へ送信されるコマンドと、それに対して監視カメラ1000がクライアント装置2000へ返送するレスポンスのペアのことを指している。
まず、クライアント装置2000と監視カメラ1000との間のコマンドシーケンスについて説明する。
図3における3000は、機器探索のトランザクションである。クライアント装置2000は、ネットワーク上に接続されている監視カメラを探索するために、探索条件を含んだ探索要求コマンドをマルチキャストで送信する。探索要求コマンドを受信した監視カメラのうち、探索条件に合致するものは、探索応答コマンドを探索要求コマンドの送信元に返送する。これにより、監視カメラ1000とクライアント装置2000とが接続される。
3001は、機能取得要求のトランザクションである。クライアント装置2000は、探索応答を返送した監視カメラ1000に対して、この監視カメラ1000のサポートしている機能を取得するべく、機能取得要求コマンドを送信する。ここで、機能取得要求コマンドは、監視カメラ1000がサポートする機能を取得するためのコマンドである。
そして、この機能取得要求コマンドを受信した監視カメラ1000は、機能取得要求レスポンスをクライアント装置2000に返送する。これにより、監視カメラ1000は、自己のサポートする機能の一覧をクライアント装置2000に提供する。
3002は、圧縮符号化部機能取得のトランザクションである。クライアント装置2000は、圧縮符号化部機能取得のコマンドを監視カメラ1000に送信する。一方、このコマンドを受信した監視カメラ1000は、圧縮符号化部1006が提供する機能に関する情報をクライアント装置2000に返送する。
これにより、クライアント装置2000は、監視カメラ1000の圧縮符号化部1006が提供する機能に関する情報を取得することができる。この情報は、例えば、監視カメラ1000から現在ストリーミング配信されている撮像画像の解像度や圧縮符号化方式等を示す情報を含む。
3003は、圧縮符号化設定オプション取得のトランザクションである。クライアント装置2000は、圧縮符号化設定オプション取得のコマンドを監視カメラ1000に送信する。一方、このコマンドを受信した監視カメラ1000は、圧縮符号化設定オプション取得のレスポンスをクライアント装置2000に送信する。
これにより、クライアント装置2000は、圧縮符号化設定の各パラメータに対して、設定可能な選択肢や設定可能な値の範囲を監視カメラ1000から取得することができる。例えば、クライアント装置2000は、(JPEGやH.264などの)圧縮符号化方式の選択肢や、ストリーミング配信される撮像画像の解像度の選択肢などを取得することができる。
なお、本実施例における監視カメラ1000は、クライアント装置が用いる通信プロトコルに応じて、監視カメラ1000のレスポンスの変更を行うものとする。このような動作の詳細は、後述する。
3004は、配信アドレス取得要求のトランザクションである。クライアント装置2000は、配信アドレス取得要求のコマンドを監視カメラ1000に送信する。一方、監視カメラ1000は、撮像画像等をストリーミング配信するためのアドレスを、クライアント装置2000に返送する。
3005は、配信開始要求のトランザクションである。クライアント装置2000は、配信開始要求のコマンドを監視カメラ1000に送信する。一方、このコマンドを受信した監視カメラ1000は、クライアント装置2000に対する動画や音声等のストリーミング配信を、開始する。
なお、3005のトランザクションにおいて、クライアント装置2000は、監視カメラ1000からストリーミングのIDを受信する。また、監視カメラ1000は、クライアント装置2000に送信したストリーミングのIDと配信中のストリーミングを識別する識別情報とを関連付けて記憶部1002に記憶する。
3006は、監視カメラ1000からクライアント装置2000に配信されるストリーミングである。このストリーミングは、3008の配信停止要求のコマンドを監視カメラ1000が受信するまで、或いはネットワークの切断等が発生するまで、継続的に行われる。
3007は、圧縮符号化部設定変更のトランザクションである。クライアント装置2000は、圧縮符号化設定変更のコマンドを監視カメラ1000に送信する。一方、このコマンドを受信した監視カメラ1000は、受信したコマンドに基づき、記憶部1002に記憶されている圧縮符号化設定を更新する。
これにより、クライアント装置2000は、3002のトランザクションで取得した圧縮符号化設定の内容を、3003のトランザクションで取得した選択肢等に基づいて変更することができる。
例えば、クライアント装置2000は、監視カメラ1000からストリーミング配信される撮像画像の圧縮符号化方式や解像度を変更することができる。また、監視カメラ1000は、この変更された圧縮符号化設定の内容を記憶部1002に記憶する。
3008は、配信停止のトランザクションである。クライアント装置2000は、配信停止のコマンドを監視カメラ1000に送信する。ここで、クライアント装置2000は、このコマンドにてストリーミングのIDを指定する。なお、このストリーミングのIDは、3005のトランザクションで取得されたものである。
一方、このコマンドを受信した監視カメラ1000は、このコマンドで指定されたストリーミングIDに関連付けられた識別情報を記憶部1002から読み出し、読み出した識別情報で識別されるストリーミングを停止させる。これにより、クライアント装置2000は、監視カメラ1000が配信中のストリーミングを停止させることができる。
次に、クライアント装置2100と監視カメラ1000との間のコマンドシーケンスについて説明する。ここで、3009乃至3011のメッセージは、INVITEセッションを確立するためのプロセスである。
3009は、クライアント装置2100から監視カメラ1000へ送信されるINVITEメッセージである。このメッセージには、メッセージを受信する監視カメラ1000を識別するための機器識別コードや、クライアント装置2100を識別するための識別コードなどが含まれる。
3010は、クライアント装置2100から監視カメラ1000へ送信されるOKレスポンスである。このメッセージには、監視カメラ1000が提供するメディアフォーマットの情報等が含まれている。このメディアフォーマットは、監視カメラ1000からストリーミング配信される撮像画像の圧縮符号化形式や解像度の情報が含まれている。
3011は、クライアント装置2100から監視カメラ1000へ送信されるACKメッセージである。このメッセージには、メディアフォーマットの指定情報等が含まれている。このメッセージの送信で、INVITEセッション確立プロセスが完了する。
3012は、監視カメラ1000からクライアント装置2100に配信されるストリーミングである。このストリーミングは、3013のBYEのコマンドを監視カメラ1000が受信するまでや、ネットワークの切断等が発生するまで、継続的に行われる。
3013は、クライアント装置2100から監視カメラ1000へ送信されるBYEメッセージである。このメッセージは、監視カメラ1000とクライアント装置2000との間で確立されたINVITEセッションを切断するためのものである。
3014は、監視カメラ1000からクライアント装置2100へ送信されるOKメッセージである。このメッセージを送信した監視カメラ1000は、クライアント装置2100とのセッションを切断する。
続いて、図4は、本実施例に係る監視カメラ1000における、圧縮符号化方式リスト返送処理を説明するためのフローチャートである。この圧縮符号化方式リスト返送処理は、監視カメラ1000が対応している圧縮符号化方式を示すリストを、監視カメラ1000からクライアント装置2000及びクライアント装置2100に送信する処理である。なお、この処理は、制御部1001により実行される。
ここで、制御部1001は、ONVIF規格に従った通信では、3003の圧縮符号化設定オプション取得のコマンドを通信部1007経由で受信した場合に、図4に示す処理を開始する。また、制御部1001は、GB28181の規格に従った通信では、3010のOKメッセージを通信部1007経由で送信する場合に、図4に示す処理を開始する。
なお、本実施例では、3003の圧縮符号化設定オプション取得のコマンド及び3010のOKメッセージは、符号化形式情報に関するコマンドに相当する。
また、本実施例では、監視カメラ1000は、圧縮符号化方式として「JPEG」、「H.264」、「MPEG−4」、「SVAC(Surveillance Video and Audio Coding)」に対応しているものとする。ここで、SVACとは、GB/T 25724に定められている音声、映像圧縮符号化の方式である。
図4におけるステップS4001では、制御部1001は、監視カメラ1000にコマンドを送信したクライアント装置が用いている通信プロトコルを判定するための通信プロトコル判定処理を実行する。ここで、通信プロトコルを判定するのは、プロトコルによってサポートしている圧縮符号化方式が異なるので、判定された通信プロトコルがサポートしていない圧縮符号化方式の選択肢をユーザに提示させないようにするためである。
なお、この通信プロトコル判定処理については、図5のフローチャートを用いて後述する。
ステップS4002では、制御部1001は、記憶部1002が記憶する圧縮符号化方式テーブルから、ステップS4001で判定された通信プロトコルに対応する全ての圧縮符号化方式情報を読み出す。
ここで、本実施例における圧縮符号化方式テーブルは、通信プロトコル情報としての「ONVIF」と、圧縮符号化方式情報としての「JPEG」及び「H.264」と、を対応付けて記憶するものとする。さらに、本実施例における圧縮符号化方式テーブルは、通信プロトコル情報としての「GB28181」と、圧縮符号化方式情報としての「MPEG−4」、「H.264」及び「SVAC」と、を対応付けて記憶するものとする。
例えば、制御部1001は、ステップS4001で判定された通信プロトコルが「ONVIF」である場合には、「JPEG」及び「H.264」を示す圧縮符号化方式情報を、記憶部1002から読み出す。また、制御部1001は、ステップS4001で判定された通信プロトコルが「GB28181」である場合には、「MPEG−4」、「H.264」、及び「SVAC」を示す圧縮符号化方式情報を、記憶部1002から読み出す。
なお、本実施例では、「JPEG」及び「H.264」を示す圧縮符号化形式情報は、第1の符号化形式情報に相当するものとする。また、本実施例では、「MPEG−4」、「H.264」及び「SVAC」を示す圧縮符号化形式情報は、第1の符号化形式情報とは異なる第2の符号化形式情報に相当するものとする。
ステップS4003では、制御部1001は、通信部1007に指示し、ステップS4002で読み出した圧縮符号化方式情報を、圧縮符号化方式を示すリストとして、クライアント装置2000又はクライアント装置2100に送信する。
具体的には、制御部1001は、通信部1007に指示し、ステップS4001で判定された通信プロトコルが「ONVIF」である場合には、ステップS4002で読み出した圧縮符号化方式情報に対応するリストを、クライアント装置2000に送信する。
一方、制御部1001は、通信部1007に指示し、ステップS4001で判定された通信プロトコルが「GB28181」である場合には、ステップS4002で読み出した圧縮符号化方式情報に対応するリストを、クライアント装置2100に送信する。
このような圧縮符号化方式リスト返送処理を行うことにより、通信プロトコルに応じて適切な圧縮符号化方式のリストをクライアント装置に提示することができる。
続いて、図5は、本実施例に係る監視カメラ1000における、通信プロトコル判定処理を説明するためのフローチャートである。なお、この処理は、制御部1001により実行される。
図5におけるステップS5001では、制御部1001は、通信部1007で受信されたコマンドまたはメッセージから、リクエストラインを取得する。
以下、このリクエストラインについて説明する。監視カメラ1000を制御するための制御コマンドは、ONVIF規格の場合には、HTTP(HyperText Transfer Protocol)に従ってやり取りされる。一方、この制御コマンドは、GB28181規格の場合には、SIP(Session Initiation Protocol)に従ってやり取りされる。
ここで、HTTPプロトコルやSIPプロトコルは、メッセージのやり取りをテキスト形式で行っている。そして、リクエストラインとは、このテキスト形式のメッセージの1行目のことである。なお、リクエストラインは、スタートラインとも言われている。
例えば、クライアント装置2000又はクライアント装置2100は、監視カメラ1000に対してリクエストメッセージを送信する。一方、このリクエストメッセージを受信した監視カメラ1000は、受信したリクエストメッセージの1行目を取得する。
ステップS5002では、制御部1001は、ステップS5001で取得されたリクエストラインのプロトコルバージョン情報を判定する。
ここで、リクエストラインは、メソッド、リクエストURI(Uniform Resource Identifier)、及びプロトコルバージョン情報の3つからなっている。そして、3つ目のプロトコルバージョン情報は、例えば、HTTPの場合は「HTTP/1.1」、SIPの場合は、「SIP/2.0」などと記述されている。
そして、制御部1001は、ステップS5001で取得されたリクエストラインのプロトコルバージョン情報が「HTTP/x.x」(xは任意)である場合には、ステップS5003に処理を進める。また、制御部1001は、ステップS5001で取得されたリクエストラインのプロトコルバージョン情報が「SIP/x.x」(xは任意)である場合には、ステップS5004に処理を進める。
さらに、制御部1001は、ステップS5001で取得されたリクエストラインのプロトコルバージョン情報が「HTTP/x.x」ではなく、且つこの情報が「SIP/x.x」ではない場合には、ステップS5005に処理を進める。
ステップS5003では、制御部1001は、監視カメラ1000にコマンドを送信したクライアント装置が用いている通信プロトコルは、ONVIFに従った通信プロトコルであると判定する。
ステップS5004では、制御部1001は、監視カメラ1000にコマンドを送信したクライアント装置が用いている通信プロトコルは、GB28181に従った通信プロトコルであると判定する。
ステップS5005では、制御部1001は、クライアント装置が用いている通信プロトコルは、「その他の通信プロトコル」であると判定する。ここで、「その他のプロトコル」とは、ONVIFに従った通信プロトコルとは異なる通信プロトコルであり、且つGB28181に従った通信プロトコルとは異なる通信プロトコルである。
続いて、図6は、本実施例に係る、監視カメラ1000との通信をONVIFプロトコルに従って行うクライアント装置2000における、図7(a)で示す配信画像設定画面を表示するための配信画像設定画面処理を説明するためのフローチャートである。
ここで、この配信画像設定画面は、監視カメラ1000がクライアント装置2000へストリーミング配信する撮像画像の設定を変更するために用いられる画面である。なお、図6に示す処理は、クライアント装置2000の制御部2001により実行されるものとする。
図6におけるステップS6000では、制御部2001は、配信画像設定ウインドウ7000を表示部2003に表示させる。
ステップS6001では、制御部2001は、通信部2006に指示し、3000乃至3003のトランザクションを実施することにより、監視カメラ1000がストリーミング配信する撮像画像に関する配信画像情報を、監視カメラ1000から取得する。
例えば、この配信画像情報は、監視カメラ1000が対応する圧縮符号化方式のリスト、監視カメラ1000がストリーミング配信する撮像画像の解像度のデフォルト値、この解像度であって監視カメラ1000に現在設定されている解像度等を含む。
そして、制御部2001は、表示部2003に指示し、取得した圧縮符号化方式のリストに基づき、図7(a)の設定エリア7002において、圧縮符号化方式を選択するためのラジオボタン7003を表示させる。なお、このラジオボタン7003の2つの選択肢は、圧縮符号化方式として「JPEG」を選択するための選択肢と、圧縮符号化方式として「H.264」を選択するための選択肢と、から構成される。
また、制御部2001は、表示部2003に指示し、取得した解像度のデフォルト値を、設定エリア7002におけるResolutionドロップダウンリスト7004に表示させる。本実施例におけるResolutionドロップダウンリスト7004には、「320×240」が表示される。なお、本実施例におけるResolutionドロップダウンリスト7004は、プルダウンメニューに相当するものである。
さらに、制御部2001は、表示部2003に指示し、設定エリア7002に設定ボタン7005を表示させ、且つ、配信画像設定ウインドウ7000に閉じるボタン7006を表示させる。
ここで、設定ボタン7005は、ユーザにより配信画像設定ウインドウ7000で設定された配信画像設定情報を、監視カメラ1000に設定するためのボタンである。また、閉じるボタン7006は、監視カメラ1000に対して、撮像画像のストリーミング配信の停止を指示するためのボタンである。
ステップS6002では、制御部2001は、通信部2006に指示し、3004及び3005のトランザクションを実施することにより、監視カメラ1000からストリーミング配信された撮像画像を受信する。そして、制御部2001は、表示部2003に指示し、受信した撮像画像に対応する画像を、LiveViewエリア7001に表示させる。
ステップS6003では、制御部2001は、入力部2004からのユーザによる画面の操作通知、及び監視カメラ1000からのイベント通知を待つ。そして、制御部2001は、ユーザによりResolutionドロップダウンリスト7004が押下されたと判定した場合には、ステップS6004に処理を進める。
一方、制御部2001は、ユーザにより設定ボタン7005が押下されたと判定した場合には、ステップS6005に処理を進める。さらに、制御部2001は、ユーザにより閉じるボタン7006が押下されたと判定した場合には、ステップS6006に処理を進める。
ステップS6004では、制御部2001は、表示部2003に指示し、ステップS6001で取得された解像度のリストを、Resolutionドロップダウンリスト7004の選択肢として表示させる。
ステップS6005では、制御部2001は、通信部2006に指示し、図3で示した3007のコマンドを監視カメラ1000に送信させる。この3007のコマンドは、設定エリア7002で設定された内容に対応するものである。
例えば、ラジオボタン7003においてJPEGの選択肢が選択されている場合に、設定エリア7002で設定された内容に対応する3007のコマンドがクライアント装置2000から監視カメラ1000に送信されたものとする。
この送信の結果、監視カメラ1000からストリーミング配信される撮像画像の圧縮符号化形式は、「JPEG」となる。
より詳細には、記憶部1002が記憶する圧縮符号化設定に含まれる圧縮符号化形式は、「JPEG」に更新される。これにより、圧縮符号化部1006は、画像処理部1005から出力された撮像画像を、「JPEG」の圧縮符号化処理を施す。通信部1007は、この圧縮符号化処理が施された撮像画像をストリーミング配信する。
ステップS6006では、制御部2001は、表示部2003に指示し、図7で示した画面を閉じ、この画面の表示を終了する。さらに、制御部2001は、通信部2006に指示し、図3で示した3008のトランザクションを実行することにより、監視カメラ1000による撮像画像のストリーミング配信を停止させる。
続いて、やはり図6を用い、監視カメラ1000との通信をGB28181プロトコルに従って行うクライアント装置2100における、図7(b)で示す配信画像設定画面を表示するための配信画像設定画面処理を説明する。
ここで、図7(b)で示す配信画像設定画面は、監視カメラ1000がクライアント装置2100へストリーミング配信する撮像画像の設定を変更するために用いられる画面である。なお、図6に示す処理は、クライアント装置2100の制御部2001により実行されるものとする。なお、以下、上述したクライアント装置2000の配信画像設定画面処理と重複する部分の説明は省略し、異なる部分について説明する。
ステップS6001では、制御部2001は、通信部2006に指示し、3009及び3010のメッセージのやり取りを実施することにより、監視カメラ1000がストリーミング配信する撮像画像に関する配信画像情報を、監視カメラ1000から取得する。
そして、制御部2001は、表示部2003に指示し、取得した圧縮符号化方式のリストに基づき、図7(b)の設定エリア7002において、圧縮符号化方式を選択するためのラジオボタン7003を表示させる。このラジオボタン7003の3つの選択肢は、圧縮符号化方式として「H.264」を選択するための選択肢と、圧縮符号化方式として「MPEG―4」を選択するための選択肢と、圧縮符号化方式として「SVAC」を選択するための選択肢と、から構成される。
また、制御部2001は、表示部2003に指示し、取得した解像度のデフォルト値を、設定エリア7002におけるResolutionドロップダウンリスト7004に表示させる。本実施例におけるResolutionドロップダウンリスト7004には、「352×288」が表示される。
ステップS6002では、制御部2001は、通信部2006に指示し、3011のメッセージを監視カメラ1000に送信することにより、監視カメラ1000からストリーミング配信された撮像画像を受信する。そして、制御部2001は、表示部2003に指示し、受信した撮像画像に対応する画像を、LiveViewエリア7001に表示させる。
ステップS6006では、制御部2001は、通信部2006に指示し、図3で示した3013及び3014のメッセージのやり取りを実行することにより、監視カメラ1000による撮像画像のストリーミング配信を停止させる。
以上のように、本実施例における監視カメラ1000は、クライアント装置からのコマンド等のリクエストラインに含まれるプロトコルバージョン情報に基づき、このクライアント装置との通信で用いられている通信プロトコルを判定する。さらに、監視カメラ1000は、判定した通信プロトコルに応じた適切な圧縮符号化形式のリストを、このクライアント装置に送信する。
これにより、クライアント装置を用いるユーザに対し、このクライアント装置による通信で用いられる通信プロトコルが対応していない圧縮符号化形式が呈示されてしまうことを防止することができる。
この結果、この通信プロトコルが対応していない圧縮符号化形式をこのユーザが選択することにより、監視カメラ1000がこの圧縮符号化形式で圧縮符号化された撮像画像をこのクライアント装置に配信してしまうことを防止することができる。
よって、このクライアント装置が、この通信プロトコルが対応していない圧縮符号化形式で圧縮符号化された撮像画像を受信することにより、この受信した撮像画像を表示部に表示できなくなってしまうことを防止することができる。
なお、本実施例では、ステップS5002にて、ステップS5001で取得されたリクエストラインのプロトコルバージョン情報に基づき、クライアント装置との通信で用いられる通信プロトコルを判定するよう、制御部1001を構成した。しかしながら、これに限られるものではない。
例えば、ステップS5002にて、ステップS5001で取得されたリクエストラインに記述されているURIに基づき、クライアント装置との通信で用いられる通信プロトコルを判定するよう、制御部1001を構成しても良い。
ここで、このリクエストラインに記述されているURI(以下、リクエストURIと称することがある)とは、リクエストを適用するリソースを指定するものである。クライアント装置は、監視カメラ1000に対して、URIを指定してコマンドの送信を行い、監視カメラ1000は、この送信されたコマンドからリクエストURIを取得する。
例えば、ONVIFで策定されたプロトコルで通信を行う場合、クライアント装置2000が監視カメラ1000に最初に送るリクエストURIは“http://IPAddress/onvif/device_service”と規格で定められている。
それ以降は、監視カメラ1000が最初のコマンドのレスポンスとして、次回からのリクエストURI先を通知する。クライアント装置2000は、監視カメラ1000から受信したURIへリクエストを送ることで、監視カメラ1000とONVIFで策定されたプロトコルで通信を行う。
例えば、監視カメラ1000は、ONVIFで策定された通信プロトコルで使用されるリクエストURIのリストを、記憶部1002に予め記憶させておく。これにより、監視カメラ1000は、クライアント装置から受信したコマンドから取得したURIに基づいて、クライアント装置との通信が、ONVIFで策定された通信プロトコルで定められた通信であるのか、それ以外の通信であるのかを判定することができる。
また、GB28181で策定された通信プロトコルで通信を行う場合には、この通信ではSIPプロトコルが用いられるので、クライアント装置2100から受信したリクエストURIには、sipが含まれる。例えば“sip:username@domain”というようになる。したがって、監視カメラ1000は、クライアント装置から受信したコマンドのリクエストURIに“sip”が含まれていた場合、GB28181と判定することができる。
つまり、ステップS5002にて、クライアント装置から受信されたコマンドに含まれるリクエストURIが次のようなリクエストURIである場合には、このクライアント装置との通信がONVIFの通信であると判定するよう、制御部1001を構成しても良い。即ち、“http://IPAddress/onvif/device_service”というリクエストURIである。
さらに、ステップS5002にて、クライアント装置から受信されたコマンドに含まれるリクエストURIが次のようなsipを含む場合には、このクライアント装置との通信がGB28181の通信であると判定するよう、制御部1001を構成しても良い。即ち、“sip:username@domain”というsipである。
また、ステップS5002にて、ステップS5001で取得されたリクエストラインに記述されているメソッドに基づき、クライアント装置との通信で用いられる通信プロトコルを判定するよう、制御部1001を構成しても良い。
ここで、メソッドとは、リクエストURIのリソースに対して、どのように振舞って欲しいかを働きかけるためのものである。例えば、HTTPプロトコルでは、「GET」や「PUT」などが用いられ、SIPプロトコルでは「INVITE」や「BYE」などが用いられる。
つまり、ステップS5002にて、ステップS5001で取得されたリクエストラインに記述されたメソッドが「GET」又は「PUT」である場合には、クライアント装置との通信がONVIFの通信であると判定するよう、制御部1001を構成しても良い。
又、ステップS5002にて、ステップS5001で取得されたリクエストラインに記述されたメソッドが「INVITE」や「BYE」である場合には、クライアント装置との通信がGB28181の通信であると判定するよう、制御部1001を構成しても良い。
さらに、ステップS5002にて、ステップS5001で取得されたリクエストラインに記述されたリクエストURI及びメソッドの両方に基づき、クライアント装置との通信で用いられる通信プロトコルを判定するよう、制御部1001を構成しても良い。
また、本実施例では、ステップS4002にて、ステップS4001で判定された通信プロトコルに対応する全ての圧縮符号化形式情報を記憶部1002から読み出すよう、制御部1001を構成したが、これに限られるものではない。
例えば、ステップS4002にて、ステップS4001で判定された通信プロトコルに対応する全ての圧縮符号化形式情報及び解像度の情報を記憶部1002から読み出すよう、制御部1001を構成しても良い。
例えば、制御部1001は、ステップS4001で通信プロトコルが「ONVIF」であると判定した場合には、「JPEG」及び「H.264」を示す圧縮符号化形式情報と共に「320×240」を示す解像度情報を記憶部1002から読み出す。
制御部1001は、ステップS4001で通信プロトコルが「GB28181」であると判定した場合には、「H.264」、「MPEG−4」及び「SVAC」を示す圧縮符号化形式情報と共に「352×288」を示す解像度情報を記憶部1002から読み出す。
このように構成した場合、ステップS4003にて、通信部1007に指示し、ステップS4002で読み出された圧縮符号化形式情報と共に、ステップS4002で読み出された解像度情報を、クライアント装置に送信するよう、制御部1001を構成しても良い。
また、本実施例では、解像度「320×240」を示す解像度情報は、第1の解像度情報に相当する。そして、本実施例では、解像度「352×288」を示す解像度情報は、第1の解像度情報とは異なる第2の解像度情報に相当する。なお、この解像度「352×288」は、ONVIFで策定されたプロトコルでは用いられず、GB28181で策定されたプロトコルで用いられる解像度である。
また、本実施例では、GB28181の規格に従った通信では、3010のOKメッセージを通信部1007経由で送信する際に、図4に示す処理を開始するよう、制御部1001を構成したが、これに限られるものではない。例えば、GB28181の規格に従った通信では、3009のINVITEメッセージを通信部1007経由で受信した場合に、図4に示す処理を開始するよう、制御部1001を構成しても良い。
(実施例2)
続いて、図8を用いて、本発明の実施例2における監視カメラ1000について説明する。なお、上述の実施例と同一の構成要素には同一の符号を付し、その説明を省略することがある。
ここで、実施例1では、クライアント装置から送信されたコマンドのリクエストラインに基づき、このクライアント装置との通信で用いられている通信プロトコルを判定した。これに対し、実施例2では、クライアント装置から送信されたコマンドが対応するポート番号に基づき、このクライアント装置との通信で用いられている通信プロトコルを判定する。
続いて、図8は、本実施例に係る監視カメラ1000における、通信プロトコル判定処理を説明するためのフローチャートである。なお、このフローチャートは、本実施例に係る、ステップS4001の通信プロトコル判定処理を詳細に説明するためのものである。また、この処理は、制御部1001により実行される。
ステップS8001では、制御部1001は、クライアント装置からのコマンドを受け付けたポート番号を取得する。ここで、ポート番号とは、通信を行う際に、通信先のプログラムを特定するための番号のことである。
ステップS8002では、制御部1001は、ステップS8001で取得されたポート番号を判定する。具体的には、まず、制御部1001は、ステップS8001で取得されたポート番号に対応する通信プロトコル情報を記憶部1002から読み出す。
ここで、記憶部1002は、ポート番号と通信プロトコル情報とを対応付けて記憶しているものとする。例えば、記憶部1002は、ポート番号としての「80番」と通信プロトコル情報としての「ONVIF」とを対応付けて記憶しているものとする。更に、記憶部1002は、ポート番号としての「5060番」と通信プロトコル情報としての「GB28181」とを対応付けて記憶しているものとする。
例えば、制御部1001は、ステップS8001で取得されたポート番号に対応付けられた通信プロトコル情報を記憶部1002から読み出す。そして、制御部1001は、読み出した通信プロトコル情報が「ONVIF」である場合には、ステップS8001で取得されたポート番号に対応する通信プロトコルがONVIFであると判定し、ステップS5003に処理を進める。
また、制御部1001は、読み出した通信プロトコル情報が「GB28181」である場合には、ステップS8001で取得されたポート番号に対応する通信プロトコルがGB28181であると判定し、ステップS5004に処理を進める。
さらに、制御部1001は、ステップS8001で取得されたポート番号に対応付けられた通信プロトコル情報が記憶部1002に存在せず、この情報を記憶部1002から読み出せない場合もある。この場合には、制御部1001は、ステップS8001で取得されたポート番号に対応する通信プロトコル情報が「ONVIF」ではなく且つ「GB28181」でもないと判定し、ステップS5005に処理を進める。
以上のように、本実施例における監視カメラ1000は、クライアント装置からのコマンドを受け付けたポート番号に基づき、このクライアント装置との通信で用いられている通信プロトコルを判定する。さらに、監視カメラ1000は、判定した通信プロトコルに応じた適切な圧縮符号化形式のリストを、このクライアント装置に送信する。
これにより、クライアント装置を用いるユーザに対し、このクライアント装置による通信で用いられる通信プロトコルが対応していない圧縮符号化形式が呈示されてしまうことを防止することができる。
この結果、この通信プロトコルが対応していない圧縮符号化形式をこのユーザが選択することにより、監視カメラ1000がこの圧縮符号化形式で圧縮符号化された撮像画像をこのクライアント装置に配信してしまうことを防止することができる。
よって、このクライアント装置が、この通信プロトコルが対応していない圧縮符号化形式で圧縮符号化された撮像画像を受信することにより、この受信した撮像画像を表示部に表示できなくなってしまうことを防止することができる。
なお、本実施例では、ポート番号「80番」と通信プロトコル情報としての「ONVIF」とを対応付けて記憶し、且つポート番号「5060番」と通信プロトコル情報としての「GB28181」とを対応付けて記憶するよう、記憶部1002を構成した。しかしながら、これに限られるものではない。
例えば、ONVIFで策定されたプロトコルに従ったコマンドのデフォルトのポート番号は、80番であり、GB28181で策定されたプロトコルに従ったコマンドのデフォルトのポート番号は、5060番である。
ところが、ONVIFで策定されたプロトコルに従ったコマンドのポート番号がデフォルトのポート番号から変更されてしまう場合も想定される。このような場合には、この変更されたポート番号と通信プロトコル情報としての「ONVIF」とを対応付けて記憶するよう、記憶部1002を構成しても良い。
同様に、GB28181で策定されたプロトコルに従ったコマンドのポート番号もデフォルトのポート番号から変更されてしまう場合も想定される。このような場合には、この変更されたポート番号と通信プロトコル情報としての「GB28181」とを対応付けて記憶するよう、記憶部1002を構成しても良い。
なお、上述の実施例では、異なる圧縮符号化方式(「H.264」、「SVAC」、「MPEG−4」)に共通の解像度テーブルを保持するように監視カメラ1000を構成しているが、これに限られるものではない。例えば、異なる圧縮符号化方式毎に専用の解像度テーブルを保持するように監視カメラ1000を構成してもよい。このように構成した場合、これらの解像度テーブルを、現在の圧縮符号化設定に応じて、適切に区別するように監視カメラ1000を構成してもよい。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。