(58)【調査した分野】(Int.Cl.,DB名)
前記作成されたファイルから映像パケットを読み出し、前記作成されたファイルの欠損している映像パケットを前記補完データから読み出して、読み出した映像パケットを所定の宛先に送信する配信部、
をさらに備える請求項1から3のいずれか一項に記載の映像データ処理装置。
前記削除部は、前記インデックスファイルから、前記作成されたファイルと前記他のファイルとのぞれぞれの映像パケットが連続して欠損している回数を算出し、前記映像パケットが連続して欠損している回数が多い方を、映像品質の劣る方として、削除する、
請求項6に記載の映像データ処理装置。
【発明を実施するための形態】
【0019】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【0020】
<第1実施形態>
映像データ蓄積システムのシステム構成は、例えば、
図1又は
図2に示される映像データ蓄積システムのいずれであってもよい。第1実施形態では、
図2に示される映像データ蓄積システム200を想定する。エンコーダ50は、例えば、定点観測カメラであって、常時稼働しているものとする。また、エンコーダ50は、蓄積サーバA、Bに対して、ストリーミング配信を行っているものとする。第1実施形態において、ストリーミング配信とは、定点観測カメラ等が撮影した映像データをエンコーダ50がエンコードし、エンコードされたデータがエンコーダ50のハードディスク等へ転送された時点で該エンコードされたデータの送信を行うことを示す。
【0021】
例えば、蓄積サーバA、Bは、それぞれ、単一のエンコーダ50からストリーミング配信により異なる経路で受信された映像パケットを含むファイルA、Bを作成する。映像パケットには、シーケンス番号がエンコーダ50によって付与されている。蓄積サーバA、Bは、それぞれ、ファイルA、Bについて、ファイルA、Bに含まれる映像パケットのシーケンス番号とファイルA、B内における先頭からの位置を示すオフセット位置情報とを含むインデックスファイルを作成する。
【0022】
蓄積サーバA、Bは、それぞれ、ファイルA、Bのインデックスファイルに基づいて、シーケンス番号の不連続になる個所からファイルA、B内の欠損した映像パケットを特定する。欠損した映像パケットを、以降、単に、欠損パケット、と称する。蓄積サーバA、
Bは、それぞれ、ファイルA、B内の欠損パケットのオフセット位置情報をファイルB、Aのインデックスファイルから取得し、取得したオフセット位置情報に該当する映像パケットをファイルB、Aから取得する。
【0023】
蓄積サーバA、Bは、それぞれ、ファイルB、Aから取得した欠損パケットに対応する映像パケットで、ファイルA、Bの補完ファイルA−1、B−1を作成する。
【0024】
これによって、ファイルA、ファイルBのいずれが読み出された場合でも、欠損パケットは補完ファイルA−1、B−1から読み出されることで、エンコーダ50から送出されたオリジナルの映像データを再現することができる。
【0025】
第1実施形態では、エンコーダ50は、MPEGを用いて映像データをエンコードするものとする。また、エンコーダ50は、RTPを用いて、映像データを送信することとする。
【0026】
エンコーダ50は、「映像源」の一例である。蓄積サーバA、Bは、「映像データ処理装置」の一例である。映像データ蓄積システム100、200は、それぞれ、「映像データ処理システム」の一例である。
【0027】
<装置構成>
図4は、蓄積サーバ1のハードウェア構成の一例を示す図である。蓄積サーバ1は、例えば、専用又は汎用のコンピュータである。蓄積サーバ1は、CPU(Central Processing Unit)101、主記憶装置102、補助記憶装置103、ネットワークインタフェー
ス104を備える。また、これらはバス105により互いに電気的に接続されている。
【0028】
補助記憶装置103は、様々なプログラムや、各プログラムの実行に際してCPU 101が使用するデータを格納する。補助記憶装置103は、例えば、ハードディスクドライブ(Hard Disk Drive)等の不揮発性のメモリである。補助記憶装置103は、例えば
、オペレーティングシステム(OS)、映像データ処理プログラム、その他様々なアプリケーションプログラムを保持する。映像データ処理プログラムは、ファイル内の欠損パケットを他のファイルから取得し、補完データを作成するためのプログラムである。
【0029】
主記憶装置102は、CPU 101に、補助記憶装置103に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする。主記憶装置102は、例えば、RAM(Random Access Memory)のような半導体メモリを含む。
【0030】
CPU 101は、補助記憶装置103に保持されたOSや様々なアプリケーションプログラムを主記憶装置102にロードして実行することによって、様々な処理を実行する。CPU 101は、1つに限られず、複数備えられてもよい。
【0031】
ネットワークインタフェース104は、ネットワークとの信号の入出力を行うインタフェースである。ネットワークインタフェース104は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース104は、有線のネットワークと接続する場合には、例えば、光信号回路、NIC(Network Interface Card)等である。ネットワークインタフェース104は、無線のネットワークと接続する場合には、衛星信号の受信回路等である。ネットワークインタフェース104で受信されたデータ等は、CPU 101に出力される。
【0032】
なお、
図4に示される蓄積サーバ1のハードウェア構成は、一例であり、上記に限られ
ず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、蓄積サーバ1は、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、SDカード、miniSDカード、microSDカード、USB(Universal Serial Bus)フラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、Blu−ray(登録商標) Disc、又はフラッシュメモリカードのような記録媒体である。
【0033】
図5は、蓄積サーバ1の機能構成の一例を示す図である。蓄積サーバ1は、機能構成として、蓄積部11、中間処理部12、補完処理部13、配信処理部14、削除処理部15を備える。蓄積部11、中間処理部12、補完処理部13、配信処理部14、削除処理部15は、CPU 101が映像データ処理プログラム103Pを実行することによって達成される機能構成である。
【0034】
蓄積サーバ1は、ファイルサーバ2と接続している。ファイルサーバ2は、例えば、NAS(Network Attached Storage)、CIFS(Common Internet File System)等のフ
ァイル共有プロトコルを実行するサーバである。
【0035】
蓄積部11は、エンコーダ50から継続的にRTPパケットを受信する。蓄積部11は、受信した映像データを、例えば、映像データに付与されたタイムスタンプに基づいて、所定の基準時刻から所定時間長単位で区切って、区切られた該所定時間長に含まれる映像データを1つの映像ファイルとする。所定時間長は、例えば、30分〜1日の間でデータセンタ62の管理者が任意に設定可能である。映像ファイルは、最大で該所定の時間帯の時間長分のデータ量となる。映像ファイルは、ファイルサーバ2に格納される。蓄積部11は、「ファイル作成部」の一例である。
【0036】
蓄積部11は、映像ファイルに対してハッシュ計算を行い、ハッシュデータを作成する。ハッシュ計算は、例えば、SHA1(Secure Hash Algorithm 1)、MD5(Message Digest Algorithm 5)等であり、いずれかに限定されない。蓄積部11は、ハッシュデー
タを対応する映像ファイルと紐づけてファイルサーバ2に格納する。蓄積部11は、「ハッシュデータ作成部」の一例である。
【0037】
蓄積部11は、映像ファイルに対してインデックスファイルを作成する。インデックスファイルの詳細は、後述される。蓄積部11は、インデックスファイルを対応する映像ファイルと紐づけてファイルサーバ2に格納する。蓄積部11は、「インデックス作成部」の一例である。
【0038】
中間処理部12は、ファイルサーバ2から対象の映像ファイルのハッシュデータを取得する。また、中間処理部12は、対象の映像ファイルの冗長データである他の装置によって作成された映像ファイルのハッシュデータを該当のファイルサーバ2から取得する。例えば、
図2の蓄積サーバAの中間処理部12は、ファイルサーバAからファイルAのハッシュデータと、ファイルサーバBから蓄積サーバBによって作成されたファイルBのハッシュデータと、を取得する。
【0039】
中間処理部12は、取得した2つのハッシュデータを比較する。例えば、
図2のファイルAとファイルBとが、いずれもパケットの欠損がない場合には、ファイルAとファイルBとのハッシュデータは一致する。しかしながら、
図2のファイルAとファイルBに含まれる映像パケットの伝送途中にパケット損失が発生した場合には、ファイルAとファイルBとは一致しないので、ファイルAとファイルBとのハッシュデータも一致しない。
【0040】
したがって、中間処理部12は、取得した2つのハッシュデータが一致しない場合には
、自装置が作成した映像ファイル内にパケットの欠落の可能性があることを判定し、補完処理部13を呼び出す。取得した2つのハッシュデータが一致する場合には、中間処理部12は、自装置が作成した映像ファイル内にパケットの欠落はないことを判定し、補完処理部13を呼び出さない。中間処理部12は、「比較部」の一例である。
【0041】
なお、
図2のファイルAとファイルBとに含まれる映像パケットの伝送途中で損失されたパケットが一致して、ファイルAのハッシュデータとファイルBのハッシュデータとが一致する場合が発生する可能性がある。ファイルAとファイルBとに含まれる映像パケットの伝送途中で損失されたパケットが一致している場合には、一方のファイルの欠損パケットを他方のファイルから補完すること自体ができない。また、ファイルAとファイルBとに含まれる映像パケットの伝送途中で損失されたパケットは異なるものの、ファイルAのハッシュデータとファイルBのハッシュデータとが一致する場合も発生する可能性がある。このような場合が発生する可能性は非常に低いため、第1実施形態では、考慮されないものとする。
【0042】
補完処理部13は、中間処理部12に呼び出された場合に、自装置の作成した映像ファイルのインデックスファイルと他の装置によって作成された映像ファイルのインデックスファイルとに基づいて、自装置の作成した映像ファイルの欠損パケットの補完ファイルを作成する。具体的には、補完処理部13は、自装置の作成した映像ファイルの欠損パケットに相当する映像パケットを他の装置が作成した映像ファイルから取得する。補完処理部13は、取得した映像パケットから、対応する映像ファイルとは異なるファイルである補完ファイルを作成する。補完処理部13は、対応する映像ファイルに補完ファイルを紐づけて、該補完ファイルをファイルサーバ2に格納する。補完処理部13は、「補完データ作成部」の一例である。
【0043】
配信処理部14は、映像ファイルに対する配信要求を受信すると、配信要求によって指定された時刻に該当する映像パケットの映像ファイルにおける位置をインデックスファイルから特定し、特定した映像パケットから配信を開始する。配信処理部14は、映像ファイル中で欠損パケットに相当する映像パケットは、対応する補完ファイルから読み出す。配信処理部14は、「配信部」の一例である。
【0044】
削除処理部15は、自装置が作成した映像ファイルと、該映像ファイルの冗長データである他の装置が作成した映像ファイルとのうち、映像品質の劣る方の映像ファイル、インデックスファイル、ハッシュデータ、補完ファイルを削除する。ただし、削除処理部15は、蓄積サーバA、Bのうち、マスタに設定された一台の蓄積サーバに備えられており、マスタ以外の蓄積サーバには備えられない。第1実施形態では、映像品質の優劣は、欠損パケットの連続する回数で判定される。削除処理部15は、「削除部」の一例である。
【0045】
ファイルサーバ2のハードウェア構成は、蓄積サーバ1のハードウェア構成とほぼ同様であり、CPU、主記憶装置、補助記憶装置、ネットワークインタフェースを含む。ファイルサーバ2は、蓄積サーバ1からの要求に応じて、ファイル等のデータの読み出し、書き込みを行う。
【0046】
ファイルサーバ2は、蓄積サーバ1と同じ拠点に設置されていてもよいし、異なる拠点に設置されていてもよい。データセンタ62には複数のファイルサーバ2が設置されており、蓄積サーバ1がいずれのファイルサーバ2を利用するかは、予め管理者によって設定されている。
【0047】
第1実施形態では、ファイルサーバ2の補助記憶装置には、映像ファイル、インデックスファイル、ハッシュデータ、補完ファイルが蓄積サーバ1によって格納され、セットで
保持される。映像ファイル、インデックスファイル、ハッシュデータ、補完ファイルは、第1実施形態では、共通のファイル名を有することで紐づけられる。ファイル名は、例えば、映像ファイルが1時間の時間長で、各時間帯単位で作成される場合には、映像の録画された日付と時間帯を示すように付与される。また、映像ファイル、インデックスファイル、ハッシュデータ、補完ファイルは、それぞれ、異なる拡張子を有し、該拡張子でいずれのファイルであるかを判別可能となっている。
【0048】
ただし、映像ファイル、インデックスファイル、ハッシュデータ、補完ファイルの紐づけ方はこれに限られない。また、ファイル名の付与方法も、これに限られない。
【0049】
図6は、映像データを伝送するRTPパケットの構成を示す図である。RTPパケットのペイロード部には、複数のTS(TranSport)パケットが格納される。TSパケットは
、例えば、定点カメラから入力された映像データが、エンコーダ50によってMPEGでエンコードされて作成されるパケットである。TSパケットは、「映像パケット」の一例である。
【0050】
TSパケットのサイズは、例えば、MPEG−2では、188バイトである。また、TSパケットにタイムスタンプが付与される場合には、TSパケットのサイズは、192バイトとなり、TTS(Timestamped TS)パケットと称される。TTSパケットのタイムスタンプは、エンコーダ50によって該TTSパケットが作成された時刻を表す。第1実施形態では、エンコーダ50によってタイムスタンプが付与されるTTSパケットが用いられることとする。以降、TSパケットとTTSパケットとは、特に区別せずに、TSパケットと称する。TSパケットとTTSパケットとが区別されて扱われる場合には、TTSパケットと区別して表記する。
【0051】
IPパケットのMTU(Maximum Transmission Unit)は1500バイトであるので、
1つのRTPパケットには、理論上、最大7つまでTTSパケットを格納することができる。なお、RTPパケットに格納されるTTSパケットの上限個数は、管理者が任意に設定可能である。
【0052】
タイムスタンプは、TSパケットの先頭に付与されている。TSパケットのヘッダに含まれる情報の一つに、シーケンス番号がある。TSパケットのシーケンス番号は、MPEG−2では、4バイトの巡回カウンタによって示される。巡回カウンタは、値が1ずつ増加し、最大値16(0x1111)となると、値が0(0x0000)に戻る。
【0053】
映像データの伝送途中で1つのRTPパケットが損失されると、該RTPパケットに格納されている複数のTSパケットも損失される。1つのRTPパケットに6個のTSパケットが含まれる場合には、1つのRTPパケットが損失されると6つのTSパケットが損失される。そのため、映像ファイル内の該欠損パケットの前後のTSパケットのシーケンス番号は、例えば、0から7と、6つ飛ぶこととなる。このように、シーケンス番号の不連続性によって、パケット損失を検出することができる。
【0054】
図7は、蓄積部11の映像ファイルの作成処理の一例を示す図である。蓄積部11は、ファイル出力バッファ11Mを含む。ファイル出力バッファ11Mのサイズは、所定時間長分のTSパケットを格納できるサイズである。例えば、ファイル出力バッファ11Mのサイズは、30秒分のTSパケットを格納できるサイズである。
【0055】
蓄積部11は、RTPパケットを受信すると、RTPパケットのペイロード部に格納されるTSパケットをシーケンス番号順にファイル出力バッファ11Mに格納する。ファイル出力バッファ11Mが満杯になると、蓄積部11は、ファイル出力バッファ11Mに格
納されているTSパケットを、ファイルサーバ2内の最新の映像ファイルの末尾にシーケンス番号順に追加する。最新の映像ファイルのサイズが最大時間長に達すると、蓄積部11は、新たに映像ファイルを作成し、以降は、新たに作成された映像ファイルが最新の映像ファイルとして取り扱われる。
【0056】
図8は、インデックスファイルの構成の一例を示す図である。インデックスファイルには、蓄積情報と、TS情報と、が含まれる。
【0057】
蓄積情報は、インデックスファイルに対応する映像ファイル全体の情報である。蓄積情報には、例えば、インデックスファイルに対応する映像ファイルに含まれるTSパケットの数と、該映像ファイルのサイズとが含まれる。蓄積情報に含まれるファイルのサイズは、バイト単位である。
【0058】
TS情報は、インデックスファイルに対応する映像ファイルに含まれるTSパケットに関する情報である。TS情報は、1つのTSパケットにつき1つ作成される。すなわち、TS情報は、インデックスファイル内に、対応する映像ファイルに含まれるTSの数分存在する。TS情報には、例えば、TS時間、シーケンス番号、オフセット、タイムスタンプが含まれる。
【0059】
TS情報に含まれるTS時間は、TSパケットの、インデックスファイルに対応する映像ファイルの先頭を基点とする再生開始時間である。TS時間は、例えば、ミリ秒単位である。
【0060】
TS情報に含まれるシーケンス番号は、TSパケットのヘッダ内に含まれるシーケンス番号の値である。TS情報に含まれるオフセットは、インデックスファイルに対応する映像ファイルの先頭から該TSパケットまでのバイト数である。
【0061】
TS情報に含まれるタイムスタンプは、TSパケットの先頭に付与されているタイムスタンプの値である。エンコーダ50と蓄積サーバ1とでクロックの周波数が異なる場合には、タイムスタンプの値は、蓄積サーバ1のクロックの周波数の単位に変換される。
【0062】
インデックスファイルは、ファイルサーバ2内の映像ファイルへのTSパケットの書き込みの際に、蓄積部11によって作成及び更新される。
【0063】
図9は、補完処理部13、配信処理部14の処理の一例を示す図である。
図9では、
図2の蓄積サーバAが、ファイルBを用いてファイルAの欠損パケットを補完する場合の例が示される。
図9では、TSパケットのシーケンス番号は、便宜的に、#1、#2、…のように表記されている。
【0064】
補完処理部13は、ファイルAのインデックスファイル内のTSパケットのシーケンス番号の不連続により、欠損パケットを特定する。
図9に示されるファイルAでは、TSパケット#2の次がTSパケット#5となり、シーケンス番号が不連続である。これより、TSパケット#3、#4の欠損が特定される。
【0065】
補完処理部13は、ファイルBのインデックスファイルを参照し、ファイルAの欠損パケットであるTSパケット#3、#4がファイルBにあるかを判定する。
図9に示される例では、ファイルBには、TSパケット#3、#4が存在する。補完処理部13は、ファイルBのインデックスファイルからTSパケット#23、#4のオフセットを取得し、ファイルB内の該オフセットが示す位置からTSパケット#3、#4を取得する。
【0066】
補完処理部13は、ファイルBから取得したTSパケット#3、#4を補完ファイルに追加する。なお、補完処理部13は、処理バッファを有しており、ファイルAの欠損パケットの補完のためにファイルBから取得したTSパケットを処理バッファに格納する。補完処理部13は、処理バッファが満杯になった場合、又は、対象の映像ファイルの補完処理が終了した場合に、処理バッファ内のTSパケットを補完ファイルに格納する。
【0067】
配信処理部13は、ファイルAを配信する場合には、ファイルA内の配信要求の指定時刻のTSパケットから読み出しを開始する。例えば、配信処理部13は、TSパケット#1から読み出し開始した場合、インデックスファイルを参照し、次に読み出すTSパケット#2がファイルA内にあることを検出し、TSパケット#2をファイルAから読み出す。次に、配信処理部13は、インデックスファイルを参照し、次に読み出すTSパケット#3がファイルA内にないことを検出し、TSパケット#3を補完ファイルから読み出す。TSパケット#4も同様に、補完ファイルから読み出される。
【0068】
ファイルBから取得したパケットをファイルAの欠損パケットの位置に挿入することで、ファイルAの補完を行う場合には、ファイルAを書き換える処理となるため、蓄積サーバAの処理負荷が大きくなるおそれがある。映像ファイルとは別に補完ファイルが作成されることによって、欠損パケットの読み出し先を補完ファイルに変更することでファイルAの補完を行うことができ、ファイルAを書き換える処理よりも蓄積サーバ1に係る負荷を少なくすることができる。
【0069】
<処理の流れ>
図10は、蓄積サーバ1の蓄積部11の処理のフローチャートの一例である。
図10に示される処理は、例えば、蓄積部11がRTPパケットを受信すると開始される。
【0070】
OP1では、蓄積部11は、受信RTPパケットに含まれるTSパケットと、直前のRTPパケットに含まれるTSパケットとのシーケンス番号に基づいて、RTPパケットの損失があるか否かを判定する。RTPパケットの損失が検出された場合には(OP1:YES)、処理がOP2に進む。RTPパケットの損失が検出されない場合には(OP1:NO)、処理がOP3に進む。
【0071】
OP2では、蓄積部11は、RTPパケットの損失が検出されたので、エラー訂正を行う。なお、第1実施形態では、エンコーダ50は、所定の誤り訂正符号方式を用いてデータ送信を行っており、蓄積部11は、該所定の誤り訂正符号方式に従って、欠損パケットの復元を行うことが可能である。誤り訂正符号方式は、特定のものに限定されず、公知の方式のいずれであってもよい。なお、例えば、パケット損失が多発するような場合には、OP2におけるエラー訂正において、欠損パケットが復元されない場合もある。次に処理がOP3に進む。
【0072】
OP3では、蓄積部11は、受信したRTPパケットからTSパケットを抽出して、ファイル出力バッファ11Mに追加する。OP2のエラー訂正によって欠損パケットが復元されている場合には、蓄積部11は、復元されたRTPパケットから抽出されるTSパケットもファイル出力バッファ11Mに追加する。次に処理がOP4に進む。
【0073】
OP4では、蓄積部11は、ファイル出力バッファ11Mの空きがあるか否かを判定する。例えば、ファイル出力バッファ11Mの空き容量に閾値を設定し、ファイル出力バッファの空き容量が該閾値未満である場合に、蓄積部11は、ファイル出力バッファ11Mの空きがないことを判定する。ファイル出力バッファ11Mの空き容量の閾値は、例えば、3000バイト以上の値に設定される。IPパケットの最大長が1500バイトであることと、受信パケットに加えてOP2のエラー訂正により復元されるパケットもファイル
出力バッファ11Mに追加されることがあるからである。ただし、ファイル出力バッファ11Mの空き容量の閾値は、管理者が任意に設定可能であり、限定されない。
【0074】
ファイル出力バッファ11Mの空きがある場合には(OP4:YES)、
図10に示される処理が終了する。ファイル出力バッファ11Mの空きがない場合には(OP4:NO)、処理がOP5に進む。
【0075】
OP5では、蓄積部11は、ファイル出力バッファ11Mに格納されているTSパケットをファイルサーバ2内の最新の映像ファイルに追加する。例えば、最新の映像ファイルのサイズが所定の時間長となる場合には、蓄積部11は、新たに映像ファイルを作成する。次に処理がOP6に進む。
【0076】
OP6では、蓄積部11は、OP5においてTSパケットを追加した映像ファイルのハッシュデータを作成する。既存の映像ファイルについては、該映像ファイルに対応するハッシュデータの上書き処理となる。新たに作成された映像ファイルについては、ハッシュデータの作成処理となる。次に処理がOP7に進む。
【0077】
OP7では、蓄積部11は、OP5においてTSパケットを追加した映像ファイルのインデックスファイルを作成する。既存の映像ファイルについては、該映像ファイルに追加したTSパケットのTS情報を該映像ファイルに対応するインデックスファイルに追加する処理となる。新たに作成された映像ファイルについては、インデックスファイルの作成処理となる。その後、
図10に示される処理が終了する。
【0078】
なお、
図10に示される処理は一例であって、適宜、処理の実行順の変更や、処理の追加、削除等も可能である。例えば、OP6とOP7との処理の実行順は逆であってもよい。また、エンコーダ50が誤り符号訂正処理を行わずにデータ送信する場合には、OP1、OP2の処理は実行されなくともよい。
【0079】
図11は、蓄積サーバ1の中間処理部12の処理のフローチャートの一例である。
図11に示されるフローチャートは、所定の周期で最新の映像ファイルに対して実行されてもよいし、所定のイベントの発生時に実行されてもよい。
図11のフローチャートが周期的に実行される場合の実行周期は、映像ファイルの上限時間長よりも小さい値となる。また、
図11のフローチャートの実行契機となる所定のイベントは、例えば、映像ファイルが上限時間長になり、次の新しい映像ファイルが作成されることである。
【0080】
OP11では、中間処理部12は、比較対象のハッシュデータをそれぞれ対応するファイルサーバ2から読み込む。例えば、
図2のシステムにおいて、蓄積サーバA及び蓄積サーバBの双方とも、ファイルA、Bに対応するハッシュデータを読み込む。次に処理がOP12に進む。
【0081】
OP12では、中間処理部12は、比較対象のハッシュデータが一致するか否かを判定する。比較対象のハッシュデータが一致する場合には(OP12:YES)、
図11に示される処理が終了する。比較対象のハッシュデータが一致しない場合には(OP12:NO)、処理がOP13に進む。
【0082】
OP13では、中間処理部12は、比較対象のハッシュデータが一致しないので、自装置の管理している方の映像データについて、補完処理を行うことを判定し、補完処理部13を呼び出す。その後、
図11に示される処理が終了する。
【0083】
図12は、蓄積サーバ1の補完処理部13の処理のフローチャートの一例である。
図1
2に示されるフローチャートは、補完処理部13が中間処理部12によって呼び出されると開始される。なお、
図12に示されるフローチャートは、説明の便宜上、
図2の蓄積サーバAを主体に想定している。
【0084】
OP21では、補完処理部13は、比較対象のインデックスファイルを読み込む。蓄積サーバAの補完処理部13は、ファイルA、Bのインデックスファイルを読み込む。次に処理がOP22に進む。
【0085】
OP22からOP28の処理は、蓄積サーバ1の管理対象の映像ファイル、すなわち、蓄積サーバAの管理対象であるファイルAに含まれるTSパケットの数分繰り返し実行される。
【0086】
OP22では、補完処理部13は、ファイルAのインデックスファイルを参照し、処理対象のTSパケットのシーケンス番号がファイルA内の直前のTSパケットのシーケンス番号から連続する値であるか否かを判定する。処理対象のTSパケットのシーケンス番号がファイルA内の直前のTSパケットのシーケンス番号から連続する値である場合には(OP22:NO)、パケットの欠損は検出されず、ファイルA内の次のTSパケットについて、OP22から処理が開始される。
【0087】
処理対象のTSパケットのシーケンス番号がファイルA内の直前のTSパケットのシーケンス番号から連続しない値である場合には(OP22:YES)、パケットの欠損が検出され、処理がOP23に進む。
【0088】
OP23では、補完処理部13は、ファイルA内の処理対象のTSパケットのシーケンス番号とファイルA内の直前のTSパケットのシーケンス番号との間の、欠損しているシーケンス番号を特定する。欠損しているシーケンス番号を、以降、欠損シーケンス番号と称する。なお、伝送中のパケット損失の場合には、RTPパケットが損失されるので、複数のTSパケットが損失される。そのため、OP23では、損失されたRTPパケットに含まれるTSパケットの数分のシーケンス番号が欠損シーケンス番号として特定される。次に処理がOP24に進む。
【0089】
OP24では、補完処理部13は、ファイルAの欠損シーケンス番号がファイルBのインデックスファイル中にあるか否かを判定する。ファイルAの欠損シーケンス番号がファイルBのインデックスファイル中にある場合には(OP24:YES)、処理がOP25に進む。ファイルAの欠損シーケンス番号がファイルBのインデックスファイル中にない場合には(OP24:NO)、OP23で特定されたファイルAの欠損シーケンス番号の映像パケットをファイルBから補完することができないので、ファイルA内の次のTSパケットについてOP22へと処理が進む。
【0090】
OP25では、補完処理部13は、ファイルBからOP23で特定したファイルAの欠損シーケンス番号に該当するTSパケットを取得する。ファイルB内の欠損シーケンス番号に該当するTSパケットの位置は、ファイルBのインデックスファイルの該当TS情報内のオフセットから取得される。次に処理がOP26に進む。
【0091】
OP26では、補完処理部13は、処理バッファにOP25で取得したTSパケットを追加する。次に処理がOP27に進む。
【0092】
OP27では、補完処理部13は、処理バッファに空きがあるか否かを判定する。例えば、処理バッファの空き容量に閾値を設定し、処理バッファの空き容量が該閾値未満である場合に、補完処理部13は、処理バッファの空きがないことを判定する。処理バッファ
に空きがある場合には(OP27:YES)、ファイルA内の次のTSパケットについてOP22へと処理が進む。処理バッファに空きがない場合には(OP27:NO)、処理がOP28に進む。
【0093】
OP28では、補完処理部13は、ファイルサーバA内のファイルAの補完ファイルに処理バッファに格納されているTSパケットを追加する。その後、ファイルA内の次のTSパケットについてOP22へと処理が進む。
【0094】
図13A、
図13Bは、蓄積サーバ1の配信処理部14の処理のフローチャートの一例である。
図13に示されるフローチャートは、蓄積サーバ1が再生開始時刻の指定を含む配信要求を受信すると開始される。配信要求に含まれる指定された再生開始時刻を、以降、指定時刻と称する。
【0095】
OP31では、配信処理部14は、配信対象の映像ファイルに対応するインデックスファイルを読み込む。なお、映像ファイルに含まれる映像データの少なくとも記録開始の時刻の情報は、メタデータとして保持されており、指定時刻と該映像データの記録開始の時刻の情報とから配信対象の映像ファイルを特定可能である。次に処理がOP32に進む。
【0096】
OP32では、配信処理部14は、配信対象の映像ファイルに対応するインデックファイル内のTS時間に基づいて、指定時刻に対応する該映像ファイルの読み込み位置を特定する。TS時間は、TSパケットの映像ファイルの先頭からの再生開始時間を示す。配信処理部14は、指定時刻と映像ファイルの開始時刻との差分の時間長とインデックスファイル内のTS時間の値とが合致又はほぼ合致するTSパケットのオフセットを読み込み位置として特定する。次に処理がOP33に進む。
【0097】
OP33では、配信処理部14は、OP32で特定した映像ファイルの読み込み位置に指定時刻のデータがあるか否かを判定する。この判定は、映像ファイルのインデックスファイル内のTSパケットのタイムスタンプに基づいて行われる。映像ファイル内に指定時刻のタイムスタンプを有するTSパケットがある場合には(OP33:YES)、配信処理部14は、該TSパケットを取得し、処理がOP36に進む。映像ファイル内に指定時刻のタイムスタンプを有するTSパケットがない場合には(OP33:NO)、処理がOP34に進む。
【0098】
OP34では、配信処理部14は、映像ファイル内に指定時刻のタイムスタンプを有するTSパケットがないので、該映像ファイルに対応する補完ファイルを参照し、補完ファイル内に指定時刻のタイムスタンプを有するTSパケットがあるか否かを判定する。補完ファイル内に指定時刻のタイムスタンプを有するTSパケットがある場合には(OP34:YES)、配信処理部14は補完ファイルから該当のTSパケットを取得し、処理がOP36に進む。補完ファイル内に指定時刻のタイムスタンプを有するTSパケットがない場合には(OP34:NO)、処理がOP35に進む。
【0099】
OP35では、配信処理部14は、映像ファイル内に指定時刻の次の時刻に該当するTSパケットがあるか否かを判定する。映像ファイル内に指定時刻の次の時刻に該当するTSパケットがない場合には(OP35:NO)、処理がOP34に戻り、配信処理部14は、補完ファイルを参照する。映像ファイル内に指定時刻の次の時刻に該当するTSパケットがある場合には(OP35:YES)、配信処理部14は、該TSパケットを取得し、処理がOP36に進む。
【0100】
OP36では、配信処理部14は、取得したTSパケットを送信バッファに出力する。送信バッファは、主記憶装置102に作成されるFIFO(First In First Out)キュー
である。次に処理がOP37に進む。
【0101】
OP37からOP39は、OP36において送信バッファに出力されたTSパケットの次のシーケンス番号を有するTSパケット以降のTSパケットについて繰り返し実行される処理である。
【0102】
OP37では、配信処理部14は、映像ファイル内に該当シーケンス番号のデータがあるか否かを判定する。この判定は、映像ファイル内のTSパケットのヘッダ内のシーケンス番号に基づいて行われる。映像ファイル内に該当シーケンス番号のTSパケットがある場合には(OP37:YES)、配信処理部14は、該TSパケットを取得し、処理がOP39に進む。映像ファイル内に該当シーケンス番号のTSパケットがない場合には(OP37:NO)、処理がOP38に進む。
【0103】
OP38では、配信処理部14は、映像ファイル内に該当シーケンス番号のTSパケットがないので、該映像ファイルに対応する補完ファイルを参照し、該当シーケンス番号のTSパケットがあるか否かを判定する。補完ファイル内に該当シーケンス番号のTSパケットがある場合には(OP38:YES)、配信処理部14は補完ファイルから該当のTSパケットを取得し、処理がOP39に進む。補完ファイル内に該当シーケンス番号のTSパケットがない場合には(OP38:NO)、処理がOP37に進み、該当シーケンス番号の次のシーケンス番号のTSパケットについて処理が行われる。
【0104】
OP39では、配信処理部14は、取得したTSパケットを送信バッファに出力する。処理がOP37に進み、該当シーケンス番号の次のシーケンス番号のTSパケットについて処理が行われる。OP37からOP39の処理は、配信要求元から配信停止要求を受信するまで繰り返し実行される。
【0105】
図13A、
図13Bの処理は、送信バッファにTSパケットを出力する処理である。配信処理部14は、送信バッファからTSパケットを読み出し、配信要求元に送信する処理も行う。送信バッファからTSパケットを読み出し、配信要求元に送信する処理では、配信処理部14は、インデックスファイルのタイムスタンプに基づいて、データ送出タイミングを合わせて、TSパケットを順に送信する。
【0106】
図14は、蓄積サーバ1の削除処理部15の処理のフローチャートの一例である。
図14に示される処理は、例えば、所定の周期で実行される。所定の周期は、例えば、一時間に一回、一日に一回等であり、管理者によって任意に設定される。なお、
図14に示される処理は、マスタに設定されている蓄積サーバ1によって実行される処理である。
図14では、説明の便宜上、
図2のファイルA、ファイルBを削除対象として説明する。なお、削除対象となるのは、
図14の処理の実行開始時点で、冗長ファイルが存在する映像ファイルである。ただし、上限時間長に達していない最新のファイルについては、削除対象から削除されるものとする。
【0107】
OP41では、削除処理部15は、削除対象のファイルA、ファイルBのインデックファイルを読み込む。次に処理がOP42に進む。
【0108】
OP42では、削除処理部15は、ファイルA、ファイルB、それぞれについて、それぞれのインデックスファイルのシーケンス番号から、欠損パケット数を算出する。次に処理がOP43に進む。
【0109】
OP43では、削除処理部15は、ファイルAとファイルBとで、欠損パケット数が一致しているか否かを判定する。ファイルAとファイルBとで欠損パケット数が一致する場
合には(OP43:YES)、処理がOP46に進む。ファイルAとファイルBとで欠損パケット数が異なる場合には(OP43:NO)、処理がOP44に進む。
【0110】
OP44、OP45は、ファイルAとファイルBとで欠損パケット数が異なる場合の処理である。OP44では、削除処理部15は、ファイルA、ファイルB、それぞれについて、TSパケットが連続して欠損している回数を算出する。次に処理がOP45に進む。
【0111】
OP45では、削除処理部15は、TSパケットが連続して欠損している回数が多い方の映像ファイルと該映像ファイルの補完ファイルとを削除対象としてマークする。第1実
施形態では、TSパケットが連続して欠損している回数が多いほど、映像品質が劣る、とみなされるためである。すなわち、削除処理部15は、映像品質の良い方のファイルを残す。次に、処理がOP47に進む。
【0112】
OP46は、ファイルAとファイルBとで欠損パケット数が一致しているので、マスタである自装置が管理する映像ファイルと該映像ファイルの補完ファイルとを削除対象としてマークする。次に処理がOP47に進む。
【0113】
OP47では、削除処理部15は、ディスク使用率を確認し、ファイルを格納するファイルサーバ2へのアクセス待ちのキューであるアクセスキューのサイズが所定の閾値以下となった場合に、マークしたファイルを削除する。その後、
図14に示される処理が終了する。
【0114】
<第1実施形態の作用効果>
第1実施形態では、例えば、蓄積サーバAは、ファイルA内の欠損パケットを、ファイルAの冗長ファイルであるファイルBから取得し、ファイルAの補完ファイルを作成する。蓄積サーバBも同様に、ファイルB内の欠損パケットをファイルAから取得し、ファイルBの補完ファイルを作成する。これによって、ファイルA、ファイルBも、より欠損パケットが少なく、より映像品質のよいデータとなり、伝送途中のパケット損失の影響を低減することができる。これによって、映像データに対する信頼性を向上させることができる。
【0115】
また、蓄積サーバ1は、映像ファイルの欠損パケットの箇所に他の映像ファイルから取得した欠損パケットに対応する映像パケットを挿入するのではなく、映像ファイルとは別に補完ファイルを作成する。これによって、蓄積サーバ1に係る処理負荷の増加を抑えることができる。
【0116】
第1実施形態では、補完処理部13は、映像ファイルのハッシュデータが、冗長ファイルである他の映像ファイルのハッシュデータと一致した場合に、呼び出され、動作を開始する。これによって、両ファイルのハッシュデータが一致しない場合には補完処理部13は動作しないので、補完処理部13の稼働をより少なく抑えることができ、蓄積サーバ1に係る処理負荷を少なく抑えることができる。
【0117】
また、第1実施形態では、マスタに設定された蓄積サーバ1が、冗長する映像ファイルを削除することによって、映像ファイルの記憶に用いられる記憶容量を削減することができる。
【0118】
また、第1実施形態では、マスタに設定された蓄積サーバ1は、ディスク使用率のアクセスキューのサイズが閾値以下である場合に、冗長ファイルを削除するため、ファイル削除による他の処理への影響を抑えることができる。
【0119】
<その他>
第1実施形態では、エンコーダ50は、MPEGによって映像データをエンコードするが、これに限られず、MPEGに代えて、H265、H264等のTSパケットを用いる動画圧縮規格を用いてもよい。
【0120】
第1実施形態では、TSパケット単位で、欠損パケットの補完が行われるが、これに限られず、RTPパケット単位で欠損パケットの補完が行われてもよい。RTP単位で欠損パケットの補完が行われる場合には、インデックスファイルは、TSパケットに関する情報であるTS情報に代えて、RTPパケットに関するRTP情報を含む。RTP情報は、TS情報と同様に、映像ファイルの先頭からの再生開始時間、シーケンス番号、オフセット位置情報、タイムスタンプ等を含む。この場合には、RTPパケットは、「映像パケット」の一例となる。
【0121】
第1実施形態では、蓄積サーバA、蓄積サーバBの2台で冗長構成をとるシステムについて説明されたが、第1実施形態で説明された技術は、3台以上の蓄積サーバで冗長構成をとるシステムにも適用可能である。第1実施形態で説明された技術が、3台以上の蓄積サーバで冗長構成をとるシステムに適用される場合には、以下の通りとなる。
【0122】
図11に示される中間処理部12の処理では、比較対象のハッシュデータが3つ以上となる。
図11のOP12では、3つ以上の比較対象のハッシュデータのうち、1つでも一致しないハッシュデータがある場合には、補完処理部13が呼び出される。
【0123】
また、
図12の補完処理部13の処理は、例えば、蓄積サーバA、B、Cがあり、それぞれ、ファイルA、B、Cを管理する場合を想定すると、以下の通りとなる。蓄積サーバAは、ファイルAの欠損パケットが、ファイルB、ファイルCに存在するか否かを判定する。ファイルAの欠損パケットが、ファイルB、ファイルCの両方に存在する場合には、パケットが連続して欠損する回数の少ない方から欠損パケットに対応するTSパケットを取得する。ファイルAの欠損パケットが、ファイルB、ファイルCのいずれか一方に存在する場合には、ファイルAの欠損パケットを有するファイルから欠損パケットに対応するTSパケットを取得する。
【0124】
または、蓄積サーバAは、ファイルAとファイルB、ファイルAとファイルC、のそれぞれの組み合わせについて、
図12の処理を順に行ってもよい。例えば、1回目の
図12の処理の実行によって、蓄積サーバAは、ファイルAの欠損パケットをファイルBから取得し、2回目の
図12の処理の実行によって、蓄積サーバAは、ファイルBから取得されなかったファイルAの欠損パケットをファイルCから取得する。
【0125】
第1実施形態では、蓄積サーバ1が、蓄積部11、中間処理部12、補完処理部13、配信処理部14、削除処理部15の処理を行う。ただし、これに限られず、蓄積部11、中間処理部12、補完処理部13、配信処理部14、削除処理部15の処理は、それぞれ異なるサーバによって実行されてもよい。すなわち、映像データ蓄積システムは、蓄積部11、中間処理部12、補完処理部13、配信処理部14、削除処理部15にそれぞれ対応する、蓄積サーバ、中間処理サーバ、補完処理サーバ、配信サーバ、削除処理サーバを含む構成であってもよい。
【0126】
<記録媒体>
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【0127】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【0128】
以上の第1実施形態に関し、さらに以下の付記を開示する。
(付記1)
映像源から受信された映像パケットを含むファイルを作成するファイル作成部と、
前記作成されたファイルに含まれる各映像パケットの、シーケンス番号と該ファイルにおける位置を示すオフセット位置情報とを含むインデックスファイルを作成するインデックス作成部と、
前記作成されたファイルのインデックスファイルと、該作成されたファイルに含まれる映像パケットの経路とは異なる経路で前記映像源から受信された映像パケットを含む他のファイルのインデックスファイルと、に基づいて、前記作成された映像ファイルの映像パケットが欠損している場合に該映像パケットの欠損を補完する補完データを作成する補完データ作成部と、
を備える映像データ処理装置。
(付記2)
前記作成されたファイルに基づくハッシュデータを作成するハッシュデータ作成部と、
前記作成されたファイルと前記他のファイルとのハッシュデータを比較する比較部と、をさらに備え、
前記補完データ作成部は、前記ハッシュデータが一致しない場合に、前記補完データの作成を行う、
付記1に記載の映像データ処理装置。
(付記3)
前記補完データ作成部は、前記補完データを、前記作成されたファイルとは異なるファイルとして保持する、
付記1又は2に記載の映像データ処理装置。
(付記4)
前記作成されたファイルから映像パケットを読み出し、前記作成されたファイルの欠損している映像パケットを前記補完データから読み出して、読み出した映像パケットを所定の宛先に送信する配信部、
をさらに備える付記1から3のいずれか一つに記載の映像データ処理装置。
(付記5)
前記映像パケットは作成された時刻のタイムスタンプを有し、
前記インデックス作成部は、各映像パケットのタイムスタンプも含む前記インデックスファイルを作成し、
前記配信部は、前記インデックスファイルに基づいて、前記作成されたファイル内の配信要求によって指定された時刻に該当する映像パケットの位置を特定し、特定した位置の映像パケットから送信を行う、
付記4に記載の映像データ処理装置。
(付記6)
前記作成されたファイルと前記他のファイルとのうち、映像品質の劣る方のファイルを削除する削除部、
をさらに備える付記1から5のいずれか一つに記載の映像データ処理装置。
(付記7)
前記削除部は、前記インデックスファイルから、前記作成されたファイルと前記他のファイルとのぞれぞれの映像パケットが連続して欠損している回数を算出し、前記映像パケットが連続して欠損している回数が多い方を、映像品質の劣る方として、削除する、
付記6に記載の映像データ処理装置。
(付記8)
前記映像パケットは、UDPを用いて送信される、
付記1から7のいずれか一つに記載の映像データ処理装置。
(付記9)
前記映像パケットは、所定の映像圧縮又は伸張方式によって、映像源によって取得された映像データがエンコードされて作成されたものである、
付記1から8のいずれか一つに記載の映像データ処理装置。
(付記10)
映像源から受信された映像パケットを含むファイルを作成するファイル作成部と、
前記作成されたファイルに含まれる各映像パケットの、シーケンス番号と該ファイルにおける位置を示すオフセット位置情報とを含むインデックスファイルを作成するインデックス作成部と、
前記作成されたファイルのインデックスファイルと、該作成されたファイルに含まれる映像パケットの経路とは異なる経路で前記映像源から受信された映像パケットを含む他のファイルのインデックスファイルと、に基づいて、前記作成された映像ファイルの映像パケットが欠損している場合に該映像パケットの欠損を補完する補完データを作成する補完データ作成部と、
を備える映像データ処理システム。
(付記11)
コンピュータが、
映像源から受信された映像パケットを含むファイルを作成し、
前記作成されたファイルに含まれる各映像パケットの、シーケンス番号と該ファイルにおける位置を示すオフセット位置情報とを含むインデックスファイルを作成し、
前記作成されたファイルのインデックスファイルと、該作成されたファイルに含まれる映像パケットの経路とは異なる経路で前記映像源から受信された映像パケットを含む他のファイルのインデックスファイルと、に基づいて、前記作成された映像ファイルの映像パケットが欠損している場合に該映像パケットの欠損を補完する補完データを作成する、
映像データ処理方法。
(付記12)
コンピュータが、
映像源から受信された映像パケットを含むファイルを作成し、
前記作成されたファイルに含まれる各映像パケットの、シーケンス番号と該ファイルにおける位置を示すオフセット位置情報とを含むインデックスファイルを作成し、
前記作成されたファイルのインデックスファイルと、該作成されたファイルに含まれる映像パケットの経路とは異なる経路で前記映像源から受信された映像パケットを含む他のファイルのインデックスファイルと、に基づいて、前記作成された映像ファイルの映像パケットが欠損している場合に該映像パケットの欠損を補完する補完データを作成する、
ための映像データ処理プログラム。