Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5949040B2 - ネットワークストレージ装置、および録画データ蓄積プログラム - Google Patents
[go: Go Back, main page]

JP5949040B2 - ネットワークストレージ装置、および録画データ蓄積プログラム - Google Patents

ネットワークストレージ装置、および録画データ蓄積プログラム Download PDF

Info

Publication number
JP5949040B2
JP5949040B2 JP2012072447A JP2012072447A JP5949040B2 JP 5949040 B2 JP5949040 B2 JP 5949040B2 JP 2012072447 A JP2012072447 A JP 2012072447A JP 2012072447 A JP2012072447 A JP 2012072447A JP 5949040 B2 JP5949040 B2 JP 5949040B2
Authority
JP
Japan
Prior art keywords
data
gop
recorded
stb
pcr
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012072447A
Other languages
English (en)
Other versions
JP2013207421A (ja
Inventor
将人 岩下
将人 岩下
剛弘 上田
剛弘 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2012072447A priority Critical patent/JP5949040B2/ja
Publication of JP2013207421A publication Critical patent/JP2013207421A/ja
Application granted granted Critical
Publication of JP5949040B2 publication Critical patent/JP5949040B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本発明は、ストリーム放送を録画した録画データを管理するネットワークストレージ装置および録画データ蓄積プログラムに関し、ストリーム放送を記録したものであり、STB(Set Top Box)からアップロードされる、録画データを、記憶部に格納し、STBからのダウンロード要求に応じて、格納した録画データを返送するネットワークストレージ装置および録画データ蓄積プログラムに関する。
従来、サーバ型放送において、放送サーバは、ISO/IEC 13818−1およびITU−T勧告H.222.0において標準化されているトランスポートストリーム(MPEG−2 TS)の規格に沿って、放送コンテンツをストリーム放送していた。
従来のサーバ型放送は、放送サーバからのストリーム放送を受信装置が受信して、送信されたストリームデータを録画した。この録画データを受信装置それぞれが保存せずに、受信装置が録画データを蓄積サーバに送信して、蓄積サーバが録画データを一元管理するシステムがあった。
ここで、蓄積用データ送信装置(受信装置)は、録画データをデジタルデータ蓄積装置(蓄積サーバ)に送信するとき、データサイズが大きいため録画データを所定のサイズに分割していた。受信装置は、この分割した録画データに対してハッシュ値を付与した。そして、送信先の蓄積サーバは、このハッシュ値を照合してハッシュ値が異なる録画データのみを蓄積した。これにより、ハッシュ値が同じ録画データ、すなわち同一の録画データが重複して蓄積サーバに蓄積されないようにした(特許文献1)。
特開2009−181648号公報
しかしながら、従来のシステムでは、異なる録画データであるにもかかわらず、ハッシュ値がバッティング(重複)して付与される可能性があった。そのため、同一のハッシュ値を持ってしまった異なる録画データは、蓄積サーバに保存されないという問題点があった。
本発明は、以上のような問題を解決するためになされたものであり、複数のSTBがストリーム放送を記録した録画データを重複および欠落なく一元管理するネットワークストレージ装置および録画データ蓄積プログラムを提供することを課題とする。
前記課題を解決するために、本発明の請求項1に記載のネットワークストレージ装置は、ストリーム放送を受信可能な複数のSTBと通信可能に接続し、前記STBからアップロードされる、前記ストリーム放送を記録した録画データを、録画データ記憶部に蓄積するネットワークストレージ装置において、前記STBからのアップロード要求に含まれるPCRパケットのPCR値を用いてデータの範囲を示した前記録画データの範囲情報と、前記ストリーム放送に含まれるTSパケットを解析した解析データに含まれるGOPデータの検出位置とに基づき、当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報を取得し、前記STBに前記GOP分割データ範囲情報を送信し、前記STBからアップロードされた前記GOP分割データを前記録画データ記憶部に蓄積する構成とした。
かかる構成において、ネットワークストレージ装置は、ストリーム放送に含まれるPCRパケットのPCR値を用いて録画データを管理する。
本発明によれば、複数のSTBがストリーム放送を記録した録画データを重複および欠落なく一元管理することができる。ひいては、録画データを一元管理することができ、複数のSTBからアップロードされる録画データを効率良く蓄積することができる。
第1の実施形態に係るストリーム放送録画システムのブロック図である。 TSパケットの構造を示す図である。 PSI,PAT,PMTのセクション構造を示す図である。 MPEG−2 TSのストリームタイプおよびPCRパケット識別方法の例を示す図である。 TSパケットのペイロードにMPEG−2 Videoのデータを含む場合の、MPEG−2 TSデータとGOPデータとの関係を示す図である。 ネットワークストレージの構成を示すブロック図である。 GOPテーブルの構造を示す図である。 PCRテーブルの構造を示す図である。 Blockテーブルの構造を示す図である。 ストリーム解析装置の構成を示すブロック図である。 STBの構成を示すブロック図である。 Fileテーブルの構造を示す図である。 Timeテーブルの構造を示す図である。 STBの録画処理動作を示すシーケンス図である。 ストリーム解析装置の解析処理動作を示すシーケンス図である。 ネットワークストレージのテーブル更新処理動作を示すシーケンス図である。 STBの録画データアップロード処理動作を示すシーケンス図である。 ネットワークストレージの問い合わせ対応処理動作を示すシーケンス図である。 録画データのGOP分割データ開始位置(position)を計算するための算出方法を示す図である。 ネットワークストレージの録画データ書き込み対応処理動作を示すシーケンス図である。 STBの録画データ再生処理動作を示すシーケンス図である。 ネットワークストレージの再生開始通知対応処理動作を示すシーケンス図である。 ネットワークストレージの再生終了通知対応処理動作を示すシーケンス図である。 STBのファイル削除処理動作を示すシーケンス図である。 ネットワークストレージの録画データ削除処理動作シーケンス図である。 (a)第1の状態時のGOPテーブルに記録されたデータ、(b)第1の状態時のFileテーブル621−1に記録されたデータ、(c)第1の状態時のFileテーブル621−2に記録されたデータを示す図である。 第1の状態時のGOPテーブルに記録されたデータを示す図である。 第1の状態時のPCRテーブルに記録されたデータを示す図である。 第1の状態時のBlockテーブルに記録されたデータを示す図である。 (a)STB600−1が備える第1の状態時Fileテーブル621−1、(a)STB600−2が備える第1の状態時Fileテーブル621−2に記録されたデータを示す図である。 (a)第2の状態時のGOPテーブルに記録されたデータを示す図である。(b)STB600−1に記録された第2の状態時の録画データRD1(RD1−1およびRD1−2)を示す図である。 第2の状態時のGOPテーブルに記録されたデータを示す図である。 アップロードされたGOP分割データをネットワークストレージがNS記憶部に記録する処理を示す図である。 第2の状態時のBlockテーブルに記録されたデータを示す図である。 第2の状態時のSTB600−1がアップロードする録画データRD1(RD1−1およびRD1−2)を図示したものである。 (a)STB600−1が備える第2の状態時のTimeテーブル622−1、(b)STB600−2が備える第2の状態時のTimeテーブル622−2に記録されたデータを示す図である。 第3の状態時のGOPテーブルに記録されたデータを図示したものである。 第3の状態時のGOPテーブルに記録されたデータを示す図である。 第3の状態時のBlockテーブルに記録されたデータを示す図である。 (a)STB600−1が備える第3の状態時のTimeテーブル622−1、(b)STB600−2が備える第3の状態時のTimeテーブル622−2に記録されたデータを示す図である。
次に、本発明の実施形態について、適宜、図面を参照しながら詳細に説明する。
以下、図面を参照して、本発明の実施の形態(以下、「本実施形態」と称する)につき詳細に説明する。なお、各図は、本発明について概略的に示してあるに過ぎない。よって、本発明は、図示例のみに限定されるものではない。また、各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
《1.ストリーム放送録画システムの説明》
図1に示すように、ストリーム放送録画システム1は、ストリームデータを送信する放送サーバ100と、ストリームデータを受信し記録(録画)する複数のSTB600(600−1,600−2,・・・)と、ストリームデータを受信し解析するストリーム解析装置300と、STB600から送信される録画データを記録し、STB600からの要求に応じて、記録した録画データを要求のあったSTB600に出力するネットワークストレージ200(NS)とを備える。ここで、STB600からネットワークストレージ200に対する録画データの要求は、特殊再生(例えば、ジャンプ再生)を含む。
ストリーム放送録画システム1は、(放送)ネットワーク400を介して、ストリームデータを送信し、STB600やストリーム解析装置300は、このネットワーク400に送信されたストリームデータを受信する。
また、STB600と、ストリーム解析装置300と、ネットワークストレージ200とは、(通信)ネットワーク500を介して通信可能に接続される。
(ネットワーク400,500)
ネットワーク400は、放送サーバ100が送信するストリームデータを、ストリーム解析装置300およびSTB600が受信するネットワークである。
ネットワーク500は、ネットワークストレージ200とストリーム解析装置300とを接続し、ネットワークストレージ200とSTB600とを接続するネットワークである。
ここでは、ネットワーク400は必ずしも双方向通信が行われるネットワークでなくてもよいため、ネットワークを、ネットワーク400とネットワーク500とで便宜上分けて示している。このネットワーク400は、映像データをMPEG−2の規格で圧縮した映像信号を送信可能なネットワークであればよいため、例えば、ケーブルテレビやインターネットテレビ等の放送の場合、ネットワーク400およびネットワーク500は、インターネットプロトコル(Internet Protocol)技術を利用した無線/有線LANなどを用いた一つのIPネットワークであってもよい。
(放送サーバ100)
放送サーバ100は、映像や音声などの放送信号をストリーム形式でネットワーク400に送信する装置である。本実施形態では、「MPEG−2 TS」の規格に沿って、放送信号をストリーム形式で送信する。この送出された信号をストリームデータとする。放送サーバ100が送出する放送信号については、詳細を後記する。
(ネットワークストレージ200)
ネットワークストレージ200は、ストリーム解析装置300からの解析データと、STB600からの録画データとを蓄積し管理する装置である。詳細を後記する。
(ストリーム解析装置300)
ストリーム解析装置300は、放送サーバ100から送信されるストリームデータを解析し、解析結果をネットワークストレージ200に出力する装置である。詳細を後記する。
(STB600)
STB600は、ストリーム形式で送信される放送信号を受信して、テレビで視聴可能な信号に変換する装置である。このSTB600は、ネットワーク400を介して放送サーバ100と接続し、ネットワーク500を介してネットワークストレージ200と接続され、放送サーバ100が送信するストリームデータを受信し、一時的に記録(録画)する。そして、STB600は、記録した録画データ(ストリームデータ)をネットワークストレージ200に送信する。その後、STB600は、ユーザからの要求に応じてネットワークストレージ200に録画データの送信を要求し、ネットワークストレージ200から録画データを受信する。これにより、STB600が受信した録画データをテレビに出力することで、テレビ画面にユーザが要求した映像を表示させることができる。
《2.信号およびデータの説明》
ここで、本実施形態において扱う信号およびデータについて説明する。
(放送信号)
ここで、放送サーバ100が出力する放送信号について説明する。
MPEG−2で圧縮された映像信号は、1つのIピクチャ(Intra-coded Picture)と、複数のPピクチャ(Predictive-coded Picture)およびBピクチャ(Bidirectionally Predictive-coded Picture)とから成るGOP(Group Of Pictures)とよばれるフレームの集まりで構成される。以下、このフレームをGOPデータと称する。
複数のGOPデータで構成される映像信号は、符号化されて、ES(Elementary Stream)と呼ばれる符号化データ列に変換される。このESは、デコードや提示に都合のよいかたまりに区切られ、ヘッダ(PESヘッダ)が付加され、PES(Packetized Elementary Stream)パケットという可変長のパケットに納められる。そして、PESパケットは細かく分割され、188バイトの固定長のTS(Transport Stream)パケットに格納される。これらTSパケットには、映像や音声などのコンポーネントごとに異なる値のPID(Packet IDentifier)が付与される。さらに、映像信号以外のその他の音声信号などのコンポーネントと共に多重化されて、TS(放送信号)が作成される。放送サーバ100は、このTSをネットワーク400に送出(放送)する。これにより、ストリームデータを受信したSTB600は、PIDの値に基づいて、ストリームデータから番組を構成するパケットを抽出して、復号し、テレビで視聴可能な信号に変換する。
(GOPデータ)
本発明のネットワークストレージ200は、録画データの重複判定をGOPデータ単位で行う。
ここで、受信した放送データ(MPEG−2 TS)をGOPデータに分割する方法、および、各GOPデータを識別するための各種値の取得方法について説明する。
ストリーム解析装置300が備えるストリーム解析部360(図10)は、各TSパケットのPID(Packet Identifier)の値を確認しPSI(図3)を取得することにより、ストリームデータに含まれるPCRパケットの識別を行う。
ヘッダにあるPCR(Program Clock Reference)に値(図3)が書き込まれたTSパケットをPCRパケットと称する。このPCRパケットは、MPEG−2規格により、エンコード側(放送サーバ100)がストリームデータ(TSパケットの連続)を送出するときに、0.1秒間に少なくとも1つ組み込まれる。
図2を用いて、TSパケットの構造について説明する。
TSパケットは、188バイト固定長のパケットであり、4バイト(32ビット)のヘッダと、アダプテーションフィールドとで構成される。TSパケットのヘッダの先頭から12ビット目から24ビット目までの13ビットには、PIDが格納される。このPIDからTSパケットを判定する。PIDが「0x0000」のTSパケットがPATであり、PIDが「0x0010〜0x1FFE」のTSパケットがPMTであり、その他各種ストリームのPIDが割り当てられている。
TSパケットの先頭から32bit(4byte)の後ろがアダプテーションフィールドであり、アダプテーションフィールドの先頭から16bit(2byte)の後ろがオプションフィールドであり、オプションフィールドの先頭がPCRフィールドである。TSパケット内のアダプテーションフィールド(adaptation field)およびペイロード(payload)の構成は、27ビット目と28ビット目の2ビットで示されるアダプテーションフィールド制御(adaptation field control)の値により決定される。
アダプテーションフィールドの12ビット目から16ビット目までのフラグ(flags)(5ビット)は、次に続くオプションフィールド(option field)の構成を示しており、フラグが立っている場合、そのフラグに応じた各種データがオプションフィールドに格納されていることを示している。このアダプテーションフィールドの12ビット目がPCR_flagであり、このフラグが立っている(1)場合、オプションフィールドにPCR値が格納されていることを示す。このPCR_flagが1のTSパケットをPCRパケットと称する。ここで、PCR値は、アダプテーションフィールドの先頭から48ビット(その内6ビットはreserved(予約))から取得することができる。
図3は、TSパケットのペイロードにPAT、PMTを含む場合のペイロードの構造を示す図である。
PAT、PMTなどのPSI(Program Specific Information)データは、TSパケットのペイロードにMPEG−2 セクション形式で格納される。PSIの13ビット目から24ビット目までの12ビットには、セクション長(section length)が格納されており、次のビットからの後続データのデータ長を示している。
PAT(PIDが「0x0000」、以下、PID=0と称する。)のとき、PSIの
65ビット目以降には、MPEG−2 TSに含まれる番組数分(=N番組)のセクションデータ(PAT section data)(1番組32ビットのセクションデータ)が格納されている。各セクションデータの先頭の16ビットが番組番号(program_number)を示しており、20ビット目から32ビット目までの13ビットが前記番組番号に対応するPIDを示している。このセクションデータにより、番組番号とPMTのPIDとの対応付けが可能となる。
PMT(PIDはPATで指定)の場合も、PSIの65ビット目以降に、セクションデータ(PMT section data)が格納されている。セクションデータの4ビット目から16ビット目までの13ビットには、クロック(clock)のPID(PCR_PID)が格納されている(図4参照)。このPIDのTSパケットを解析することにより、PCR値を取得することが可能となる。
さらに、このセクションデータ(PMT section data)の21ビット目〜32ビット目までの12ビットには、次のビットから続くプログラム情報のデータ長(program_info_length)(可変長)が格納されている。このデータ長をN1とする。
セクションデータ(PMT section data)の32+N1ビット目以降から、番組に含まれるストリーム数分のエレメンタリストリームデータ(40+N2ビット)が格納されている。各エレメンタリストリームデータの先頭の8ビットにはストリームタイプ(stream_type)が格納されており、12ビット目から24ビット目までの13ビットにはそのストリームタイプに対応するPID(elementary_PID)が格納されている。このエレメンタリストリームデータにより、番組のストリームタイプとPIDとの対応付けが可能となる。
図4は、MPEG−2 TSのストリームタイプおよびPCRパケット識別方法の例を示した図である。
まず、ストリーム解析部360は、PID=0のTSパケットを検出して、PATのTSパケットを取得する。このPATのTSパケットには、ProgramID(番組番号)=0001と、その番組に対応するPMTのTSパケットのPID=16とが対応して格納されている。
次に、ストリーム解析部360は、ProgramIDが0001のPMTのTSパケット、すなわち、PID=16のTSパケットを検出する。これにより、目的の番組のPMTのTSパケットを取得する。このPMTのパケットには、目的の番組のPCRのPID、およびストリームタイプ別のPIDの関連付けが行われている。
ストリームタイプがMPEG−2 VideoのPID=257のTSパケットを結合することで、MPEG−2 Videoのデータを取り出すことができる。また、PCRのPID=256のTSパケットにより、そのデータ位置におけるPCR値を取得することができる。
図5は、TSパケットのペイロードにMPEG−2 Videoのデータを含む場合の、MPEG−2 TSデータとGOPデータとの関係を示した図である。
MPEG−2 TSでは、PMTに記載されたストリームタイプがMPEG−2 VideoのTSパケットのペイロードを結合することで、メディア情報の単位であるPESパケットに分割することができる。
PESパケットはヘッダ(PESヘッダ)とペイロードとにより構成され、ペイロードを結合するとMPEG−2 Videoのシーケンスに分割される。さらに、シーケンスはヘッダとペイロード(とエンドコード)とにより構成され、ペイロードは複数のGOPデータにより構成される。なお、PESパケットの最大長は65536バイトであり、通常はGOPデータに含まれる1ピクチャをPESのペイロードに格納する。また、GOPデータは複数の画像をまとめたものであり、メディア上の並びでIピクチャが先頭に来ることから、GOP単位で独立して再生することが可能である。
《3.定義する用語の説明》
ここで、本明細書において定義する用語である「SGP」、「GTC」、「PTC」について、図5を用いて説明する。
ここで、GOPデータの先頭を含むPESパケットに対して、PESパケットデータの先頭を格納するTSパケット(先頭TSパケット)の手前に存在し、PCR値の最も大きいPCRパケットを範囲先端PCRパケットとする。また、範囲先端PCRパケットのPCR値をSGP、範囲先端PCRパケットから次の範囲先端PCRパケットの1つ手前となるTSパケットまでに存在するTSパケット一式をGOP分割データとし、GOP分割データのTSパケット数をGTCとする。
また、後記の図19において説明するが、PCRパケットから次のPCRパケットの1つ手前となるTSパケットまでに存在するTSパケットのパケット数をPTCとする。詳細は後記する図19を用いて説明する。
《4.ネットワークストレージ200の構成》
図6に示すように、ネットワークストレージ200は、NSDB管理部210と、NSDB220と、NS記憶部230と、解析データ受信部250と、ストレージ管理部260と、録画データ受信部270とを備える。
NSDB管理部210と、解析データ受信部250と、ストレージ管理部260と、録画データ受信部270とは、制御手段として機能し、例えば、CPU(Central Processing Unit)で構成される。各構成部の制御部としての機能は、CPUが不図示の記憶部に格納されるプログラムを展開し、実行することによって実現される。
NSDB220と、NS記憶部230とは、データやプログラムを記憶する構成部であり、例えば、HDD(Hard Disc Drive)、RAM(Random Access Memory)、光ディスク等の記憶手段である。
(NSDB管理部210)
NSDB管理部210は、NSDB220に対する要求(データ作成、データ読み込み、データ更新、データ削除)に応じて、NSDB220に記憶されたデータ更新等の処理を行う。
(NSDB220)
NSDB220は、GOPテーブル221(図7)と、PCRテーブル222(図8)と、Blockテーブル223(図9)とを保持する。
(GOPテーブル221)
GOPテーブル221は、ネットワークストレージ200にアップロードされた録画データのGOP分割データの情報(SGP、GTC等、図4,図5参照)を記憶する構成部である。図7に示すように、このGOPテーブル221には、GOP分割データの情報毎に1レコードが記憶され、GOP分割データの情報は、ProgramID、SGP、GTC、DataID、UserCount、およびGOPStatusで構成される。
ここで、ProgramIDは、番組番号である。
SGPは、範囲先端PCRパケットのPCR値である。
GTCは、GOP分割データを構成するTSパケットのパケット総数である。
DataIDは、後記するBlockテーブル223のレコードを一意にする情報であり、NS記憶部230に蓄積されたGOP分割データの領域に係る情報である。
UserCountは、当該GOP分割データを含む録画を行ったSTB600の数である。これは、後記する図17のステップS405において、STB600から送信される〔ProgramID、Start−PCR、End−PCR、offset〕は、録画データのサイズを示し、このサイズに含まれるGOP分割データの情報に対して、UserCountが1加算される。
GOPStatusは、GOP分割データの利用可否情報である。“N(None)”、“U(Unavailable)”、“A(Available)”のいずれか一つが記録される。詳細を後記する。
(PCRテーブル222)
PCRテーブル222は、PCRパケットの情報を記憶する構成部である。図8に示すように、このPCRテーブル222には、PCRパケット毎に1レコードのPCRパケットの情報が記憶され、このPCRパケットの情報は、ProgramID、PCR、およびPTCで構成される。
(Blockテーブル223)
Blockテーブル223は、ブロック単位で区切られたNS記憶部230の記憶領域の情報を記憶する構成部である。図9に示すように、このBlockテーブル223には、DataID毎に1レコードの記憶領域の情報が記憶され、この記憶領域の情報は、DataID、NextID(次のDataID)、StorageID(記憶装置の識別番号)、BlockID(開始ブロック番号)、BlockCount(総ブロック数)、およびRefCounter(参照カウンタ)で構成される。
図6に戻る。
(NS記憶部230)
NS記憶部230は、録画データを記録する記憶部である。このNS記憶部230は、例えば、HDDなどの複数の記憶装置を組み合わせたものであり、NS200の制御部(解析データ受信部250、ストレージ管理部260、録画データ受信部270)に制御されて、NAS(Network Attached Storage)およびRAID(Redundant Arrays of Inexpensive Disks)としての機能を実現している。
(解析データ受信部250)
解析データ受信部250は、ストリーム解析装置300から送信される解析データを受信し、この解析データから一部のデータを抽出し、NSDB管理部210に出力する構成部である。解析データ受信部250が解析データから抽出するデータは、NSDB管理部210によりNSDB220のGOPテーブル221、PCRテーブル222に記録されているデータである。
つまり、解析データ受信部250は、GOPテーブル221の〔ProgramID、SGP、GTC〕、PCRテーブル222の〔PCR、PTC〕の値をストリーム解析装置300から送信される解析データから抽出する。
(ストレージ管理部260)
ストレージ管理部260は、NS記憶部230の記憶可能なデータ領域の使用状況をブロック単位で管理する。このストレージ管理部260は、複数の記憶装置(HDDなど)で構成されるNS記憶部230のデータ領域を、各記憶装置の識別番号(StorageID)と、ストレージ毎のブロック番号(BlockID)とで区分したブロック単位で、Blockテーブル223を用いて管理する。ここで、ストレージ管理部260は、NSDB220のBlockテーブル223のデータを更新するとき、NSDB管理部210に更新要求をして、NSDB管理部210に更新させる。
(録画データ受信部270)
録画データ受信部270は、STB600から転送される録画データを受信すると共に、その録画データをNS記憶部230に記録する。このとき、録画データ受信部270は、NSDB管理部210を介してBlockテーブル223に基づき、NS記憶部230の記憶領域を確保し、そのNS記憶部230の記憶領域に録画データを記録する。
《5.ストリーム解析装置300の構成》
図10に示すように、ストリーム解析装置300は、ストリーム受信部350と、ストリーム解析部360と、ネットワークストレージ通信部370とを備える。
(ストリーム受信部350)
ストリーム受信部350は、ネットワーク400と接続され、放送サーバ100から送信されるストリームデータを受信し、ストリーム解析部360に出力する構成部である。
(ストリーム解析部360)
ストリーム解析部360は、ストリームデータを解析して、解析データを生成する構成部である。
このストリーム解析部360は、番組開始時点のストリームデータを構成するTSパケットの連続を監視し、PCRパケットを検出する(図2)。そして、PCRパケットの情報(SGP、GTC、およびPTCの各種値)を取得して、随時メモリ(不図示)に記録させる。そして、ストリーム解析部360は、番組終了後、ストリームデータから得られた、ProgramIDと、PCRパケットの情報(SGP、GTC、およびPTCの各種値)とで構成される解析データを生成する。そして、ストリーム解析部360は、解析データを、ネットワークストレージ通信部370を介してネットワークストレージ200に送信(通知)させる。
(ネットワークストレージ通信部370)
ネットワークストレージ通信部370は、ネットワーク500と接続され、ストリーム解析部360から取得した解析データをネットワークストレージ200に送信する構成部である。
《6.STB600の構成》
図11に示すように、STB600は、STBDB管理部610と、STBDB620と、STB記憶部630と、入力制御部640と、操作入力部641と、ストリームデータ受信部650と、録画データ送信部660と、録画データ受信部670と、信号変換出力部680とを備える。
(STBDB管理部610)
STBDB管理部610は、STBDB620に対する作成・読み込み・更新・削除の各要求を処理する。
(STBDB620)
STBDB620は、Fileテーブル621(図12)、Timeテーブル622(図13)を保持する。
(Fileテーブル621)
Fileテーブル621は、STB600が受信したストリームデータの情報(STB記憶部630に記録された録画データの情報)を記憶する構成部である。図12に示すように、このFileテーブル621には、録画データ毎に1レコードの録画データの情報が記憶され、この録画データの情報は、ProgramID、file、Start−PCR、End−PCR、およびoffsetで構成される。
Start−PCRは、録画開始後、最初のPCRパケットのPCR値である。
End−PCRは、録画終了の直前に存在するPCRパケットのPCR値である。
offsetは、録画開始後、最初のPCRパケットが検出されるまでに存在するTSパケット(つまり、最初のTSパケットから最初のPCRパケットの1つ手前となるTSパケットまでに存在するTSパケット)の数である。
(Timeテーブル622)
Timeテーブル622は、STB記憶部630に記録されたGOP分割データの位置サイズ情報を記憶する構成部である。図13に示すように、このTimeテーブル622には、録画データに含まれるGOP分割データ毎に1レコードのGOP分割データの位置サイズ情報が記憶され、このGOP分割データの位置サイズ情報は、ProgramID、SGP、time(録画データ先頭からの相対時間)、file(ファイル名)、position(GOP分割データ開始位置;録画データの先頭からの距離をTSパケットの数で示す)、およびLength(GOP分割データ長;単位はビット)で構成される。
図11に戻る。
(STB記憶部630)
STB記憶部630は、録画データを記録する記憶部である。このSTB記憶部630は、例えば、フラッシュメモリやHDD、光ディスクなどの記憶装置である。
(操作入力部641)
操作入力部641は、ユーザからSTB600の操作指示を受け付ける構成部であり、ユーザに操作されたリモコンが出射する赤外線などの信号を受信したり、ユーザに操作キーから直接入力されたりすることで、STB600の操作指示を受け付ける。
(入力制御部640)
入力制御部640は、操作入力部641に入力されたSTB600の操作指示(録画開始、録画停止、再生開始、再生停止、特殊再生操作(ジャンプ再生)、録画データのアップロード(ストリーム解析装置300への送信指示)など)を処理する構成部である。
(ストリームデータ受信部650)
ストリームデータ受信部650は、放送サーバ100からのストリームデータを受信すると共に、録画機能を実行しているときは、受信したストリームデータを、録画データとして、STB記憶部630に記憶する。
なお、ストリームデータ受信部650は、録画開始時、録画データをSTB記憶部630に記録する際に、その録画データに、各STB600で識別可能な一意のファイル名(file)を付与する。
(録画データ送信部660)
録画データ送信部660は、録画データをネットワークストレージ200に送信(アップロード)する構成部である。
この録画データ送信部660は、STB記憶部630から録画データを取得し、その録画データをGOP分割データ毎に分割して、ネットワークストレージ200に送信する。このとき、録画データ送信部660は、ネットワークストレージ200に問い合わせて、ネットワークストレージ200に記録されていない(重複していない)GOP分割データのみを送信する。
(録画データ受信部670)
録画データ受信部670は、ネットワークストレージ200に録画データの送信を要求し、取得する構成部である。
この録画データ受信部670は、入力制御部640からの再生指示に応じて、指示された録画データの送信をネットワークストレージ200に要求し、ネットワークストレージ200から送信される録画データを受信する構成部であり、特に、特殊再生時のデータ読み込み処理の制御に使用される。
(信号変換出力部680)
信号変換出力部680は、録画データ受信部670が受信した録画データ(放送信号)をテレビで視聴可能な信号に変換して、STB600と接続されたテレビに出力する。
《7.動作説明》
第1の実施形態におけるストリーム放送録画システムの動作について説明する。
以下、ストリーム放送録画システム1で実行される、(1)放送録画シーケンス(図14〜図16)と、(2)録画データアップロードシーケンス(図17〜図18、図20)と、(3)録画データ再生シーケンス(図21〜図23)と、(4)録画データ削除シーケンス(図24〜図25)とを説明する。
(1)放送録画シーケンス
図14〜図16を用いて、放送録画シーケンスについて説明する。
図14は、放送サーバ100から送信されるストリームデータを受信したSTB600の録画処理動作を示すシーケンス図である。
図15は、放送サーバ100から送信されるストリームデータを受信したストリーム解析装置300の解析処理動作を示すシーケンス図であり、ストリーム解析装置300が解析したデータをネットワークストレージ200に送信する処理をも含めて図示されている。
図16は、ストリーム解析装置300から送信される解析データ(テーブル更新データ)を受信したネットワークストレージ200のテーブル更新処理動作を示すシーケンス図である。
(STB600の録画処理)
まず、図14を用いて、放送サーバ100から送信されるストリームデータを受信したSTB600の録画処理動作について説明する。
ストリームデータ受信部650は、入力制御部640から録画開始指示を受けたときに(ステップS101)、録画開始指示のあった番組のファイルをSTB記憶部630から検索して、検出したファイルに含まれる番組データを取得し、ストリームデータの記録先となるファイルを作成する(ステップS102)。ストリームデータ受信部650は、STBDB管理部610を介して、ファイルに含まれるデータに基づきFileテーブル621に記録先となる新規レコードを作成する(ステップS103)。これにより、例えば、Fileテーブル621には、〔0001、user1_0001−1、0(Start−PCR)、0(End−PCR)、0(offset)〕の新規レコード(記録先レコード)が作成される(図12参照)。
そして、ストリームデータ受信部650は、ストリームデータの受信を開始することを入力制御部640に通知して(ステップS104)、ストリームデータの受信を開始する(ステップS105)。
ストリームデータ受信部650は、受信したストリームデータをモニタリングして最初のPCRパケットの情報をFileテーブル621の記録先レコードに記録する(ステップS106)と共に、受信したストリームデータをステップS102で生成したファイルに格納(書き込み)する(ステップS107)。
ここでステップS106において、ストリームデータ受信部650は、受信したストリームデータをモニタリングして、PCRパケットを検索する。録画開始時(ストリームデータの受信開始時)から最初のPCRパケットが出現するまでに、ファイルに記録したTSパケットの数(offset)と、PCRパケットのPCR値(Start−PCR)とを、ステップS103でFileテーブル621に作成したレコード(記録先レコード)に記録する。これにより、Fileテーブル621の記録先レコードが〔0001、user1_0001−1、0999997300、0、11〕に更新される(図12参照)。
その後、ストリームデータ受信部650は、入力制御部640から録画終了指示を受けたときに(ステップS108)、モニタリングで最後に検出したPCRパケットのPCR値(End−PCR)を、Fileテーブル621の記録先レコードに記録する(ステップS109)。これにより、Fileテーブル621の記録先レコードが〔0001、user1_0001−1、0999997300、1000029700、11〕に更新される(図12参照)。そして、ストリームデータ受信部650は、ストリームデータを記録したファイルをクローズする(ステップS110)。
そして、ストリームデータ受信部650は、ファイルをクローズしたことを入力制御部640に通知して(ステップS111)、録画処理動作を終了する。
以上の処理により、録画開始から録画終了までのストリームデータが、STB記憶部630にステップS102で生成したfile「user1_0001−1」をファイル名とするファイルに格納される。また、ストリームデータのProgramID、Start−PCR、End−PCR、offsetが、STBDB620のFileテーブル621に記録される。
(ストリーム解析装置300の解析処理)
次に、図15を用いて、放送サーバ100から送信されるストリームデータを受信したストリーム解析装置300の解析処理動作について説明する。この図15には、放送開始から放送終了までの間、ストリーム解析装置300が行う解析処理動作が示されている。
まず、放送サーバ100は、番組の放送開始時にProgramIDを送信し(ステップS201)、ストリーム受信部350は、ProgramIDを受信したことをストリーム解析部360に通知する(ステップS202)。そして、ストリーム受信部350は、放送サーバ100に応答を送信する(ステップS203)。
ストリーム解析装置300からの応答を受けて、放送サーバ100は、ストリームデータの送信を開始する。ここで、放送サーバ100は、ネットワーク400を介してストリーム解析装置300からの応答を待つことが記載されているが、双方向通信である必要はない。すなわち、放送サーバ100は、所定の時刻からストリームデータの送信(配信)を開始してもよい。
ストリーム受信部350は、放送サーバ100からストリームデータを受信し(ステップS204)、ストリーム解析部360に出力する。
ストリーム解析部360は、ストリームデータをモニタリング(解析)し(ステップS205)、ストリームデータから抽出した(後記する)テーブル更新データをネットワークストレージ200に送信する(ステップS206)。これにより、ネットワークストレージ200では、GOPテーブル221(図7)およびPCRテーブル222(図8)のデータ更新が行われる。
そして、ストリーム解析部360は、ネットワークストレージ200の更新完了通知をストリーム受信部350に出力し(ステップS207)、ストリーム受信部350から、次のストリームデータを受け付ける。
このステップS205において、ストリーム解析部360がストリームデータから抽出するテーブル更新データは、GOPテーブル221およびPCRテーブル222に記憶させるデータであり、GOPデータと各PCRパケットとから抽出できるデータである。ストリーム解析部360は、GOPデータから〔ProgramID、SGP、GTC〕を抽出し、PCRパケットそれぞれから、PCRパケットの数(m個)の〔PCR値、PTC〕を抽出する。そして、ストリーム解析部360は、ストリームデータを1つ受信する毎に〔ProgramID、SGP、GTC〕と、m個の〔PCR値、PTC〕とをネットワークストレージ200に送信する。
以上に示すステップS204〜ステップS207の処理は、ストリーム受信部350が放送サーバ100から放送終了通知を受信する(ステップS208)まで実行される。図15には、ストリーム受信部350がストリームデータをn回受信したことを示している。
(ネットワークストレージ200のテーブル更新処理)
図16を用いて、ストリーム解析装置300から送信されるネットワークストレージ200のテーブル更新処理動作について説明する。
まず、解析データ受信部250は、図15のステップS206の処理が行われ、ストリーム解析装置300から送信されるテーブル更新データを受信する(ステップS301)。このテーブル更新データは、〔ProgramID、SGP、GTC〕と、m個の〔PCR値、PTC〕とで構成される。
解析データ受信部250は、GOPデータから抽出した〔ProgramID、SGP、GTC〕を、NSDB管理部210を介して(ステップS302)、NSDB220のGOPテーブル221(図7)に1レコードとして記録させる(ステップS303)。このとき、そのレコードには、DataIDに “−(null)”、UserCountに“0”、GOPStatusに“N(None)”を記録させる。
同様に、解析データ受信部250は、PCRパケットから抽出したm個の〔PCR値、PTC〕それぞれを、NSDB管理部210を介して(ステップS304)、NSDB220のPCRテーブル222(図8)に1レコードとして記録させる(ステップS305)。これにより、PCRテーブル222にはmレコードの〔PCR値、PTC〕が記録される。
そして、解析データ受信部250は、更新完了通知をストリーム解析装置300に送信し(ステップS306)、ネットワークストレージ200はテーブル更新処理を終了する。
以上のステップS301〜ステップS306の処理をストリーム解析装置300からテーブル更新データ(図15のステップS206−1〜ステップS206−n)を受信するたびに行う。これにより、放送開始から放送終了までのGOP分割データの各種値が、ネットワークストレージ200に保存される。
(GOPStatusの状態遷移)
ここで、GOPStatus(図7)について説明する。
GOPStatusはSGPに対応するGOP分割データの状態を示すものであり、“N(None)”、“U(Unavailable)”、“A(Available)”の3種類で状態を示す。“N”はSGPに対応するGOP分割データが存在しない状態を示し、“U”はSGPに対応するGOP分割データが存在するが、そのGOP分割データを利用することができない状態を示し、“A”はSGPに対応するGOP分割データが存在し利用可能な状態を示す。これらの状態は“N”→“U”、“U”→“A”に状態を変えることができ、逆に、“A”→“U”、“U”→“N”にも状態を変えることができる。
ここで、図16に示すテーブル更新処理は、放送中のストリームデータを解析して得たテーブル更新データを用いた処理を示している。そのため、GOPテーブル221に登録されるSGPに対応するGOP分割データが、ネットワークストレージ200内に存在しない。そのため、GOPテーブル221(図7)には、GOPStatusの値として“N”が記録される。
(2)録画データアップロードシーケンス
図17〜図18、図20を用いて、録画データアップロードシーケンスについて説明する。ここで録画データアップロードとは、STB600のSTB記憶部630のファイルを格納された録画データ(ストリームデータ)を、ネットワークストレージ200に送信することである。
(STB600の録画データアップロード処理)
まず、図17を用いて、STB600が録画データをネットワークストレージ200にアップロード(送信)する録画データアップロード処理動作について説明する。
まず、録画データ送信部660は、入力制御部640からアップロード指示を受け付け(ステップS401)、指示されたファイルに格納された録画データ(ストリームデータ)をアップロード(送信)するため、STB記憶部630に記憶されたファイルをオープンする(ステップS402)。
次に、録画データ送信部660は、ステップS402で取得したファイルに基づき、STBDB管理部610を介して、Fileテーブル621を検索し(ステップS403)、ファイル名(file)に対応するレコードの〔ProgramID、Start−PCR、End−PCR、offset〕を取得する(ステップS404)。
さらに、録画データ送信部660は、取得したこれらの値〔ProgramID、Start−PCR、End−PCR、offset〕を引数とした録画データのサイズをネットワークストレージ200に送信して、問い合わせを行う(ステップS405)。
この問い合わせによりネットワークストレージ200で行われる問い合わせ対応処理(図18)については、詳細を後記する。
このステップS405に示す問い合わせにより、録画データをアップロードしたときに重複するデータがあるか否かの判定結果(flag)がネットワークストレージ200から送信される。
そして、録画データ送信部660は、ネットワークストレージ200からGOP分割データの先頭位置とデータ範囲とを特定するGOP分割データ位置情報として、〔SGP、position、GTC〕と、flag(m個)とを取得する(ステップS406)。
ここで、〔SGP、position、GTC〕は、Start−PCR(録画開始後最初のPCRパケットのPCR値)からEnd−PCR(録画終了の直前に存在するPCRパケットのPCR値)までに存在するGOP分割データに対応する各種値である。
flagは、“false”または“true”を値とするデータであり、ネットワークストレージ200において、すでにそのGOP分割データが存在する(記録されている)場合は“false”、存在しない場合は“true”である。
次に、録画データ送信部660は、取得したSGP一覧〔SGP、position、GTC〕から、GOP分割データの相対時刻を算出する(ステップS407)。そして、取得したSGPの個数分(n個)のレコードを、STBDB管理部610を介して、STBDB620のTimeテーブル622に作成する(ステップS408)。
ここで、GOP分割データの相対時刻は、各SGP(PCR値)を、SGP一覧の先頭にあるSGPで差分した値を、27kHzで除算して算出する。例えば、SGP=1000013500から、SGP=1000000000を差分して、27kHzで除算することで「0.5秒(00:00:00:500)」が得られる(図13,図35)。
次に、録画データ送信部660は、file(ファイル名)のファイルに格納された録画データ(ストリームデータ)をGOP分割データ毎に分割し(ステップS409)、flagの値が“true”のGOP分割データを、ネットワークストレージ200にアップロード(送信)する(ステップS410)。このとき、録画データ送信部660は、分割したGOP分割データ毎に、〔ProgramID、SGP、data〕を送信する。ここで、dataはGOP分割データそのものである。
そして、録画データ送信部660は、全てのGOP分割データの送信が完了した時点で、file(ファイル名)のファイルをクローズまたは削除する(ステップS411)。そして、入力制御部640に通知して(ステップS412)、ファイルのアップロード処理を終了する。
以上の処理により、STB600において、ストリーム再生時の特殊再生に使用するTimeテーブル622の作成が行われると共に、file(ファイル名)のファイルの録画データがネットワークストレージ200に保存される。
(ネットワークストレージ200の問い合わせ対応処理)
図18を用いて、STB600から送信される問い合わせに対してネットワークストレージ200が行う問い合わせ対応処理について説明する。
まず、図17のステップS405の処理が行われ、録画データ受信部270は、STB600からの問い合わせ〔ProgramID、Start−PCR、End−PCR、offset〕を受信する(ステップS501)。
録画データ受信部270は、NSDB管理部210を介して、GOPテーブル(図7)を用いて、Start−PCRからEnd−PCRまでに存在するGOP分割データの検索を行う(ステップS502)。このとき、NSDB管理部210は、(Start−PCR≦SGP)かつ(次のGOP分割データのSGP(次のSGP)≦End−PCR)を満たすGOP分割データを検索する。
NSDB管理部210は、GOPテーブル(図7)において、検出したGOP分割データに対応するレコード〔ProgramID、SGP、GTC、GOPStatus〕のUserCountをインクリメントする(UserCount++)(ステップS503)。これにより、GOPテーブル(図7)において、検出された全てのGOP分割データ(n個)に対応するレコードのUserCountがインクリメントされる。
NSDB管理部210は、GOP分割データの検索結果を録画データ受信部270に出力する。このとき、NSDB管理部210は、検出したGOP分割データに対応するレコード〔ProgramID、SGP、GTC、GOPStatus〕およびflagからなるGOP分割データ情報を録画データ受信部270に出力する(ステップS504)。
これにより、検出された全てのGOP分割データ情報(n個)が録画データ受信部270に出力される。
ここで、flagは、GOP分割データの存在の有無を示す情報であり、GOPStatusが“N”以外の場合、GOP分割データがすでに存在している(GOPテーブルに当該GOP分割データが記憶されている)ことを示している。そのため、flagに“false”を指定する。一方、GOPStatusが“N”の場合、flagに“true”を指定する。
次に、録画データ受信部270は、録画データの先頭からGOP分割データの先頭までのTSパケットの数から、positionを算出する(ステップS505)。
このとき、録画データ受信部270は、offset(の値)と、PTC(の値)とから、positionを算出する。この算出方法について図19を用いて説明する。
図19は、録画データのGOP分割データ開始位置(position)を計算するための算出方法を示した例である。ネットワークストレージ200は、STB600から〔Start−PCR,End−PCR,offset〕を取得し(図17のステップS405、図18のステップS501)、録画データのGOP分割データ開始位置(position)を計算する。
ここで、録画データのStart−PCRがPCR[a]であり、録画データに含まれる先頭のGOP分割データ(GOP#1)のSGP(#1)との間にPCR[b]、PCR[c]が存在するとする。この場合、positionの値は、録画データの先頭からGOP分割データの先頭までの距離をTSパケットの数で示したものであり、すなわち、録画データ先頭からStart−PCRまでのTSパケットのパケット総数であるoffsetと、PCR[a](Start−PCR)〜SGP(#1)までのTSパケットのパケット総数との合計の値である。
図18に戻る。
次に、録画データ受信部270は、NS記憶部230内の空き領域のうち、GOP分割データを書き込むための書込領域を、NSDB管理部210を介して、Blockテーブル223から検索する(ステップS506〜ステップS507)。なお、flagに“true”が指定されているGOP分割データのみを書き込み対象とする。(ここでは、全てのGOP分割データの個数をn、flag=“true”のGOP分割データの個数をk(n≧k)として説明する。)
ストレージ管理部260は、NSDB管理部210を介して、Blockテーブル223を用いて書込領域を確保し(ステップS509)、Blockテーブル223における確保した書込領域情報のDataIDを取得する(ステップS510)。このとき、NSDB管理部210において、確保した書込領域情報のDataIDに対応するBlockテーブル223のレコードに対し、RefCounterをインクリメントする(RefCounter++)(ステップS508)。
最後に、録画データ受信部270は、書込領域を確保したGOP分割データについて、ProgramID、SGPをkeyとして、NSDB管理部210を介してGOPテーブル221を検索し(ステップS511)、該当レコードのGOPStatusを“U”に変更する(ステップS512)。そして、NSDB管理部210は変更完了通知を録画データ受信部270に出力する(ステップS513)
録画データ受信部270は、取得したn個の〔SGP、position、GTC、flag〕で構成されるGOP分割データ位置情報をSTB600に送信する(ステップS514)。これにより、STB600はSGP一覧を取得することができる。
(ストリーム解析装置300の録画データ書き込み対応処理)
次に、図20を用いて、STB600からアップロード(送信)される録画データを受信したネットワークストレージの200の録画データ書き込み対応処理動作について説明する。
まず、録画データ受信部270は、図17のステップS410でSTB600から送信されるGOP分割データ〔ProgramID、SGP、data〕を受信する(ステップS601)。そして、録画データ受信部270は、NSDB管理部210を介し、GOPテーブル221から書き込み先(図18のステップS509で確保した書込領域)を検索する(ステップS602)。このとき、録画データ受信部270は、〔ProgramID、SGP〕を用いて、GOPテーブル221のレコードを検索して、対応するDataID(Blockテーブル223のキー値)を取得する(ステップS603)。
次に、録画データ受信部270は、取得したDataIDをストレージ管理部260に出力し(ステップS604)、ストレージ管理部260に書き込み先の取得を依頼する。
ストレージ管理部260は、NSDB管理部210を介して、Blockテーブル223(図9)から図18のステップS509で確保した書込領域(書き込み先のブロック)を検索する(ステップS605)。ここでは、ストレージ管理部260は、DataIDをキー値として、図18のステップS509で確保した書込領域情報を、Blockテーブル223(図9)のレコード〔StorageID、BlockID、BlockCount〕から検索する。
ストレージ管理部260は、Blockテーブル223(図9)において、検出したDataIDに対応するレコード〔StorageID、BlockID、BlockCount〕のRefCounterをインクリメントする(RefCounter++)(ステップS606)。
NSDB管理部210は、検出した書き込み先のブロックの書込領域情報をストレージ管理部260に出力する(ステップS607)。このとき、NSDB管理部210は、検出したDataIDに対応するレコード〔StorageID、BlockID、BlockCount〕をストレージ管理部260に出力する。そして、ストレージ管理部260は、書込領域情報を録画データ受信部270に出力する(ステップS608)。
録画データ受信部270は、GOP分割データを取得した書込領域(書き込み先のブロック)に対応する、NS記憶部230のブロックに書き込む(ステップS609)。そして、録画データ受信部270は、ストレージ管理部260に対して書込完了通知を出力する(ステップS610)。ここで、録画データ受信部270は、書込完了通知と共にDataIDをストレージ管理部260に出力し、ストレージ管理部260にBlockテーブル223(図9)の更新を依頼する。
ストレージ管理部260は、NSDB管理部210を介し、DataIDをキー値としてBlockテーブル223(図9)を検索し(ステップS611)、検出したDataIDに対応するレコードのRefCounterをデクリメントする(RefCounter--)(ステップS612)。
そして、NSDB管理部210は変更完了通知をストレージ管理部260に出力し(ステップS613)、ストレージ管理部260は録画データ受信部270に転送する(ステップS614)。
次に、録画データ受信部270は、〔ProgramID、SGP〕をキー値として、NSDB管理部210を介して、GOPテーブル221を検索し(ステップS615)、検出した〔ProgramID、SGP〕に対応するレコードのGOPStatusを“U”から“A”に変更させる(ステップS616)。そして、NSDB管理部210は変更完了通知を録画データ受信部270に送信する(ステップS617)。
録画データ受信部270は、録画データ書込完了通知をSTB600に送信し(ステップS618)、次のGOP分割データを送信するようSTB600に要求する。その要求に対して、GOP分割データの送信がなければ、ネットワークストレージ200は録画データ書き込み対応処理を終了する。
以上の処理により、〔ProgramID、SGP〕に対応するGOP分割データがネットワークストレージ200に保存され、STB600から読み込み可能な状態となる。
(3)録画データ再生シーケンス
図21〜図23を用いて、録画データ再生シーケンスについて説明する。
(STB600の録画データ再生処理)
次に、図21を用いて、ネットワークストレージ200から読み込んだ(取得した)録画データを再生するSTB600の録画データ再生処理動作について説明する。
まず、録画データ受信部670は、入力制御部640からの再生開始指示〔file(ファイル名)、s−time(再生開始時刻)〕に応じて(ステップS701)、STBDB管理部610を介し、Timeテーブル622を検索し(ステップS702)、file(ファイル名)のGOP分割データのレコード〔ProgramID、SGP、time、position、Length〕を取得する(ステップS703)。
ここで、再生開始時刻を指定しない再生開始指示であれば、録画開始時刻に当たる00:00:00:000の相対時刻が再生開始時刻となる。ここでは、s−timeで示す再生開始時刻を指定した場合について説明する。
録画データ受信部670は、再生した録画データがネットワークストレージ200から削除されることを防ぐため、ネットワークストレージ200に対して再生開始通知を送信する(ステップS704)。その後、録画データ受信部670は、ステップS703で取得したレコードから、指定された再生開始時刻(s−time)を越えない最も大きな相対時刻(time)をもつレコードを検索する。この検索処理において、録画データ受信部670は、再生開始位置を検出する(ステップS705)。そして、録画データ受信部670は、再生開始通知を入力制御部640に出力する(ステップS706)。
録画データ受信部670は、ネットワークストレージ200にダウンロード要求を行い(ステップS707)、ステップS705で検出したレコードのSGPに対応する位置(再生開始位置)からのGOP分割データを順次読み込み(ステップS708−1〜ステップS708−n)、録画データのダウンロードを行う。
ここで入力制御部640から特殊操作による指示(例えば、ジャンプ再生指示)が入力された場合について説明する。
録画データ受信部670は、入力制御部640からのジャンプ再生指示〔file、js−time(ジャンプ再生開始時刻)〕に応じて(ステップS709)、指定されたジャンプ先の時刻(js−time)をもつレコードを検索する。この検索処理において、録画データ受信部670は、再生開始位置を検出する(ステップS710)。そして、録画データ受信部670は、再生開始通知を入力制御部640に出力する(ステップS711)。
録画データ受信部670は、ネットワークストレージ200にダウンロード要求を行い(ステップS712)、ステップS710で検出したレコードのSGPに対応する位置からのGOP分割データを順次読み込み(ステップS713−1〜ステップS713−n)、録画データのダウンロードを行う。
その後、録画データ受信部670は、入力制御部640からの再生終了指示(fileが指定される)に応じて(ステップS714)、ネットワークストレージ200に再生終了通知を送信する(ステップS715)。そして録画データ受信部670は、STB600がSTB記憶部630に確保した読み込み先ブロックを開放する。これにより、ネットワークストレージ200から読み込んだ録画データが削除される。
そして、録画データ受信部670は、入力制御部640に再生終了通知を出力し(ステップS716)、STB600は録画データ再生処理を終了する。
以上の処理により、STB600は、ネットワークストレージ200にアップロード(保存)した録画データを受信(取得)し、再生することが可能となる。また、ジャンプ再生時はSTB600のTimeテーブル622からジャンプ先のSGPを特定できるため、特殊再生(ジャンプ再生)におけるデータの逐次検索が不要である。
(ネットワークストレージ200の再生開始通知対応処理)
次に、図22を用いて、STB600から再生開始通知を受信したネットワークストレージ200の再生開始通知対応処理動作について説明する。
まず、録画データ受信部270は、図21のステップS704でSTB600から送信される再生開始通知〔ProgramID、SGP〕を受信する(ステップS801)。そして、録画データ受信部270は、NSDB管理部210を介し、GOPテーブル221から読み込み先(図18のステップS509で確保した書込領域)を検索する(ステップS802)。このとき、録画データ受信部270は、〔ProgramID、SGP〕を用いて、GOPテーブル221のレコードを検索して、対応するDataID(Blockテーブル223のキー値)を取得する(ステップS803)。
次に、録画データ受信部270は、取得したDataIDをストレージ管理部260に出力し(ステップS804)、ストレージ管理部260に読み込み先の取得を依頼する。
ストレージ管理部260は、NSDB管理部210を介して、Blockテーブル223(図9)から図18のステップS509で確保した書込領域情報(書き込み先のブロック)を検索する(ステップS805)。ここでは、ストレージ管理部260は、DataIDをキー値として、図18のステップS509で確保した書込領域情報を、Blockテーブル223(図9)のレコード〔StorageID、BlockID、BlockCount〕から検索する。
ストレージ管理部260は、Blockテーブル223(図9)において、検出したDataIDに対応するレコード〔StorageID、BlockID、BlockCount〕のRefCounterをインクリメントする(RefCounter++)(ステップS806)。
NSDB管理部210は、検出した書き込み先のブロックの書込領域情報をストレージ管理部260に出力する(ステップS807)。このとき、NSDB管理部210は、書込領域情報として検出したDataIDに対応するレコード〔StorageID、BlockID、BlockCount〕をストレージ管理部260に出力する。そして、ストレージ管理部260は、書込領域情報を録画データ受信部270に出力する(ステップS808)。
そして、録画データ受信部270は、録画データ読込先検出完了通知をSTB600に送信する(ステップS809)。
その後、STB600からのダウンロード要求を受けた録画データ受信部270は(ステップS810)、ステップS808で取得した書込領域情報に基づき、NS記憶部230からGOP分割データを取得して、STB600に順次送信する(ステップS811−1〜ステップS811−n)。
(ネットワークストレージ200の再生終了通知対応処理)
次に、図23を用いて、STB600から再生終了通知を受信したネットワークストレージ200の再生終了通知対応処理動作について説明する。
まず、録画データ受信部270は、図21のステップS715でSTB600から送信された再生終了通知を受信する(ステップS901)。録画データ受信部270は、ストレージ管理部260にDataIDを出力する(ステップS902)。
ストレージ管理部260は、NSDB管理部210を介し、DataIDをキー値として、Blockテーブル223の検索を行い(ステップS903)、検出したレコードのRefCounterをデクリメントさせる(RefCounter--)(ステップS904)。ここで、RefCounterの値が0であれば(デクリメントできなかった場合)、検出したレコードのGOP分割データの書込領域(すなわち、GOP分割データがNS記憶部230に記憶されているブロック)を開放する。つまり、GOP分割データを削除する。
そして、NSDB管理部210は処理完了通知をストレージ管理部260に出力し(ステップS905)、ストレージ管理部260は録画データ受信部270に転送し(ステップS906)、録画データ受信部270は、STB600にステップS901の再生終了通知に対する応答通知を送信し(ステップS907)、再生終了通知対応処理を終了する。
以上の処理により、録画データ再生中はRefCounterの値が0にならないため、データ読み込み時に該当ブロックのデータが削除されない。
(4)録画データ削除シーケンス
図24〜図25を用いて、録画データ削除シーケンスについて説明する。
(STB600のファイル削除処理)
次に、図24を用いて、STB600のファイル削除処理動作について説明する。
まず、録画データ送信部660は、入力制御部640からのファイル削除指示(fileが指定される)に応じて(ステップS1001)、STBDB管理部610を介し、STBDB620のTimeテーブル622を検索し(ステップS1002)、GOP分割データのレコード〔ProgramID、SGP、time、file〕を取得する(ステップS1003)。
そして、録画データ送信部660は、〔ProgramID、SGP〕をネットワークストレージ200に送信して、録画データ削除を要求する(ステップS1004)。
次に、録画データ送信部660は、STBDB管理部610を介し、Timeテーブル622からステップS1003で取得したレコード〔ProgramID、SGP、time、file〕を削除する(ステップS1005)。
そして、録画データ送信部660は、STBDB管理部610を介し、Fileテーブル621からステップS1003で取得したレコードのfileに該当する(一致する)レコードを削除する(ステップS1006)。
さらに、録画データ送信部660は、STB記憶部630にfileが残っている場合は、fileを合わせて削除する(ステップS1007)。
録画データ送信部660は、入力制御部640にファイル削除完了通知を出力し(ステップS1008)、STB600はfile削除処理を終了する。
以上の処理により、ネットワークストレージ200、およびSTB600から指定されたfileの録画データが削除される。
(ネットワークストレージ200の録画データ削除処理)
次に、図25を用いて、STB600から録画データ削除要求を受信したネットワークストレージ200の録画データ削除処理動作について説明する。
まず、録画データ受信部270は、STB600から録画データ削除要求を受け(ステップS1101)、NSDB管理部210を介して、〔ProgramID、SGP〕を用いてGOPテーブル221の検索を行い(ステップS1102)、検出したレコードのGOPStatusの値を“A”から“U”に変更する(ステップS1103)。これにより、ネットワークストレージ200は、SGPに対応するGOP分割データを利用することができなくなる。
録画データ受信部270は、NSDB管理部210から変更完了通知を受け(ステップS1104)、次にNSDB管理部210を介し、ステップS1102で検出したGOPテーブル221のレコードのUserCountをデクリメントする(UserCount--)(ステップS1105〜ステップS1106)。
このステップS1106の処理において、UserCountが0の場合、DataIDを“−”(null)に設定し、GOPStatusの値を“U”から“N”に変更する。これにより、SGPに対応するGOP分割データが削除されたことになる。
一方、UserCountが0以外の場合、GOPStatusの値を“U”から“A”に変更することで、SGPに対応するGOP分割データが利用可能であることを示す。
NSDB管理部210は、録画データ受信部270に対して、UserCountが0となったDataIDのレコードを出力(返す)(ステップS1107)。図25の説明では、GOP分割データ個数をn、UserCountが0となったGOP分割データ個数をk(n≧k)とした。
そして、ストレージ管理部260は、録画データ受信部270から削除通知を取得し(ステップS1108)、NSDB管理部210を介して、UserCountが0となったDataIDをキー値として、Blockテーブル223の検索を行い(ステップS1109)、検出したレコードのRefCounterをデクリメントさせる(RefCounter--)(ステップS1110)。ここで、RefCounterの値が0であれば(デクリメントできなかった場合)、検出されたレコードのGOP分割データの書込領域(すなわち、GOP分割データがNS記憶部230に記憶されているブロック)を開放する。つまり、GOP分割データを削除する。
そして、NSDB管理部210は処理完了通知をストレージ管理部260に出力し(ステップS1111)、ストレージ管理部260は録画データ受信部270に転送し(ステップS1112)、録画データ受信部270は、STB600にステップS1101の録画データ削除要求に対する応答通知を送信し(ステップS1113)、録画データ削除処理を終了する。
以上の処理により、STB600からの録画データ削除に対し、ネットワークストレージ200、およびSTB600から録画データが削除される。また、記録済みSTB600が存在せず、利用中のSTB600も存在しない録画データについては利用不可となるが、利用中のデータブロックは図23の再生終了シーケンスが終わるまでデータが変更されないことが保証される。
《8.ネットワークストレージ200内のデータ・デデュープ方法》
図1に示すストリーム放送録画システム1において、放送サーバ100が送信(放送)するストリームデータを複数のSTB600が受信し記録(録画)する。つまり、同一番組のストリームデータを各STB600で受信することになるため、各STB600が記録したストリームデータ(録画データ)は重複度が高い。ここで、同一番組のストリームデータをダイレクト録画する場合、各STB600が受信するストリームデータを構成するTSパケットのProgramIDおよびPCR値は同一である。本発明はこのことを利用し、重複する録画データの検出を行う。
ここで、図26〜図40を用いて、ネットワークストレージ200におけるデータ・デデュープ(De- Dupe(Data De-duplication)の略語であり、データ重複排除のこと)の説明を行う。ここでは、2つのSTB600(ユーザが操作するSTB600−1、別のユーザが操作するSTB600−2)が同一の時間帯で放送される同一の番組(ProgramID=0001)を録画し、番組終了後、それぞれのSTB600(STB600−1、STB600−2)が録画した録画データを、ネットワークストレージ200にアップロードする例を、第1の状態、第2の状態、第3の状態に分けて説明する。
ここで、第1の状態は、番組の放送終了後、放送サーバ100が送信したストリームデータが、STB600−1およびSTB600−2に録画データとして記録され、ストリーム解析装置300により解析されて、解析結果がネットワークストレージ200に記録されているときの状態である。
第2の状態は、STB600−1が録画データをネットワークストレージ200にアップロードするときの状態である。
第3の状態は、第2の状態の後で、すでにネットワークストレージ200にアップロードされている(第2の状態でSTB600−1がアップロードした)録画データと一部同じ(重複する)録画データを記録したSTB600−2が、ネットワークストレージ200に重複しない録画データをアップロードするときの状態である。
図27と、図32と、図38とは、ネットワークストレージ200が備えるGOPテーブル221であり、図27は第1の状態時、図32は第2の状態時、図38は第3の状態時のGOPテーブル221を示す。
図29、図34、図39は、ネットワークストレージ200が備えるBlockテーブル223であり、図29は第1の状態時、図34は第2の状態時、図39は第3の状態時のBlockテーブル223を示す。
図36および図40は、STB600が備えるTimeテーブル622であり、図36は第2の状態時、図40は第3の状態時のTimeテーブル622を示す。
図28は、第1の状態時のネットワークストレージ200が備えるPCRテーブル222を示す。
図30は、第1の状態時のSTB600が備えるFileテーブル621を示す。
《第1の状態》
第1の状態について、図26〜図30を用いて説明する。
第1の状態は、番組の放送終了後、放送サーバ100が送信したストリームデータが、STB600−1およびSTB600−2に録画データとして記録され、ストリーム解析装置300により解析されて、解析結果がネットワークストレージ200に記録されているときの状態である。
図26(a)は、図27に示す第1の状態時のGOPテーブル221に記録されたデータを図示したものである。図27に示すGOPテーブル221には、ストリーム解析装置300により、ストリームデータが解析されて、GOP分割データが存在する位置が記録されている。ここで、GOPテーブル221の1レコード目のGOP分割データの位置について、図26(a)および図27を用いて説明する。
図26(b)は、図30(a)に示す第1の状態時のSTB600−1が備えるFileテーブル621−1に記録されたデータを図示したものである。また、図26(c)は、図30(b)に示す第1の状態時のSTB600−2が備えるFileテーブル621−2に記録されたデータを図示したものである。
ここで、STB600−1に記録された、file(ファイル名)「user1_0001−1」で示される録画データRD1−1と、file「user1_0001−2」で示される録画データRD1−2と、STB600−2に記録されたfile「user2_0001−1」で示される録画データRD2との3つの録画データは、同じ番組(チャンネル)を録画したデータである。そのため、これらの録画データを構成するTSパケットのProgramIDは同一である。
例えば、ここでは紙面の都合上、短い時間帯にて記載するが、「user1_0001−1」の録画データRD1−1は、19:59:59:090〜20:00:01:10(ここで、記載した時間のフォーマットは、時:分:秒:1/100秒である)の時間帯の番組を録画したデータであり、「user1_0001−2」の録画データRD1−2は、20:00:00:090〜20:00:10:020の時間帯の番組を録画したデータであり、「user2_0001−1」の録画データRD2は、20:00:00:030〜20:00:20:030の時間帯の番組を録画したデータである。
図30(a)に示すFileテーブル621−1において、file「user1_0001−1」で示される録画データRD1−1は、PCR値が0999997300(=Start−PCR)の位置から1000029700(=End−PCR)の位置までである。同様に、file「user1_0001−2」で示される録画データRD1−2は、PCR値が1000024300(=Start−PCR)の位置から1000275400(=End−PCR)の位置までである。
ここで、STB600−1には、同じ番組の録画データが別々に記録されており(RD1−1とRD1−2)、しかも、PCR値が1000024300から1000029700までの位置において、録画データの一部が重複している。
同様に、図30(b)に示すFileテーブル621−2において、file「user1_0002−1」で示される録画データRD2は、PCR値が1000008100(=Start−PCR)の位置から1000548100(=End−PCR)の位置までである。
ここで、STB600−1に記録された録画データRD1(RD1−1およびRD1−2)と、STB600−2に記録された録画データRD2とでは、PCR値が1000008100から1000275400までの位置において、録画データの一部が重複している。
図28は、第1の状態時のネットワークストレージ200が備えるPCRテーブル222である。
PCRテーブル222には、ProgramIDと、PCRパケットのPCR値(PCR)と、そのPCRパケットから次のPCRパケットまでの間に存在するTSパケットのパケット総数(PTC)とが記録されている。
例えば、PCR値が1000000000のレコードは、そのPCR値のPCRパケットから、次のPCRパケット(PCR値が1000002700のPCRパケット)までの間に、31(=PTC)のTSパケットがあることを示している。
図29は、第1の状態時のネットワークストレージ200が備えるBlockテーブル223であり、NS記憶部230の記録領域の状態を示す。この第1の状態時において、BlockIDが00000001から67108863までに相当するNS記憶部230の記録領域が未使用である(何も記録されていない)ことを示している(RefCounter=0)。
このとき(第1の状態が終了し、第2の状態に移行する前の時点)の各テーブルの状態について説明する。
ネットワークストレージ200には、ストリーム解析装置300から送信された解析データのレコード〔ProgramID、SGP、GTC〕が保存されたGOPテーブル221(図27)と、PCRパケット間のTSパケットのパケット総数の一覧が保存されたPCRテーブル222(図28)と、未使用状態のNS記憶部230を示すBlockテーブル223(図29)とが存在する。
また、STB600−1には、2つの録画データがそれぞれファイルに格納されて「user1_0001−1」と、「user1_0001−2」とが存在する。そのファイル(録画データ)それぞれのStart−PCRおよびEnd−PCRが記録されたFileテーブル621−1(図30(a))が存在する。
一方、STB600−2には、1つの録画データが格納されたファイル「user2_0001−1」が存在し、Start−PCRおよびEnd−PCRが記録されたFileテーブル621−2(図30(b))が存在する。
《第2の状態》
第2の状態について、図31〜図36を用いて説明する。
第2の状態は、STB600−1が録画データ(RD1−1およびRD1−2)をネットワークストレージ200にアップロードするときの状態である。
図31(a)(b)は、STB600−1に記録された録画データRD1(RD1−1およびRD1−2)をネットワークストレージ200にアップロードした後の、図32に示す第2の状態時のGOPテーブル221に記録されたデータを図示したものである。
(録画データRD1−1のアップロード)
このSTB600−1は、ネットワークストレージ200でGOP分割データが重複して記録されないように、重複しないGOP分割データをアップロードする。しかし、STB600−1は、ストリームデータを解析する機能を有していないため、放送サーバ100から受信したストリームデータのどこにGOP分割データが記録されているか、すなわち、GOP分割データの開始位置と終了位置とを検出することができない。
そこで、ネットワークストレージ200から、ストリーム解析装置300によるストリームデータの解析結果(GOP分割データの開始位置と終了位置)を、STB600−1に提供(送信)する。これにより、STB600−1は、録画データ(ストリームデータ)からGOP分割データの部分を抽出して、ネットワークストレージ200にアップロードできる。
そのため、まず、STB600−1は、ネットワークストレージ200に、録画した録画データの情報(これからアップロードするGOP分割データに係る情報)を提供(送信)する。
ここで、ネットワークストレージ200が提供(送信)する情報は、STB600とネットワークストレージ200との双方で共有する認識可能な情報(PCR)に基づくデータである。
ネットワークストレージ200は、GOP分割データの開始位置(SGP)と、GOP分割データを構成するTSパケットの数(GTC)とを、STB600−1に提供(送信)する。
以上により、STB600−1は、録画データ(ストリームデータ)からSGPを検出するだけで、ネットワークストレージ200から提供された情報に基づいて、GOP分割データを抽出することができる。そして、STB600−1は抽出したGOP分割データをネットワークストレージ200にアップロードする。
(残TSパケットの格納、再生時抽出処理)
ここで、録画データからGOP分割データを抽出した後、録画データの先頭と末尾に残TSパケット(残先頭TSパケット、残末尾TSパケット)が発生する。STB600−1は、残TSパケットをSTB記憶部630から抽出するための情報をTimeテーブル622に格納する。ここで、STB600−1は、残TSパケットから得られる〔offset、PTC〕に基づき、残TSパケットのTSパケット数(position)を算出し、Timeテーブル622に格納する。これにより、STB記憶部630には、Timeテーブル622から得られるfile「user1−0001−1」の先頭から、position分のTSパケット、すなわち残先頭TSパケットが記録される。
STB600−1は、再生時に、Timeテーブル622に格納されたpositionに基づき、残TSパケットをSTB記憶部630から抽出する。そして、STB600−1は、ネットワークストレージ200からダウンロードした最初のGOP分割データの先頭に、残先頭TSパケットを付け、最後のGOP分割データの末尾に、残末尾TSパケットを付けて補完し、録画時の録画データを生成する。そして、STB600−1は、再生時に最初に、残先頭TSパケットを再生する。この残TSパケットを格納する処理は、STB600−1が録画したときの全てのデータを補完するための処理である。
(録画データRD1−2のアップロード)
さらに、STB600−1は、録画データRD1−2も、録画データRD1−1をアップロードしたときと同様に、ネットワークストレージ200に記録されたGOP分割データと重複しないように、重複しないGOP分割データをアップロードする。
まず、STB600−1は、ネットワークストレージ200に、録画データRD1−2の情報(これからアップロードするGOP分割データに係る情報)を提供(送信)する。ここで、Fileテーブル621−1(図30(a))に記録されたファイル名「user1_0001−2」のレコード〔ProgramID,Start−PCR,End−PCR,offset〕が、録画データRD1−2の情報である。
ネットワークストレージ200は、録画データRD1−2の情報を確認して、NS記憶部230に記録されているGOP分割データ(つまり、録画データRD1−1がアップロードされたGOP分割データ)と重複しない範囲の、GOP分割データの開始位置のPCRパケットの位置(SGP)と、GOP分割データを構成するTSパケットの数(GTC)とを、図32のGOPテーブル221から取得してSTB600−1に提供(送信)する。
ここで、positionは、offset+Start−PCR値が格納されたPCRパケットから範囲先端PCRパケットの1つ手前のTSパケットまでに存在するTSパケットのデータサイズである(図19参照)。
以上により、STB600−1は、録画データRD1−2(ストリームデータ)からSGPを検出するだけで、ネットワークストレージ200から提供された情報に基づいて、GOP分割データを抽出することができる。そして、STB600−1は抽出したGOP分割データをネットワークストレージ200にアップロードする。
これにより、STB600−1は、図31(b)に示す[3]のGOP分割データを抽出し、ネットワークストレージ200にアップロードする。
(録画RD1−2の残TSパケットの格納、再生時抽出処理)
ここで、録画データからGOP分割データを抽出した後、録画データの先頭と末尾で残TSパケット(残先頭TSパケット、残末尾TSパケット)が発生する。これも録画データRD1−1と同様に処理が行われ、STB記憶部630には、Timeテーブル622から得られるfile「user1−0001−1」の先頭から、position分のTSパケット、すなわち残先頭TSパケットが記録される。
ここで、録画データRD1−1と、録画データRD1−2との間で重複する、GOP分割データは、アップロード処理後に削除される。
以上のように、STB600−1は、録画データRD1(RD1−1およびRD1−2)を構成するGOP分割データをネットワークストレージ200にアップロードする。
図33は、アップロードされたGOP分割データをネットワークストレージ200がNS記憶部230に記録する処理を図示したものである。
ネットワークストレージ200は、GOP分割データを構成するTSパケット数(GTC)に基づき、NS記憶部230の記憶領域の割り当てをブロック単位で行う。このとき、ネットワークストレージ200は、GOP分割データが記憶された最初のブロックの識別番号(BlockID)と、使用するブロックの数(BlockCount)とを算出する。
そして、ネットワークストレージ200は、録画データを構成する順番で、各GOP分割データに一意のDataIDを付与する。
これらの〔DataID、BlockID、BlockCount〕をBlockテーブル223に記録する。
図34では、GOP分割データ[1]〜[20]が、DataID「00000001」からDataID「00000020」で示すレコードに記録される。
DataID「00000000」は空き領域が確保されたことを示しており、BlockID「00000001」から8000のブロックが空き領域(RefCounter=0)として確保されていることを示している。また、NextIDには、次に割り当て可能なブロック(空き領域)の情報が記録されたレコードのDataIDが記録される。
この図34のBlockテーブルにおいて、DataID「00000000」で示すレコードには、BlockCount=8000の空き領域があることを示す情報が記録されている。
(GOPテーブル221の更新)
そして、ネットワークストレージ200は、GOPテーブル221の更新を行い、図32に示すように、各GOP分割データに対応するGOPテーブル221の〔DataID、UserCount、GOPStatus〕が記録される。
図32に示すように、DataID「00000001」からDataID「00000020」に示すレコードが追加され、〔ProgramID,SGP,GTC〕には、各GOP分割データの情報が記録される。DataIDは、NS記憶部230に記録されたGOP分割データの順番が記録される。UserCountには1が記録される。GOPStatusには、“A(Available)”が記録される。
STB600−1のTimeテーブル622−1には、図36(a)に示すように、〔ProgramID,SGP,time,file,position,Length〕で構成されるレコードが格納される。このレコードは、録画データを、ネットワークストレージ200の解析データに基づき、抽出したGOP分割データの情報である。このレコードには、録画データの開始位置からGOP分割データの先頭までの位置(position)と、GOP分割データ長(Length)と、先頭GOP分割データからの相対時間(time)が計算される。
図35は、Timeテーブル622−1に記録されたデータを図示したものである。つまり、第2の状態時のSTB600−1がアップロードする録画データRD1(RD1−1およびRD1−2)を図示したものである。
《第3の状態》
第3の状態について、図37〜図40を用いて説明する。
第3の状態は、第2の状態の後で、すでにネットワークストレージ200にアップロードされている(第2の状態でSTB600−1がアップロードした)録画データと一部同じ(重複する)録画データを記録したSTB600−2が、ネットワークストレージ200に重複しない録画データをアップロードするときの状態である。
図37は、STB600−2に記録された録画データRD2をネットワークストレージ200にアップロードした後の、図38に示す第3の状態時のGOPテーブル221に記録されたデータを図示したものである。
(録画データRD2のアップロード)
このSTB600−2は、ネットワークストレージ200でGOP分割データが重複して記録されないように、重複しないGOP分割データをアップロードする。
まず、STB600−1は、ネットワークストレージ200に、録画データRD2の情報(これからアップロードするGOP分割データに係る情報)を提供(送信)する。ここで、Fileテーブル621−2(図30(b))に記録されたファイル名「user2_0001−1」のレコード〔ProgramID,Start−PCR,End−PCR,offset〕が、録画データRD2の情報である。
ネットワークストレージ200は、録画データRD2の情報を確認して、NS記憶部230に記録されているGOP分割データ(つまり、録画データRD1がアップロードされたGOP分割データ)と重複しない範囲の、GOP分割データの開始位置のPCRパケットの位置(SGP)と、GOP分割データを構成するTSパケットの数(GTC)とを、STB600−2に提供(送信)する。
以上により、STB600−2は、録画データRD2(ストリームデータ)からSGPを検出するだけで、ネットワークストレージ200から提供された情報に基づいて、GOP分割データを抽出することができる。そして、STB600−2は抽出したGOP分割データをネットワークストレージ200にアップロードする。
これにより、STB600−2は、図37に示す[21](DataID=0000021)のGOP分割データを抽出し、ネットワークストレージ200にアップロードする。
(録画RD2の残TSパケットの格納、再生時抽出処理)
ここで、録画データからGOP分割データ抽出した後、録画データの先頭と末尾で残TSパケット(残先頭TSパケット、残末尾TSパケット)が発生する。これも録画データRD1と同様に処理が行われ、STB記憶部630には、Timeテーブル622から得られるfile「user2−0001−1」の先頭から、position分のTSパケット、すなわち残先頭TSパケットが記録される。
以上のように、STB600−2は、録画データRD2を構成するGOP分割データをネットワークストレージ200にアップロードする。
図39は、アップロードされたGOP分割データをネットワークストレージ200がNS記憶部230に記録する処理を示したものである。
ネットワークストレージ200は、GOP分割データを構成するTSパケット数(GTC)に基づき、NS記憶部230の記憶領域の割り当てをブロック単位で行う。このとき、ネットワークストレージ200は、GOP分割データが記憶された最初のブロックの識別番号(BlockID)と、使用するブロックの数(BlockCount)とを算出する。
そして、ネットワークストレージ200は、録画データを構成する順番で、各GOP分割データに一意のDataIDを付与する。
これらの〔DataID、BlockID、BlockCount〕をBlockテーブル223に記録する。
図39のBlockテーブルは、NS記憶部230の記憶領域に、GOP分割データ[1]〜[20]が、DataID「00000001」からDataID「00000020」で示すレコードのブロックに記録されていることを示している。
そして、STB600−2からアップロードされたGOP[21]〜[40]が、DataID「00000021」からDataID「00000040」に示すレコードのブロックに記録されていることを示している。
この図39のBlockテーブルにおいて、DataID「00000000」で示すレコードには、BlockCount=8000の空き領域があることを示す情報が記録されている。
(GOPテーブル221の更新)
そして、ネットワークストレージ200は、GOPテーブル221の更新を行い、図38に示すように、各GOP分割データに対応するGOPテーブル221の〔DataID、UserCount、GOPStatus〕が記録される。
図38に示すように、DataID「00000021」からDataID「00000040」に示すレコードが追加され、〔ProgramID,SGP,GTC〕には、各GOP分割データの情報が記録される。DataIDは、NS記憶部230に記録されたGOP分割データの順番であり、図39と同じ数値が記録される。UserCountには、1が記録され、さらに、重複したDataID「00000002」〜「00000020」のレコードにおいて、数値がインクリメント(+1)されて記録される。GOPStatusには、“A(Available)”が記録される。
図40(b)に示すように、STB600−2のTimeテーブル622−2には、〔ProgramID,SGP,time,file,position,Length〕で構成されるレコードが格納される。このレコードは、録画データを、ネットワークストレージ200の解析データに基づき抽出したGOP分割データの情報である。このレコードには、録画データの開始位置からGOP分割データの先頭までの位置(position)と、GOP分割データ長(Length)と、先頭GOP分割データからの相対時間(time)が計算されて格納される。
以上のように第1の実施形態によれば、放送ストリームのデータをGOP単位で区切り、ネットワークストレージ200にアップロードすることにより、STB600においてネットワークストレージ200からデータを取得し、再生することが可能となる。
また、STB600内にTimeテーブル622を作成することにより、特殊再生に対するSTB600の処理が軽減されるという効果が得られる。
さらに、ネットワークストレージ200内でProgramID、SGPによるデータ重複の識別を、データ・デデュープを用いて行うことにより、従来よりも処理負荷の低いデータ重複の識別が可能となる。
本発明は、前記した実施形態に限定されることなく、本発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
例えば、第1の実施形態では、放送サーバ100およびネットワークストレージ200とストリーム解析装置300とを分割して記載したが、ストリーム解析装置300を放送サーバ100、又はネットワークストレージ200に内包させることも可能である。この場合、図1のシステム構成図は、ネットワークストレージ200とネットワーク400が接続するように変更される。
第1の実施形態では、放送に使用するストリームをMPEG−2 TSに限定した例を説明したが、使用するVideoデータについては、特殊再生のデータ区切りが識別可能なフォーマットであり、MPEG−TSでエンコード可能であれば適用可能である。
例えば、VideoデータにH.264を使用した場合、H.264エンコード時の各種パラメータを適切に運用することにより、前記データ区切りを実現することが可能である。
なお、前記の適切な運用とは、例えば「デジタルテレビネットワーク機能仕様書 ストリーミング仕様書 コーデック編(デジタルテレビ情報化研究会)付録規定A H.264 | MPEG4−AVCの運用」などがある。
1 ストリーム放送録画システム
100 放送サーバ
200 ネットワークストレージ(NS)
210 NSDB管理部
220 NSDB
221 GOPテーブル
222 PCRテーブル
223 Blockテーブル
230 NS記憶部(録画データ記憶部)
250 解析データ受信部
260 ストレージ管理部
270 録画データ受信部
300 ストリーム解析装置
350 ストリーム受信部
360 ストリーム解析部
370 ネットワークストレージ通信部
400 ネットワーク(放送ネットワーク)
500 ネットワーク(通信ネットワーク)
600(600−1、600−2) STB
610 STBDB管理部
620 STBDB
621 Fileテーブル
621−1 STB600−1のFileテーブル
621−2 STB600−2のFileテーブル
622 Timeテーブル
622−1 STB600−1のTimeテーブル
622−2 STB600−2のTimeテーブル
630 STB記憶部
640 入力制御部
641 操作入力部
650 ストリームデータ受信部
660 録画データ送信部
670 録画データ受信部
680 信号変換出力部

Claims (10)

  1. ストリーム放送を受信可能な複数のSTBと通信可能に接続し、前記STBからアップロードされる、前記ストリーム放送を記録した録画データを、録画データ記憶部に蓄積するネットワークストレージ装置であって、
    前記STBからのアップロード要求に含まれるPCRパケットのPCR値を用いてデータの範囲を示した前記録画データの範囲情報と、前記ストリーム放送に含まれるTSパケットを解析した解析データに含まれるGOPデータの検出位置とに基づき、当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報を取得し、
    前記STBに前記GOP分割データ範囲情報を送信し、
    前記STBからアップロードされた前記GOP分割データを前記録画データ記憶部に蓄積する
    ことを特徴とするネットワークストレージ装置。
  2. 前記録画データ記憶部に蓄積されたGOP分割データのGOP分割データ範囲情報を記録するGOPテーブルをさらに備え、
    前記取得した当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報のうち、前記GOPテーブルに記録されていないGOP分割データ範囲情報を前記STBに送信する
    ことを特徴とする請求項1に記載されたネットワークストレージ装置。
  3. 前記解析データから、
    前記ストリーム放送の識別番号であるProgramIDと、
    第1のGOP分割データの先頭を含む先頭第1PESパケットに対して、その先頭第1PESパケットデータの先頭を含む先頭TSパケットの直前に存在する範囲先端PCRパケットのPCR値であるSGPと、
    前記第1のGOP分割データを構成するTSパケットの総数であるGTCと、
    前記第1のGOP分割データに割り当てられた識別番号であるDataIDと、
    を抽出し、
    前記GOPテーブルに、これらの項目で構成されるレコードを記録することを特徴とする請求項2に記載されたネットワークストレージ装置。
  4. 前記STBからのダウンロード要求に含まれる前記録画データの範囲情報と、前記GOPテーブルとに基づき、当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報を取得し、
    前記GOP分割データ範囲情報に基づき、前記録画データ記憶部から該当するGOP分割データを抽出して、前記STBに送信し、
    前記録画データ記憶部に蓄積された録画データを前記STBに返送することを特徴とする請求項3に記載されたネットワークストレージ装置。
  5. 前記GOPテーブルは、さらにUserCountを含んで構成されるレコードを記録し、前記GOPテーブルに記録されたデータを更新するテーブル管理部と、
    前記GOP分割データ範囲情報が前記GOPテーブルに記録されているか否かを判定する重複判定部と
    をさらに備え、
    前記テーブル管理部は、
    前記録画データ記憶部にGOP分割データを蓄積するときに、そのGOP分割データに対応するGOPテーブルのレコードのUserCountの値を1にし、
    前記取得した当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報のうち、前記GOPテーブルに記録されていたGOP分割データに対応するGOPテーブルのレコードのUserCountの値をインクリメントさせ、
    録画データ削除要求に応じて、前記録画データ記憶部から抽出したGOP分割データに対応するGOPテーブルのレコードのUserCountの値をデクリメントさせ、
    前記重複判定部は、
    前記録画データ記憶部にGOP分割データを蓄積するときに、
    前記GOPテーブルのレコードのUserCountの値が1以上であれば、当該レコードのGOP分割データのGOP分割データ範囲情報は、前記GOPテーブルに記録されていると判定する
    ことを特徴とする請求項4に記載されたネットワークストレージ装置。
  6. 前記解析データから、
    前記ストリーム放送の識別番号であるProgramIDと、
    第1のGOP分割データの先頭を含む先頭第1PESパケットに対して、その先頭第1PESパケットデータの先頭を含む先頭TSパケットの直前に存在する範囲先端PCRパケットのPCR値であるSGPと、
    前記第1のGOP分割データを構成するTSパケットの総数であるGTCと、
    前記第1のGOP分割データに割り当てられた識別番号であるDataIDと
    で構成されるレコードを、前記ストリーム放送に含まれるGOP分割データの数だけ抽出し、
    前記STBからのアップロード要求に含まれる前記録画データの範囲情報である、前記録画データ内に存在する最初のPCRパケットのStart−PCR値と、前記録画データ内に存在する最後のPCRパケットのEnd−PCR値と、前記録画データ内に存在する前記最初のPCRパケットより前にあるTSパケットの総数であるoffsetとを取得し、
    前記解析データから抽出したレコードに基づき、
    前記Start−PCR値のPCRパケットよりoffsetの数だけ前に存在するTSパケットから、前記End−PCR値のPCRパケットまでに存在するGOP分割データを検出し、検出GOP分割データのSGPと、GTCとを、前記GOP分割データ範囲情報として前記STBに送信する
    ことを特徴とする請求項1に記載されたネットワークストレージ装置。
  7. 前記Start−PCR値のPCRパケットのPCR値をSGPとする検出GOP分割データについては、前記GOP分割データ範囲情報に、前記offsetとPTCとに基づいて算出されるpositionをさらに含めて、前記STBに送信することを特徴とする請求項6に記載されたネットワークストレージ装置。
  8. 前記STBからのダウンロード要求に含まれる前記録画データの範囲情報と、前記解析データとに基づき、当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報を取得し、
    前記GOP分割データ範囲情報に基づき、前記録画データ記憶部から該当するGOP分割データを抽出して、前記STBに送信し、
    前記録画データ記憶部に蓄積された録画データを前記STBに返送することを特徴とする請求項1に記載されたネットワークストレージ装置。
  9. 前記ストリーム放送を受信可能なストリーム解析装置と通信可能に接続し、前記ストリーム解析装置から前記ストリーム放送を解析した前記解析データが送信されることを特徴とする請求項1ないし請求項8のいずれか一項に記載されたネットワークストレージ装置。
  10. ストリーム放送を受信可能な複数のSTBと通信可能に接続し、前記STBからアップロードされる、前記ストリーム放送を記録した録画データを、録画データ記憶部に蓄積するために、ネットワークストレージ装置のコンピュータを、
    前記STBからのアップロード要求に含まれるPCRパケットのPCR値を用いてデータの範囲を示した前記録画データの範囲情報と、前記ストリーム放送に含まれるTSパケットを解析した解析データに含まれるGOPデータの検出位置とに基づき、当該録画データの範囲内にある全てのGOP分割データのGOP分割データ範囲情報を取得する手段、
    前記STBに前記GOP分割データ範囲情報を送信する手段、および、
    前記STBからアップロードされた前記GOP分割データを前記録画データ記憶部に蓄積させる手段、
    として機能させることを特徴とする録画データ蓄積プログラム。
JP2012072447A 2012-03-27 2012-03-27 ネットワークストレージ装置、および録画データ蓄積プログラム Active JP5949040B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012072447A JP5949040B2 (ja) 2012-03-27 2012-03-27 ネットワークストレージ装置、および録画データ蓄積プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012072447A JP5949040B2 (ja) 2012-03-27 2012-03-27 ネットワークストレージ装置、および録画データ蓄積プログラム

Publications (2)

Publication Number Publication Date
JP2013207421A JP2013207421A (ja) 2013-10-07
JP5949040B2 true JP5949040B2 (ja) 2016-07-06

Family

ID=49526136

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012072447A Active JP5949040B2 (ja) 2012-03-27 2012-03-27 ネットワークストレージ装置、および録画データ蓄積プログラム

Country Status (1)

Country Link
JP (1) JP5949040B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015171835A1 (en) 2014-05-06 2015-11-12 Tivo Inc. Cloud-based media content management
CN108965986B (zh) * 2017-12-29 2021-05-14 视联动力信息技术股份有限公司 一种视频录播方法和系统
CN111866422B (zh) * 2020-06-16 2022-12-09 普联技术有限公司 录像数据上传方法、装置、设备及计算机可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006080589A (ja) * 2004-09-07 2006-03-23 Matsushita Electric Ind Co Ltd 編集情報共有システム
JP4615273B2 (ja) * 2004-09-10 2011-01-19 株式会社リコー データ預託装置、データ預託方法及びデータ預託プログラム
WO2007034951A1 (ja) * 2005-09-26 2007-03-29 Nec Personal Products, Ltd. コンテンツ蓄積システム、ユーザ端末装置、コンテンツ蓄積方法、コンテンツ蓄積プログラム及び記憶媒体
JP2008027486A (ja) * 2006-07-19 2008-02-07 Sony Corp 記録装置、記録方法、転送システム
JP2009124383A (ja) * 2007-11-14 2009-06-04 Sony Corp 情報処理装置、コンテンツ処理システム、コンピュータプログラム、コンテンツ管理方法、及びコンテンツ検索方法
JP2009181648A (ja) * 2008-01-31 2009-08-13 Oki Electric Ind Co Ltd デジタルデータ蓄積装置、デジタルデータ蓄積方法、蓄積用データ送信装置、蓄積用データ通信システム及び蓄積用データ通信方法

Also Published As

Publication number Publication date
JP2013207421A (ja) 2013-10-07

Similar Documents

Publication Publication Date Title
CN101958136B (zh) 视频音频记录再现装置和视频音频记录再现方法
JP3742401B2 (ja) 映像データ記録再生装置および同装置で用いられる映像データ管理方法
JP4686587B2 (ja) 映像記録再生装置およびファイル管理方法
JP2002354423A (ja) コンテンツを格納するための方法
JP2008243367A (ja) 同報通信データを記録するための方法、および、装置
JP2002541698A (ja) バッファ・リードおよびライト同期機能を備えたストリーミング情報機器
JP2012054788A (ja) データファイル転送装置、その制御方法、プログラム及び記憶媒体
JP7589683B2 (ja) ファイル処理装置、ファイル処理方法、及び、プログラム
WO2007129524A1 (ja) 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
JP5949040B2 (ja) ネットワークストレージ装置、および録画データ蓄積プログラム
JP2015510652A (ja) メディアコンテンツを処理するためのシステム及び方法
JP4315914B2 (ja) 画像再生装置及び画像再生方法
US20050047749A1 (en) Content data recording apparatus and content data recording method
JP5917123B2 (ja) 記録装置
US8086089B2 (en) Recording apparatus
CN101198073B (zh) 记录方法
JP7468530B2 (ja) ファイル処理装置、ファイル処理方法、及び、プログラム
JP2004171053A (ja) データ処理装置
KR102557384B1 (ko) 전자장치 및 그 제어방법
US20080138038A1 (en) Recording method
JP2010170592A (ja) 情報再生装置および情報再生方法
JP5144771B2 (ja) 画像処理装置、画像再生装置、画像記録装置、画像処理方法、画像再生方法、及び画像記録方法
JP2003009085A (ja) デジタル信号記録装置および方法、デジタル信号再生装置および方法
JP2005197839A (ja) トランスポートストリームの特殊再生方法及びトランスポートストリームの記録再生装置
US20080138036A1 (en) Recording method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151217

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20160425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R150 Certificate of patent or registration of utility model

Ref document number: 5949040

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150