以下に、本発明をその好適な実施例に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は、図示された構成に限定されるものではない。また、以下の実施例におけるコマンドは、例えばOpen Network Video Interface Forum(以下ONVIFと称する場合がある)規格に基づいて定められているものとする。
さらに、後述するVideoEncoderConfiguration2などのデータを定義するためには、ONVIF規格で用いられる、XML Schema Difinition言語(以下、XSDと称することがある)を用いるものとする。
(実施例1)
図1は、本実施例における、送信装置に相当する監視カメラ1000を含む撮像システムのシステム構成図である。2000及び2010は、本実施例における、受信装置に相当するクライアント装置である。監視カメラ1000とクライアント装置2000及び2010とは、IPネットワーク網1500を介して(ネットワーク経由で)相互に通信可能な状態に接続されている。
なお、本実施例における撮像システムは、送受信システムの一例である。また、本実施例における監視カメラ1000は、動画像を撮像する撮像装置であり、より詳細には、監視に用いられるネットワークカメラであるものとする。
また、IPネットワーク網1500は、例えばEthernet(登録商標)等の通信規格を満足する複数のルータ、スイッチ、ケーブル等から構成されるものとする。しかしながら、本実施例においては、監視カメラ1000とクライアント装置2000及び2010との間の通信を行うことができるものであれば、その通信規格、規模、構成を問わない。
例えば、IPネットワーク網1500は、インターネットや有線LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)等により構成されていても良い。なお、本実施例における監視カメラ1000は、例えば、PoE(Power Over Ethernet(登録商標))に対応していても良く、LANケーブルを介して電力を供給されても良い。
クライアント装置2000及び2010は、監視カメラ1000に対して、後述する撮像パラメータ変更や雲台駆動、映像ストリーミング開始等の各種コマンドを送信する。監視カメラ1000は、それらのコマンドに対するレスポンスや映像ストリーミングをクライアント装置2000及び2010に送信する。
なお、図1では、監視カメラ1000が1台、クライアント装置2000及び2010が2台、IPネットワーク網1500に接続されている例を示したが、これに限られるものではない。例えば、監視カメラは2台以上であってもよく、クライアント装置も3台以上であってもよい。
続いて、図2は、本実施例における、監視カメラ1000の内部構成を示すブロック図である。図2において、1001は、制御部であり、監視カメラ1000の全体の制御を行う。制御部1001は、例えばCPU(Central Processing Unit)で構成される。
1002は、記憶部である。記憶部1002は、主に制御部1001が実行するプログラム格納領域、プログラム実行中のワーク領域、後述する撮像部1003が生成する撮像画像の格納領域等、様々なデータの格納領域として使用される。
1003は、撮像部である。撮像部1003は、監視カメラ1000の撮像光学系により結像された被写体の像を撮像して取得したアナログ信号をデジタルデータに変換し、撮像画像として記憶部1002に出力する。1004は、圧縮符号化部である。なお、本実施例における撮像部1003は、CCDやCMOSなどの撮像センサ(撮像素子)を含む。
圧縮符号化部1004は、撮像部1003が出力した撮像画像に対して、クライアント装置2000又は2010から指定される符号化方式に基づいて圧縮符号化処理を行うことにより、画像データを生成し、生成した画像データを記憶部1002に出力する。このとき、圧縮符号化部1004は、制御部1001に対してVIDEO送信トリガを発生させ、配信可能な画像データが記憶部1002に出力されたことを通知する。
ここで、本実施例における監視カメラ1000の圧縮符号化部1004には、JPEG、H.264、及びH.265の3種類の符号化方式が実装されているものとする。従って、本実施例における監視カメラ1000は、JPEG,H.264と言った既存の符号化方式設定に対応するSetVideoEncoderConfigurationコマンド(以下、SetVECコマンドと称することがある)に対応する。
なお、SetVECコマンドは、第1の符号化方式設定コマンドに相当する。
さらに、本実施例における監視カメラ1000は、JPEG,MPEG,H.264以外のH.265や、などの符号化方式にも対応するSetVideoEncoderConf iguration2コマンドにも対応している。ここで、以下、SetVideoEncoderConfiguration2コマンドをSetVEC2コマンドと称することがある。
また、このSetVEC2コマンドは、JPEG,MPEG,H.264,H.264ProgressiveHighProfile(以下、H.264PHPと称することがある)にも対応するものとする。なお、SetVEC2コマンドは、第2の符号化方式設定コマンドに相当する。
また、監視カメラ1000は、GetVideoEncoderConfigurationコマンド(以下、GetVECと称することがある)に対応している。さらに、監視カメラ1000は、GetVideoEncoderConfiguration2(以下、GetVEC2と称することがある)コマンドにも対応している。
また、監視カメラ1000は、GetVideoEncoderConfigurationsコマンド(以下、GetVECsと称することがある)に対応している。さらに、監視カメラ1000は、GetVideoEncoderConfigurations2(以下、GetVECs2と称することがある)コマンドにも対応している。
また、監視カメラ1000は、GetCompatibleVideoEncoderConfigurationsコマンド(以下、GetCVECsと称することがある)に対応している。さらに、監視カメラ1000は、GetCompatibleVideoEncoderConfigurations2(以下、GetCVECs2と称することがある)コマンドにも対応している。
また、監視カメラ1000は、GetVideoEncoderConfigurationOptionsコマンド(以下、GetVECOsと称することがある)に対応している。さらに、監視カメラ1000は、GetVideoEncoderConfigurationOptions2(以下、GetVECOs2と称することがある)コマンドにも対応している。
ここで、JPEG,MPEG−4、やH.264といった符号化方式を含む設定情報(符号化方式情報)であるVideoEncoderConfigurationを便宜的に、以下、VEC1と称することがある。また、既存の符号化方式以外の、H.264ProgressiveHighProfile、H.265などの新規な符号化方式の情報を含むことができる設定情報を便宜的に、以下、VEC2と称することがある。
なお、VEC2には、SetVEC2コマンドで設定したJPEG,MPEG−4,H.264も含むことができる。また、以下、VECとは、VEC1、及びVEC2の総称を指すものとする。また、VEC1、及びVEC2のToken(つまり、VECのConfigurationToken)を、vec0,vec1というように小文字で示すものとする。
1005は、通信部である。通信部1005は、各制御コマンドを外部機器から受信する場合、また各制御コマンドに対するレスポンスや画像データを含むストリームをこの外部機器へ送信する場合に使用される。なお、本実施例における、クライアント装置2000及び2010は、外部機器の一例である。また、本実施例における通信部1005は、圧縮符号化部1004から出力された画像データを配信する配信部に相当する。
1006は、撮像制御部である。撮像制御部1006は、制御部1001が入力するパン角度、チルト角度、ズーム倍率の値に従って、チルト機構、パン機構、及びズーム機構を制御するために使用される。又、撮像制御部1006は、定期的に、現在のパン角度値、チルト角度値、ズーム倍率値をPTZ Position情報として、PTZPosition送信フラグをセットすることにより、制御部1001に提供する。
また、撮像制御部1006は、現在のパン、チルト、及びズーム機構(不図示)の稼働状況をPTZ Status情報として、PTZStatus送信フラグをセットすることにより、制御部1001に提供する。
なお、本実施例において、圧縮符号化部1004及び撮像制御部1006のそれぞれは、例えば、サブCPUで構成される。又、本実施例において、パン機構、チルト機構、及びズーム機構のそれぞれは、ステッピングモータやギヤ等を含むものとする。又、パン機構、チルト機構、及びズーム機構のそれぞれは、撮像部1003の位置を変更する変更部の一例である。
続いて、図3は、本実施例における、クライアント装置2000の内部構成を示すブロック図である。図3において、2001は、制御部である。制御部2001は、例えばCPUで構成され、クライアント装置2000の全体の制御を行う。2002は、記憶部である。記憶部2002は、主に制御部2001が実行するプログラム格納領域、プログラム実行中のワーク領域等、様々なデータの格納領域として使用される。
2003は、表示部である。表示部2003は、例えばLCD、有機ELディスプレイなどで構成され、クライアント装置2000の使用者に対して、様々な設定画面や、監視カメラ1000から受信する映像のビューワ、各種メッセージ等を表示する。この様々な設定画面には、後述のVideoEncoder設定ウィンドウが含まれる。
2004は、入力部である。入力部2004は、例えばボタン、十字キー、タッチパネル、マウスなどで構成され、使用者による画面操作の内容を制御部2001に通知する。2005は、復号部である。復号部2005は、通信部2006を介して受信された圧縮符号化されている画像データを復号化し、復号化した画像データを記憶部2002に展開する。
本実施例におけるクライアント装置2000の復号部2005には、画像復号方式として、JPEG及びH.264が実装されているものとする。従って、本実施例におけるクライアント装置2000は、JPEG及びH.264などの既存の符号化方式に対応するSetVECコマンドのみ対応しており、SetVEC2コマンドには対応していない。
2006は、通信部である。通信部2006は、各制御コマンドを監視カメラ1000に対して送信する場合、また各制御コマンドに対するレスポンスや、画像データを含むストリームを監視カメラ1000から受信する場合に使用される。なお、本実施例において、復号部2005は、例えば、サブCPUで構成される。
続いて、図4は、本実施例における、クライアント装置2010の内部構成を示すブロック図である。ここで、図4に示すように、クライアント装置2010の処理ブロックは、復号部2015を除き、図3に示したクライアント装置2000と同様である。
即ち、制御部2011は、制御部2001と同様であり、記憶部2012は、記憶部2002と同様である。また、表示部2013は、表示部2003と同様であり、入力部2004は、入力部2014と同様である。さらに、通信部2016は、通信部2006と同様である。
図4における2015は、復号部である。復号部2015は、通信部2016を介して受信された圧縮符号化されている画像データを復号化し、復号化した画像データを記憶部2012に展開する。
本実施例における復号部2015は、画像復号方式として、JPEG、H.264、及びH.264PHP、H.265が実装されているものとする。従って、本実施例におけるクライアント装置2010は、SetVECコマンド及びSetVEC2コマンドの両方に対応している。
さらに、本実施例におけるクライアント装置2010は、GetVEC、GetVEC2、GetVECs、GetVECs2、GetVECOs、GetVECOs2、GetCVEC、GetCVEC2にも対応している。
以上、図1乃至4を参照し、監視カメラ1000とクライアント装置2000及び2010との内部構成について説明したが、図2に示す処理ブロックは、本発明における監視カメラ、クライアント装置の好適な実施例を説明したものであり、この限りではない。例えば、監視カメラ及びクライアント装置は、音声入力部、或いは音声出力部を備える等、本発明の要旨の範囲内で、種々の変形及び変更が可能である。
続いて、図5を参照し、本実施例にて使用するコマンド、パラメータ等の名称と内容を以下に説明する。ここで、図5は、本実施例において、監視カメラ1000(の記憶部1002)が保持するパラメータの構造を図示している。
図5において、MediaProfile3000、3001、及び3002は、監視カメラ1000の各種設定項目を関連づけて記憶するためのパラメータセットである。なお、以下、MediaProfileをMPと省略することがある。MP3000、3001、及び3002のそれぞれは、MPのIDであるProfileTokenを保持する。
また、MP3000、3001、及び3002のそれぞれは、各種設定項目へのリンクを保持する。この各種設定項目には、後述のVideoSourceConfiguration3011、VideoEncoderConfiguration3020、3021、3031が含まれる。なお、以下、VideoSourceConfigurationをVSCと省略することがある。
図5におけるVideoSource3010は、監視カメラ1000が備える1つの撮像部1003の性能を示すパラメータの集合体である。なお、以下、VideoSourceをVSと省略することがある。また、本実施例におけるVSは、撮像素子の設定に関する撮像素子設定情報に相当する。
ここで、VS3010は、VS3010のIDであるVideoSourceTokenや、撮像部1003が出力可能な撮像画像の解像度を示すResolutionなどのパラメータを含む。
VSC3011は、VS3010のVideoSourceTokenなどを含む。これにより、VSC3011は、監視カメラ1000が備えるVS3010をMP3000、3001、及び3002に関連付けるためのパラメータの集合体であると言える。
ここで、VSC3011は、撮像部1003が出力可能な撮像画像の解像度を示すResolutionを含む。さらに、VSC3011は、撮像部1003から出力される撮像画像のうち、どの部分を切り出してクライアント装置2000などに配信するかを指定するためのBoundsを含む。
VEC3020、3021、及び3031は、画像データの圧縮符号化に関するエンコーダ設定をMPに関連付けるパラメータの集合体である。
監視カメラ1000は、VS、及びVSCの内容に基づいて撮像部1003から出力される撮像画像を、VECに基づいて圧縮符号化し、画像データとして通信部1005を介してクライアント装置2000及び2010に配信する。具体的には、圧縮符号化部1004は、この撮像画像を、VECにより設定される符号化方式、フレームレート、或いは解像度等のパラメータに従って符号化することで、画像データを生成する。
なお、圧縮符号化部1004に実装されている符号化方式のうち、JPEG及びH.264は、記憶部1002のVEC1とVEC2のどちらでも、そのパラメータを保持することができる。これに対し、この符号化方式のうち、H.265は、VEC2のみで保持される。
VECは、VECのIDであるConfigurationToken、圧縮符号化方式を指定するEncoding、出力画像の解像度を指定するResolutionを含む。さらに、VECは、圧縮符号化品質を指定するQuality、出力画像の最大フレームレートを指定するFramerateLimit、及び最大ビットレートを指定するBitrateLimitも含む。
3040は、VEC1の記憶領域、3041は、VEC2の記憶領域を模式的に示すものであり、後述する図17に示されるようにVEC2は、ProfileExtension2に定義されている。また、後述する図18に示されるように、VEC2のEncodingProfileは、string形式で指定できるので拡張性が高くなっている。
続いて、図6は、監視カメラ1000とクライアント装置2010との間において、映像を配信するために必要なMediaProfileを設定するための典型的なコマンドシーケンスを示している。ここでトランザクションとは、クライアント装置2010から監視カメラ1000へ送信されるコマンドと、それに対して監視カメラ1000がクライアント装置2010へ返送するレスポンスのペアのことを指している。
ここで、クライアント装置2010は、前述の通りH.265の復号器に相当する復号部2015を備えている。さらに、クライアント装置2010は、SetVEC及びSetVEC2の両方に対応している。そして、クライアント装置2010の記憶部2012は、VEC1の記憶領域3040とVEC2の記憶領域3041とを有している。
図6における4000は、ネットワーク機器接続のトランザクションである。クライアント装置2010は、ネットワーク機器を接続するためのProbeコマンドをユニキャスト、或いはマルチキャストでIPネットワーク網1500に送信する。
一方、このIPネットワーク網1500に接続されている監視カメラ1000は、コマンド受け付け可能となったことを示すProbeMatchレスポンスをクライアント装置2000へ返送する。
4001は、Subscribeのトランザクションである。このトランザクションにより、クライアント装置2010は、監視カメラ1000に対し、イベント配信を行うよう指示することができる。
4002は、GetProfilesトランザクションである。このトランザクションは、配信プロファイルに相当するMediaProfileを取得するためのトランザクションである。ここで、MediaProfileとは、監視カメラ1000の各種設定項目を関連づけて記憶するためのパラメータセットである。
この各種設定項目は、このMediaProfileのIDであるProfileTokenと、VSC、VECのほか、音声のエンコーダ等を含む。そして、MediaProfileは、これら各種設定項目へのリンクを保持する。したがって、MediaProfileは、配信設定情報に相当する。
クライアント装置2010は、GetProfilesコマンドを監視カメラ1000に送信する。そして、GetProfilesコマンドを受信した監視カメラ1000は、MediaProfileのリストをクライアント装置2010に送信する。このリストは、図5における、MP3000、3001、及び3002に相当する。
これにより、クライアント装置2010は、MediaProfileを識別するための配信プロファイルIDに相当するProfileTokenとともに、監視カメラ1000で現在使用可能なMediaProfileのリストを取得する。なお、クライアント装置2010は、監視カメラ1000内に存在する配信可能な配信プロファイル設定であるMediaProfileを、配信プロファイルIDで識別している。
4003は、GetVideoSourcesコマンドのトランザクションである。このコマンドにより、クライアント装置2010は、監視カメラ1000が保持するVideoSourceのリストを取得する。
ここで、VideoSourceとは、監視カメラ1000が備える1つの撮像部1003の性能を示すパラメータの集合体である。また、VideoSourceは、VideoSourceのIDであるVideoSourceTokenと、撮像部1003が出力可能な撮像画像の解像度を示すResolutionを含む。
クライアント装置2010は、GetVideoSourcesコマンドを監視カメラ1000に送信する。そして、GetVideoSourcesコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2010に返送する。
4004は、GetVideoSourceConfigurationsトランザクションである。このトランザクションは、監視カメラ1000の保持するVideoSourceConfigurationのリストを取得するためのトランザクションである。
クライアント装置2010は、GetVideoSourceConfigurationsコマンドを監視カメラ1000に送信する。そして、GetVideoSourceConfigurationsコマンドを受信した監視カメラ1000は、監視カメラ1000が保持するVSCのIDを含むリストをクライアント装置2010に返送する。
4055は、GetVECs2のトランザクションである。クライアント装置2010がGetVECs2コマンドリクエストを送信した場合、監視カメラ1000から返送されるそのレスポンスには、符号化方式の設定情報として、JPEG、H.264、及びH.265が含まれる。
なお、監視カメラ1000は、GetVECs2のコマンドを受信することにより、クライアント装置2010が新しいコマンドセットを備えたクライアント装置であると認識できる。
一方、クライアント装置2010が、GetVECなど、既存の体系のコマンドを使用した場合を想定する。このような想定の下では、監視カメラ1000は、クライアント装置2010が古いコマンドセットを備えたクライント装置なのか、それとも新しいコマンドセットを備えたクライアント装置なのか区別することができない。
4056は、GetVideoEncoderConfigurationOptions2トランザクションである。このトランザクションにより、クライアント装置2010は、IDによって指定されたVEC2に関し、監視カメラ1000が受け付け可能な各パラメータの選択肢や設定値の範囲を取得することができる。
クライアント装置2010は、GetVideoEncoderConfigurationOptions2コマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。このトランザクションにより、クライアント装置2010は、記憶部1002に記憶されている圧縮符号化設定のIDを含むリストを監視カメラ1000から取得する。
4007は、CreateProfileのトランザクションである。このトランザクションは、配信プロファイルの作成を要求するためのトランザクションである。クライアント装置2010は、CreateProfileコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにより、クライアント装置2010は、配信プロファイルを監視カメラ1000内に新たに作成し、作成した配信プロファイルのIDを得ることができる。又、監視カメラ1000は、この新たに作成された配信プロファイルを記憶する。
より詳細には、制御部1001は、通信部1005で受信されたCreateProfileコマンドに応じたMediaProfileを新たに作成し、作成したMediaProfileを記憶部1002に記憶させる記憶制御処理を実行する。
このトランザクションのコマンド処理後、監視カメラ1000は、MediaProfile変更通知イベントをクライアント装置2010に送信することで、MediaProfileに何らかの変更があったことをクライアント装置2010に通知する。
4008は、AddVideoSourceConfigurationのトランザクションである。このトランザクションは、VSCの追加を要求するためのトランザクションである。クライアント装置2010は、AddVideoSourceConfigurationのコマンドを監視カメラ1000に送信する。
なお、このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2010に返送する。
このトランザクションにおいて、クライアント装置2010は、4007で取得した配信プロファイルIDと4004で取得したVSCのIDとを指定する。これにより、クライアント装置2010は、指定した配信プロファイルIDに対応するMediaProfileに対し、指定したVSCのIDに対応する所望のVSCを関連付けることができる
4059は、AddVideoEncoderConfigurationのトランザクションである。このトランザクションは、符号化情報(VEC)の追加を要求するためのトランザクションである。クライアント装置2010は、AddVECコマンドを監視カメラ1000に送信する。監視カメラ1000は、このコマンドのレスポンスをクライアント装置2010に返送する。
このトランザクションにおいて、クライアント装置2010は、4007で取得した配信プロファイルIDと4055で取得したVECのIDとを指定する。これにより、クライアント装置2010は、指定した配信プロファイルIDに対応するMediaProfileに対し、指定したVECのIDに対応するVEC設定を関連付けることができる。
一方、監視カメラ1000は、クライアント装置2010により指定された配信プロファイルIDに対応するMediaProfileと、クライアント装置2010により指定されたVECのIDに対応するVEC設定と、を関連付けて記憶する。VEC1であれば、第1の記憶領域3040に記憶され、VEC2であれば、第2の記憶領域3041に記憶される。
4060は、SetVideoEncoderConfiguration2のトランザクションである。このトランザクションは、VEC2の各パラメータを設定するためのトランザクションである。クライアント装置2010は、SetVideoEncoderConfiguration2のコマンドを監視カメラ1000に送信する。
なお、本実施例におけるSetVideoEncoderConfiguration2は、第2の符号化方式設定コマンドに相当する。
このSetVEC2コマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。このトランザクションにより、クライアント装置2010は、4055で取得したVEC2の内容を、4056で取得した選択肢に基づいて設定する。例えば、圧縮符号化方式や切出しサイズを変更する。監視カメラ1000は、設定された圧縮符号化設定等の内容を記憶する。
4011は、GetStreamUriのトランザクションである。このトランザクションは、配信アドレスの取得を要求するためのトランザクションである。このトランザクションにて、クライアント装置2010は、4007で取得した配信プロファイルIDを指定し、指定した配信プロファイルの設定に基づいてストリーミング配信される画像データ等を取得するためのアドレス(URI)を取得する。
監視カメラ1000は、クライアント装置2010により指定された配信プロファイルIDに関連付けられているVSC、及びVECの内容に対応する画像データをストリーミング配信するためのアドレスを、クライアント装置2010に返送する。
4012は、DESCRIBEのトランザクションである。このトランザクションは、配信情報の取得を要求するためのトランザクションである。クライアント装置2010は、DESCRIBEのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2010に返送する。
このトランザクションにおいて、クライアント装置2010は、4011で取得したURIを使用してDESCRIBEコマンドを実行することにより、監視カメラ1000がストリーミング配信するコンテンツの情報を要求して取得する。
4013は、SETUPのトランザクションである。このトランザクションは、配信設定を要求するためのトランザクションである。クライアント装置2010は、SETUPのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2010に返送する。
このトランザクションにおいて、クライアント装置2010は、4012で取得した配信情報に関する詳細データに基づき、監視カメラ1000に対してストリーミングの準備を行わせる。このコマンドを実行することにより、クライアント装置2010と監視カメラ1000との間で、セッション番号を含むストリームの伝送方法が共有される。
4014は、PLAYのトランザクションである。このトランザクションは、ストリーミング配信を開始させるためのトランザクションである。クライアント装置2010は、PLAYのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2010に返送する。
クライアント装置2010は、PLAYのコマンドを監視カメラ1000に送信する際、4013で取得したセッション番号を用いることで、監視カメラ1000にストリーミングの開始を要求することができる。
4015は、監視カメラ1000からクライアント装置2010に配信されるストリームである。4014で開始を要求されたストリームを4013において共有された伝送方法によって配信する。
4016は、TEARDOWNのトランザクションである。このトランザクションは、配信を停止させるためのトランザクションである。クライアント装置2010は、TEARDOWNのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにおいて、クライアント装置2010は、4013にて取得したセッション番号を指定してTEADOWNコマンドを実行することにより、監視カメラ1000に対してストリーミングの停止を要求することができる。
以上のように、図1乃至6を用いることにより、H.265が実装されており、VEC1とVEC2の両方に対応した監視カメラ1000が、VEC2コマンドを受け取った場合の典型的なコマンドシーケンスについて説明した。
なお、図6では、クライアント装置2010と監視カメラ1000との間で、映像を配信するために必要なMediaProfileを設定するための典型的なコマンドシーケンスを示した。
ここで、このコマンドシーケンスと、クライアント装置2000と監視カメラ1000との間で、映像配信するために必要なMediaProfileを設定するための典型的なコマンドシーケンスとは、基本的に同じである。そこで、このコマンドシーケンスについては、図6を参照し、異なる部分を中心に説明し、重複する部分については、その説明を省略することがある。
このコマンドシーケンスでは、図6における4055のGetVEC2トランザクションは、GetVECトランザクションになる。このトランザクションにより、クライアント装置2000は、監視カメラ1000が保持するVECのリストを取得する。クライアント装置2000は、GetVECコマンドを監視カメラ1000に送信する。
又、このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。このレスポンスには、画像の圧縮方式のリストとして、JPEG、H.264が含まれることになる。一方、このレスポンスには、H.265が含まれない。また、このレスポンスには、記憶部1002に記憶されている符号化設定のIDを含むリストが含まれる。
このコマンドシーケンスでは、図6における4056のGetVECOs2トランザクションがGetVECOsトランザクションになる。このトランザクションにより、クライアント装置2000は、IDによって指定されたVECに関し、監視カメラ1000が受け付け可能な各パラメータの選択肢や設定値の範囲を取得することができる。
クライアント装置2000は、GetVECOsコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにより、クライアント装置2000は、記憶部1002に記憶されている符号化設定のIDを含むリストを監視カメラ1000から取得する。また、このレスポンスには、JPEG、及びH.264がレスポンスに含まれることになる。一方、このレスポンスには、H.265が含まれない。
このコマンドシーケンスでは、図6における4060のSetVEC2のトランザクションは、SetVECのトランザクションになる。このトランザクションは、VECの各パラメータを設定するためのトランザクションである。クライアント装置2000は、SetVECのコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。このトランザクションにより、クライアント装置2000は、GetVECトランザクションで取得したVECの内容を、GetVECOsトランザクションで取得した選択肢に基づいて設定する。例えば、圧縮符号化方式や切出しサイズを変更する。監視カメラ1000は、設定された圧縮符号化設定等の内容を記憶する。
このトランザクションの処理後、監視カメラ1000は、VEC変更通知イベントをクライアント装置2000に送信することにより、VECに何らかの変更があったことをクライアント装置2000に通知する。なお、本実施例におけるSetVECコマンドは、第1の符号化方式設定コマンドに相当する。
続いて、図7は、監視カメラ1000とクライアント装置2010との間において、例えば、所望のVEC設定を所望のMediaProfileに追加させる場合の典型的なコマンドシーケンスを示している。ここで、図7において、クライアント装置2010は、4002のGetProfilesコマンドのトランザクションを実行することにより、MediaProfileを監視カメラ1000から取得する。
さらに、クライアント装置2010は、4055のGetVideoEncoderConfigurations2コマンドのトランザクションを実行することにより、VECの全リストを監視カメラ1000から取得する。
そして、クライアント装置2010は、4059のAddVECのトランザクションを実行することにより、この取得したVECの全リストの中から所望のVEC2を、この取得したMediaProfileに追加する。
図7における4055は、GetVideoEncoderConfiguration2コマンドのトランザクションである。このコマンドにより、クライアント装置2010は、監視カメラ1000に設定されているVECの全リストを取得する。
ここで、ステップ4055のレスポンスとして、クライアント装置2010が取得するVECのリストには、図5のVEC1の3020、3021、及びVEC2の3031が含まれる。例えば、VEC1の3020の符号化方式は、H.264である。また、VEC1の3021の符号化方式は、JPEGである。そして、VEC2の3031の符号化方式は、H.265である。
4056は、GetVECOptions2コマンドのトランザクションである。このトランザクションにより、クライアント装置2010は、このコマンドの引数として指定されたIDに対応するVECに関し、監視カメラ1000が受信可能な各パラメータの選択肢や設定値の範囲を取得する。
4059は、AddVideoEncoderConfigurationコマンドのトランザクションである。このトランザクションにより、このコマンドの引数として指定されたProfileTokenに対応するMediaProfileに、このコマンドの引数と指定されたIDに対応するVECを追加させることができる。
4059のトランザクションの終了後、監視カメラ1000は、VECに何らかの変更があったことをIPネットワーク網1500上のクライアント装置2010に通知するべくVEC変更通知イベントを送信する。
クライアント装置2010は、4059のトランザクションで追加したVECの設定内容を有効にするため、4016、4012、4013、及び4014のトランザクションを実行し、監視カメラ1000に対してストリーミング配信を再開させる。
続いて、図13は、本実施例における、GetProfileコマンドの構成の一例を示す図である。図13において、<ProfileToken>タグには、profile0が対応付けられている。なお、値がprofile0の<ProfileToken>タグを含むGetProflieコマンドは、このタグの値に対応するMP3000を監視カメラ1000から取得するためのコマンドである。
続いて、図14は、本実施例における、GetProfileレスポンスの構成の一例を示す図である。図14に示すように、<tt:GetProfile Response>タグには、<trt:Proflie fixed=“false”token=“profile0”>タグが対応付けられている。このタグには、<tt:Extension>タグが対応付けられている。
更に、このタグには、<tt:Extension>タグが対応付けられている。そして、このタグには、図14の符号10000で示した<tt:VideoEncoderConfiguration2 token=“vec2”>タグが対応付けられている。なお、図14の符号10000で示したタグが対応付けられた<tt:Extension>タグの値は、MediaProfileの拡張領域の値に対応する。
続いて、図15は、本実施例における、AddVideoEncoderConfigurationのコマンドの構成の一例を示す図である。図15において、符号10001で示すように、<AddVideoEncoderConfiguration>タグには、<ProfileToken>タグ及び<ConfigurationToken>タグが対応付けられている。
そして、この<ProfileToken>タグに対応付けられた値は、profile0である。また、この<ConfigurationToken>タグに対応付けられた値は、vec2である。よって、図15のコマンドは、ProflieTokenの値がprofile0であるMP3000に対し、ConfigurationTokenの値がvec2である3030のVEC2を追加するためのコマンドである。
なお、AddVECコマンドの<ConfigurationToken>タグには、vec0及びvec1のようなVEC1のConfigurationTokenの値も対応づけることができる。
また、本実施例におけるConfigurationTokenは、VECを識別するための識別子に相当する。そして、本実施例におけるAddVECコマンドは、この識別子が記述される識別コマンドに相当する。
続いて、図17は、本実施例に係る、VideoEncoderConfiguration2の定義の一例を説明するための図である。図17に示すように、VEC2は、MPの拡張領域であるProfileExtension2に定義されている。
続いて、図18は、VideoEncoderConfiguration2の定義の一例を説明するための図である。図18に示すように、VEC2では、sequence指定子により、図18の要素が定義通りの順番で出現することを指定されている。
図18において、Encodingは、符号化方式を指定するためのパラメータである。Resolutionは、解像度を指定するためのパラメータであり、Width,及びHeightに指定されるパラメータのそれぞれにより、画面横画素数と画面縦画素数とが指定される。
Qualityは、画像品質を指定するためのパラメータである。また、RateControlは、フレームレートの設定を指定するためのパラメータである。このRateContorlに含まれるFrameRateLimitは、フレームレートの上限値を指定するパラメータである。
また、このRateControlに含まれるEncodingIntervalは、符号化と伝送間隔を指定するパラメータである。そして、このRateControlに含まれるBitrateLimitは、ストリーミング配信される画像データの上限ビットレートを指定するパラメータである。
Multicastは、ストリーミング配信される画像データのマルチキャストの数を指定するパラメータである。また、SessionTimeoutは、ストリーミング配信される画像データのタイムアウト指定のパラメータである。そして、GovLengthは、Iフレーム間隔を指定するためのパラメータである。
さらに、EncodingProfileは、符号化方式のプロファイルを指定するためのパラメータである。例えば、符号化方式がH.265である場合、このEncodingProfileには、Main、Main10、MainStillPictureなどが指定され得る。
続いて、図8は、本実施例に係る監視カメラ1000における、AddVideoEncoderConfigurationコマンド受信処理を説明するためのフローチャートである。なお、この処理は、制御部1001により実行される。また、制御部1001は、通信部1005によりAddVECコマンドが受信された場合に、この処理を開始する。
ステップS1500では、制御部1001は、通信部1005で受信されたAddVECコマンドの引き数として指定されたConfigurationTokenに対応するVECがVEC1であるのか、それともVEC2であるのかを判定する。例えば、本実施例では、制御部1001は、図16に示すようなテーブルに基づいて、この判定を行う。なお、図16に示すテーブルは、記憶部1002に記憶される。
ここで、図16に示すテーブルでは、VECのToken(ConfigurationToken)と、VECの種別情報と、が対応付けられている。このVECの種別情報は、VECがVEC1であるのか、それともVEC2であるのかを示す情報である。
例えば、図16に示すテーブルでは、値がvec0のVECのTokenと、値がVEC1のVECの種別と、が対応付けられている。これにより、ConfigurationTokenの値がvec0であるVECの種別は、VEC1であることが示される。
また、図16に示すテーブルでは、値がvec1のVECのTokenと、値がVEC1のVECの種別と、が対応付けられている。これにより、ConfigurationTokenの値がvec1のVECの種別は、VEC1であることが示される。
さらに、図16に示すテーブルでは、値がvec2のVECのTokenと、値がVEC2のVECの種別と、が対応付けられている。これにより、ConfigurationTokenの値がvec2のVECの種別は、VEC2であることが示される。
なおかつ、図16に示すテーブルでは、値がvec3のVECのTokenと、値がVEC2のVECの種別と、が対応付けられている。これにより、ConfigurationTokenの値がvec2のVECの種別は、VEC2であることが示される。
そして、制御部1001は、通信部1005で受信されたAddVECコマンドの引数として指定されたConfigurationTokenに対応付けられVECの種別を記憶部1002から読み出す。
次に、制御部1001は、読み出されたVECの種別がVEC1である場合は。この引数として指定されたConfigurationTokenに対応付けられたVECがVEC1であると判定する。一方、制御部1001は、読み出されたVECの種別がVEC2である場合は、この引数として指定されたConfigurationTokenに対応付けられたVECがVEC2であると判定する。
そして、制御部1001は、このVECがVEC1であると判定した場合には、ステップS1501に処理を進める。一方、制御部1001は、このVECがVEC2であると判定した場合には、ステップS1600に処理を進める。
なお、通信部1005で受信されたAddVECコマンドの引数として指定されたConfigurationTokenが、記憶部1002に記憶された図16のテーブルに存在しない場合も考えられる。このような場合、制御部1001は、通信部1005に指示し、通信部1005で受信されたAddVECコマンドのレスポンスとして、エラーである旨を示す情報をクライアント装置2000に送信させても良い。
ステップS1501では、制御部1001は、通信部1005で受信されたAddVECコマンドの引数として指定されたProfileTokenに対応するMPのVEC1を更新する。より詳細には、制御部1001は、このMPのVEC1を、このコマンドの引数として指定されたConfigurationTokenに対応するVEC1で更新する。
ステップS1600では、制御部1001は、通信部1005で受信されたAddVECコマンドの引数として指定されたProfileTokenに対応するMPに、VEC1が設定(追加)されているか否かを判定する。
そして、制御部1001は、このMPにVEC1が設定(追加)されていると判定した場合には、ステップS1610に処理を進め、一方、このMPにVEC1が設定(追加)されていないと判定した場合には、ステップS1601に処理を進める。
ステップS1601では、追加部の役割を果たす制御部1001は、通信部1005で受信されたAddVECコマンドの引数として指定されたProfileTokenに対応するMPに、VEC2を追加する。ここで、この追加するVEC2は、このコマンドの引数として指定されたConfigurationTokenに対応するVEC2である。
また、制御部1001は、図11を用いて後述するクライアント装置2010のGUI表示画面で、本当にVEC1の内容を消去して処理を次に進めるか否かを判定する判定処理を実行しても良い。
ステップS1602では、制御部1001は、通信部1005に指示し、MPに何らかの変更が加えられた旨をクライアント装置2000及び2010に通知させる。なお、このMPは、通信部1005で受信されたAddVECコマンドに引数として指定されたProfileTokenに対応するMPである。
例えば、制御部1001は、通信部1005に指示し、このMPに何らかの変更が加えられた旨を示すイベントを、クライアント装置2000及び2010に送信させる。
ステップS1603では、制御部1001は、通信部1005に指示し、通信部1005で受信されたAddVECコマンドのレスポンスとして、正常である旨を示す正常応答をクライアント装置2010に返送させる。
ステップS1610では、制御部1001は、通信部1005で受信されたAddVECコマンドの引数として指定されたConfigurationTokenに対応するMPから、VEC1を消去(除去)する。
続いて、図9乃至11は、本実施例のクライアント装置2010において、監視カメラ1000のVECの設定を行わせるためのユーザーインターフェースであるところの、VideoEncoder設定ウィンドウを示す図である。
図9における7000は、LiveViewエリアである。クライアント装置2010は、このウィンドウが開かれた場合に前述の図6に示すシーケンスを実行することにより、トランザクション4015で得られる映像ストリームに対応する画像を、LiveViewウィンドウ7000に表示させる。
さらに、クライアント装置2010は、GetVECs2コマンドを監視カメラ1000に送信することにより、VECの全てのリストを監視カメラ1000から取得する。そして、クライアント装置2010は、得られた結果(取得したリスト)を用いることにより、図9の画面におけるVideoEncoder設定タブ7001、7002、及び7003を表示する。
なお、MP3001は、設定タブ7001に対応し、MP3002は、タブ7002に、MP3003は、タブ7003に対応する。
また、クライアント装置2010は、GetVECOsコマンド及びGetVECOs2コマンドを送信することにより、VECの各パラメータの選択肢や設定範囲を取得する。そして、クライアント装置2010は、得られた結果(取得した選択肢や設定範囲)を用いることにより、図9の画面におけるVideoEncoderの各パラメータの選択肢や設定範囲を、7045に表示する。
これにより、クライアント装置2010は、VECの設定値の選択肢や設定範囲を、表示部2013に表示させることで、ユーザに提供することが可能となる。なお、7045は、VideoEncoderSettingエリアである。
また、VideoEncoder設定タブ7001、VideoEncoder設定タブ7002、及びVideoEncoder設定タブ7003は、VideoEncoder設定画面を切り換えるためのタブである。
例えば、ユーザによりVideoEncoder設定タブ7001が押下された場合には、図9のVideoEncoder設定ウィンドウにおいて、VideoEncoder1設定画面が表示される。この画面は、MP3001に関連付けられたVEC3021をユーザに変更させるための画面である。
つまり、VideoEncoder1(設定画面)、VideoEncoder2(設定画面)、及びVideoEncoder3(設定画面)は、監視カメラ1000に作成されたMPのパラメータ(を設定するための画面)に相当する。
ここで、このMediaProflieは、クライアント装置2000及び2010などの外部装置から送信されたCreateProfileコマンドにより、監視カメラ1000に作成されたものである。
なお、図9では、MP3000、MP3001、及びMP3002の3つが監視カメラ1000に作成されており、作成されたMPに対応するパラメータがクライアント装置2010の設定画面に表示されている。
ここで、MP3000のProfileTokenの値は、profile0である。また、MP3001のProfileTokenの値は、Profile1である。そして、MP3002のProfileTokenの値は、Profile2である。
7050は、各VECの圧縮符号化方式をユーザに選択させるEncoderTypeエリアである。このエリアには、図9の画面が開かれた場合に、GetVECOptions2コマンドを送信することにより得られる圧縮符号化方式(Encording)の選択肢が表示される。
なお、本実施例では、このエリアには、クライアント装置2010においてユーザが現在選択することができる圧縮符号化方式として、JPEG、H.264、及びH.265が表示されている。
ラジオボタン7051、ラジオボタン7052、及びラジオボタン7053は、JPEG、H.264、及びH.265のいずれか1つを択一的に選択するためのラジオボタンである。ここで、ラジオボタン7051が押下された場合には、JPEGが選択され、ラジオボタン7052が押下された場合には、H.264が選択され、ラジオボタン7053が押下された場合には、H.265が選択される。
なお、図9では、JPEG及びH.265は、ともに未選択となっている。
例えば、MP3001のVEC1には、H.264が設定されている。このため、図9の表示画面では、H.264に対応するラジオボタン7052が押下されており、このラジオボタン7052に黒丸が表示されている。
7020は、VEC3021に含まれるFramerateLimit、BitrateLimit、及びQualityのパラメータをユーザに選択させるためのDetailエリアである。7021、7022、及び7023で示された各パラメータの設定範囲は、図9の画面が開かれた場合に、GetVECOsコマンドを実行することにより得られるそれぞれのパラメータの設定範囲の内容が表示される。
7030は、解像度(Resolution)を選択するためのEncoderResolutionエリアである。7031のドロップダウンリストには、図9の画面が開かれた場合に、GetVECOsコマンドを実行することにより得られた、VEC3021の解像度のパラメータの選択肢の内容が表示される。
7033は、Encoder Profileを選択するための選択エリアである。選択エリア7033における塗りつぶし▽ボタンをマウスなどでクリックすると、ドロップダウンメニューが表示される。この選択エリア7033のドロップダウンメニューには、ユーザが選択可能なEncoderProfileのリストが表示される。
例えば、図9におけるドロップダウンメニューでは、H.264HighProfileが選択されている。これにより、LiveViewウィンドウ7000に表示されるライブ映像は、H.264HighProfileで圧縮符号化された画像データが(クライアント装置2010の)復号部2015により復号化されたものである。
続いて、図10は、本実施例に係るクライアント装置2010において、ユーザによりラジオボタン7053が押下された状態のVideoEncoder設定ウィンドウを示す。ここで、図10の画面で、ユーザにより設定ボタン7040が押下された場合を想定する。
このような想定の下では、まず、クライアント装置2010は、AddVECコマンドを監視カメラ1000に送信する。このAddVECコマンドの引数として指定されたProfileTokenは、MP3001に対応するものである。また、このコマンドの引数として指定されたConfigurationToken(=vec2)は、VEC3030に対応するものである。
一方、このAddVECコマンドを受信した監視カメラ1000は、AddVEC受信処理を実行する。以下、このような想定の下でのAddVEC受信処理の具体例を、上述の図8を用いて説明する。
ステップS1500では、制御部1001は、通信部1005で受信されたAddVECコマンドの引き数として指定されたConfigurationTokenに対応するVECがVEC2であると判定する。そして、制御部1001は、ステップS1600に処理を進める。
ステップS1600では、制御部1001は、通信部1005で受信されたAddVECコマンドの引数として指定されたProfileToken(=profile0)に対応するMP3001に3020のVEC1が設定されていると判定する。そして、制御部1001は、ステップS1610に処理を進める。
ステップS1610では、制御部1001は、記憶部1002に記憶されたMP3001から3020のVEC1を消去(除去)する。
ステップS1601では、制御部1001は、記憶部1002に記憶されたMP3001に対し、ConfigurationTokenの値がvec2のVEC2を追加する。この場合、H.265MainProfileに対応するVEC2がMP3001に追加される。
ステップS1602では、制御部1001は、通信部1005に指示し、MP3001に何らかの変更が加えられた旨の情報をクライアント装置2000及び2010に通知させる。例えば、この情報は、H.264に対応するストリーミング配信が停止され、H.265に対応するストリーミング配信が開始されることを示す情報である。
ステップS1603では、制御部1001は、通信部1005に指示し、クライアント装置2010からのAddVECコマンドのレスポンスとして、正常応答をクライアント装置2010に送信させる。
続いて、図19は、本実施例に係るクライアント装置2010における、VideoEncoder設定ウィンドウ表示処理を説明するためのフローチャートである。なお、この処理は、制御部2011により実行される。
ステップS1700では、制御部2011は、通信部2016に指示し、4002のGetProfilesトランザクションを実行させる。これにより、制御部2011は、監視カメラ1000に現在設定されているMediaProfileの全リストを、通信部2016を介して取得する。なお、取得したリストは、記憶部2012に記憶させる。
ステップS1701では、制御部2011は、通信部2016に指示し、4055のGetVECs2トランザクションを実行させる。これにより、制御部2011は、監視カメラ1000に現在設定されているVEC2の全リストを、通信部2016を介して取得する。なお、取得したリストは、記憶部2012に記憶させる。
ステップS1702では、制御部2011は、通信部2016に指示し、GetVECOsトランザクション及び4056のGetVECOs2トランザクションを実行させる。これにより、制御部2011は、監視カメラ1000がサポート(対応)している画質、フレームレート、ビットレート、EncordingInterval夫々のレンジ(選択可能範囲)や選択肢等を取得する。
ステップS1703では、制御部2011は、表示部2013に指示し、ステップS1700乃至S1702で取得した監視カメラ1000の設定情報、選択可能範囲などに基づき、図9に示すVideoEncoder設定ウィンドウを表示させる。
ステップS1704では、制御部2011は、VECの内容に何らの変更があった旨の通知が通信部2006により受信されたか否かを判定する。そして、制御部2011は、この通知が通信部2016により受信されたと判定した場合には、ステップS1705に処理を進め、この通知が通信部2016により受信されていないと判定した場合には、ステップS1700に処理を戻す。
ステップS1705では、制御部2011は、表示部2013に指示し、設定ボタン7040及び閉じるボタン7041を押下可能にアクティブ表示させる。
ステップS1706では、制御部2011は、入力部2014からの通知に基づき、ユーザにより設定ボタン7040が押下されたか否かを判定する。
そして、制御部2011は、ユーザにより設定ボタン7040が押下されたと判定した場合には、ステップS1710に処理を進める。一方、制御部2011は、ユーザにより設定ボタン7040が押下されていないと判定した場合には、ステップS1715に処理を進める。
なお、制御部2011は、入力部2014からの通知に基づき、ユーザにより閉じるボタン7041が押下されたと判定した場合には、ステップS1700に処理を戻す。
ステップS1710では、制御部2011は、図9に示すVideoEncoder設定ウィンドウにおけるVECの内容変更により、VEC1が消去されるか否かを判定する。
そして、制御部2011は、このウィンドウにおけるVECの内容変更により、VEC1が消去されると判定した場合には、ステップS1711に処理を進める。一方、制御部2011は、このウィンドウにおけるVECの内容変更により、VEC1が消去されないと判定した場合には、ステップS1714に処理を進める。
ステップS1711では、表示制御機能を備える制御部2011は、表示部2013に指示し、VEC1が消去されてしまう旨を示すAlertを表示させる。このAlertにより、VEC1の消去処理を実行して良いか否かの判断をユーザに促すことができる。
ステップS1712では、制御部2011は、入力部2014からの通知に基づき、実行ボタン7061が押下されたのか、それとも戻るボタン7062が押下されたのかを判定する。そして、制御部2011は、実行ボタン7061が押下されたと判定した場合には、ステップS1713に処理を進め、戻るボタン7062が押下されたと判定した場合には、ステップS1700に処理を戻す。
ステップS1714では、制御部2011は、通信部2016に指示し、図9に示すVideoEncoder設定ウィンドウにおいて変更されたVECの内容を含むSetVECコマンドを、クライアント装置2000に送信させる。
ステップS1715では、制御部2011は、入力部2014からの通知に基づき、閉じるボタン7041が押下されたか否かを判定する。そして、制御部2011は、閉じるボタン7041が押下されたと判定した場合には、ステップS1716に処理を進める。一方、制御部2011は、閉じるボタン7041が押下されていないと判定した場合には、ステップS1715に処理を戻す。
ステップS1716では、制御部2011は、表示部2013に指示し、図9に示すVideoEncoder設定ウィンドウを閉じる(非表示にする)。
続いて、図12は、本実施例に係る監視カメラ1000における、図19で示した処理が実行された後のパラメータの構造を示す。なお、上述の図5の説明と重複する説明は、省略することがある。
図12におけるMP3000は、H.264の設定情報(符号化方式情報)に相当するVEC1の設定3020が消去(除去)されている。そして、MP3000は、消去されたVEC1の設定3020の代わりに、H.265の設定情報に相当するVEC2の設定3030が追加されている。
以上、本実施例では、新しい符号化方式に対応した監視カメラ1000は、新しい符号化方式に対応したクライアント装置2010から、H.265といった新しい符号化方式を含む符号化情報であるVEC2をAddVECコマンドにより追加される。
このように追加された場合、監視カメラ1000は、VEC1を消去することにより、VEC1のストリーム、たとえばH.264のストリーム配信を停止し、VECに何らかの変更が加えられたことを通知する。
これにより、古いクライアント装置2000からみて、MediaProfileにVEC1が存在するにもかかわらず、理由もわからずストリームが配信されないといった状況を防止することができる。なお、この場合、古いクライアントの表示画面に“未定義の符号化方式が設定された”などのテキストを監視カメラ1000から送信して、表示するようにしてもよい。
また、本実施例では、新しい符号化方式を含む符号化情報であるVEC2を、AddVECコマンドによって、追加された場合に、VEC1を消去することにより、古いクライアント装置から見て、不整合を生じないようにした。しかしながら、これに限られるものではない。
例えば、第2の符号化方式情報設定コマンドに相当するSetVEC2、及び符号化情報追加コマンドに相当するAddVECコマンドを監視カメラ装置が受信した場合を想定する。そして、このような想定の下で、コマンドの符号化情報に含まれる符号化方式が、既存のOnvvifコマンドでサポートしている、JPEG,MPEG−4,H.264のうちのいずれかに該当する場合が考えられる。
このような場合、第2の記憶部にVEC2を書き込まず、第1の記憶部に記憶させるようにし、H.265など既存のOnvifコマンドでサポートしていない符号化情報の場合のみ、第2の記憶部にVEC2を記憶させるようにしてもよい。
また、本実施例では、制御部1001は、ステップS1610にて、通信部1005で受信されたAddVECコマンドの引数として指定されたProfileTokenに対応するMPからVEC1を消去(除去)したが、これに限られるものではない。
例えば、制御部1001は、一旦、VEC1の内容を保持したままにし、消去するタイミングは、ステップS1601でもよいし、ステップS1602であってもよく、Playコマンド4014のトランザクションのタイミングでも良い。
また、本実施例によれば、以下に述べるような課題を解決することができる。つまり、現在、ONVIFで定義されている符号化方式は、静止画ではJPEG、動画では、MPEG4とH.264だけであり、JPEG2000、やH.265などには対応していない。従って、このような未定義の符号化方式を設定するコマンドを新たに設ける必要が出てくる。
例えば、MediaProfileに関連付けられている一つのエンティティであるVECの設定に変更を加える現在のOnvifコマンドは、SetVECコマンドである。このコマンドに加え、新しい符号化方式を設定するコマンドとして、SetVEC2といったコマンドが必要となるが、コマンド体系の複雑化を避けるため、新規に追加するコマンドを極力少なくして、既存のコマンドを流用するケースが考えられる。
ところが、既存のコマンドは、新しい符号化方式に対応しておらず、流用すると、実装上不整合を生じることがある。このような課題を本実施例によれば、解決することができる。
また、本実施例におけるMPには、VEC1が記述される領域とVEC2が記述される拡張領域とが設けられている。また、VEC2が記述されるのは、MPの拡張領域であるので、後方互換性に優れている。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。