(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-29
(45)【発行日】2022-12-07
(54)【発明の名称】情報処理装置、情報処理プログラムおよび分析方法
(51)【国際特許分類】
G06F 16/17 20190101AFI20221130BHJP
G06F 16/182 20190101ALI20221130BHJP
G06F 3/06 20060101ALI20221130BHJP
H04N 19/46 20140101ALI20221130BHJP
H04N 21/218 20110101ALI20221130BHJP
【FI】
G06F16/17 100
G06F16/182 100
G06F3/06 301J
H04N19/46
H04N21/218
(21)【出願番号】P 2018218053
(22)【出願日】2018-11-21
【審査請求日】2021-08-10
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】岩田 聡
(72)【発明者】
【氏名】田村 雅寿
【審査官】原 秀人
(56)【参考文献】
【文献】特開2003-134435(JP,A)
【文献】特開2016-076100(JP,A)
【文献】特開2007-124575(JP,A)
【文献】特開2016-005238(JP,A)
【文献】特開2009-088671(JP,A)
【文献】米国特許出願公開第2015/0088828(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 3/06
H04N 19/46
H04N 21/218
(57)【特許請求の範囲】
【請求項1】
時系列に符号化された複数のフレームを含むメディアデータのうちのキーフレームの位置を示すオフセット情報を記憶する記憶部と、
前記メディアデータを所定サイズ単位に分割した複数の分割データを取得し、前記オフセット情報に基づいて、分割データの先頭位置に最も近い
第1キーフレーム
であって、前記分割データおよび前記分割データの直前の分割データの中から特定される前記第1キーフレームの第1の位置と、前記分割データの末尾位置に最も近い
第2キーフレーム
であって、前記分割データおよび前記分割データの直後の分割データの中から特定される前記第2キーフレームの第2の位置と、を分割データ毎に特定し、前記先頭位置と前記第1の位置との間のデータを示す第1の差分情報と、前記末尾位置と前記第2の位置との間のデータを示す第2の差分情報と、を分割データ毎に生成し、前記第1の差分情報と前記第2の差分情報とを前記分割データに適用して得られる部分メディアデータの復号に用いられるメタデータを、分割データ毎に生成し、前記複数の分割データを複数のノードに配置し、前記分割データに対応する前記第1の差分情報と前記第2の差分情報と前記メタデータとを当該分割データと同じノードに配置する処理部と、
を有する情報処理装置。
【請求項2】
前記処理部は、前記メディアデータの分析指示を受け付けると、自ノードに配置された前記分割データと前記第1の差分情報と前記第2の差分情報と前記メタデータとに基づく前記部分メディアデータの生成および前記部分メディアデータの分析を前記複数のノードに実行させ、前記複数のノードから前記分析の結果を取得する、
請求項1記載の情報処理装置。
【請求項3】
前記処理部は、前記メディアデータの取得指示を受け付けると、前記複数のノードから前記複数の分割データを取得し、前記複数の分割データを結合することで前記メディアデータを復元する、
請求項2記載の情報処理装置。
【請求項4】
前記第1の差分情報は、前記メディアデータにおける前記分割データの前記先頭位置が前記第1の位置よりも前の場合、前記先頭位置から前記第1の位置の直前までの削除対象データのサイズであり、前記先頭位置が前記第1の位置よりも後の場合、前記メディアデータのうち前記第1の位置から前記先頭位置の直前までの追加対象データである、
請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項5】
前記第2の差分情報は、前記メディアデータにおける前記分割データの前記末尾位置が前記第2の位置よりも前の場合、前記メディアデータのうち前記末尾位置の直後から前記第2の位置の直前までの追加対象データであり、前記末尾位置が前記第2の位置よりも後の場合、前記第2の位置から前記末尾位置までの削除対象データのサイズである、
請求項1乃至4の何れか1項に記載の情報処理装置。
【請求項6】
前記第2の差分情報は、前記分割データの前記末尾位置が前記メディアデータの末尾に対応する場合、当該分割データの前記末尾位置に対して、差分のデータなしを示す、
請求項1乃至5の何れか1項に記載の情報処理装置。
【請求項7】
コンピュータに、
時系列に符号化された複数のフレームを含むメディアデータを所定サイズ単位に分割した複数の分割データを取得し、
前記メディアデータのうちのキーフレームの位置を示すオフセット情報に基づいて、分割データの先頭位置に最も近い
第1キーフレーム
であって、前記分割データおよび前記分割データの直前の分割データの中から特定される前記第1キーフレームの第1の位置と、前記分割データの末尾位置に最も近い
第2キーフレーム
であって、前記分割データおよび前記分割データの直後の分割データの中から特定される前記第2キーフレームの第2の位置と、を分割データ毎に特定し、
前記先頭位置と前記第1の位置との間のデータを示す第1の差分情報と、前記末尾位置と前記第2の位置との間のデータを示す第2の差分情報と、を分割データ毎に生成し、
前記第1の差分情報と前記第2の差分情報とを前記分割データに適用して得られる部分メディアデータの復号に用いられるメタデータを、分割データ毎に生成し、
前記複数の分割データを複数のノードに配置し、前記分割データに対応する前記第1の差分情報と前記第2の差分情報と前記メタデータとを当該分割データと同じノードに配置する、
処理を実行させる情報処理プログラム。
【請求項8】
情報処理装置が、
時系列に符号化された複数のフレームを含むメディアデータを所定サイズ単位に分割した複数の分割データを取得し、
前記メディアデータのうちのキーフレームの位置を示すオフセット情報に基づいて、分割データの先頭位置に最も近い
第1キーフレーム
であって、前記分割データおよび前記分割データの直前の分割データの中から特定される前記第1キーフレームの第1の位置と、前記分割データの末尾位置に最も近い
第2キーフレーム
であって、前記分割データおよび前記分割データの直後の分割データの中から特定される前記第2キーフレームの第2の位置と、を分割データ毎に特定し、
前記先頭位置と前記第1の位置との間のデータを示す第1の差分情報と、前記末尾位置と前記第2の位置との間のデータを示す第2の差分情報と、を分割データ毎に生成し、
前記第1の差分情報と前記第2の差分情報とを前記分割データに適用して得られる部分メディアデータの復号に用いられるメタデータを、分割データ毎に生成し、
前記複数の分割データを複数のノードに配置し、前記分割データに対応する前記第1の差分情報と前記第2の差分情報と前記メタデータとを当該分割データと同じノードに配置し、
前記複数のノードのそれぞれが、
自ノードに配置された前記分割データと前記第1の差分情報と前記第2の差分情報と前記メタデータとに基づいて、復号可能な前記部分メディアデータを生成し、前記部分メディアデータに対する分析を行う、
分析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は情報処理装置、情報処理プログラムおよび分析方法に関する。
【背景技術】
【0002】
大規模データに対する分析などの処理を行う情報処理システムが利用されている。処理対象となる大規模データとして、例えば動画や音声などを含むメディアデータが挙げられる。例えば、情報処理システムは、動画データを分析することで、動画データを再生した際に描画される物体の形状の認識や動きの認識を行うことがある。
【0003】
ところで、情報処理システムではデータを複数のノードに分散して格納することがある。例えば、分割しても意味が損なわれない意味的に分割可能なデータをストレージから読み出して分割し、分割された分割データのそれぞれを別々のノードに格納させる分散格納システムの提案がある。
【0004】
また、複数のデータを含む複数のファイルの各々を、複数のグリッドコンピュータに配置することによって、ファイルを処理するジョブをグリッドコンピュータに実行させるジョブ管理計算機の提案もある。
【0005】
なお、現ファイルと新ファイルで異なる部分だけを差分ファイルとして抽出して、これをバックアップファイルとして保存することにより、ディスク領域の増大を防止するとともに、旧版ファイルのファイルを復元可能とするファイル管理装置の提案もある。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2009-259007号公報
【文献】特開2011-103106号公報
【文献】特開2001-14194号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
複数のノードにメディアデータを分割して配置するとともに、複数のノードのそれぞれにより、メディアデータの各部に対し、分析などの所定処理を分散して実行可能にすることが考えられる。ただし、メディアデータは、先頭や末尾などの所定位置に復号用のメタデータを備えていることがあり、単純に分割しただけでは部分単位での復号を行えないことがある。
【0008】
そこで、メディアデータを、単独で復号可能な形式の複数のサブメディアデータ(メディアデータを幾つかの時間間隔で分割し、分割後のデータに復号用メタデータを付与したもの)に予め編集し、複数のノードに配置することが考えられる。しかし、この場合、元のメディアデータを得たいときは、各サブメディアデータから復号用メタデータを除去するなどの編集処理を行い、当該編集処理後の各データを結合して元のメディアデータを復元することになる。このため、元のメディアデータを得るまでに時間がかかる。
【0009】
一方、上記複数のサブメディアデータとともに、元のメディアデータを単純に分割した分割データを、複数のノードに配置しておくことも考えられる。この場合、元のメディアデータを得るには、各分割データを結合すればよく、復号用メタデータの除去などの編集処理を実行しなくてよいので、元のメディアデータを取得するための時間の短縮が見込める。しかし、この方法では、各ノードは、サブメディアデータと分割データとを両方保持することになり、各ノードの記憶容量の利用効率が低下する。
【0010】
1つの側面では、本発明は、記憶容量の利用効率の低下を抑えてメディアデータに対する分散処理を可能にする情報処理装置、情報処理プログラムおよび分析方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
1つの態様では、情報処理装置が提供される。この情報処理装置は、記憶部と処理部とを有する。記憶部は、時系列に符号化された複数のフレームを含むメディアデータのうちのキーフレームの位置を示すオフセット情報を記憶する。処理部は、メディアデータを所定サイズ単位に分割した複数の分割データを取得し、オフセット情報に基づいて、分割データの先頭位置に最も近い第1キーフレームであって、当該分割データおよび当該分割データの直前の分割データの中から特定される第1キーフレームの第1の位置と、分割データの末尾位置に最も近い第2キーフレームであって、当該分割データおよび当該分割データの直後の分割データの中から特定される第2キーフレームの第2の位置と、を分割データ毎に特定し、先頭位置と第1の位置との間のデータを示す第1の差分情報と、末尾位置と第2の位置との間のデータを示す第2の差分情報と、を分割データ毎に生成し、第1の差分情報と第2の差分情報とを分割データに適用して得られる部分メディアデータの復号に用いられるメタデータを、分割データ毎に生成し、複数の分割データを複数のノードに配置し、分割データに対応する第1の差分情報と第2の差分情報とメタデータとを当該分割データと同じノードに配置する。
【0012】
また、1つの態様では、コンピュータによって実行される情報処理プログラムが提供される。
また、1つの態様では、分析方法が提供される。この分析方法では、情報処理装置が、時系列に符号化された複数のフレームを含むメディアデータを所定サイズ単位に分割した複数の分割データを取得し、メディアデータのうちのキーフレームの位置を示すオフセット情報に基づいて、分割データの先頭位置に最も近い第1キーフレームであって、当該分割データおよび当該分割データの直前の分割データの中から特定される第1キーフレームの第1の位置と、分割データの末尾位置に最も近い第2キーフレームであって、当該分割データおよび当該分割データの直後の分割データの中から特定される第2キーフレームの第2の位置と、を分割データ毎に特定し、先頭位置と第1の位置との間のデータを示す第1の差分情報と、末尾位置と第2の位置との間のデータを示す第2の差分情報と、を分割データ毎に生成し、第1の差分情報と第2の差分情報とを分割データに適用して得られる部分メディアデータの復号に用いられるメタデータを、分割データ毎に生成し、複数の分割データを複数のノードに配置し、分割データに対応する第1の差分情報と第2の差分情報とメタデータとを当該分割データと同じノードに配置する。複数のノードのそれぞれが、自ノードに配置された分割データと第1の差分情報と第2の差分情報とメタデータとに基づいて、復号可能な部分メディアデータを生成し、部分メディアデータに対する分析を行う。
【発明の効果】
【0013】
1つの側面では、記憶容量の利用効率の低下を抑えてメディアデータに対する分散処理を可能にできる。
【図面の簡単な説明】
【0014】
【
図1】第1の実施の形態の情報処理装置を示す図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】クライアントのハードウェア例を示すブロック図である。
【
図10】配置データ管理テーブルの例を示す図である。
【
図12】データノードに対するデータ配置例を示す図である。
【
図13】データ保存の例を示すフローチャートである。
【
図14】差分データ生成の例を示すフローチャートである。
【
図15】動画データ取得の例を示すフローチャートである。
【
図16】データ分析の例を示すフローチャートである。
【
図17】データノード処理の例を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0016】
図1は、第1の実施の形態の情報処理装置を示す図である。
情報処理装置10は、ノード20,30,40に接続されている。情報処理装置10およびノード20,30,40は、ネットワーク(図示を省略している)に接続されてもよい。ノード20,30,40は、メディアデータ50の格納および分析に用いられる。
【0017】
ここで、メディアデータ50は、例えば動画データであり、時系列に符号化された複数のフレームを含む。メディアデータ50は音声データを含んでもよい。メディアデータ50では、フレーム間予測によりデータが圧縮されている。エンコード形式として、例えばH.264(H.264/MPEG-4 AVC)やH.265(H.265/MPEG-H HEVC)などが挙げられる。メディアデータ50に含まれるフレームには次の種類がある。
【0018】
1つ目は、キーフレームである。キーフレームはIフレームと呼ばれることもある。キーフレームは、フレーム間予測の基準となるフレームで、自フレーム単体で復号可能なフレーム(他のフレームを参照しなくても復号可能なフレーム)である。2つ目は、Pフレームである。Pフレームは、自フレームよりも前のフレームに対する差分のフレームである。3つ目は、Bフレームである。Bフレームは、自フレームの前後のフレームに対する差分のフレームである。
【0019】
メディアデータ50の所定位置(例えば、先頭または末尾)には、メタデータm0が付加されている。メタデータm0は、メディアデータ50の復号に用いられるデータであり、データ形式、フレームオフセット、フレームレートなどの情報を含む。下記の例では、メタデータm0がメディアデータ50の先頭に付加されている場合を示す。ただし、メタデータm0は、メディアデータ50の末尾に付加されてもよい。なお、図中、メタデータを「メタ」と略記することがある。
【0020】
例えば、ノード20,30,40は、メディアデータ50を分析することで、メディアデータ50により動画を再生した際に描画される物体の形状の認識や動きの認識を行う。これにより、例えば、監視エリアにおける異常や不審人物の検知などを可能にする。
【0021】
情報処理装置10は、メディアデータ50を複数の分割データに分割し、複数の分割データをノード20,30,40に格納する。情報処理装置10は、メディアデータ50を取得する場合、ノード20,30,40に格納された複数の分割データを取得し、複数の分割データを結合することで、メディアデータ50を復元する。更に、情報処理装置10は、ノード20,30,40のそれぞれにより、メディアデータ50の部分単位の分析を分散して実行させる機能を提供する。
【0022】
情報処理装置10は、記憶部11および処理部12を有する。
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
【0023】
記憶部11は、オフセット情報60を含む。オフセット情報60は、メディアデータ50に含まれるキーフレームの位置(メディアデータ50の先頭位置p0からのオフセット(例えば、バイト(Bytes)の単位で表される)を示す情報である。例えば、オフセット情報60は、メタデータm0に基づいて、処理部12により生成され、記憶部11に格納される。一例として、オフセット情報60は、キーフレームの位置k1,k2,…,k9を含む。
【0024】
処理部12は、ノード20,30,40への格納対象であるメディアデータ50を取得すると、メディアデータ50を記憶部11に格納し、次のように分割する。
処理部12は、メディアデータ50を所定サイズ単位に分割し、複数の分割データを取得する。例えば、格納先のノード20,30,40が3つなので、処理部12は、メディアデータ50を所定サイズ毎に3つの分割データD1,D2,D3に分割する。分割位置をd1,d2とする。分割データD1,D2,D3のサイズは同じでもよい。または、分割データD1,D2のサイズは同じであるが末尾の分割データD3のサイズは分割データD1,D2のサイズより小さくてもよい。
【0025】
このとき、分割データD1の先頭位置はp0であり、末尾位置は(d1-1)である。(d1-1)は、位置d1の直前の位置を示す。分割データD2の先頭位置は(分割位置)d1であり、末尾位置は(d2-1)である。(d2-1)は、位置d2の直前の位置を示す。分割データD3の先頭位置は(分割位置)d2であり、末尾位置はp1である。
【0026】
処理部12は、記憶部11に記憶されたオフセット情報60に基づいて、分割データの先頭位置に最も近いキーフレームの第1の位置と、分割データの末尾位置に最も近いキーフレームの第2の位置とを、分割データ毎に特定する。
【0027】
例えば、分割データD1に対して、処理部12は、分割データD1の先頭位置p0に最も近いキーフレームの位置k1と、分割データD1の末尾位置(d1-1)に最も近いキーフレームの位置k5を特定する。
【0028】
また、分割データD2に対して、処理部12は、分割データD2の先頭位置d1に最も近いキーフレームの位置k5と、分割データD2の末尾位置(d2-1)に最も近いキーフレームの位置k8を特定する。
【0029】
更に、分割データD3に対して、処理部12は、分割データD3の先頭位置d2に最も近いキーフレームの位置k8を特定する。分割データD3の末尾位置p1は、メディアデータ50の末尾位置p1に一致するので、処理部12は、分割データD3に対して、末尾位置p1に最も近いキーフレームの位置を特定しなくてよい。
【0030】
処理部12は、分割フレームの先頭位置と第1の位置との間のデータを示す第1の差分情報と、当該分割フレームの末尾位置と第2の位置との間のデータを示す第2の差分情報と、を分割データ毎に生成する。なお、図中、差分情報を「差分」と略記することがある。
【0031】
第1の差分情報は、メディアデータ50における分割データの先頭位置が第1の位置よりも前の場合、当該先頭位置から第1の位置の直前までに相当する削除対象データのサイズである。第1の差分情報は、当該先頭位置が第1の位置よりも後の場合、メディアデータ50のうち第1の位置から当該先頭位置の直前までに相当する追加対象データである。なお、分割データの先頭位置が第1の位置に一致する場合、第1の差分情報は、当該分割データの先頭位置に対して差分のデータなしを示す。
【0032】
第2の差分情報は、メディアデータ50における分割データの末尾位置が第2の位置よりも前の場合、メディアデータ50のうち当該末尾位置の直後から第2の位置の直前までに相当する追加対象データである。第2の差分情報は、当該末尾位置が第2の位置よりも後の場合、第2の位置から当該末尾位置までに相当する削除対象データのサイズである。なお、分割データの末尾位置が第2の位置に一致する場合、第2の差分情報は、当該分割データの末尾フレームのサイズ(削除対象データのサイズ)を示す。また、分割データの末尾位置がメディアデータ50の末尾に対応する場合、第2の差分情報は、当該分割データの末尾位置に対して、差分のデータなしを示す。
【0033】
例えば、分割データD1に対して、処理部12は、先頭位置p0とキーフレーム位置k1との間のデータを示す差分情報Δ12と、末尾位置(d1-1)とキーフレーム位置k5との間のデータを示す差分情報Δ21とを生成する。ここで、p0≦k1である。この場合、差分情報Δ12は、分割データD1から除去するデータに相当し、例えば、先頭位置p0とキーフレーム位置k1との間のデータ(キーフレーム位置k1のデータを含まない)のサイズを示す。また、(d1-1)<k5である。この場合、差分情報Δ21は、分割データD1に追加するデータに相当し、例えば、末尾位置(d1-1)とキーフレーム位置k5との間のデータ(末尾位置(d1-1)のデータと、キーフレーム位置k5のデータを含まない)である。
【0034】
また、分割データD2に対して、処理部12は、先頭位置d1とキーフレーム位置k5との間のデータを示す差分情報Δ22と、末尾位置(d2-1)とキーフレーム位置k8との間のデータを示す差分情報Δ31とを生成する。d1≦k5である。この場合、差分情報Δ22は、分割データD2から除去するデータに相当し、例えば、先頭位置d1とキーフレーム位置k5との間のデータ(キーフレーム位置k5のデータを含まない)のサイズを示す。また、(d2-1)<k8である。この場合、差分情報Δ31は、分割データD2に追加するデータに相当し、例えば、末尾位置(d2-1)とキーフレーム位置k8との間のデータ(末尾位置(d2-1)のデータと、キーフレーム位置k8のデータを含まない)である。
【0035】
更に、分割データD3に対して、処理部12は、先頭位置d2とキーフレーム位置k8との間のデータを示す差分情報Δ32を生成する。d2≦k8である。この場合、差分情報Δ32は、分割データD3から除去するデータに相当し、例えば、先頭位置d2とキーフレーム位置k8との間のデータ(キーフレーム位置k8のデータを含まない)のサイズを示す。
【0036】
なお、上記の例では、ある分割データに対して、(先頭位置)≦(先頭位置から最も近いキーフレーム位置)となる場合を主に説明した。一方、(先頭位置)>(先頭位置から最も近いキーフレーム位置)となることもある。この場合、第1の差分情報は、当該分割データに追加するデータに相当し、(先頭位置から最も近いキーフレーム位置)と(先頭位置)との間のデータ(先頭位置のデータを含まない)である。
【0037】
また、上記の例では、ある分割データに対して、(末尾位置)<(末尾位置から最も近いキーフレーム位置)となる場合を主に説明した。一方、(末尾位置)≧(末尾位置から最も近いキーフレーム位置)となることもある。この場合、第2の差分情報は、当該分割データから除去するデータに相当し、(末尾位置から最も近いキーフレーム位置)と(末尾位置)との間のデータのサイズを示す。
【0038】
処理部12は、第1の差分情報と第2の差分情報とを分割データに適用して得られる部分メディアデータの復号に用いられるメタデータを、分割データ毎に生成する。
例えば、分割データD1に対して、処理部12は、差分情報Δ12,Δ21を分割データD1に適用して得られる部分メディアデータの復号に用いられるメタデータm1を生成する。また、分割データD2に対して、処理部12は、差分情報Δ22,Δ31を分割データD2に適用して得られる部分メディアデータの復号に用いられるメタデータm2を生成する。更に、分割データD3に対して、処理部12は、差分情報Δ32を分割データD3に適用して得られる部分メディアデータの復号に用いられるメタデータm3を生成する。なお、メタデータm1,m2,m3のサイズは、分割データに比べて非常に小さい。
【0039】
処理部12は、複数の分割データを複数のノードに配置する。また、処理部12は、分割データに対応する第1の差分情報と第2の差分情報とメタデータとを当該分割データと同じノードに配置する。
【0040】
例えば、処理部12は、分割データD1をノード20に、分割データD2をノード30に、分割データD3をノード40に、それぞれ配置する。また、処理部12は、分割データD1に対応する差分情報Δ12,Δ21とメタデータm1とをノード20に配置する。処理部12は、分割データD2に対応する差分情報Δ22,Δ31とメタデータm2とをノード30に配置する。処理部12は、分割データD3に対応する差分情報Δ32とメタデータm3とをノード40に配置する。
【0041】
情報処理装置10によれば、メディアデータを所定サイズ単位に分割した複数の分割データが取得される。オフセット情報に基づいて、分割データの先頭位置に最も近いキーフレームの第1の位置と、分割データの末尾位置に最も近いキーフレームの第2の位置と、が分割データ毎に特定される。先頭位置と第1の位置との間のデータを示す第1の差分情報と、末尾位置と第2の位置との間のデータを示す第2の差分情報と、が分割データ毎に生成される。第1の差分情報と第2の差分情報とを分割データに適用して得られる部分メディアデータの復号に用いられるメタデータが、分割データ毎に生成される。複数の分割データが複数のノードに配置される。分割データに対応する第1の差分情報と第2の差分情報とメタデータとが当該分割データと同じノードに配置される。
【0042】
これにより、記憶容量の利用効率の低下を抑えてメディアデータに対する分散処理が可能になる。具体的には、次の通りである。
ノード20,30,40は、メディアデータ50の格納用途にも用いられる。このため、ユーザがメディアデータ50を取得したいときには、メディアデータ50を高速に取得可能にすることが好ましい。この点、情報処理装置10は、メディアデータ50を所定サイズ単位に単純に分割した分割データD1,D2,D3を、ノード20,30,40に格納する。このため、情報処理装置10は、ノード20,30,40に格納された分割データD1,D2,D3を取得して、分割順と同じ順に結合すればよく、その他の編集処理を行わなくてよいため、メディアデータ50を高速に取得可能である。
【0043】
また、ノード20,30,40は、ノード20,30,40に配置した差分情報およびメタデータを分割データに適用して部分メディアデータを生成できる。このため、メディアデータ50の分析を行う場合、ノード20,30,40のそれぞれは、生成した部分メディアデータに対して、分析などの処理を分散して行える。ノード20,30,40の各自が保持する分割データに対する差分情報の適用方法は、情報処理装置10により指示される。例えば、情報処理装置10は、分析処理を実行させるためのプログラムを送信してもよい。この場合、ノード20,30,40は、当該プログラムを実行することで、自ノードが保持する部分メディアデータに対する分析を行う。
【0044】
このように、複数のノードのそれぞれは、自ノードに配置された分割データと第1の差分情報と第2の差分情報とメタデータとに基づいて、復号可能な部分メディアデータを生成し、部分メディアデータに対する分析を行う。例えば、何れかのノードに各分割データを集めて結合し、当該ノードによりメディアデータ50の全体に対して分析処理を行うことも考えられるが、この方法では処理に時間がかかる。一方、情報処理装置10は、メディアデータ50に対する分析などの処理をノード20,30,40により分散実行可能にすることで、処理の高速化を図れる。例えば、メディアデータ50を3つのノード20,30,40で分散処理することで、1つのノードで処理するよりも概ね1/3の時間に処理時間を短縮可能である。
【0045】
また、データを保持する各ノードにより処理を実行する手法は近傍処理と呼ばれることがある。近傍処理により、対象データを保持する各ノードにより処理を分散実行させることで、分析のためのノード間、または、各ノードと情報処理装置10との間の通信を削減でき、処理を一層高速化できる。
【0046】
特に、ノード20,30,40には、分割データから部分メディアデータを生成するために用いられる差分情報と部分メディアデータの復元用のメタデータとを配置すればよく、部分メディアデータの全てを配置しなくてよい。すなわち、分割データと、部分メディアデータのうちの差分情報のみと、当該部分メディアデータを復号するためのメタデータとをノード20,30,40に配置すればよい。したがって、分割データと、部分メディアデータとの両方を各ノードに配置するよりも、各ノードにおいて使用される記憶容量を低減できる。こうして、各ノードによる記憶容量の利用効率の低下を抑えてメディアデータに対する分散処理が可能になる。
【0047】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0048】
第2の実施の形態の情報処理システムは、クライアント100、データ管理ノード200およびデータノード300,400,500を有する。クライアント100、データ管理ノード200およびデータノード300,400,500は、ネットワーク70に接続されている。ネットワーク70は、例えば、LAN(Local Area Network)である。
【0049】
クライアント100は、データノード300,400,500にメディアデータを分割して格納するクライアントコンピュータである。ただし、クライアント100の機能は、図示を省略しているクライアント端末の要求を受け付けて、データノード300,400,500にメディアデータを分割して格納するサービスを提供するサーバコンピュータ(フロントエンドサーバ)により実現されてもよい。クライアント100は、第1の実施の形態の情報処理装置10の一例である。
【0050】
データ管理ノード200は、メディアデータの名称と、当該メディアデータを分割した分割データの格納先のデータノードとを対応付ける情報を管理するサーバコンピュータである。例えば、データ管理ノード200は、メディアデータの名称(例えば、ファイル名)を含む問い合わせをクライアント100から受信する。すると、データ管理ノード200は、当該メディアデータの名称に対応する分割データの格納先のパス(データノードを示す情報を含む)を、クライアント100に提供する。
【0051】
データノード300,400,500は、メディアデータを分割した分割データを分散して保持する。データノード300,400,500は、第1の実施の形態のノード20,30,40の一例である。なお、データノード300,400,500の数は、3つに限らず、2つまたは4以上でもよい。
【0052】
例えば、第2の実施の形態の情報処理システムにおける分散処理のフレームワークの一例として、Hadoop(登録商標)が挙げられる。Hadoopでは、HDFS(Hadoop Distributed File System)と呼ばれる分散ファイルシステムを用意し、データが保存されているノードで処理を行うようにすることで、特定の処理ノードへのデータ転送時間を削減し、処理を高速化する。
【0053】
図3は、クライアントのハードウェア例を示すブロック図である。
クライアント100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信IF(InterFace)107を有する。なお、CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
【0054】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、クライアント100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0055】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、クライアント100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0056】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、クライアント100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0057】
画像信号処理部104は、CPU101からの命令に従って、クライアント100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0058】
入力信号処理部105は、クライアント100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、クライアント100に、複数の種類の入力デバイスが接続されていてもよい。
【0059】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0060】
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0061】
通信IF107は、ネットワーク70に接続され、ネットワーク70を介して他のコンピュータと通信を行うインタフェースである。通信IF107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
【0062】
なお、データ管理ノード200およびデータノード300,400,500も、クライアント100と同様のハードウェアにより実現される。
図4は、クライアントの機能例を示す図である。
【0063】
クライアント100は、配置制御部120、動画データ取得部130および分析制御部140を有する。配置制御部120、動画データ取得部130および分析制御部140の機能は、CPU101がRAM102に記憶されたプログラムを実行することで実現される。
【0064】
配置制御部120は、メディアデータを分割し、データノード300,400,500に分散して配置する。以下では、メディアデータとして動画データを例示して説明する。配置制御部120は、動画データ記憶部121、オフセット情報記憶部122、配置データ記憶部123、キーフレームオフセット取得部124、動画データ分割部125、近傍キーフレーム取得部126、メタデータ生成部127、差分データ生成部128およびデータ配置部129を有する。動画データ記憶部121、オフセット情報記憶部122および配置データ記憶部123は、RAM102またはHDD103に確保された記憶領域により実現される。
【0065】
動画データ記憶部121は、データノード300,400,500に配置する動画データを記憶する。
オフセット情報記憶部122は、オフセット情報を記憶する。オフセット情報は、動画データに含まれるキーフレームの先頭からのオフセットを示す。以下では「オフセット」という場合、動画データの先頭からのオフセットを示す。
【0066】
動画データ分割部125は、動画データ記憶部121に記憶された動画データを所定サイズ単位(例えば、128MB(Mega Bytes))に分割して分割データを生成し、配置データ記憶部123に格納する。
【0067】
近傍キーフレーム取得部126は、近傍キーフレームの先頭位置を取得する。近傍キーフレームは、分割データの先頭オフセットに最も近いキーフレーム、または、分割データの末尾オフセットに最も近いキーフレームである。
【0068】
メタデータ生成部127は、部分動画データの復号に用いられるメタデータを生成する。部分動画データは、分割データに対して差分データを適用することで生成される動画データの一部分である。差分データは、差分データ生成部128により生成される。メタデータ生成部127は、該当の分割データに対応付けて、生成したメタデータを配置データ記憶部123に格納する。
【0069】
差分データ生成部128は、分割データに対する、復号可能な部分動画データとの差分である差分データを生成する。差分データは、分割データの先頭または末尾に追加すべきデータそのもの(バイナリデータ)であることがある。差分データは、分割データの先頭または末尾から削除すべきデータのサイズを示すことがある。差分データ生成部128は、該当の分割データに対応付けて、生成した差分データを配置データ記憶部123に格納する。
【0070】
データ配置部129は、配置データ記憶部123に記憶された配置データを、データノード300,400,500に配置する。データ配置部129は、分割データと、当該分割データに対応する差分データとメタデータとを同一のデータノードに送信し、保持させる。データ配置部129は、動画データのファイル名と、当該動画データに対応する分割データの配置先のデータノードを示す情報を、データ管理ノード200に送信する。データ配置部129は、各分割データを複数のデータノードに分散配置すると、動画データ記憶部121に格納された動画データを削除する。
【0071】
動画データ取得部130は、ユーザにより取得対象の動画データのファイル名が入力されると、当該ファイル名に対応する動画データを取得する。具体的には、動画データ取得部130は、該当のファイル名をデータ管理ノード200に問い合わせることで、各分割データの格納先を特定する。そして、動画データ取得部130は、データノード300,400,500から分割データを取得し、各分割データを結合することで動画データを取得する。動画データ取得部130により取得された動画データは、例えば、所定の動画再生用のソフトウェアにより再生することができる。
【0072】
分析制御部140は、ユーザにより分析対象の動画データのファイル名が入力されると、当該ファイル名に対応する分割データの分析をデータノード300,400,500に実行させる。具体的には、分析制御部140は、該当のファイル名をデータ管理ノード200に問い合わせることで、各分割データの格納先を特定する。分析制御部140は、データノード300,400,500に分析を実行させるためのプログラムを送信する。分析制御部140は、当該プログラムを実行させることで、データノード300,400,500により部分動画データを生成させ、部分動画データに対する分析を分散実行させる。分析制御部140は、データノード300,400,500のそれぞれによる分析結果を取得し、各分析結果を統合して、ユーザに提供する。
【0073】
図5は、データ管理ノードの機能例を示す図である。
データ管理ノード200は、管理データ記憶部210およびデータ格納先提供部220を有する。管理データ記憶部210は、データ管理ノード200が備えるRAMやHDDなどの記憶領域を用いて実現される。データ格納先提供部220は、データ管理ノード200が備えるCPUが、データ管理ノード200が備えるRAMに記憶されたプログラムを実行することで実現される。
【0074】
管理データ記憶部210は、データ管理テーブルを記憶する。データ管理テーブルは、動画データのファイル名と、動画データを分割した分割データの配置先のパスとを管理するためのデータである。
【0075】
データ格納先提供部220は、管理データ記憶部210に記憶されたデータ管理テーブルに、動画データのファイル名と、分割データの配置先のパスとを登録する。データ格納先提供部220は、クライアント100から動画データのファイル名を受け付けると、当該ファイル名に対応する分割データの配置先のパスをクライアント100に提供する。
【0076】
図6は、データノードの機能例を示す図である。
データノード300は、データ記憶部310、データ取得部320およびデータ処理部330を有する。データ記憶部310は、データノード300が備えるHDDなどの補助記憶装置により実現される。データ取得部320およびデータ処理部330は、データノード300が備えるCPUが、データノード300が備えるRAMに記憶されたプログラムを実行することで実現される。データノード400,500もデータノード300と同様の機能を有する。
【0077】
データ記憶部310は、分割データ、分割データに対する差分データおよびメタデータを記憶する。
データ取得部320は、分割データ、分割データに対する差分データおよびメタデータをクライアント100から取得し、データ記憶部310に格納する。また、データ取得部320は、クライアント100から指定された分割データを、データ記憶部310から読み出し、クライアント100に送信する。
【0078】
データ処理部330は、クライアント100から送信されたプログラムに応じた処理を実行する。具体的には、データ処理部330は、分割データに対して差分データを適用し、メタデータを付加することで、部分動画データを生成し、部分動画データを復号して、部分動画データにより描画される動画に含まれる物体の形状や物体の動きの認識を行う。データ処理部330は、例えば、当該認識により物体の特定を行い、特定した物体を示す情報をクライアント100に送信する。
【0079】
図7は、動画データの例を示す図である。
動画データ600は、動画データ記憶部121に記憶される。一例として、動画データは、MP4コンテナにH.264エンコード形式で保存されているものとする。ただし、動画データの形式は上記形式に限らず、下記に示す動画データの構成と同様の構成が用いられる他の形式(例えば、H.265など)でもよい。
【0080】
動画データ600は、メタデータセグメント610およびメディアセグメント620を含む。
メタデータセグメント610は、復号用のメタデータを含むセグメントである。メタデータセグメント610は、動画データ600の先頭にある。ただし、メタデータセグメント610は、動画データ600の末尾でもよい。メタデータセグメント610は、ftypおよびmoovを含む。ftypは、ファイル形式を示すデータである。moovは、動画データ600の先頭位置からの各フレームのオフセットやフレームレートなどを示すデータである。
【0081】
メディアセグメント620は、時系列に符号化された複数のフレームのデータ(mdat)を含むセグメントである。
図7では、図面の左側から右側へ向かう方向が、時間の正方向である。複数のフレームは、Iフレーム(キーフレーム)、PフレームおよびBフレームを含む。
【0082】
図8は、オフセット情報の例を示す図である。
オフセット情報122aは、オフセット情報記憶部122に記憶される。オフセット情報122aは、動画データ600の先頭位置に対するキーフレームのオフセットを示す。オフセットの単位は、例えば、バイト(Bytes)である。オフセット情報122aは、キーフレームオフセット取得部124により動画データ600に含まれるメタデータセグメント610に基づいて生成され、オフセット情報記憶部122に格納される。
【0083】
例えば、オフセット情報122aには、キーフレームのオフセットとして、185975(Bytes)、213260(Bytes)、350816(Bytes)、…という情報が含まれる。
【0084】
図9は、動画データの分割例を示す図である。
第2の実施の形態の例では、動画データ600をデータノード300,400,500の3つに分散して配置する。このため、動画データ分割部125は、動画データ600を固定サイズ単位に3つの分割データD11,D12,D13に分割する。分割データD11,D12,D13のサイズは同一でもよい。分割データD11,D12のサイズは同じであるが、分割データD13のサイズは、分割データD11,D12のサイズより小さくてもよい。
【0085】
分割データD11の先頭位置は、動画データ600の先頭位置に相当する。分割データD12の先頭位置は、1つ目の分割位置d11に相当する。分割データD13の先頭位置は、2つ目の分割位置d12に相当する。分割データD11の末尾位置は、(d11-1)である。分割データD12の末尾位置は、(d12-1)である。
【0086】
分割データD11,D12,D13は、それぞれが動画として成り立たないファイルとなる。分割データD12,D13は、ftypやmoovの存在しないファイルとなり復号できない。また、分割データD11は、ftypとmoovが存在し、boxと呼ばれる一組のデータが揃っているものの、当該moovは、動画データ600の全体(元のmdat)に対して生成されたデータであり、分割データD11に対して生成されたものではない。このため、分割データD11も単独で復号することはできない。
【0087】
差分データ生成部128は、オフセット情報122aを参照して、分割データD11,D12,D13のそれぞれに対して差分データを生成し、分割データD11,D12,D13のそれぞれから単独で復号可能な部分動画データを生成可能にする。差分データ生成部128による差分データの生成方法は、第1の実施の形態で例示した処理部12による分割データに対する第1および第2の差分情報の生成方法と同様である。
【0088】
すなわち、差分データ生成部128は、ある分割データの先頭位置に対する近傍キーフレーム位置が当該分割データの先頭位置よりも前の場合、近傍キーフレーム位置から先頭位置の直前までのデータを追加対象の差分データとする。また、差分データ生成部128は、分割データの先頭位置に対する近傍キーフレーム位置が当該先頭位置よりも後の場合、先頭位置から近傍キーフレーム位置の直前までのデータのサイズを削除対象の差分データとする。
【0089】
更に、差分データ生成部128は、ある分割データの末尾位置に対する近傍キーフレーム位置が当該末尾位置よりも前の場合、近傍キーフレーム位置から末尾位置までのデータのサイズを削除対象の差分データとする。また、差分データ生成部128は、分割データの末尾位置に対する近傍キーフレーム位置が当該末尾位置よりも後の場合、末尾位置の直後から近傍キーフレーム位置の直前までのデータを追加対象の差分データとする。
【0090】
なお、ある分割データの末尾位置が動画データの末尾位置に一致する場合、差分データ生成部128は、当該分割データの末尾位置に対して差分データを生成しなくてよい。例えば、差分データ生成部128は、動画データ600に対して次のように差分データを生成する。
【0091】
第1に、分割データD11に対して、差分データ生成部128は、分割データD11の先頭位置に最も近いキーフレーム位置k11と、分割データD11の末尾位置(d11-1)に最も近いキーフレーム位置k12とを特定する。キーフレーム位置k11は、分割データD11の先頭位置よりも後である。このため、差分データ生成部128は、分割データD11の先頭位置とキーフレーム位置k11との間のデータ(キーフレーム位置k11のデータを含まない)のサイズ「size1」を、分割データD11に対する削除対象の差分データとして生成する。また、キーフレーム位置k12は、分割データD11の末尾位置(d11-1)よりも前である。このため、差分データ生成部128は、キーフレーム位置k12と末尾位置(d11-1)との間のデータのサイズ「size2」を、分割データD11に対する削除対象の差分データとして生成する。
【0092】
分割データD11の先頭の「size1」のデータ、および、分割データD11の末尾の「size2」のデータを削除したデータが、1つ目の部分動画データ「mdat1」である。メタデータ生成部127は、部分動画データ「mdat1」に対するメタデータセグメント(メタデータ)を生成する。メタデータセグメントは、「ftyp1」および「moov1」を含む。部分動画データに対する復号用のメタデータは、既存の方法を用いて生成することができる。
【0093】
第2に、分割データD12に対して、差分データ生成部128は、分割データD12の先頭位置d11に最も近いキーフレーム位置k12と、分割データD12の末尾位置(d12-1)に最も近いキーフレーム位置k13とを特定する。キーフレーム位置k12は、分割データD12の先頭位置d11よりも前である。このため、差分データ生成部128は、キーフレーム位置k12と先頭位置d11との間のデータ(先頭位置d11のデータを含まない)を、分割データD12に対する追加対象の差分データ「data1」として生成する。また、キーフレーム位置k13は、分割データD12の末尾位置(d12-1)よりも後である。このため、差分データ生成部128は、分割データD12の末尾位置(d12-1)とキーフレーム位置k13との間のデータ(末尾位置(d12-1)およびキーフレーム位置k13のデータを含まない)を、分割データD12に対する追加対象の差分データ「data2」として生成する。
【0094】
分割データD12の先頭に「data1」を追加し、末尾に「data2」を追加したデータが、2つ目の部分動画データ「mdat2」である。メタデータ生成部127は、部分動画データ「mdat2」に対するメタデータセグメント(メタデータ)を生成する。メタデータセグメントは、「ftyp2」および「moov2」を含む。
【0095】
第3に、分割データD13に対して、差分データ生成部128は、分割データD13の先頭位置d12に最も近いキーフレーム位置k13を特定する。なお、分割データD13の末尾位置は、動画データ600の末尾位置に相当するため、差分データ生成部128は、分割データD13の末尾に対して差分データを生成しなくてよい。キーフレーム位置k13は、先頭位置d12よりも後である。このため、差分データ生成部128は、先頭位置d12とキーフレーム位置k13との間のデータ(キーフレーム位置k13のデータを含まない)のサイズ「size3」を、分割データD13に対する削除対象の差分データとして生成する。
【0096】
分割データD13の先頭の「size3」のデータを削除したデータが、3つ目の部分動画データ「mdat3」である。メタデータ生成部127は、部分動画データ「mdat3」に対するメタデータセグメント(メタデータ)を生成する。メタデータセグメントは、「ftyp3」および「moov3」を含む。
【0097】
なお、「ftyp1」、「ftyp2」、「ftyp3」は、ファイル形式を示すデータであるため、「ftyp」と同じデータとなる。また、部分動画データの末尾フレームがBフレームのこともある。この場合、部分動画データの末尾の数フレームを復号できないことも考えられるが、部分動画データに対して非常に小さい部分なので、分析などの処理への影響は無視できる。
【0098】
図10は、配置データ管理テーブルの例を示す図である。
配置データ管理テーブル123aは、配置データ記憶部123に記憶される。配置データ管理テーブル123aは、分割データ、削除(先頭)、削除(末尾)、追加(先頭)、追加(末尾)、追加(ftyp)および追加(moov)の項目を含む。
【0099】
分割データの項目には、分割データ(または分割データの識別情報)が登録される。削除(先頭)の項目には、該当の分割データの先頭から削除すべきデータのサイズが登録される。削除(末尾)の項目には、該当の分割データの末尾から削除すべきデータのサイズが登録される。追加(先頭)の項目には、該当の分割データの先頭に追加すべきデータの本体(バイナリデータ)が登録される。追加(末尾)の項目には、該当の分割データの末尾に追加すべきデータの本体(バイナリデータ)が登録される。追加(ftyp)の項目には、該当の分割データに対する部分動画データの復号用のftypデータが登録される。追加(moov)の項目には、該当の分割データに対する部分動画データの復号用のmoovデータが登録される。
【0100】
例えば、配置データ管理テーブル123aには、分割データが「D11」、削除(先頭)が「size1」、削除(末尾)が「size2」、追加(先頭)が設定なし(設定なしを「-」で表す)、追加(末尾)が「-」、追加(ftyp)が「ftyp1」、追加(moov)が「moov1」というレコードが登録される。このレコードは、分割データD11に対して、先頭のサイズ「size1」を削除し、末尾のサイズ「size2」を削除することで、部分動画データ「mdat1」が得られることを示す。また、メタデータセグメントとして、「ftyp1」および「moov1」を用いて部分動画データ「mdat1」が復号可能であることを示す。
【0101】
また、例えば、配置データ管理テーブル123aには、分割データが「D12」、削除(先頭)が「-」、削除(末尾)が「-」、追加(先頭)が「data1」、追加(末尾)が「data2」、追加(ftyp)が「ftyp2」、追加(moov)が「moov2」というレコードが登録される。このレコードは、分割データD12に対して、先頭にデータ「data1」を追加し、末尾に「data2」を追加することで、部分動画データ「mdat2」が得られることを示す。また、メタデータセグメントとして、「ftyp2」および「moov2」を用いて部分動画データ「mdat2」が復号可能であることを示す。
【0102】
また、例えば、配置データ管理テーブル123aには、分割データが「D13」、削除(先頭)が「size3」、削除(末尾)が「-」、追加(先頭)が「-」、追加(末尾)が「-」、追加(ftyp)が「ftyp3」、追加(moov)が「moov3」というレコードが登録される。このレコードは、分割データD13に対して先頭のサイズ「size3」を削除することで、部分動画データ「mdat3」が得られることを示す。また、メタデータセグメントとして、「ftyp3」および「moov3」を用いて部分動画データ「mdat3」が復号可能であることを示す。
【0103】
図11は、データ管理テーブルの例を示す図である。
データ管理テーブル211は、管理データ記憶部210に記憶される。データ管理テーブル211は、動画ファイル名、分割データID(IDentifier)および保存場所の項目を含む。
【0104】
動画ファイル名の項目には、動画データの名称が登録される。分割データIDの項目には、動画データを分割して得られた分割データの識別情報(分割データID)が登録される。例えば、分割データIDは、分割の順序に対応付けられる(分割データIDが分割の順序を示すように付与されてもよい)。保存場所の項目には、該当の分割データの格納先を示すパスが登録される。当該パスは、データノードの識別情報やデータノードにおける分割データの保存場所(ディレクトリなど)の情報を含む。
【0105】
例えば、データ管理テーブル211には、動画ファイル名が「F1」、分割データIDが「ID1」、保存場所が「DataNode1」というレコードが登録されている。このレコードは、動画ファイル名「F1」の動画データ600の「ID1」で識別される分割データD11が保存場所「DataNode1」に格納されていることを示す。保存場所「DataNode1」は、データノード300の所定のディレクトリを示す。
【0106】
同様に、データ管理テーブル211は、動画データ600に対応する分割データD12(「ID2」)がデータノード400に格納され、動画データ600に対応する分割データD13(「ID3」)がデータノード500に格納されていることを示す。
【0107】
図12は、データノードに対するデータ配置例を示す図である。
データ配置部129は、分割データD11をデータノード300に配置するとともに、分割データD11に対して生成された差分データおよびメタデータをデータノード300に配置する。データノード300は、分割データD11、size1、size2、ftyp1、moov1を含むデータセット311を保持する。データセット311は、分割データD11に対する差分データの適用方法を示す情報を含む。ここで、size1は、分割データD11の先頭から削除するデータのサイズである。size2は、分割データD11の末尾から削除するデータのサイズである。ftyp1、moov1は、メタデータ(復号用のメタデータ)であり、分割データD11の先頭からsize1のデータを削除し、末尾からsize2のデータを削除して得られる部分動画データ(mdat1)の復号に用いられる。
【0108】
データ配置部129は、分割データD12をデータノード400に配置するとともに、分割データD12に対して生成された差分データおよびメタデータをデータノード400に配置する。データノード400は、分割データD12、data1、data2、ftyp2、moov2を含むデータセット411を保持する。データセット411は、分割データD12に対する差分データの適用方法を示す情報を含む。ここで、data1は、分割データD12の先頭に追加するデータである。data2は、分割データD12の末尾に追加するデータである。ftyp2、moov2は、メタデータであり、分割データD12の先頭にdata1を追加し、末尾にdata2を追加して得られる部分動画データ(mdat2)の復号に用いられる。
【0109】
データ配置部129は、分割データD13をデータノード500に配置するとともに、分割データD13に対して生成された差分データおよびメタデータをデータノード500に配置する。データノード500は、分割データD13、size3、ftyp3、moov3を含むデータセット511を保持する。データセット511は、分割データD13に対する差分データの適用方法を示す情報を含む。ここで、size3は、分割データD13の先頭から削除するデータのサイズである。ftyp3、moov3は、メタデータであり、分割データD13の先頭からsize3のデータを削除して得られる部分動画データ(mdat3)の復号に用いられる。
【0110】
次に、クライアント100の処理の手順を説明する。まず、動画データの保存時の手順を説明する。
図13は、データ保存の例を示すフローチャートである。
【0111】
(S11)キーフレームオフセット取得部124は、保存する動画データ600がユーザにより指定されると、動画データ600のmoovデータからキーフレームのオフセット情報122aを取得し、オフセット情報記憶部122に格納する。
【0112】
(S12)動画データ分割部125は、動画データ600を固定サイズで分割して分割データD11,D12,D13を生成し、配置データ記憶部123に格納する。固定サイズは、ユーザにより任意に決定できる。
【0113】
(S13)近傍キーフレーム取得部126は、オフセット情報記憶部122に記憶されたオフセット情報122aを参照して、分割データの先頭位置/末尾位置に最も近いキーフレーム(近傍キーフレーム)を分割データ毎に検索する。近傍キーフレーム取得部126は、取得した近傍キーフレームのオフセット位置を、メタデータ生成部127および差分データ生成部128に提供する。
【0114】
(S14)差分データ生成部128は、分割データを1つ選択する。
(S15)差分データ生成部128(およびメタデータ生成部127)は、差分データ生成を実行する。差分データ生成の詳細は後述される。
【0115】
(S16)差分データ生成部128は、動画データ600に対する全ての分割データについて差分データの生成の処理を行ったか否かを判定する。全分割データを処理済の場合、ステップS17に処理が進む。未処理の分割データがある場合、ステップS14に処理が進む。
【0116】
(S17)データ配置部129は、分割データと、当該分割データに対応する差分データとメタデータとを各データノードに配置する。
(S18)データ配置部129は、分割データの配置先をデータ管理ノード200に通知する。そして、データ保存の処理が終了する。
【0117】
図14は、差分データ生成の例を示すフローチャートである。
差分データ生成は、ステップS15に相当する。
(S21)メタデータ生成部127は、固定サイズの分割データn(ステップS14で選択された分割データ)に対応する部分動画データ(mdat[n])のftypとmoovとを作成する。例えば、メタデータ生成部127は、近傍キーフレーム取得部126から提供された近傍キーフレームのオフセット位置に基づいて、動画データ600のうち、分割データnに対応する部分動画データ(mdat[n])の範囲を特定できる。このため、メタデータ生成部127は、動画データ600に基づいて、部分動画データの範囲に対して、moovを生成する。ftypについては、動画データ600のftypと同じでよい。メタデータ生成部127は、生成したメタデータを分割データnに対応付けて、配置データ記憶部123に格納する。
【0118】
(S22)差分データ生成部128は、分割データnの先頭オフセットAがmdat[n]の先頭オフセットB以下(A≦B)であるか否かを判定する。A≦Bの場合、ステップS23に処理が進む。A>Bの場合、ステップS24に処理が進む。
【0119】
(S23)差分データ生成部128は、分割データnの先頭から削除するデータのサイズを「B-A」(削除(先頭)=B-A)とし、当該サイズを示す差分データを生成する。差分データ生成部128は、分割データnの先頭に追加するデータを「None」(前述の設定なし「-」に相当)とする。差分データ生成部128は、生成した差分データを分割データnに対応付けて、配置データ記憶部123に格納する。そして、ステップS25に処理が進む。
【0120】
(S24)差分データ生成部128は、分割データの先頭から削除するデータのサイズを「None」とする。差分データ生成部128は、分割データnの先頭に追加するデータを「(A-B)分のデータ」とし、当該データを示す差分データを生成する。ここで、「(A-B)分のデータ」は、動画データ600のうちオフセットBとオフセットAとの間のデータを示す。差分データ生成部128は、生成した差分データを分割データnに対応付けて、配置データ記憶部123に格納する。そして、ステップS25に処理が進む。
【0121】
(S25)差分データ生成部128は、mdat[n]の末尾オフセットCが分割データnの末尾オフセットD以下(C≦D)であるか否かを判定する。C≦Dの場合、ステップS26に処理が進む。C>Dの場合、ステップS27に処理が進む。
【0122】
(S26)差分データ生成部128は、分割データnの末尾から削除するデータのサイズを「D-C」(削除(末尾)=D-C)とし、当該サイズを示す差分データを生成する。差分データ生成部128は、分割データnの末尾に追加するデータを「None」とする。差分データ生成部128は、生成した差分データを分割データnに対応付けて、配置データ記憶部123に格納する。そして、分割データnに対する差分データ生成の処理が終了する。
【0123】
(S27)差分データ生成部128は、分割データnの末尾から削除するデータのサイズを「None」とする。差分データ生成部128は、分割データnの末尾に追加するデータを「(C-D)分のデータ」とし、当該データを示す差分データを生成する。ここで、「(C-D)分のデータ」は、動画データ600のうちオフセットDとオフセットCとの間のデータを示す。差分データ生成部128は、生成した差分データを分割データnに対応付けて、配置データ記憶部123に格納する。そして、分割データnに対する差分データ生成の処理が終了する。
【0124】
なお、クライアント100は、保存する動画データ600を受け付けたときに差分データを生成し、分割データD11,D12,D13とともに差分データおよびメタデータをデータノード300,400,500に分散配置する例を示したが他の手順も考えられる。例えば、クライアント100は、分割データD11,D12,D13をデータノード300,400,500に分散配置した後に、差分データおよびメタデータを生成し、差分データおよびメタデータをデータノード300,400,500に配置してもよい。その場合、クライアント100は、差分データおよびメタデータを生成するまで、動画データ600を保持しておいてもよい。また、クライアント100は、分割データD11,D12,D13の分散配置後、システムの負荷が比較的小さいときなどに、データノード300,400,500から分割データD11,D12,D13を取得して、差分データおよびメタデータを生成してもよい。
【0125】
次に、分割データに基づいて、動画データを取得する手順を説明する。
図15は、動画データ取得の例を示すフローチャートである。
(S31)動画データ取得部130は、取得対象の動画データ600の動画ファイル名を受け付ける。すると、動画データ取得部130は、データ管理ノード200に当該動画ファイル名を問い合わせ、動画ファイル名に対応する分割データD11,D12,D13の格納位置をデータ管理ノード200から取得する。分割データD11の格納位置は、データノード300の所定のディレクトリを示す。分割データD12の格納位置は、データノード400の所定のディレクトリを示す。分割データD13の格納位置は、データノード500の所定のディレクトリを示す。
【0126】
(S32)動画データ取得部130は、データノード300,400,500から分割データD11,D12,D13を取得する。
(S33)動画データ取得部130は、分割データD11,D12,D13を、分割順と同じ順番で結合することで、動画データ600を復元する。そして、動画データ取得の処理が終了する。
【0127】
このように、動画データ取得部130は、動画データの取得指示を受け付けると、複数のデータノードから複数の分割データを取得し、複数の分割データを結合することで動画データを復元する。このとき、分割データに対して編集処理を行わなくてよいので、動画データを高速に取得できる。
【0128】
次に、動画データの分析の手順を説明する。
図16は、データ分析の例を示すフローチャートである。
(S41)分析制御部140は、分析対象の動画データ600の動画ファイル名を受け付ける。すると、分析制御部140は、データ管理ノード200に当該動画ファイル名を問い合わせ、動画ファイル名に対応する分割データD11,D12,D13の格納位置をデータ管理ノード200から取得する。
【0129】
(S42)分析制御部140は、HDD103におけるプログラム記憶部から分析用のプログラムを取得し、データノード300,400,500に当該プログラムを送信する。分析制御部140は、データノード300,400,500に当該プログラムの実行を指示する。データノード300,400,500では、分割データおよび差分データから部分動画データが生成され、当該プログラムに応じた分析が実行される。
【0130】
(S43)分析制御部140は、データノード300,400,500から分析結果を受信する。
(S44)分析制御部140は、データノード300,400,500のそれぞれから取得した分析結果を統合して結果情報を生成し、結果情報を出力する。そして、データ分析の処理が終了する。
【0131】
次に、分析時におけるデータノード300,400,500の処理手順を説明する。以下では、データノード300を例示して説明するが、データノード400,500も同様の手順を実行する。
【0132】
図17は、データノード処理の例を示すフローチャートである。
データ処理部330は、データノード300が保持するデータセット311およびクライアント100から通知される差分データの分割データへの適用方法の情報に基づいて、下記のステップS51~S59の手順を行う。
【0133】
(S51)データ処理部330は、分割データ(例えば、分割データD11)の先頭から削除すべきデータのサイズ(削除(先頭))が「None」(すなわち、設定なし「-」)であるか否かを判定する。削除(先頭)=Noneの場合、ステップS53に処理が進む。削除(先頭)≠Noneの場合、ステップS52に処理が進む。
【0134】
(S52)データ処理部330は、分割データ(例えば、分割データD11)から先頭の差分(差分データで示されるサイズ分のデータ)を削除する。そして、ステップS53に処理が進む。
【0135】
(S53)データ処理部330は、分割データの末尾から削除すべきデータのサイズ(削除(末尾))が「None」であるか否かを判定する。削除(末尾)=Noneの場合、ステップS55に処理が進む。削除(末尾)≠Noneの場合、ステップS54に処理が進む。
【0136】
(S54)データ処理部330は、分割データから末尾の差分(差分データで示されるサイズ分のデータ)を削除する。そして、ステップS55に処理が進む。
(S55)データ処理部33は、分割データの先頭に追加すべきデータ(追加(先頭))が「None」であるか否かを判定する。追加(先頭)=Noneの場合、ステップS57に処理が進む。追加(先頭)≠Noneの場合、ステップS56に処理が進む。
【0137】
(S56)データ処理部330は、分割データの先頭に差分のデータを追加する。そして、ステップS57に処理が進む。
(S57)データ処理部330は、分割データの末尾に追加すべきデータ(追加(末尾))が「None」であるか否かを判定する。追加(末尾)=Noneの場合、ステップS59に処理が進む。追加(末尾)≠Noneの場合、ステップS58に処理が進む。
【0138】
(S58)データ処理部330は、分割データの末尾に差分のデータを追加する。そして、ステップS59に処理が進む。
(S59)データ処理部330は、ステップS51~S58までの手順によって生成された部分動画データに、該当の分割データに対応するftyp(例えば、ftyp1)とmoov(例えば、moov1)とを追加する。
【0139】
(S60)データ処理部330は、部分動画データを復号し、部分動画データの分析を行う。例えば、データ処理部330は、部分動画データにより描画される物体の形状や物体の動きの分析を行い、認識した物体の名称などを分析結果として記録する。
【0140】
(S61)データ処理部330は、分析結果をクライアント100に送信する。
なお、分析には種々の方法を用いることができる。例えば、映像に写っている物体を自動認識する分析であれば、データ処理部330は、分析結果ファイルに、認識した物体に関する情報をテキストなどによって追記していく方法が考えられる。また、例えば、サムネイルを生成する処理であれば、データ処理部330は、同一ディレクトリに生成した画像ファイルを、分析結果として保存していく方法が考えられる。クライアント100は、各データノードから分析結果を取得し、時系列の順番などで各分析結果を統合することで、動画データ600全体に対する分析結果を生成し、出力する。
【0141】
クライアント100によれば、記憶容量の利用効率の低下を抑えて動画データに対する分散処理が可能になる。具体的には、次の通りである。
データノード300,400,500は、動画データ600の格納用途に用いられる。このため、ユーザが動画データ600を取得したいときには、動画データ600を高速に取得可能にすることが好ましい。この点、クライアント100は、動画データ600を所定サイズ単位に単純に分割した分割データD11,D12,D13を、データノード300,400,500に格納する。このため、クライアント100は、データノード300,400,500に格納された分割データD11,D12,D13を取得して、分割順に結合すればよく、その他の編集処理を行わなくてよいため、動画データ600を高速に取得可能である。
【0142】
また、データノード300,400,500は、データノード300,400,500に配置した差分データを分割データに適用してmdat1,mdat2,mdat3を生成でき、更にメタデータを適用することで、単独で復号可能な部分動画データを生成できる。このため、動画データ600の分析を行う場合、データノード300,400,500のそれぞれは、生成した部分動画データに対して、分析などの処理を分散して行える。データノード300,400,500の各自が保持する分割データに対する差分データの適用方法は、クライアント100により指示される。例えば、クライアント100は、分析処理を実行させるためのプログラムをデータノード300,400,500に送信する。この場合、データノード300,400,500は、当該プログラムを実行することで、自ノードが保持する部分動画データに対する分析を行う。
【0143】
こうして、動画データ600に対する分析などの処理を分散実行可能にすることで、処理の高速化を図れる。また、近傍処理の手法により、部分動画データの分析を、当該部分動画データを保持する各データノードにより分散実行させることで、分析のためのデータノード間、または、各データノードとクライアント100との間の通信を削減でき、処理を一層高速化できる。
【0144】
特に、データノード300,400,500には、分割データから部分動画データを生成するために用いられる差分データと部分動画データの復元用のメタデータとを配置すればよく、部分動画データの全てを配置しなくてよい。したがって、分割データと、部分動画データとの両方を各データノードに配置するよりも、各データノードにおいて使用される記憶容量を低減できる。こうして、各データノードによる記憶容量の利用効率の低下を抑えて動画データに対する分散処理が可能になる。
【0145】
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0146】
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0147】
10 情報処理装置
11 記憶部
12 処理部
20,30,40 ノード
50 メディアデータ
60 オフセット情報