(57)【特許請求の範囲】
【請求項１】
ストリーム放送を受信可能な複数のＳＴＢと通信可能に接続し、前記ＳＴＢからアップロードされる、前記ストリーム放送を記録した録画データを、録画データ記憶部に蓄積するネットワークストレージ装置であって、
前記ＳＴＢからのアップロード要求に含まれるＰＣＲパケットのＰＣＲ値を用いてデータの範囲を示した前記録画データの範囲情報と、前記ストリーム放送に含まれるＴＳパケットを解析した解析データに含まれるＧＯＰデータの検出位置とに基づき、当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報を取得し、
前記ＳＴＢに前記ＧＯＰ分割データ範囲情報を送信し、
前記ＳＴＢからアップロードされた前記ＧＯＰ分割データを前記録画データ記憶部に蓄積する
ことを特徴とするネットワークストレージ装置。
【請求項２】
前記録画データ記憶部に蓄積されたＧＯＰ分割データのＧＯＰ分割データ範囲情報を記録するＧＯＰテーブルをさらに備え、
前記取得した当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報のうち、前記ＧＯＰテーブルに記録されていないＧＯＰ分割データ範囲情報を前記ＳＴＢに送信する
ことを特徴とする請求項１に記載されたネットワークストレージ装置。
【請求項３】
前記解析データから、
前記ストリーム放送の識別番号であるＰｒｏｇｒａｍＩＤと、
第１のＧＯＰ分割データの先頭を含む先頭第１ＰＥＳパケットに対して、その先頭第１ＰＥＳパケットデータの先頭を含む先頭ＴＳパケットの直前に存在する範囲先端ＰＣＲパケットのＰＣＲ値であるＳＧＰと、
前記第１のＧＯＰ分割データを構成するＴＳパケットの総数であるＧＴＣと、
前記第１のＧＯＰ分割データに割り当てられた識別番号であるＤａｔａＩＤと、
を抽出し、
前記ＧＯＰテーブルに、これらの項目で構成されるレコードを記録することを特徴とする請求項２に記載されたネットワークストレージ装置。
【請求項４】
前記ＳＴＢからのダウンロード要求に含まれる前記録画データの範囲情報と、前記ＧＯＰテーブルとに基づき、当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報を取得し、
前記ＧＯＰ分割データ範囲情報に基づき、前記録画データ記憶部から該当するＧＯＰ分割データを抽出して、前記ＳＴＢに送信し、
前記録画データ記憶部に蓄積された録画データを前記ＳＴＢに返送することを特徴とする請求項３に記載されたネットワークストレージ装置。
【請求項５】
前記ＧＯＰテーブルは、さらにＵｓｅｒＣｏｕｎｔを含んで構成されるレコードを記録し、前記ＧＯＰテーブルに記録されたデータを更新するテーブル管理部と、
前記ＧＯＰ分割データ範囲情報が前記ＧＯＰテーブルに記録されているか否かを判定する重複判定部と
をさらに備え、
前記テーブル管理部は、
前記録画データ記憶部にＧＯＰ分割データを蓄積するときに、そのＧＯＰ分割データに対応するＧＯＰテーブルのレコードのＵｓｅｒＣｏｕｎｔの値を１にし、
前記取得した当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報のうち、前記ＧＯＰテーブルに記録されていたＧＯＰ分割データに対応するＧＯＰテーブルのレコードのＵｓｅｒＣｏｕｎｔの値をインクリメントさせ、
録画データ削除要求に応じて、前記録画データ記憶部から抽出したＧＯＰ分割データに対応するＧＯＰテーブルのレコードのＵｓｅｒＣｏｕｎｔの値をデクリメントさせ、
前記重複判定部は、
前記録画データ記憶部にＧＯＰ分割データを蓄積するときに、
前記ＧＯＰテーブルのレコードのＵｓｅｒＣｏｕｎｔの値が１以上であれば、当該レコードのＧＯＰ分割データのＧＯＰ分割データ範囲情報は、前記ＧＯＰテーブルに記録されていると判定する
ことを特徴とする請求項４に記載されたネットワークストレージ装置。
【請求項６】
前記解析データから、
前記ストリーム放送の識別番号であるＰｒｏｇｒａｍＩＤと、
第１のＧＯＰ分割データの先頭を含む先頭第１ＰＥＳパケットに対して、その先頭第１ＰＥＳパケットデータの先頭を含む先頭ＴＳパケットの直前に存在する範囲先端ＰＣＲパケットのＰＣＲ値であるＳＧＰと、
前記第１のＧＯＰ分割データを構成するＴＳパケットの総数であるＧＴＣと、
前記第１のＧＯＰ分割データに割り当てられた識別番号であるＤａｔａＩＤと
で構成されるレコードを、前記ストリーム放送に含まれるＧＯＰ分割データの数だけ抽出し、
前記ＳＴＢからのアップロード要求に含まれる前記録画データの範囲情報である、前記録画データ内に存在する最初のＰＣＲパケットのＳｔａｒｔ−ＰＣＲ値と、前記録画データ内に存在する最後のＰＣＲパケットのＥｎｄ−ＰＣＲ値と、前記録画データ内に存在する前記最初のＰＣＲパケットより前にあるＴＳパケットの総数であるｏｆｆｓｅｔとを取得し、
前記解析データから抽出したレコードに基づき、
前記Ｓｔａｒｔ−ＰＣＲ値のＰＣＲパケットよりｏｆｆｓｅｔの数だけ前に存在するＴＳパケットから、前記Ｅｎｄ−ＰＣＲ値のＰＣＲパケットまでに存在するＧＯＰ分割データを検出し、検出ＧＯＰ分割データのＳＧＰと、ＧＴＣとを、前記ＧＯＰ分割データ範囲情報として前記ＳＴＢに送信する
ことを特徴とする請求項１に記載されたネットワークストレージ装置。
【請求項７】
前記Ｓｔａｒｔ−ＰＣＲ値のＰＣＲパケットのＰＣＲ値をＳＧＰとする検出ＧＯＰ分割データについては、前記ＧＯＰ分割データ範囲情報に、前記ｏｆｆｓｅｔとＰＴＣとに基づいて算出されるｐｏｓｉｔｉｏｎをさらに含めて、前記ＳＴＢに送信することを特徴とする請求項６に記載されたネットワークストレージ装置。
【請求項８】
前記ＳＴＢからのダウンロード要求に含まれる前記録画データの範囲情報と、前記解析データとに基づき、当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報を取得し、
前記ＧＯＰ分割データ範囲情報に基づき、前記録画データ記憶部から該当するＧＯＰ分割データを抽出して、前記ＳＴＢに送信し、
前記録画データ記憶部に蓄積された録画データを前記ＳＴＢに返送することを特徴とする請求項１に記載されたネットワークストレージ装置。
【請求項９】
前記ストリーム放送を受信可能なストリーム解析装置と通信可能に接続し、前記ストリーム解析装置から前記ストリーム放送を解析した前記解析データが送信されることを特徴とする請求項１ないし請求項８のいずれか一項に記載されたネットワークストレージ装置。
【請求項１０】
ストリーム放送を受信可能な複数のＳＴＢと通信可能に接続し、前記ＳＴＢからアップロードされる、前記ストリーム放送を記録した録画データを、録画データ記憶部に蓄積するために、ネットワークストレージ装置のコンピュータを、
前記ＳＴＢからのアップロード要求に含まれるＰＣＲパケットのＰＣＲ値を用いてデータの範囲を示した前記録画データの範囲情報と、前記ストリーム放送に含まれるＴＳパケットを解析した解析データに含まれるＧＯＰデータの検出位置とに基づき、当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報を取得する手段、
前記ＳＴＢに前記ＧＯＰ分割データ範囲情報を送信する手段、および、
前記ＳＴＢからアップロードされた前記ＧＯＰ分割データを前記録画データ記憶部に蓄積させる手段、
として機能させることを特徴とする録画データ蓄積プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム放送を録画した録画データを管理するネットワークストレージ装置および録画データ蓄積プログラムに関し、ストリーム放送を記録したものであり、ＳＴＢ（Set Top Box）からアップロードされる、録画データを、記憶部に格納し、ＳＴＢからのダウンロード要求に応じて、格納した録画データを返送するネットワークストレージ装置および録画データ蓄積プログラムに関する。
【背景技術】
【０００２】
従来、サーバ型放送において、放送サーバは、ＩＳＯ／ＩＥＣ  １３８１８−１およびＩＴＵ−Ｔ勧告Ｈ．２２２．０において標準化されているトランスポートストリーム（ＭＰＥＧ−２  ＴＳ）の規格に沿って、放送コンテンツをストリーム放送していた。
従来のサーバ型放送は、放送サーバからのストリーム放送を受信装置が受信して、送信されたストリームデータを録画した。この録画データを受信装置それぞれが保存せずに、受信装置が録画データを蓄積サーバに送信して、蓄積サーバが録画データを一元管理するシステムがあった。
【０００３】
ここで、蓄積用データ送信装置（受信装置）は、録画データをデジタルデータ蓄積装置（蓄積サーバ）に送信するとき、データサイズが大きいため録画データを所定のサイズに分割していた。受信装置は、この分割した録画データに対してハッシュ値を付与した。そして、送信先の蓄積サーバは、このハッシュ値を照合してハッシュ値が異なる録画データのみを蓄積した。これにより、ハッシュ値が同じ録画データ、すなわち同一の録画データが重複して蓄積サーバに蓄積されないようにした（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１８１６４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のシステムでは、異なる録画データであるにもかかわらず、ハッシュ値がバッティング（重複）して付与される可能性があった。そのため、同一のハッシュ値を持ってしまった異なる録画データは、蓄積サーバに保存されないという問題点があった。
【０００６】
本発明は、以上のような問題を解決するためになされたものであり、複数のＳＴＢがストリーム放送を記録した録画データを重複および欠落なく一元管理するネットワークストレージ装置および録画データ蓄積プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
前記課題を解決するために、本発明の請求項１に記載のネットワークストレージ装置は、ストリーム放送を受信可能な複数のＳＴＢと通信可能に接続し、前記ＳＴＢからアップロードされる、前記ストリーム放送を記録した録画データを、録画データ記憶部に蓄積するネットワークストレージ装置において、前記ＳＴＢからのアップロード要求に含まれるＰＣＲパケットのＰＣＲ値を用いてデータの範囲を示した前記録画データの範囲情報と、前記ストリーム放送に含まれるＴＳパケットを解析した解析データに含まれるＧＯＰデータの検出位置とに基づき、当該録画データの範囲内にある全てのＧＯＰ分割データのＧＯＰ分割データ範囲情報を取得し、前記ＳＴＢに前記ＧＯＰ分割データ範囲情報を送信し、前記ＳＴＢからアップロードされた前記ＧＯＰ分割データを前記録画データ記憶部に蓄積する構成とした。
【０００８】
かかる構成において、ネットワークストレージ装置は、ストリーム放送に含まれるＰＣＲパケットのＰＣＲ値を用いて録画データを管理する。
【発明の効果】
【０００９】
本発明によれば、複数のＳＴＢがストリーム放送を記録した録画データを重複および欠落なく一元管理することができる。ひいては、録画データを一元管理することができ、複数のＳＴＢからアップロードされる録画データを効率良く蓄積することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係るストリーム放送録画システムのブロック図である。
【図２】ＴＳパケットの構造を示す図である。
【図３】ＰＳＩ，ＰＡＴ，ＰＭＴのセクション構造を示す図である。
【図４】ＭＰＥＧ−２  ＴＳのストリームタイプおよびＰＣＲパケット識別方法の例を示す図である。
【図５】ＴＳパケットのペイロードにＭＰＥＧ−２  Ｖｉｄｅｏのデータを含む場合の、ＭＰＥＧ−２  ＴＳデータとＧＯＰデータとの関係を示す図である。
【図６】ネットワークストレージの構成を示すブロック図である。
【図７】ＧＯＰテーブルの構造を示す図である。
【図８】ＰＣＲテーブルの構造を示す図である。
【図９】Ｂｌｏｃｋテーブルの構造を示す図である。
【図１０】ストリーム解析装置の構成を示すブロック図である。
【図１１】ＳＴＢの構成を示すブロック図である。
【図１２】Ｆｉｌｅテーブルの構造を示す図である。
【図１３】Ｔｉｍｅテーブルの構造を示す図である。
【図１４】ＳＴＢの録画処理動作を示すシーケンス図である。
【図１５】ストリーム解析装置の解析処理動作を示すシーケンス図である。
【図１６】ネットワークストレージのテーブル更新処理動作を示すシーケンス図である。
【図１７】ＳＴＢの録画データアップロード処理動作を示すシーケンス図である。
【図１８】ネットワークストレージの問い合わせ対応処理動作を示すシーケンス図である。
【図１９】録画データのＧＯＰ分割データ開始位置（ｐｏｓｉｔｉｏｎ）を計算するための算出方法を示す図である。
【図２０】ネットワークストレージの録画データ書き込み対応処理動作を示すシーケンス図である。
【図２１】ＳＴＢの録画データ再生処理動作を示すシーケンス図である。
【図２２】ネットワークストレージの再生開始通知対応処理動作を示すシーケンス図である。
【図２３】ネットワークストレージの再生終了通知対応処理動作を示すシーケンス図である。
【図２４】ＳＴＢのファイル削除処理動作を示すシーケンス図である。
【図２５】ネットワークストレージの録画データ削除処理動作シーケンス図である。
【図２６】（ａ）第１の状態時のＧＯＰテーブルに記録されたデータ、（ｂ）第１の状態時のＦｉｌｅテーブル６２１−１に記録されたデータ、（ｃ）第１の状態時のＦｉｌｅテーブル６２１−２に記録されたデータを示す図である。
【図２７】第１の状態時のＧＯＰテーブルに記録されたデータを示す図である。
【図２８】第１の状態時のＰＣＲテーブルに記録されたデータを示す図である。
【図２９】第１の状態時のＢｌｏｃｋテーブルに記録されたデータを示す図である。
【図３０】（ａ）ＳＴＢ６００−１が備える第１の状態時Ｆｉｌｅテーブル６２１−１、（ａ）ＳＴＢ６００−２が備える第１の状態時Ｆｉｌｅテーブル６２１−２に記録されたデータを示す図である。
【図３１】（ａ）第２の状態時のＧＯＰテーブルに記録されたデータを示す図である。（ｂ）ＳＴＢ６００−１に記録された第２の状態時の録画データＲＤ１（ＲＤ１−１およびＲＤ１−２）を示す図である。
【図３２】第２の状態時のＧＯＰテーブルに記録されたデータを示す図である。
【図３３】アップロードされたＧＯＰ分割データをネットワークストレージがＮＳ記憶部に記録する処理を示す図である。
【図３４】第２の状態時のＢｌｏｃｋテーブルに記録されたデータを示す図である。
【図３５】第２の状態時のＳＴＢ６００−１がアップロードする録画データＲＤ１（ＲＤ１−１およびＲＤ１−２）を図示したものである。
【図３６】（ａ）ＳＴＢ６００−１が備える第２の状態時のＴｉｍｅテーブル６２２−１、（ｂ）ＳＴＢ６００−２が備える第２の状態時のＴｉｍｅテーブル６２２−２に記録されたデータを示す図である。
【図３７】第３の状態時のＧＯＰテーブルに記録されたデータを図示したものである。
【図３８】第３の状態時のＧＯＰテーブルに記録されたデータを示す図である。
【図３９】第３の状態時のＢｌｏｃｋテーブルに記録されたデータを示す図である。
【図４０】（ａ）ＳＴＢ６００−１が備える第３の状態時のＴｉｍｅテーブル６２２−１、（ｂ）ＳＴＢ６００−２が備える第３の状態時のＴｉｍｅテーブル６２２−２に記録されたデータを示す図である。
【発明を実施するための形態】
【００１１】
次に、本発明の実施形態について、適宜、図面を参照しながら詳細に説明する。
以下、図面を参照して、本発明の実施の形態（以下、「本実施形態」と称する）につき詳細に説明する。なお、各図は、本発明について概略的に示してあるに過ぎない。よって、本発明は、図示例のみに限定されるものではない。また、各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
【００１２】
《１．ストリーム放送録画システムの説明》
図１に示すように、ストリーム放送録画システム１は、ストリームデータを送信する放送サーバ１００と、ストリームデータを受信し記録（録画）する複数のＳＴＢ６００（６００−１，６００−２，・・・）と、ストリームデータを受信し解析するストリーム解析装置３００と、ＳＴＢ６００から送信される録画データを記録し、ＳＴＢ６００からの要求に応じて、記録した録画データを要求のあったＳＴＢ６００に出力するネットワークストレージ２００（ＮＳ）とを備える。ここで、ＳＴＢ６００からネットワークストレージ２００に対する録画データの要求は、特殊再生（例えば、ジャンプ再生）を含む。
【００１３】
ストリーム放送録画システム１は、（放送）ネットワーク４００を介して、ストリームデータを送信し、ＳＴＢ６００やストリーム解析装置３００は、このネットワーク４００に送信されたストリームデータを受信する。
また、ＳＴＢ６００と、ストリーム解析装置３００と、ネットワークストレージ２００とは、（通信）ネットワーク５００を介して通信可能に接続される。
【００１４】
（ネットワーク４００，５００）
ネットワーク４００は、放送サーバ１００が送信するストリームデータを、ストリーム解析装置３００およびＳＴＢ６００が受信するネットワークである。
ネットワーク５００は、ネットワークストレージ２００とストリーム解析装置３００とを接続し、ネットワークストレージ２００とＳＴＢ６００とを接続するネットワークである。
【００１５】
ここでは、ネットワーク４００は必ずしも双方向通信が行われるネットワークでなくてもよいため、ネットワークを、ネットワーク４００とネットワーク５００とで便宜上分けて示している。このネットワーク４００は、映像データをＭＰＥＧ−２の規格で圧縮した映像信号を送信可能なネットワークであればよいため、例えば、ケーブルテレビやインターネットテレビ等の放送の場合、ネットワーク４００およびネットワーク５００は、インターネットプロトコル（Internet Protocol）技術を利用した無線／有線ＬＡＮなどを用いた一つのＩＰネットワークであってもよい。
【００１６】
（放送サーバ１００）
放送サーバ１００は、映像や音声などの放送信号をストリーム形式でネットワーク４００に送信する装置である。本実施形態では、「ＭＰＥＧ−２  ＴＳ」の規格に沿って、放送信号をストリーム形式で送信する。この送出された信号をストリームデータとする。放送サーバ１００が送出する放送信号については、詳細を後記する。
【００１７】
（ネットワークストレージ２００）
ネットワークストレージ２００は、ストリーム解析装置３００からの解析データと、ＳＴＢ６００からの録画データとを蓄積し管理する装置である。詳細を後記する。
【００１８】
（ストリーム解析装置３００）
ストリーム解析装置３００は、放送サーバ１００から送信されるストリームデータを解析し、解析結果をネットワークストレージ２００に出力する装置である。詳細を後記する。
【００１９】
（ＳＴＢ６００）
ＳＴＢ６００は、ストリーム形式で送信される放送信号を受信して、テレビで視聴可能な信号に変換する装置である。このＳＴＢ６００は、ネットワーク４００を介して放送サーバ１００と接続し、ネットワーク５００を介してネットワークストレージ２００と接続され、放送サーバ１００が送信するストリームデータを受信し、一時的に記録（録画）する。そして、ＳＴＢ６００は、記録した録画データ（ストリームデータ）をネットワークストレージ２００に送信する。その後、ＳＴＢ６００は、ユーザからの要求に応じてネットワークストレージ２００に録画データの送信を要求し、ネットワークストレージ２００から録画データを受信する。これにより、ＳＴＢ６００が受信した録画データをテレビに出力することで、テレビ画面にユーザが要求した映像を表示させることができる。
【００２０】
《２．信号およびデータの説明》
ここで、本実施形態において扱う信号およびデータについて説明する。
【００２１】
（放送信号）
ここで、放送サーバ１００が出力する放送信号について説明する。
ＭＰＥＧ−２で圧縮された映像信号は、１つのＩピクチャ（Intra-coded Picture）と、複数のＰピクチャ（Predictive-coded Picture）およびＢピクチャ（Bidirectionally Predictive-coded Picture）とから成るＧＯＰ（Group Of Pictures）とよばれるフレームの集まりで構成される。以下、このフレームをＧＯＰデータと称する。
複数のＧＯＰデータで構成される映像信号は、符号化されて、ＥＳ（Elementary Stream）と呼ばれる符号化データ列に変換される。このＥＳは、デコードや提示に都合のよいかたまりに区切られ、ヘッダ（ＰＥＳヘッダ）が付加され、ＰＥＳ（Packetized Elementary Stream）パケットという可変長のパケットに納められる。そして、ＰＥＳパケットは細かく分割され、１８８バイトの固定長のＴＳ（Transport Stream）パケットに格納される。これらＴＳパケットには、映像や音声などのコンポーネントごとに異なる値のＰＩＤ（Packet IDentifier）が付与される。さらに、映像信号以外のその他の音声信号などのコンポーネントと共に多重化されて、ＴＳ（放送信号）が作成される。放送サーバ１００は、このＴＳをネットワーク４００に送出（放送）する。これにより、ストリームデータを受信したＳＴＢ６００は、ＰＩＤの値に基づいて、ストリームデータから番組を構成するパケットを抽出して、復号し、テレビで視聴可能な信号に変換する。
【００２２】
（ＧＯＰデータ）
本発明のネットワークストレージ２００は、録画データの重複判定をＧＯＰデータ単位で行う。
ここで、受信した放送データ（ＭＰＥＧ−２  ＴＳ）をＧＯＰデータに分割する方法、および、各ＧＯＰデータを識別するための各種値の取得方法について説明する。
【００２３】
ストリーム解析装置３００が備えるストリーム解析部３６０（図１０）は、各ＴＳパケットのＰＩＤ（Packet Identifier）の値を確認しＰＳＩ（図３）を取得することにより、ストリームデータに含まれるＰＣＲパケットの識別を行う。
ヘッダにあるＰＣＲ（Program Clock Reference）に値（図３）が書き込まれたＴＳパケットをＰＣＲパケットと称する。このＰＣＲパケットは、ＭＰＥＧ−２規格により、エンコード側（放送サーバ１００）がストリームデータ（ＴＳパケットの連続）を送出するときに、０．１秒間に少なくとも１つ組み込まれる。
【００２４】
図２を用いて、ＴＳパケットの構造について説明する。
ＴＳパケットは、１８８バイト固定長のパケットであり、４バイト（３２ビット）のヘッダと、アダプテーションフィールドとで構成される。ＴＳパケットのヘッダの先頭から１２ビット目から２４ビット目までの１３ビットには、ＰＩＤが格納される。このＰＩＤからＴＳパケットを判定する。ＰＩＤが「０ｘ００００」のＴＳパケットがＰＡＴであり、ＰＩＤが「０ｘ００１０〜０ｘ１ＦＦＥ」のＴＳパケットがＰＭＴであり、その他各種ストリームのＰＩＤが割り当てられている。
【００２５】
ＴＳパケットの先頭から３２ｂｉｔ（４byte）の後ろがアダプテーションフィールドであり、アダプテーションフィールドの先頭から１６ｂｉｔ（２byte）の後ろがオプションフィールドであり、オプションフィールドの先頭がＰＣＲフィールドである。ＴＳパケット内のアダプテーションフィールド（adaptation field）およびペイロード（payload）の構成は、２７ビット目と２８ビット目の２ビットで示されるアダプテーションフィールド制御（adaptation field control）の値により決定される。
アダプテーションフィールドの１２ビット目から１６ビット目までのフラグ（flags）（５ビット）は、次に続くオプションフィールド（option field）の構成を示しており、フラグが立っている場合、そのフラグに応じた各種データがオプションフィールドに格納されていることを示している。このアダプテーションフィールドの１２ビット目がＰＣＲ＿ｆｌａｇであり、このフラグが立っている（１）場合、オプションフィールドにＰＣＲ値が格納されていることを示す。このＰＣＲ＿ｆｌａｇが１のＴＳパケットをＰＣＲパケットと称する。ここで、ＰＣＲ値は、アダプテーションフィールドの先頭から４８ビット（その内６ビットはｒｅｓｅｒｖｅｄ（予約））から取得することができる。
【００２６】
図３は、ＴＳパケットのペイロードにＰＡＴ、ＰＭＴを含む場合のペイロードの構造を示す図である。
ＰＡＴ、ＰＭＴなどのＰＳＩ（Program Specific Information）データは、ＴＳパケットのペイロードにＭＰＥＧ−２  セクション形式で格納される。ＰＳＩの１３ビット目から２４ビット目までの１２ビットには、セクション長（section length）が格納されており、次のビットからの後続データのデータ長を示している。
【００２７】
ＰＡＴ（ＰＩＤが「０ｘ００００」、以下、ＰＩＤ＝０と称する。）のとき、ＰＳＩの
６５ビット目以降には、ＭＰＥＧ−２  ＴＳに含まれる番組数分（＝Ｎ番組）のセクションデータ（PAT section data）（１番組３２ビットのセクションデータ）が格納されている。各セクションデータの先頭の１６ビットが番組番号（program_number）を示しており、２０ビット目から３２ビット目までの１３ビットが前記番組番号に対応するＰＩＤを示している。このセクションデータにより、番組番号とＰＭＴのＰＩＤとの対応付けが可能となる。
【００２８】
ＰＭＴ（ＰＩＤはＰＡＴで指定）の場合も、ＰＳＩの６５ビット目以降に、セクションデータ（PMT section data）が格納されている。セクションデータの４ビット目から１６ビット目までの１３ビットには、クロック（clock）のＰＩＤ（PCR_PID）が格納されている（図４参照）。このＰＩＤのＴＳパケットを解析することにより、ＰＣＲ値を取得することが可能となる。
さらに、このセクションデータ（PMT section data）の２１ビット目〜３２ビット目までの１２ビットには、次のビットから続くプログラム情報のデータ長（program_info_length）（可変長）が格納されている。このデータ長をＮ１とする。
【００２９】
セクションデータ（PMT section data）の３２＋Ｎ１ビット目以降から、番組に含まれるストリーム数分のエレメンタリストリームデータ（４０＋Ｎ２ビット）が格納されている。各エレメンタリストリームデータの先頭の８ビットにはストリームタイプ（stream_type）が格納されており、１２ビット目から２４ビット目までの１３ビットにはそのストリームタイプに対応するＰＩＤ（elementary_PID）が格納されている。このエレメンタリストリームデータにより、番組のストリームタイプとＰＩＤとの対応付けが可能となる。
【００３０】
図４は、ＭＰＥＧ−２  ＴＳのストリームタイプおよびＰＣＲパケット識別方法の例を示した図である。
まず、ストリーム解析部３６０は、ＰＩＤ＝０のＴＳパケットを検出して、ＰＡＴのＴＳパケットを取得する。このＰＡＴのＴＳパケットには、ＰｒｏｇｒａｍＩＤ（番組番号）＝０００１と、その番組に対応するＰＭＴのＴＳパケットのＰＩＤ＝１６とが対応して格納されている。
【００３１】
次に、ストリーム解析部３６０は、ＰｒｏｇｒａｍＩＤが０００１のＰＭＴのＴＳパケット、すなわち、ＰＩＤ＝１６のＴＳパケットを検出する。これにより、目的の番組のＰＭＴのＴＳパケットを取得する。このＰＭＴのパケットには、目的の番組のＰＣＲのＰＩＤ、およびストリームタイプ別のＰＩＤの関連付けが行われている。
【００３２】
ストリームタイプがＭＰＥＧ−２  ＶｉｄｅｏのＰＩＤ＝２５７のＴＳパケットを結合することで、ＭＰＥＧ−２  Ｖｉｄｅｏのデータを取り出すことができる。また、ＰＣＲのＰＩＤ＝２５６のＴＳパケットにより、そのデータ位置におけるＰＣＲ値を取得することができる。
【００３３】
図５は、ＴＳパケットのペイロードにＭＰＥＧ−２  Ｖｉｄｅｏのデータを含む場合の、ＭＰＥＧ−２  ＴＳデータとＧＯＰデータとの関係を示した図である。
ＭＰＥＧ−２  ＴＳでは、ＰＭＴに記載されたストリームタイプがＭＰＥＧ−２  ＶｉｄｅｏのＴＳパケットのペイロードを結合することで、メディア情報の単位であるＰＥＳパケットに分割することができる。
【００３４】
ＰＥＳパケットはヘッダ（ＰＥＳヘッダ）とペイロードとにより構成され、ペイロードを結合するとＭＰＥＧ−２  Ｖｉｄｅｏのシーケンスに分割される。さらに、シーケンスはヘッダとペイロード（とエンドコード）とにより構成され、ペイロードは複数のＧＯＰデータにより構成される。なお、ＰＥＳパケットの最大長は６５５３６バイトであり、通常はＧＯＰデータに含まれる１ピクチャをＰＥＳのペイロードに格納する。また、ＧＯＰデータは複数の画像をまとめたものであり、メディア上の並びでＩピクチャが先頭に来ることから、ＧＯＰ単位で独立して再生することが可能である。
【００３５】
《３．定義する用語の説明》
ここで、本明細書において定義する用語である「ＳＧＰ」、「ＧＴＣ」、「ＰＴＣ」について、図５を用いて説明する。
ここで、ＧＯＰデータの先頭を含むＰＥＳパケットに対して、ＰＥＳパケットデータの先頭を格納するＴＳパケット（先頭ＴＳパケット）の手前に存在し、ＰＣＲ値の最も大きいＰＣＲパケットを範囲先端ＰＣＲパケットとする。また、範囲先端ＰＣＲパケットのＰＣＲ値をＳＧＰ、範囲先端ＰＣＲパケットから次の範囲先端ＰＣＲパケットの１つ手前となるＴＳパケットまでに存在するＴＳパケット一式をＧＯＰ分割データとし、ＧＯＰ分割データのＴＳパケット数をＧＴＣとする。
また、後記の図１９において説明するが、ＰＣＲパケットから次のＰＣＲパケットの１つ手前となるＴＳパケットまでに存在するＴＳパケットのパケット数をＰＴＣとする。詳細は後記する図１９を用いて説明する。
【００３６】
《４．ネットワークストレージ２００の構成》
図６に示すように、ネットワークストレージ２００は、ＮＳＤＢ管理部２１０と、ＮＳＤＢ２２０と、ＮＳ記憶部２３０と、解析データ受信部２５０と、ストレージ管理部２６０と、録画データ受信部２７０とを備える。
ＮＳＤＢ管理部２１０と、解析データ受信部２５０と、ストレージ管理部２６０と、録画データ受信部２７０とは、制御手段として機能し、例えば、ＣＰＵ（Central Processing Unit）で構成される。各構成部の制御部としての機能は、ＣＰＵが不図示の記憶部に格納されるプログラムを展開し、実行することによって実現される。
ＮＳＤＢ２２０と、ＮＳ記憶部２３０とは、データやプログラムを記憶する構成部であり、例えば、ＨＤＤ（Hard Disc Drive）、ＲＡＭ（Random Access Memory）、光ディスク等の記憶手段である。
【００３７】
（ＮＳＤＢ管理部２１０）
ＮＳＤＢ管理部２１０は、ＮＳＤＢ２２０に対する要求（データ作成、データ読み込み、データ更新、データ削除）に応じて、ＮＳＤＢ２２０に記憶されたデータ更新等の処理を行う。
【００３８】
（ＮＳＤＢ２２０）
ＮＳＤＢ２２０は、ＧＯＰテーブル２２１（図７）と、ＰＣＲテーブル２２２（図８）と、Ｂｌｏｃｋテーブル２２３（図９）とを保持する。
【００３９】
（ＧＯＰテーブル２２１）
ＧＯＰテーブル２２１は、ネットワークストレージ２００にアップロードされた録画データのＧＯＰ分割データの情報（ＳＧＰ、ＧＴＣ等、図４，図５参照）を記憶する構成部である。図７に示すように、このＧＯＰテーブル２２１には、ＧＯＰ分割データの情報毎に１レコードが記憶され、ＧＯＰ分割データの情報は、ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ、ＤａｔａＩＤ、ＵｓｅｒＣｏｕｎｔ、およびＧＯＰＳｔａｔｕｓで構成される。
【００４０】
ここで、ＰｒｏｇｒａｍＩＤは、番組番号である。
ＳＧＰは、範囲先端ＰＣＲパケットのＰＣＲ値である。
ＧＴＣは、ＧＯＰ分割データを構成するＴＳパケットのパケット総数である。
ＤａｔａＩＤは、後記するＢｌｏｃｋテーブル２２３のレコードを一意にする情報であり、ＮＳ記憶部２３０に蓄積されたＧＯＰ分割データの領域に係る情報である。
ＵｓｅｒＣｏｕｎｔは、当該ＧＯＰ分割データを含む録画を行ったＳＴＢ６００の数である。これは、後記する図１７のステップＳ４０５において、ＳＴＢ６００から送信される〔ＰｒｏｇｒａｍＩＤ、Ｓｔａｒｔ−ＰＣＲ、Ｅｎｄ−ＰＣＲ、ｏｆｆｓｅｔ〕は、録画データのサイズを示し、このサイズに含まれるＧＯＰ分割データの情報に対して、ＵｓｅｒＣｏｕｎｔが１加算される。
ＧＯＰＳｔａｔｕｓは、ＧＯＰ分割データの利用可否情報である。“Ｎ（None）”、“Ｕ（Unavailable）”、“Ａ（Available）”のいずれか一つが記録される。詳細を後記する。
【００４１】
（ＰＣＲテーブル２２２）
ＰＣＲテーブル２２２は、ＰＣＲパケットの情報を記憶する構成部である。図８に示すように、このＰＣＲテーブル２２２には、ＰＣＲパケット毎に１レコードのＰＣＲパケットの情報が記憶され、このＰＣＲパケットの情報は、ＰｒｏｇｒａｍＩＤ、ＰＣＲ、およびＰＴＣで構成される。
【００４２】
（Ｂｌｏｃｋテーブル２２３）
Ｂｌｏｃｋテーブル２２３は、ブロック単位で区切られたＮＳ記憶部２３０の記憶領域の情報を記憶する構成部である。図９に示すように、このＢｌｏｃｋテーブル２２３には、ＤａｔａＩＤ毎に１レコードの記憶領域の情報が記憶され、この記憶領域の情報は、ＤａｔａＩＤ、ＮｅｘｔＩＤ（次のＤａｔａＩＤ）、ＳｔｏｒａｇｅＩＤ（記憶装置の識別番号）、ＢｌｏｃｋＩＤ（開始ブロック番号）、ＢｌｏｃｋＣｏｕｎｔ（総ブロック数）、およびＲｅｆＣｏｕｎｔｅｒ（参照カウンタ）で構成される。
【００４３】
図６に戻る。
（ＮＳ記憶部２３０）
ＮＳ記憶部２３０は、録画データを記録する記憶部である。このＮＳ記憶部２３０は、例えば、ＨＤＤなどの複数の記憶装置を組み合わせたものであり、ＮＳ２００の制御部（解析データ受信部２５０、ストレージ管理部２６０、録画データ受信部２７０）に制御されて、ＮＡＳ（Network Attached Storage）およびＲＡＩＤ（Redundant Arrays of Inexpensive Disks）としての機能を実現している。
【００４４】
（解析データ受信部２５０）
解析データ受信部２５０は、ストリーム解析装置３００から送信される解析データを受信し、この解析データから一部のデータを抽出し、ＮＳＤＢ管理部２１０に出力する構成部である。解析データ受信部２５０が解析データから抽出するデータは、ＮＳＤＢ管理部２１０によりＮＳＤＢ２２０のＧＯＰテーブル２２１、ＰＣＲテーブル２２２に記録されているデータである。
つまり、解析データ受信部２５０は、ＧＯＰテーブル２２１の〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ〕、ＰＣＲテーブル２２２の〔ＰＣＲ、ＰＴＣ〕の値をストリーム解析装置３００から送信される解析データから抽出する。
【００４５】
（ストレージ管理部２６０）
ストレージ管理部２６０は、ＮＳ記憶部２３０の記憶可能なデータ領域の使用状況をブロック単位で管理する。このストレージ管理部２６０は、複数の記憶装置（ＨＤＤなど）で構成されるＮＳ記憶部２３０のデータ領域を、各記憶装置の識別番号（ＳｔｏｒａｇｅＩＤ）と、ストレージ毎のブロック番号（ＢｌｏｃｋＩＤ）とで区分したブロック単位で、Ｂｌｏｃｋテーブル２２３を用いて管理する。ここで、ストレージ管理部２６０は、ＮＳＤＢ２２０のＢｌｏｃｋテーブル２２３のデータを更新するとき、ＮＳＤＢ管理部２１０に更新要求をして、ＮＳＤＢ管理部２１０に更新させる。
【００４６】
（録画データ受信部２７０）
録画データ受信部２７０は、ＳＴＢ６００から転送される録画データを受信すると共に、その録画データをＮＳ記憶部２３０に記録する。このとき、録画データ受信部２７０は、ＮＳＤＢ管理部２１０を介してＢｌｏｃｋテーブル２２３に基づき、ＮＳ記憶部２３０の記憶領域を確保し、そのＮＳ記憶部２３０の記憶領域に録画データを記録する。
【００４７】
《５．ストリーム解析装置３００の構成》
図１０に示すように、ストリーム解析装置３００は、ストリーム受信部３５０と、ストリーム解析部３６０と、ネットワークストレージ通信部３７０とを備える。
【００４８】
（ストリーム受信部３５０）
ストリーム受信部３５０は、ネットワーク４００と接続され、放送サーバ１００から送信されるストリームデータを受信し、ストリーム解析部３６０に出力する構成部である。
【００４９】
（ストリーム解析部３６０）
ストリーム解析部３６０は、ストリームデータを解析して、解析データを生成する構成部である。
このストリーム解析部３６０は、番組開始時点のストリームデータを構成するＴＳパケットの連続を監視し、ＰＣＲパケットを検出する（図２）。そして、ＰＣＲパケットの情報（ＳＧＰ、ＧＴＣ、およびＰＴＣの各種値）を取得して、随時メモリ（不図示）に記録させる。そして、ストリーム解析部３６０は、番組終了後、ストリームデータから得られた、ＰｒｏｇｒａｍＩＤと、ＰＣＲパケットの情報（ＳＧＰ、ＧＴＣ、およびＰＴＣの各種値）とで構成される解析データを生成する。そして、ストリーム解析部３６０は、解析データを、ネットワークストレージ通信部３７０を介してネットワークストレージ２００に送信（通知）させる。
【００５０】
（ネットワークストレージ通信部３７０）
ネットワークストレージ通信部３７０は、ネットワーク５００と接続され、ストリーム解析部３６０から取得した解析データをネットワークストレージ２００に送信する構成部である。
【００５１】
《６．ＳＴＢ６００の構成》
図１１に示すように、ＳＴＢ６００は、ＳＴＢＤＢ管理部６１０と、ＳＴＢＤＢ６２０と、ＳＴＢ記憶部６３０と、入力制御部６４０と、操作入力部６４１と、ストリームデータ受信部６５０と、録画データ送信部６６０と、録画データ受信部６７０と、信号変換出力部６８０とを備える。
【００５２】
（ＳＴＢＤＢ管理部６１０）
ＳＴＢＤＢ管理部６１０は、ＳＴＢＤＢ６２０に対する作成・読み込み・更新・削除の各要求を処理する。
【００５３】
（ＳＴＢＤＢ６２０）
ＳＴＢＤＢ６２０は、Ｆｉｌｅテーブル６２１（図１２）、Ｔｉｍｅテーブル６２２（図１３）を保持する。
【００５４】
（Ｆｉｌｅテーブル６２１）
Ｆｉｌｅテーブル６２１は、ＳＴＢ６００が受信したストリームデータの情報（ＳＴＢ記憶部６３０に記録された録画データの情報）を記憶する構成部である。図１２に示すように、このＦｉｌｅテーブル６２１には、録画データ毎に１レコードの録画データの情報が記憶され、この録画データの情報は、ＰｒｏｇｒａｍＩＤ、ｆｉｌｅ、Ｓｔａｒｔ−ＰＣＲ、Ｅｎｄ−ＰＣＲ、およびｏｆｆｓｅｔで構成される。
Ｓｔａｒｔ−ＰＣＲは、録画開始後、最初のＰＣＲパケットのＰＣＲ値である。
Ｅｎｄ−ＰＣＲは、録画終了の直前に存在するＰＣＲパケットのＰＣＲ値である。
ｏｆｆｓｅｔは、録画開始後、最初のＰＣＲパケットが検出されるまでに存在するＴＳパケット（つまり、最初のＴＳパケットから最初のＰＣＲパケットの１つ手前となるＴＳパケットまでに存在するＴＳパケット）の数である。
【００５５】
（Ｔｉｍｅテーブル６２２）
Ｔｉｍｅテーブル６２２は、ＳＴＢ記憶部６３０に記録されたＧＯＰ分割データの位置サイズ情報を記憶する構成部である。図１３に示すように、このＴｉｍｅテーブル６２２には、録画データに含まれるＧＯＰ分割データ毎に１レコードのＧＯＰ分割データの位置サイズ情報が記憶され、このＧＯＰ分割データの位置サイズ情報は、ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ｔｉｍｅ（録画データ先頭からの相対時間）、ｆｉｌｅ（ファイル名）、ｐｏｓｉｔｉｏｎ（ＧＯＰ分割データ開始位置；録画データの先頭からの距離をＴＳパケットの数で示す）、およびＬｅｎｇｔｈ（ＧＯＰ分割データ長；単位はビット）で構成される。
【００５６】
図１１に戻る。
（ＳＴＢ記憶部６３０）
ＳＴＢ記憶部６３０は、録画データを記録する記憶部である。このＳＴＢ記憶部６３０は、例えば、フラッシュメモリやＨＤＤ、光ディスクなどの記憶装置である。
【００５７】
（操作入力部６４１）
操作入力部６４１は、ユーザからＳＴＢ６００の操作指示を受け付ける構成部であり、ユーザに操作されたリモコンが出射する赤外線などの信号を受信したり、ユーザに操作キーから直接入力されたりすることで、ＳＴＢ６００の操作指示を受け付ける。
【００５８】
（入力制御部６４０）
入力制御部６４０は、操作入力部６４１に入力されたＳＴＢ６００の操作指示（録画開始、録画停止、再生開始、再生停止、特殊再生操作（ジャンプ再生）、録画データのアップロード（ストリーム解析装置３００への送信指示）など）を処理する構成部である。
【００５９】
（ストリームデータ受信部６５０）
ストリームデータ受信部６５０は、放送サーバ１００からのストリームデータを受信すると共に、録画機能を実行しているときは、受信したストリームデータを、録画データとして、ＳＴＢ記憶部６３０に記憶する。
なお、ストリームデータ受信部６５０は、録画開始時、録画データをＳＴＢ記憶部６３０に記録する際に、その録画データに、各ＳＴＢ６００で識別可能な一意のファイル名（ｆｉｌｅ）を付与する。
【００６０】
（録画データ送信部６６０）
録画データ送信部６６０は、録画データをネットワークストレージ２００に送信（アップロード）する構成部である。
この録画データ送信部６６０は、ＳＴＢ記憶部６３０から録画データを取得し、その録画データをＧＯＰ分割データ毎に分割して、ネットワークストレージ２００に送信する。このとき、録画データ送信部６６０は、ネットワークストレージ２００に問い合わせて、ネットワークストレージ２００に記録されていない（重複していない）ＧＯＰ分割データのみを送信する。
【００６１】
（録画データ受信部６７０）
録画データ受信部６７０は、ネットワークストレージ２００に録画データの送信を要求し、取得する構成部である。
この録画データ受信部６７０は、入力制御部６４０からの再生指示に応じて、指示された録画データの送信をネットワークストレージ２００に要求し、ネットワークストレージ２００から送信される録画データを受信する構成部であり、特に、特殊再生時のデータ読み込み処理の制御に使用される。
【００６２】
（信号変換出力部６８０）
信号変換出力部６８０は、録画データ受信部６７０が受信した録画データ（放送信号）をテレビで視聴可能な信号に変換して、ＳＴＢ６００と接続されたテレビに出力する。
【００６３】
《７．動作説明》
第１の実施形態におけるストリーム放送録画システムの動作について説明する。
以下、ストリーム放送録画システム１で実行される、（１）放送録画シーケンス（図１４〜図１６）と、（２）録画データアップロードシーケンス（図１７〜図１８、図２０）と、（３）録画データ再生シーケンス（図２１〜図２３）と、（４）録画データ削除シーケンス（図２４〜図２５）とを説明する。
【００６４】
（１）放送録画シーケンス
図１４〜図１６を用いて、放送録画シーケンスについて説明する。
図１４は、放送サーバ１００から送信されるストリームデータを受信したＳＴＢ６００の録画処理動作を示すシーケンス図である。
図１５は、放送サーバ１００から送信されるストリームデータを受信したストリーム解析装置３００の解析処理動作を示すシーケンス図であり、ストリーム解析装置３００が解析したデータをネットワークストレージ２００に送信する処理をも含めて図示されている。
図１６は、ストリーム解析装置３００から送信される解析データ（テーブル更新データ）を受信したネットワークストレージ２００のテーブル更新処理動作を示すシーケンス図である。
【００６５】
（ＳＴＢ６００の録画処理）
まず、図１４を用いて、放送サーバ１００から送信されるストリームデータを受信したＳＴＢ６００の録画処理動作について説明する。
【００６６】
ストリームデータ受信部６５０は、入力制御部６４０から録画開始指示を受けたときに（ステップＳ１０１）、録画開始指示のあった番組のファイルをＳＴＢ記憶部６３０から検索して、検出したファイルに含まれる番組データを取得し、ストリームデータの記録先となるファイルを作成する（ステップＳ１０２）。ストリームデータ受信部６５０は、ＳＴＢＤＢ管理部６１０を介して、ファイルに含まれるデータに基づきＦｉｌｅテーブル６２１に記録先となる新規レコードを作成する（ステップＳ１０３）。これにより、例えば、Ｆｉｌｅテーブル６２１には、〔０００１、ｕｓｅｒ１＿０００１−１、０（Ｓｔａｒｔ−ＰＣＲ）、０（Ｅｎｄ−ＰＣＲ）、０（ｏｆｆｓｅｔ）〕の新規レコード（記録先レコード）が作成される（図１２参照）。
【００６７】
そして、ストリームデータ受信部６５０は、ストリームデータの受信を開始することを入力制御部６４０に通知して（ステップＳ１０４）、ストリームデータの受信を開始する（ステップＳ１０５）。
ストリームデータ受信部６５０は、受信したストリームデータをモニタリングして最初のＰＣＲパケットの情報をＦｉｌｅテーブル６２１の記録先レコードに記録する（ステップＳ１０６）と共に、受信したストリームデータをステップＳ１０２で生成したファイルに格納（書き込み）する（ステップＳ１０７）。
【００６８】
ここでステップＳ１０６において、ストリームデータ受信部６５０は、受信したストリームデータをモニタリングして、ＰＣＲパケットを検索する。録画開始時（ストリームデータの受信開始時）から最初のＰＣＲパケットが出現するまでに、ファイルに記録したＴＳパケットの数（ｏｆｆｓｅｔ）と、ＰＣＲパケットのＰＣＲ値（Ｓｔａｒｔ−ＰＣＲ）とを、ステップＳ１０３でＦｉｌｅテーブル６２１に作成したレコード（記録先レコード）に記録する。これにより、Ｆｉｌｅテーブル６２１の記録先レコードが〔０００１、ｕｓｅｒ１＿０００１−１、０９９９９９７３００、０、１１〕に更新される（図１２参照）。
【００６９】
その後、ストリームデータ受信部６５０は、入力制御部６４０から録画終了指示を受けたときに（ステップＳ１０８）、モニタリングで最後に検出したＰＣＲパケットのＰＣＲ値（Ｅｎｄ−ＰＣＲ）を、Ｆｉｌｅテーブル６２１の記録先レコードに記録する（ステップＳ１０９）。これにより、Ｆｉｌｅテーブル６２１の記録先レコードが〔０００１、ｕｓｅｒ１＿０００１−１、０９９９９９７３００、１００００２９７００、１１〕に更新される（図１２参照）。そして、ストリームデータ受信部６５０は、ストリームデータを記録したファイルをクローズする（ステップＳ１１０）。
そして、ストリームデータ受信部６５０は、ファイルをクローズしたことを入力制御部６４０に通知して（ステップＳ１１１）、録画処理動作を終了する。
以上の処理により、録画開始から録画終了までのストリームデータが、ＳＴＢ記憶部６３０にステップＳ１０２で生成したｆｉｌｅ「ｕｓｅｒ１＿０００１−１」をファイル名とするファイルに格納される。また、ストリームデータのＰｒｏｇｒａｍＩＤ、Ｓｔａｒｔ−ＰＣＲ、Ｅｎｄ−ＰＣＲ、ｏｆｆｓｅｔが、ＳＴＢＤＢ６２０のＦｉｌｅテーブル６２１に記録される。
【００７０】
（ストリーム解析装置３００の解析処理）
次に、図１５を用いて、放送サーバ１００から送信されるストリームデータを受信したストリーム解析装置３００の解析処理動作について説明する。この図１５には、放送開始から放送終了までの間、ストリーム解析装置３００が行う解析処理動作が示されている。
【００７１】
まず、放送サーバ１００は、番組の放送開始時にＰｒｏｇｒａｍＩＤを送信し（ステップＳ２０１）、ストリーム受信部３５０は、ＰｒｏｇｒａｍＩＤを受信したことをストリーム解析部３６０に通知する（ステップＳ２０２）。そして、ストリーム受信部３５０は、放送サーバ１００に応答を送信する（ステップＳ２０３）。
【００７２】
ストリーム解析装置３００からの応答を受けて、放送サーバ１００は、ストリームデータの送信を開始する。ここで、放送サーバ１００は、ネットワーク４００を介してストリーム解析装置３００からの応答を待つことが記載されているが、双方向通信である必要はない。すなわち、放送サーバ１００は、所定の時刻からストリームデータの送信（配信）を開始してもよい。
ストリーム受信部３５０は、放送サーバ１００からストリームデータを受信し（ステップＳ２０４）、ストリーム解析部３６０に出力する。
ストリーム解析部３６０は、ストリームデータをモニタリング（解析）し（ステップＳ２０５）、ストリームデータから抽出した（後記する）テーブル更新データをネットワークストレージ２００に送信する（ステップＳ２０６）。これにより、ネットワークストレージ２００では、ＧＯＰテーブル２２１（図７）およびＰＣＲテーブル２２２（図８）のデータ更新が行われる。
そして、ストリーム解析部３６０は、ネットワークストレージ２００の更新完了通知をストリーム受信部３５０に出力し（ステップＳ２０７）、ストリーム受信部３５０から、次のストリームデータを受け付ける。
【００７３】
このステップＳ２０５において、ストリーム解析部３６０がストリームデータから抽出するテーブル更新データは、ＧＯＰテーブル２２１およびＰＣＲテーブル２２２に記憶させるデータであり、ＧＯＰデータと各ＰＣＲパケットとから抽出できるデータである。ストリーム解析部３６０は、ＧＯＰデータから〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ〕を抽出し、ＰＣＲパケットそれぞれから、ＰＣＲパケットの数（ｍ個）の〔ＰＣＲ値、ＰＴＣ〕を抽出する。そして、ストリーム解析部３６０は、ストリームデータを１つ受信する毎に〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ〕と、ｍ個の〔ＰＣＲ値、ＰＴＣ〕とをネットワークストレージ２００に送信する。
【００７４】
以上に示すステップＳ２０４〜ステップＳ２０７の処理は、ストリーム受信部３５０が放送サーバ１００から放送終了通知を受信する（ステップＳ２０８）まで実行される。図１５には、ストリーム受信部３５０がストリームデータをｎ回受信したことを示している。
【００７５】
（ネットワークストレージ２００のテーブル更新処理）
図１６を用いて、ストリーム解析装置３００から送信されるネットワークストレージ２００のテーブル更新処理動作について説明する。
まず、解析データ受信部２５０は、図１５のステップＳ２０６の処理が行われ、ストリーム解析装置３００から送信されるテーブル更新データを受信する（ステップＳ３０１）。このテーブル更新データは、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ〕と、ｍ個の〔ＰＣＲ値、ＰＴＣ〕とで構成される。
【００７６】
解析データ受信部２５０は、ＧＯＰデータから抽出した〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ〕を、ＮＳＤＢ管理部２１０を介して（ステップＳ３０２）、ＮＳＤＢ２２０のＧＯＰテーブル２２１（図７）に１レコードとして記録させる（ステップＳ３０３）。このとき、そのレコードには、ＤａｔａＩＤに “−（ｎｕｌｌ）”、ＵｓｅｒＣｏｕｎｔに“０”、ＧＯＰＳｔａｔｕｓに“Ｎ（None）”を記録させる。
【００７７】
同様に、解析データ受信部２５０は、ＰＣＲパケットから抽出したｍ個の〔ＰＣＲ値、ＰＴＣ〕それぞれを、ＮＳＤＢ管理部２１０を介して（ステップＳ３０４）、ＮＳＤＢ２２０のＰＣＲテーブル２２２（図８）に１レコードとして記録させる（ステップＳ３０５）。これにより、ＰＣＲテーブル２２２にはｍレコードの〔ＰＣＲ値、ＰＴＣ〕が記録される。
【００７８】
そして、解析データ受信部２５０は、更新完了通知をストリーム解析装置３００に送信し（ステップＳ３０６）、ネットワークストレージ２００はテーブル更新処理を終了する。
以上のステップＳ３０１〜ステップＳ３０６の処理をストリーム解析装置３００からテーブル更新データ（図１５のステップＳ２０６−１〜ステップＳ２０６−ｎ）を受信するたびに行う。これにより、放送開始から放送終了までのＧＯＰ分割データの各種値が、ネットワークストレージ２００に保存される。
【００７９】
（ＧＯＰＳｔａｔｕｓの状態遷移）
ここで、ＧＯＰＳｔａｔｕｓ（図７）について説明する。
ＧＯＰＳｔａｔｕｓはＳＧＰに対応するＧＯＰ分割データの状態を示すものであり、“Ｎ（None）”、“Ｕ（Unavailable）”、“Ａ（Available）”の３種類で状態を示す。“Ｎ”はＳＧＰに対応するＧＯＰ分割データが存在しない状態を示し、“Ｕ”はＳＧＰに対応するＧＯＰ分割データが存在するが、そのＧＯＰ分割データを利用することができない状態を示し、“Ａ”はＳＧＰに対応するＧＯＰ分割データが存在し利用可能な状態を示す。これらの状態は“Ｎ”→“Ｕ”、“Ｕ”→“Ａ”に状態を変えることができ、逆に、“Ａ”→“Ｕ”、“Ｕ”→“Ｎ”にも状態を変えることができる。
【００８０】
ここで、図１６に示すテーブル更新処理は、放送中のストリームデータを解析して得たテーブル更新データを用いた処理を示している。そのため、ＧＯＰテーブル２２１に登録されるＳＧＰに対応するＧＯＰ分割データが、ネットワークストレージ２００内に存在しない。そのため、ＧＯＰテーブル２２１（図７）には、ＧＯＰＳｔａｔｕｓの値として“Ｎ”が記録される。
【００８１】
（２）録画データアップロードシーケンス
図１７〜図１８、図２０を用いて、録画データアップロードシーケンスについて説明する。ここで録画データアップロードとは、ＳＴＢ６００のＳＴＢ記憶部６３０のファイルを格納された録画データ（ストリームデータ）を、ネットワークストレージ２００に送信することである。
【００８２】
（ＳＴＢ６００の録画データアップロード処理）
まず、図１７を用いて、ＳＴＢ６００が録画データをネットワークストレージ２００にアップロード（送信）する録画データアップロード処理動作について説明する。
【００８３】
まず、録画データ送信部６６０は、入力制御部６４０からアップロード指示を受け付け（ステップＳ４０１）、指示されたファイルに格納された録画データ（ストリームデータ）をアップロード（送信）するため、ＳＴＢ記憶部６３０に記憶されたファイルをオープンする（ステップＳ４０２）。
【００８４】
次に、録画データ送信部６６０は、ステップＳ４０２で取得したファイルに基づき、ＳＴＢＤＢ管理部６１０を介して、Ｆｉｌｅテーブル６２１を検索し（ステップＳ４０３）、ファイル名（ｆｉｌｅ）に対応するレコードの〔ＰｒｏｇｒａｍＩＤ、Ｓｔａｒｔ−ＰＣＲ、Ｅｎｄ−ＰＣＲ、ｏｆｆｓｅｔ〕を取得する（ステップＳ４０４）。
【００８５】
さらに、録画データ送信部６６０は、取得したこれらの値〔ＰｒｏｇｒａｍＩＤ、Ｓｔａｒｔ−ＰＣＲ、Ｅｎｄ−ＰＣＲ、ｏｆｆｓｅｔ〕を引数とした録画データのサイズをネットワークストレージ２００に送信して、問い合わせを行う（ステップＳ４０５）。
この問い合わせによりネットワークストレージ２００で行われる問い合わせ対応処理（図１８）については、詳細を後記する。
このステップＳ４０５に示す問い合わせにより、録画データをアップロードしたときに重複するデータがあるか否かの判定結果（ｆｌａｇ）がネットワークストレージ２００から送信される。
【００８６】
そして、録画データ送信部６６０は、ネットワークストレージ２００からＧＯＰ分割データの先頭位置とデータ範囲とを特定するＧＯＰ分割データ位置情報として、〔ＳＧＰ、ｐｏｓｉｔｉｏｎ、ＧＴＣ〕と、ｆｌａｇ（ｍ個）とを取得する（ステップＳ４０６）。
【００８７】
ここで、〔ＳＧＰ、ｐｏｓｉｔｉｏｎ、ＧＴＣ〕は、Ｓｔａｒｔ−ＰＣＲ（録画開始後最初のＰＣＲパケットのＰＣＲ値）からＥｎｄ−ＰＣＲ（録画終了の直前に存在するＰＣＲパケットのＰＣＲ値）までに存在するＧＯＰ分割データに対応する各種値である。
【００８８】
ｆｌａｇは、“ｆａｌｓｅ”または“ｔｒｕｅ”を値とするデータであり、ネットワークストレージ２００において、すでにそのＧＯＰ分割データが存在する（記録されている）場合は“ｆａｌｓｅ”、存在しない場合は“ｔｒｕｅ”である。
【００８９】
次に、録画データ送信部６６０は、取得したＳＧＰ一覧〔ＳＧＰ、ｐｏｓｉｔｉｏｎ、ＧＴＣ〕から、ＧＯＰ分割データの相対時刻を算出する（ステップＳ４０７）。そして、取得したＳＧＰの個数分（ｎ個）のレコードを、ＳＴＢＤＢ管理部６１０を介して、ＳＴＢＤＢ６２０のＴｉｍｅテーブル６２２に作成する（ステップＳ４０８）。
ここで、ＧＯＰ分割データの相対時刻は、各ＳＧＰ（ＰＣＲ値）を、ＳＧＰ一覧の先頭にあるＳＧＰで差分した値を、２７ｋＨｚで除算して算出する。例えば、ＳＧＰ＝１００００１３５００から、ＳＧＰ＝１０００００００００を差分して、２７ｋＨｚで除算することで「０．５秒（００：００：００：５００）」が得られる（図１３，図３５）。
【００９０】
次に、録画データ送信部６６０は、ｆｉｌｅ（ファイル名）のファイルに格納された録画データ（ストリームデータ）をＧＯＰ分割データ毎に分割し（ステップＳ４０９）、ｆｌａｇの値が“ｔｒｕｅ”のＧＯＰ分割データを、ネットワークストレージ２００にアップロード（送信）する（ステップＳ４１０）。このとき、録画データ送信部６６０は、分割したＧＯＰ分割データ毎に、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ｄａｔａ〕を送信する。ここで、ｄａｔａはＧＯＰ分割データそのものである。
【００９１】
そして、録画データ送信部６６０は、全てのＧＯＰ分割データの送信が完了した時点で、ｆｉｌｅ（ファイル名）のファイルをクローズまたは削除する（ステップＳ４１１）。そして、入力制御部６４０に通知して（ステップＳ４１２）、ファイルのアップロード処理を終了する。
【００９２】
以上の処理により、ＳＴＢ６００において、ストリーム再生時の特殊再生に使用するＴｉｍｅテーブル６２２の作成が行われると共に、ｆｉｌｅ（ファイル名）のファイルの録画データがネットワークストレージ２００に保存される。
【００９３】
（ネットワークストレージ２００の問い合わせ対応処理）
図１８を用いて、ＳＴＢ６００から送信される問い合わせに対してネットワークストレージ２００が行う問い合わせ対応処理について説明する。
まず、図１７のステップＳ４０５の処理が行われ、録画データ受信部２７０は、ＳＴＢ６００からの問い合わせ〔ＰｒｏｇｒａｍＩＤ、Ｓｔａｒｔ−ＰＣＲ、Ｅｎｄ−ＰＣＲ、ｏｆｆｓｅｔ〕を受信する（ステップＳ５０１）。
録画データ受信部２７０は、ＮＳＤＢ管理部２１０を介して、ＧＯＰテーブル（図７）を用いて、Ｓｔａｒｔ−ＰＣＲからＥｎｄ−ＰＣＲまでに存在するＧＯＰ分割データの検索を行う（ステップＳ５０２）。このとき、ＮＳＤＢ管理部２１０は、（Ｓｔａｒｔ−ＰＣＲ≦ＳＧＰ）かつ（次のＧＯＰ分割データのＳＧＰ（次のＳＧＰ）≦Ｅｎｄ−ＰＣＲ）を満たすＧＯＰ分割データを検索する。
【００９４】
ＮＳＤＢ管理部２１０は、ＧＯＰテーブル（図７）において、検出したＧＯＰ分割データに対応するレコード〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ、ＧＯＰＳｔａｔｕｓ〕のＵｓｅｒＣｏｕｎｔをインクリメントする（UserCount++）（ステップＳ５０３）。これにより、ＧＯＰテーブル（図７）において、検出された全てのＧＯＰ分割データ（ｎ個）に対応するレコードのＵｓｅｒＣｏｕｎｔがインクリメントされる。
【００９５】
ＮＳＤＢ管理部２１０は、ＧＯＰ分割データの検索結果を録画データ受信部２７０に出力する。このとき、ＮＳＤＢ管理部２１０は、検出したＧＯＰ分割データに対応するレコード〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ、ＧＯＰＳｔａｔｕｓ〕およびｆｌａｇからなるＧＯＰ分割データ情報を録画データ受信部２７０に出力する（ステップＳ５０４）。
これにより、検出された全てのＧＯＰ分割データ情報（ｎ個）が録画データ受信部２７０に出力される。
【００９６】
ここで、ｆｌａｇは、ＧＯＰ分割データの存在の有無を示す情報であり、ＧＯＰＳｔａｔｕｓが“Ｎ”以外の場合、ＧＯＰ分割データがすでに存在している（ＧＯＰテーブルに当該ＧＯＰ分割データが記憶されている）ことを示している。そのため、ｆｌａｇに“ｆａｌｓｅ”を指定する。一方、ＧＯＰＳｔａｔｕｓが“Ｎ”の場合、ｆｌａｇに“ｔｒｕｅ”を指定する。
【００９７】
次に、録画データ受信部２７０は、録画データの先頭からＧＯＰ分割データの先頭までのＴＳパケットの数から、ｐｏｓｉｔｉｏｎを算出する（ステップＳ５０５）。
このとき、録画データ受信部２７０は、ｏｆｆｓｅｔ（の値）と、ＰＴＣ（の値）とから、ｐｏｓｉｔｉｏｎを算出する。この算出方法について図１９を用いて説明する。
【００９８】
図１９は、録画データのＧＯＰ分割データ開始位置（ｐｏｓｉｔｉｏｎ）を計算するための算出方法を示した例である。ネットワークストレージ２００は、ＳＴＢ６００から〔Ｓｔａｒｔ−ＰＣＲ，Ｅｎｄ−ＰＣＲ，ｏｆｆｓｅｔ〕を取得し（図１７のステップＳ４０５、図１８のステップＳ５０１）、録画データのＧＯＰ分割データ開始位置（ｐｏｓｉｔｉｏｎ）を計算する。
ここで、録画データのＳｔａｒｔ−ＰＣＲがＰＣＲ［ａ］であり、録画データに含まれる先頭のＧＯＰ分割データ（ＧＯＰ＃１）のＳＧＰ（＃１）との間にＰＣＲ［ｂ］、ＰＣＲ［ｃ］が存在するとする。この場合、ｐｏｓｉｔｉｏｎの値は、録画データの先頭からＧＯＰ分割データの先頭までの距離をＴＳパケットの数で示したものであり、すなわち、録画データ先頭からＳｔａｒｔ−ＰＣＲまでのＴＳパケットのパケット総数であるｏｆｆｓｅｔと、ＰＣＲ［ａ］（Ｓｔａｒｔ−ＰＣＲ）〜ＳＧＰ（＃１）までのＴＳパケットのパケット総数との合計の値である。
【００９９】
図１８に戻る。
次に、録画データ受信部２７０は、ＮＳ記憶部２３０内の空き領域のうち、ＧＯＰ分割データを書き込むための書込領域を、ＮＳＤＢ管理部２１０を介して、Ｂｌｏｃｋテーブル２２３から検索する（ステップＳ５０６〜ステップＳ５０７）。なお、ｆｌａｇに“ｔｒｕｅ”が指定されているＧＯＰ分割データのみを書き込み対象とする。（ここでは、全てのＧＯＰ分割データの個数をｎ、ｆｌａｇ＝“ｔｒｕｅ”のＧＯＰ分割データの個数をｋ（ｎ≧ｋ）として説明する。）
【０１００】
ストレージ管理部２６０は、ＮＳＤＢ管理部２１０を介して、Ｂｌｏｃｋテーブル２２３を用いて書込領域を確保し（ステップＳ５０９）、Ｂｌｏｃｋテーブル２２３における確保した書込領域情報のＤａｔａＩＤを取得する（ステップＳ５１０）。このとき、ＮＳＤＢ管理部２１０において、確保した書込領域情報のＤａｔａＩＤに対応するＢｌｏｃｋテーブル２２３のレコードに対し、ＲｅｆＣｏｕｎｔｅｒをインクリメントする（RefCounter++）（ステップＳ５０８）。
【０１０１】
最後に、録画データ受信部２７０は、書込領域を確保したＧＯＰ分割データについて、ＰｒｏｇｒａｍＩＤ、ＳＧＰをｋｅｙとして、ＮＳＤＢ管理部２１０を介してＧＯＰテーブル２２１を検索し（ステップＳ５１１）、該当レコードのＧＯＰＳｔａｔｕｓを“Ｕ”に変更する（ステップＳ５１２）。そして、ＮＳＤＢ管理部２１０は変更完了通知を録画データ受信部２７０に出力する（ステップＳ５１３）
【０１０２】
録画データ受信部２７０は、取得したｎ個の〔ＳＧＰ、ｐｏｓｉｔｉｏｎ、ＧＴＣ、ｆｌａｇ〕で構成されるＧＯＰ分割データ位置情報をＳＴＢ６００に送信する（ステップＳ５１４）。これにより、ＳＴＢ６００はＳＧＰ一覧を取得することができる。
【０１０３】
（ストリーム解析装置３００の録画データ書き込み対応処理）
次に、図２０を用いて、ＳＴＢ６００からアップロード（送信）される録画データを受信したネットワークストレージの２００の録画データ書き込み対応処理動作について説明する。
【０１０４】
まず、録画データ受信部２７０は、図１７のステップＳ４１０でＳＴＢ６００から送信されるＧＯＰ分割データ〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ｄａｔａ〕を受信する（ステップＳ６０１）。そして、録画データ受信部２７０は、ＮＳＤＢ管理部２１０を介し、ＧＯＰテーブル２２１から書き込み先（図１８のステップＳ５０９で確保した書込領域）を検索する（ステップＳ６０２）。このとき、録画データ受信部２７０は、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕を用いて、ＧＯＰテーブル２２１のレコードを検索して、対応するＤａｔａＩＤ（Ｂｌｏｃｋテーブル２２３のキー値）を取得する（ステップＳ６０３）。
次に、録画データ受信部２７０は、取得したＤａｔａＩＤをストレージ管理部２６０に出力し（ステップＳ６０４）、ストレージ管理部２６０に書き込み先の取得を依頼する。
【０１０５】
ストレージ管理部２６０は、ＮＳＤＢ管理部２１０を介して、Ｂｌｏｃｋテーブル２２３（図９）から図１８のステップＳ５０９で確保した書込領域（書き込み先のブロック）を検索する（ステップＳ６０５）。ここでは、ストレージ管理部２６０は、ＤａｔａＩＤをキー値として、図１８のステップＳ５０９で確保した書込領域情報を、Ｂｌｏｃｋテーブル２２３（図９）のレコード〔ＳｔｏｒａｇｅＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕から検索する。
【０１０６】
ストレージ管理部２６０は、Ｂｌｏｃｋテーブル２２３（図９）において、検出したＤａｔａＩＤに対応するレコード〔ＳｔｏｒａｇｅＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕のＲｅｆＣｏｕｎｔｅｒをインクリメントする（RefCounter++）（ステップＳ６０６）。
【０１０７】
ＮＳＤＢ管理部２１０は、検出した書き込み先のブロックの書込領域情報をストレージ管理部２６０に出力する（ステップＳ６０７）。このとき、ＮＳＤＢ管理部２１０は、検出したＤａｔａＩＤに対応するレコード〔ＳｔｏｒａｇｅＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕をストレージ管理部２６０に出力する。そして、ストレージ管理部２６０は、書込領域情報を録画データ受信部２７０に出力する（ステップＳ６０８）。
【０１０８】
録画データ受信部２７０は、ＧＯＰ分割データを取得した書込領域（書き込み先のブロック）に対応する、ＮＳ記憶部２３０のブロックに書き込む（ステップＳ６０９）。そして、録画データ受信部２７０は、ストレージ管理部２６０に対して書込完了通知を出力する（ステップＳ６１０）。ここで、録画データ受信部２７０は、書込完了通知と共にＤａｔａＩＤをストレージ管理部２６０に出力し、ストレージ管理部２６０にＢｌｏｃｋテーブル２２３（図９）の更新を依頼する。
【０１０９】
ストレージ管理部２６０は、ＮＳＤＢ管理部２１０を介し、ＤａｔａＩＤをキー値としてＢｌｏｃｋテーブル２２３（図９）を検索し（ステップＳ６１１）、検出したＤａｔａＩＤに対応するレコードのＲｅｆＣｏｕｎｔｅｒをデクリメントする（RefCounter--）（ステップＳ６１２）。
そして、ＮＳＤＢ管理部２１０は変更完了通知をストレージ管理部２６０に出力し（ステップＳ６１３）、ストレージ管理部２６０は録画データ受信部２７０に転送する（ステップＳ６１４）。
【０１１０】
次に、録画データ受信部２７０は、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕をキー値として、ＮＳＤＢ管理部２１０を介して、ＧＯＰテーブル２２１を検索し（ステップＳ６１５）、検出した〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕に対応するレコードのＧＯＰＳｔａｔｕｓを“Ｕ”から“Ａ”に変更させる（ステップＳ６１６）。そして、ＮＳＤＢ管理部２１０は変更完了通知を録画データ受信部２７０に送信する（ステップＳ６１７）。
録画データ受信部２７０は、録画データ書込完了通知をＳＴＢ６００に送信し（ステップＳ６１８）、次のＧＯＰ分割データを送信するようＳＴＢ６００に要求する。その要求に対して、ＧＯＰ分割データの送信がなければ、ネットワークストレージ２００は録画データ書き込み対応処理を終了する。
以上の処理により、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕に対応するＧＯＰ分割データがネットワークストレージ２００に保存され、ＳＴＢ６００から読み込み可能な状態となる。
【０１１１】
（３）録画データ再生シーケンス
図２１〜図２３を用いて、録画データ再生シーケンスについて説明する。
【０１１２】
（ＳＴＢ６００の録画データ再生処理）
次に、図２１を用いて、ネットワークストレージ２００から読み込んだ（取得した）録画データを再生するＳＴＢ６００の録画データ再生処理動作について説明する。
【０１１３】
まず、録画データ受信部６７０は、入力制御部６４０からの再生開始指示〔ｆｉｌｅ（ファイル名）、ｓ−ｔｉｍｅ（再生開始時刻）〕に応じて（ステップＳ７０１）、ＳＴＢＤＢ管理部６１０を介し、Ｔｉｍｅテーブル６２２を検索し（ステップＳ７０２）、ｆｉｌｅ（ファイル名）のＧＯＰ分割データのレコード〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ｔｉｍｅ、ｐｏｓｉｔｉｏｎ、Ｌｅｎｇｔｈ〕を取得する（ステップＳ７０３）。
ここで、再生開始時刻を指定しない再生開始指示であれば、録画開始時刻に当たる００：００：００：０００の相対時刻が再生開始時刻となる。ここでは、ｓ−ｔｉｍｅで示す再生開始時刻を指定した場合について説明する。
【０１１４】
録画データ受信部６７０は、再生した録画データがネットワークストレージ２００から削除されることを防ぐため、ネットワークストレージ２００に対して再生開始通知を送信する（ステップＳ７０４）。その後、録画データ受信部６７０は、ステップＳ７０３で取得したレコードから、指定された再生開始時刻（ｓ−ｔｉｍｅ）を越えない最も大きな相対時刻（ｔｉｍｅ）をもつレコードを検索する。この検索処理において、録画データ受信部６７０は、再生開始位置を検出する（ステップＳ７０５）。そして、録画データ受信部６７０は、再生開始通知を入力制御部６４０に出力する（ステップＳ７０６）。
【０１１５】
録画データ受信部６７０は、ネットワークストレージ２００にダウンロード要求を行い（ステップＳ７０７）、ステップＳ７０５で検出したレコードのＳＧＰに対応する位置（再生開始位置）からのＧＯＰ分割データを順次読み込み（ステップＳ７０８−１〜ステップＳ７０８−ｎ）、録画データのダウンロードを行う。
【０１１６】
ここで入力制御部６４０から特殊操作による指示（例えば、ジャンプ再生指示）が入力された場合について説明する。
録画データ受信部６７０は、入力制御部６４０からのジャンプ再生指示〔ｆｉｌｅ、ｊｓ−ｔｉｍｅ（ジャンプ再生開始時刻）〕に応じて（ステップＳ７０９）、指定されたジャンプ先の時刻（ｊｓ−ｔｉｍｅ）をもつレコードを検索する。この検索処理において、録画データ受信部６７０は、再生開始位置を検出する（ステップＳ７１０）。そして、録画データ受信部６７０は、再生開始通知を入力制御部６４０に出力する（ステップＳ７１１）。
【０１１７】
録画データ受信部６７０は、ネットワークストレージ２００にダウンロード要求を行い（ステップＳ７１２）、ステップＳ７１０で検出したレコードのＳＧＰに対応する位置からのＧＯＰ分割データを順次読み込み（ステップＳ７１３−１〜ステップＳ７１３−ｎ）、録画データのダウンロードを行う。
【０１１８】
その後、録画データ受信部６７０は、入力制御部６４０からの再生終了指示（ｆｉｌｅが指定される）に応じて（ステップＳ７１４）、ネットワークストレージ２００に再生終了通知を送信する（ステップＳ７１５）。そして録画データ受信部６７０は、ＳＴＢ６００がＳＴＢ記憶部６３０に確保した読み込み先ブロックを開放する。これにより、ネットワークストレージ２００から読み込んだ録画データが削除される。
そして、録画データ受信部６７０は、入力制御部６４０に再生終了通知を出力し（ステップＳ７１６）、ＳＴＢ６００は録画データ再生処理を終了する。
【０１１９】
以上の処理により、ＳＴＢ６００は、ネットワークストレージ２００にアップロード（保存）した録画データを受信（取得）し、再生することが可能となる。また、ジャンプ再生時はＳＴＢ６００のＴｉｍｅテーブル６２２からジャンプ先のＳＧＰを特定できるため、特殊再生（ジャンプ再生）におけるデータの逐次検索が不要である。
【０１２０】
（ネットワークストレージ２００の再生開始通知対応処理）
次に、図２２を用いて、ＳＴＢ６００から再生開始通知を受信したネットワークストレージ２００の再生開始通知対応処理動作について説明する。
まず、録画データ受信部２７０は、図２１のステップＳ７０４でＳＴＢ６００から送信される再生開始通知〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕を受信する（ステップＳ８０１）。そして、録画データ受信部２７０は、ＮＳＤＢ管理部２１０を介し、ＧＯＰテーブル２２１から読み込み先（図１８のステップＳ５０９で確保した書込領域）を検索する（ステップＳ８０２）。このとき、録画データ受信部２７０は、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕を用いて、ＧＯＰテーブル２２１のレコードを検索して、対応するＤａｔａＩＤ（Ｂｌｏｃｋテーブル２２３のキー値）を取得する（ステップＳ８０３）。
次に、録画データ受信部２７０は、取得したＤａｔａＩＤをストレージ管理部２６０に出力し（ステップＳ８０４）、ストレージ管理部２６０に読み込み先の取得を依頼する。
【０１２１】
ストレージ管理部２６０は、ＮＳＤＢ管理部２１０を介して、Ｂｌｏｃｋテーブル２２３（図９）から図１８のステップＳ５０９で確保した書込領域情報（書き込み先のブロック）を検索する（ステップＳ８０５）。ここでは、ストレージ管理部２６０は、ＤａｔａＩＤをキー値として、図１８のステップＳ５０９で確保した書込領域情報を、Ｂｌｏｃｋテーブル２２３（図９）のレコード〔ＳｔｏｒａｇｅＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕から検索する。
【０１２２】
ストレージ管理部２６０は、Ｂｌｏｃｋテーブル２２３（図９）において、検出したＤａｔａＩＤに対応するレコード〔ＳｔｏｒａｇｅＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕のＲｅｆＣｏｕｎｔｅｒをインクリメントする（RefCounter++）（ステップＳ８０６）。
【０１２３】
ＮＳＤＢ管理部２１０は、検出した書き込み先のブロックの書込領域情報をストレージ管理部２６０に出力する（ステップＳ８０７）。このとき、ＮＳＤＢ管理部２１０は、書込領域情報として検出したＤａｔａＩＤに対応するレコード〔ＳｔｏｒａｇｅＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕をストレージ管理部２６０に出力する。そして、ストレージ管理部２６０は、書込領域情報を録画データ受信部２７０に出力する（ステップＳ８０８）。
そして、録画データ受信部２７０は、録画データ読込先検出完了通知をＳＴＢ６００に送信する（ステップＳ８０９）。
【０１２４】
その後、ＳＴＢ６００からのダウンロード要求を受けた録画データ受信部２７０は（ステップＳ８１０）、ステップＳ８０８で取得した書込領域情報に基づき、ＮＳ記憶部２３０からＧＯＰ分割データを取得して、ＳＴＢ６００に順次送信する（ステップＳ８１１−１〜ステップＳ８１１−ｎ）。
【０１２５】
（ネットワークストレージ２００の再生終了通知対応処理）
次に、図２３を用いて、ＳＴＢ６００から再生終了通知を受信したネットワークストレージ２００の再生終了通知対応処理動作について説明する。
【０１２６】
まず、録画データ受信部２７０は、図２１のステップＳ７１５でＳＴＢ６００から送信された再生終了通知を受信する（ステップＳ９０１）。録画データ受信部２７０は、ストレージ管理部２６０にＤａｔａＩＤを出力する（ステップＳ９０２）。
【０１２７】
ストレージ管理部２６０は、ＮＳＤＢ管理部２１０を介し、ＤａｔａＩＤをキー値として、Ｂｌｏｃｋテーブル２２３の検索を行い（ステップＳ９０３）、検出したレコードのＲｅｆＣｏｕｎｔｅｒをデクリメントさせる（RefCounter--）（ステップＳ９０４）。ここで、ＲｅｆＣｏｕｎｔｅｒの値が０であれば（デクリメントできなかった場合）、検出したレコードのＧＯＰ分割データの書込領域（すなわち、ＧＯＰ分割データがＮＳ記憶部２３０に記憶されているブロック）を開放する。つまり、ＧＯＰ分割データを削除する。
【０１２８】
そして、ＮＳＤＢ管理部２１０は処理完了通知をストレージ管理部２６０に出力し（ステップＳ９０５）、ストレージ管理部２６０は録画データ受信部２７０に転送し（ステップＳ９０６）、録画データ受信部２７０は、ＳＴＢ６００にステップＳ９０１の再生終了通知に対する応答通知を送信し（ステップＳ９０７）、再生終了通知対応処理を終了する。
以上の処理により、録画データ再生中はＲｅｆＣｏｕｎｔｅｒの値が０にならないため、データ読み込み時に該当ブロックのデータが削除されない。
【０１２９】
（４）録画データ削除シーケンス
図２４〜図２５を用いて、録画データ削除シーケンスについて説明する。
【０１３０】
（ＳＴＢ６００のファイル削除処理）
次に、図２４を用いて、ＳＴＢ６００のファイル削除処理動作について説明する。
まず、録画データ送信部６６０は、入力制御部６４０からのファイル削除指示（ｆｉｌｅが指定される）に応じて（ステップＳ１００１）、ＳＴＢＤＢ管理部６１０を介し、ＳＴＢＤＢ６２０のＴｉｍｅテーブル６２２を検索し（ステップＳ１００２）、ＧＯＰ分割データのレコード〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ｔｉｍｅ、ｆｉｌｅ〕を取得する（ステップＳ１００３）。
そして、録画データ送信部６６０は、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕をネットワークストレージ２００に送信して、録画データ削除を要求する（ステップＳ１００４）。
【０１３１】
次に、録画データ送信部６６０は、ＳＴＢＤＢ管理部６１０を介し、Ｔｉｍｅテーブル６２２からステップＳ１００３で取得したレコード〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ｔｉｍｅ、ｆｉｌｅ〕を削除する（ステップＳ１００５）。
そして、録画データ送信部６６０は、ＳＴＢＤＢ管理部６１０を介し、Ｆｉｌｅテーブル６２１からステップＳ１００３で取得したレコードのｆｉｌｅに該当する（一致する）レコードを削除する（ステップＳ１００６）。
さらに、録画データ送信部６６０は、ＳＴＢ記憶部６３０にｆｉｌｅが残っている場合は、ｆｉｌｅを合わせて削除する（ステップＳ１００７）。
録画データ送信部６６０は、入力制御部６４０にファイル削除完了通知を出力し（ステップＳ１００８）、ＳＴＢ６００はｆｉｌｅ削除処理を終了する。
【０１３２】
以上の処理により、ネットワークストレージ２００、およびＳＴＢ６００から指定されたｆｉｌｅの録画データが削除される。
【０１３３】
（ネットワークストレージ２００の録画データ削除処理）
次に、図２５を用いて、ＳＴＢ６００から録画データ削除要求を受信したネットワークストレージ２００の録画データ削除処理動作について説明する。
【０１３４】
まず、録画データ受信部２７０は、ＳＴＢ６００から録画データ削除要求を受け（ステップＳ１１０１）、ＮＳＤＢ管理部２１０を介して、〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ〕を用いてＧＯＰテーブル２２１の検索を行い（ステップＳ１１０２）、検出したレコードのＧＯＰＳｔａｔｕｓの値を“Ａ”から“Ｕ”に変更する（ステップＳ１１０３）。これにより、ネットワークストレージ２００は、ＳＧＰに対応するＧＯＰ分割データを利用することができなくなる。
【０１３５】
録画データ受信部２７０は、ＮＳＤＢ管理部２１０から変更完了通知を受け（ステップＳ１１０４）、次にＮＳＤＢ管理部２１０を介し、ステップＳ１１０２で検出したＧＯＰテーブル２２１のレコードのＵｓｅｒＣｏｕｎｔをデクリメントする（UserCount--）（ステップＳ１１０５〜ステップＳ１１０６）。
【０１３６】
このステップＳ１１０６の処理において、ＵｓｅｒＣｏｕｎｔが０の場合、ＤａｔａＩＤを“−”（ｎｕｌｌ）に設定し、ＧＯＰＳｔａｔｕｓの値を“Ｕ”から“Ｎ”に変更する。これにより、ＳＧＰに対応するＧＯＰ分割データが削除されたことになる。
一方、ＵｓｅｒＣｏｕｎｔが０以外の場合、ＧＯＰＳｔａｔｕｓの値を“Ｕ”から“Ａ”に変更することで、ＳＧＰに対応するＧＯＰ分割データが利用可能であることを示す。
ＮＳＤＢ管理部２１０は、録画データ受信部２７０に対して、ＵｓｅｒＣｏｕｎｔが０となったＤａｔａＩＤのレコードを出力（返す）（ステップＳ１１０７）。図２５の説明では、ＧＯＰ分割データ個数をｎ、ＵｓｅｒＣｏｕｎｔが０となったＧＯＰ分割データ個数をｋ（ｎ≧ｋ）とした。
【０１３７】
そして、ストレージ管理部２６０は、録画データ受信部２７０から削除通知を取得し（ステップＳ１１０８）、ＮＳＤＢ管理部２１０を介して、ＵｓｅｒＣｏｕｎｔが０となったＤａｔａＩＤをキー値として、Ｂｌｏｃｋテーブル２２３の検索を行い（ステップＳ１１０９）、検出したレコードのＲｅｆＣｏｕｎｔｅｒをデクリメントさせる（RefCounter--）（ステップＳ１１１０）。ここで、ＲｅｆＣｏｕｎｔｅｒの値が０であれば（デクリメントできなかった場合）、検出されたレコードのＧＯＰ分割データの書込領域（すなわち、ＧＯＰ分割データがＮＳ記憶部２３０に記憶されているブロック）を開放する。つまり、ＧＯＰ分割データを削除する。
【０１３８】
そして、ＮＳＤＢ管理部２１０は処理完了通知をストレージ管理部２６０に出力し（ステップＳ１１１１）、ストレージ管理部２６０は録画データ受信部２７０に転送し（ステップＳ１１１２）、録画データ受信部２７０は、ＳＴＢ６００にステップＳ１１０１の録画データ削除要求に対する応答通知を送信し（ステップＳ１１１３）、録画データ削除処理を終了する。
【０１３９】
以上の処理により、ＳＴＢ６００からの録画データ削除に対し、ネットワークストレージ２００、およびＳＴＢ６００から録画データが削除される。また、記録済みＳＴＢ６００が存在せず、利用中のＳＴＢ６００も存在しない録画データについては利用不可となるが、利用中のデータブロックは図２３の再生終了シーケンスが終わるまでデータが変更されないことが保証される。
【０１４０】
《８．ネットワークストレージ２００内のデータ・デデュープ方法》
図１に示すストリーム放送録画システム１において、放送サーバ１００が送信（放送）するストリームデータを複数のＳＴＢ６００が受信し記録（録画）する。つまり、同一番組のストリームデータを各ＳＴＢ６００で受信することになるため、各ＳＴＢ６００が記録したストリームデータ（録画データ）は重複度が高い。ここで、同一番組のストリームデータをダイレクト録画する場合、各ＳＴＢ６００が受信するストリームデータを構成するＴＳパケットのＰｒｏｇｒａｍＩＤおよびＰＣＲ値は同一である。本発明はこのことを利用し、重複する録画データの検出を行う。
【０１４１】
ここで、図２６〜図４０を用いて、ネットワークストレージ２００におけるデータ・デデュープ（De- Dupe（Data De-duplication）の略語であり、データ重複排除のこと）の説明を行う。ここでは、２つのＳＴＢ６００（ユーザが操作するＳＴＢ６００−１、別のユーザが操作するＳＴＢ６００−２）が同一の時間帯で放送される同一の番組（ＰｒｏｇｒａｍＩＤ＝０００１）を録画し、番組終了後、それぞれのＳＴＢ６００（ＳＴＢ６００−１、ＳＴＢ６００−２）が録画した録画データを、ネットワークストレージ２００にアップロードする例を、第１の状態、第２の状態、第３の状態に分けて説明する。
【０１４２】
ここで、第１の状態は、番組の放送終了後、放送サーバ１００が送信したストリームデータが、ＳＴＢ６００−１およびＳＴＢ６００−２に録画データとして記録され、ストリーム解析装置３００により解析されて、解析結果がネットワークストレージ２００に記録されているときの状態である。
第２の状態は、ＳＴＢ６００−１が録画データをネットワークストレージ２００にアップロードするときの状態である。
第３の状態は、第２の状態の後で、すでにネットワークストレージ２００にアップロードされている（第２の状態でＳＴＢ６００−１がアップロードした）録画データと一部同じ（重複する）録画データを記録したＳＴＢ６００−２が、ネットワークストレージ２００に重複しない録画データをアップロードするときの状態である。
【０１４３】
図２７と、図３２と、図３８とは、ネットワークストレージ２００が備えるＧＯＰテーブル２２１であり、図２７は第１の状態時、図３２は第２の状態時、図３８は第３の状態時のＧＯＰテーブル２２１を示す。
図２９、図３４、図３９は、ネットワークストレージ２００が備えるＢｌｏｃｋテーブル２２３であり、図２９は第１の状態時、図３４は第２の状態時、図３９は第３の状態時のＢｌｏｃｋテーブル２２３を示す。
図３６および図４０は、ＳＴＢ６００が備えるＴｉｍｅテーブル６２２であり、図３６は第２の状態時、図４０は第３の状態時のＴｉｍｅテーブル６２２を示す。
図２８は、第１の状態時のネットワークストレージ２００が備えるＰＣＲテーブル２２２を示す。
図３０は、第１の状態時のＳＴＢ６００が備えるＦｉｌｅテーブル６２１を示す。
【０１４４】
《第１の状態》
第１の状態について、図２６〜図３０を用いて説明する。
第１の状態は、番組の放送終了後、放送サーバ１００が送信したストリームデータが、ＳＴＢ６００−１およびＳＴＢ６００−２に録画データとして記録され、ストリーム解析装置３００により解析されて、解析結果がネットワークストレージ２００に記録されているときの状態である。
【０１４５】
図２６（ａ）は、図２７に示す第１の状態時のＧＯＰテーブル２２１に記録されたデータを図示したものである。図２７に示すＧＯＰテーブル２２１には、ストリーム解析装置３００により、ストリームデータが解析されて、ＧＯＰ分割データが存在する位置が記録されている。ここで、ＧＯＰテーブル２２１の１レコード目のＧＯＰ分割データの位置について、図２６（ａ）および図２７を用いて説明する。
【０１４６】
図２６（ｂ）は、図３０（ａ）に示す第１の状態時のＳＴＢ６００−１が備えるＦｉｌｅテーブル６２１−１に記録されたデータを図示したものである。また、図２６（ｃ）は、図３０（ｂ）に示す第１の状態時のＳＴＢ６００−２が備えるＦｉｌｅテーブル６２１−２に記録されたデータを図示したものである。
【０１４７】
ここで、ＳＴＢ６００−１に記録された、ｆｉｌｅ（ファイル名）「ｕｓｅｒ１＿０００１−１」で示される録画データＲＤ１−１と、ｆｉｌｅ「ｕｓｅｒ１＿０００１−２」で示される録画データＲＤ１−２と、ＳＴＢ６００−２に記録されたｆｉｌｅ「ｕｓｅｒ２＿０００１−１」で示される録画データＲＤ２との３つの録画データは、同じ番組（チャンネル）を録画したデータである。そのため、これらの録画データを構成するＴＳパケットのＰｒｏｇｒａｍＩＤは同一である。
【０１４８】
例えば、ここでは紙面の都合上、短い時間帯にて記載するが、「ｕｓｅｒ１＿０００１−１」の録画データＲＤ１−１は、１９：５９：５９：０９０〜２０：００：０１：１０（ここで、記載した時間のフォーマットは、時：分：秒：１/１００秒である）の時間帯の番組を録画したデータであり、「ｕｓｅｒ１＿０００１−２」の録画データＲＤ１−２は、２０：００：００：０９０〜２０：００：１０：０２０の時間帯の番組を録画したデータであり、「ｕｓｅｒ２＿０００１−１」の録画データＲＤ２は、２０：００：００：０３０〜２０：００：２０：０３０の時間帯の番組を録画したデータである。
【０１４９】
図３０（ａ）に示すＦｉｌｅテーブル６２１−１において、ｆｉｌｅ「ｕｓｅｒ１＿０００１−１」で示される録画データＲＤ１−１は、ＰＣＲ値が０９９９９９７３００（＝Ｓｔａｒｔ−ＰＣＲ）の位置から１００００２９７００（＝Ｅｎｄ−ＰＣＲ）の位置までである。同様に、ｆｉｌｅ「ｕｓｅｒ１＿０００１−２」で示される録画データＲＤ１−２は、ＰＣＲ値が１００００２４３００（＝Ｓｔａｒｔ−ＰＣＲ）の位置から１０００２７５４００（＝Ｅｎｄ−ＰＣＲ）の位置までである。
ここで、ＳＴＢ６００−１には、同じ番組の録画データが別々に記録されており（ＲＤ１−１とＲＤ１−２）、しかも、ＰＣＲ値が１００００２４３００から１００００２９７００までの位置において、録画データの一部が重複している。
【０１５０】
同様に、図３０（ｂ）に示すＦｉｌｅテーブル６２１−２において、ｆｉｌｅ「ｕｓｅｒ１＿０００２−１」で示される録画データＲＤ２は、ＰＣＲ値が１０００００８１００（＝Ｓｔａｒｔ−ＰＣＲ）の位置から１０００５４８１００（＝Ｅｎｄ−ＰＣＲ）の位置までである。
【０１５１】
ここで、ＳＴＢ６００−１に記録された録画データＲＤ１（ＲＤ１−１およびＲＤ１−２）と、ＳＴＢ６００−２に記録された録画データＲＤ２とでは、ＰＣＲ値が１０００００８１００から１０００２７５４００までの位置において、録画データの一部が重複している。
【０１５２】
図２８は、第１の状態時のネットワークストレージ２００が備えるＰＣＲテーブル２２２である。
ＰＣＲテーブル２２２には、ＰｒｏｇｒａｍＩＤと、ＰＣＲパケットのＰＣＲ値（ＰＣＲ）と、そのＰＣＲパケットから次のＰＣＲパケットまでの間に存在するＴＳパケットのパケット総数（ＰＴＣ）とが記録されている。
例えば、ＰＣＲ値が１０００００００００のレコードは、そのＰＣＲ値のＰＣＲパケットから、次のＰＣＲパケット（ＰＣＲ値が１０００００２７００のＰＣＲパケット）までの間に、３１（＝ＰＴＣ）のＴＳパケットがあることを示している。
【０１５３】
図２９は、第１の状態時のネットワークストレージ２００が備えるＢｌｏｃｋテーブル２２３であり、ＮＳ記憶部２３０の記録領域の状態を示す。この第１の状態時において、ＢｌｏｃｋＩＤが０００００００１から６７１０８８６３までに相当するＮＳ記憶部２３０の記録領域が未使用である（何も記録されていない）ことを示している（ＲｅｆＣｏｕｎｔｅｒ＝０）。
【０１５４】
このとき（第１の状態が終了し、第２の状態に移行する前の時点）の各テーブルの状態について説明する。
ネットワークストレージ２００には、ストリーム解析装置３００から送信された解析データのレコード〔ＰｒｏｇｒａｍＩＤ、ＳＧＰ、ＧＴＣ〕が保存されたＧＯＰテーブル２２１（図２７）と、ＰＣＲパケット間のＴＳパケットのパケット総数の一覧が保存されたＰＣＲテーブル２２２（図２８）と、未使用状態のＮＳ記憶部２３０を示すＢｌｏｃｋテーブル２２３（図２９）とが存在する。
また、ＳＴＢ６００−１には、２つの録画データがそれぞれファイルに格納されて「ｕｓｅｒ１＿０００１−１」と、「ｕｓｅｒ１＿０００１−２」とが存在する。そのファイル（録画データ）それぞれのＳｔａｒｔ−ＰＣＲおよびＥｎｄ−ＰＣＲが記録されたＦｉｌｅテーブル６２１−１（図３０（ａ））が存在する。
一方、ＳＴＢ６００−２には、１つの録画データが格納されたファイル「ｕｓｅｒ２＿０００１−１」が存在し、Ｓｔａｒｔ−ＰＣＲおよびＥｎｄ−ＰＣＲが記録されたＦｉｌｅテーブル６２１−２（図３０（ｂ））が存在する。
【０１５５】
《第２の状態》
第２の状態について、図３１〜図３６を用いて説明する。
第２の状態は、ＳＴＢ６００−１が録画データ（ＲＤ１−１およびＲＤ１−２）をネットワークストレージ２００にアップロードするときの状態である。
【０１５６】
図３１（ａ）（ｂ）は、ＳＴＢ６００−１に記録された録画データＲＤ１（ＲＤ１−１およびＲＤ１−２）をネットワークストレージ２００にアップロードした後の、図３２に示す第２の状態時のＧＯＰテーブル２２１に記録されたデータを図示したものである。
【０１５７】
（録画データＲＤ１−１のアップロード）
このＳＴＢ６００−１は、ネットワークストレージ２００でＧＯＰ分割データが重複して記録されないように、重複しないＧＯＰ分割データをアップロードする。しかし、ＳＴＢ６００−１は、ストリームデータを解析する機能を有していないため、放送サーバ１００から受信したストリームデータのどこにＧＯＰ分割データが記録されているか、すなわち、ＧＯＰ分割データの開始位置と終了位置とを検出することができない。
【０１５８】
そこで、ネットワークストレージ２００から、ストリーム解析装置３００によるストリームデータの解析結果（ＧＯＰ分割データの開始位置と終了位置）を、ＳＴＢ６００−１に提供（送信）する。これにより、ＳＴＢ６００−１は、録画データ（ストリームデータ）からＧＯＰ分割データの部分を抽出して、ネットワークストレージ２００にアップロードできる。
そのため、まず、ＳＴＢ６００−１は、ネットワークストレージ２００に、録画した録画データの情報（これからアップロードするＧＯＰ分割データに係る情報）を提供（送信）する。
【０１５９】
ここで、ネットワークストレージ２００が提供（送信）する情報は、ＳＴＢ６００とネットワークストレージ２００との双方で共有する認識可能な情報（ＰＣＲ）に基づくデータである。
【０１６０】
ネットワークストレージ２００は、ＧＯＰ分割データの開始位置（ＳＧＰ）と、ＧＯＰ分割データを構成するＴＳパケットの数（ＧＴＣ）とを、ＳＴＢ６００−１に提供（送信）する。
以上により、ＳＴＢ６００−１は、録画データ（ストリームデータ）からＳＧＰを検出するだけで、ネットワークストレージ２００から提供された情報に基づいて、ＧＯＰ分割データを抽出することができる。そして、ＳＴＢ６００−１は抽出したＧＯＰ分割データをネットワークストレージ２００にアップロードする。
【０１６１】
（残ＴＳパケットの格納、再生時抽出処理）
ここで、録画データからＧＯＰ分割データを抽出した後、録画データの先頭と末尾に残ＴＳパケット（残先頭ＴＳパケット、残末尾ＴＳパケット）が発生する。ＳＴＢ６００−１は、残ＴＳパケットをＳＴＢ記憶部６３０から抽出するための情報をＴｉｍｅテーブル６２２に格納する。ここで、ＳＴＢ６００−１は、残ＴＳパケットから得られる〔ｏｆｆｓｅｔ、ＰＴＣ〕に基づき、残ＴＳパケットのＴＳパケット数（ｐｏｓｉｔｉｏｎ）を算出し、Ｔｉｍｅテーブル６２２に格納する。これにより、ＳＴＢ記憶部６３０には、Ｔｉｍｅテーブル６２２から得られるｆｉｌｅ「ｕｓｅｒ１−０００１−１」の先頭から、ｐｏｓｉｔｉｏｎ分のＴＳパケット、すなわち残先頭ＴＳパケットが記録される。
【０１６２】
ＳＴＢ６００−１は、再生時に、Ｔｉｍｅテーブル６２２に格納されたｐｏｓｉｔｉｏｎに基づき、残ＴＳパケットをＳＴＢ記憶部６３０から抽出する。そして、ＳＴＢ６００−１は、ネットワークストレージ２００からダウンロードした最初のＧＯＰ分割データの先頭に、残先頭ＴＳパケットを付け、最後のＧＯＰ分割データの末尾に、残末尾ＴＳパケットを付けて補完し、録画時の録画データを生成する。そして、ＳＴＢ６００−１は、再生時に最初に、残先頭ＴＳパケットを再生する。この残ＴＳパケットを格納する処理は、ＳＴＢ６００−１が録画したときの全てのデータを補完するための処理である。
【０１６３】
（録画データＲＤ１−２のアップロード）
さらに、ＳＴＢ６００−１は、録画データＲＤ１−２も、録画データＲＤ１−１をアップロードしたときと同様に、ネットワークストレージ２００に記録されたＧＯＰ分割データと重複しないように、重複しないＧＯＰ分割データをアップロードする。
【０１６４】
まず、ＳＴＢ６００−１は、ネットワークストレージ２００に、録画データＲＤ１−２の情報（これからアップロードするＧＯＰ分割データに係る情報）を提供（送信）する。ここで、Ｆｉｌｅテーブル６２１−１（図３０（ａ））に記録されたファイル名「ｕｓｅｒ１＿０００１−２」のレコード〔ＰｒｏｇｒａｍＩＤ，Ｓｔａｒｔ−ＰＣＲ，Ｅｎｄ−ＰＣＲ，ｏｆｆｓｅｔ〕が、録画データＲＤ１−２の情報である。
【０１６５】
ネットワークストレージ２００は、録画データＲＤ１−２の情報を確認して、ＮＳ記憶部２３０に記録されているＧＯＰ分割データ（つまり、録画データＲＤ１−１がアップロードされたＧＯＰ分割データ）と重複しない範囲の、ＧＯＰ分割データの開始位置のＰＣＲパケットの位置（ＳＧＰ）と、ＧＯＰ分割データを構成するＴＳパケットの数（ＧＴＣ）とを、図３２のＧＯＰテーブル２２１から取得してＳＴＢ６００−１に提供（送信）する。
ここで、ｐｏｓｉｔｉｏｎは、ｏｆｆｓｅｔ＋Ｓｔａｒｔ−ＰＣＲ値が格納されたＰＣＲパケットから範囲先端ＰＣＲパケットの１つ手前のＴＳパケットまでに存在するＴＳパケットのデータサイズである（図１９参照）。
【０１６６】
以上により、ＳＴＢ６００−１は、録画データＲＤ１−２（ストリームデータ）からＳＧＰを検出するだけで、ネットワークストレージ２００から提供された情報に基づいて、ＧＯＰ分割データを抽出することができる。そして、ＳＴＢ６００−１は抽出したＧＯＰ分割データをネットワークストレージ２００にアップロードする。
これにより、ＳＴＢ６００−１は、図３１（ｂ）に示す［３］のＧＯＰ分割データを抽出し、ネットワークストレージ２００にアップロードする。
【０１６７】
（録画ＲＤ１−２の残ＴＳパケットの格納、再生時抽出処理）
ここで、録画データからＧＯＰ分割データを抽出した後、録画データの先頭と末尾で残ＴＳパケット（残先頭ＴＳパケット、残末尾ＴＳパケット）が発生する。これも録画データＲＤ１−１と同様に処理が行われ、ＳＴＢ記憶部６３０には、Ｔｉｍｅテーブル６２２から得られるｆｉｌｅ「ｕｓｅｒ１−０００１−１」の先頭から、ｐｏｓｉｔｉｏｎ分のＴＳパケット、すなわち残先頭ＴＳパケットが記録される。
【０１６８】
ここで、録画データＲＤ１−１と、録画データＲＤ１−２との間で重複する、ＧＯＰ分割データは、アップロード処理後に削除される。
【０１６９】
以上のように、ＳＴＢ６００−１は、録画データＲＤ１（ＲＤ１−１およびＲＤ１−２）を構成するＧＯＰ分割データをネットワークストレージ２００にアップロードする。
【０１７０】
図３３は、アップロードされたＧＯＰ分割データをネットワークストレージ２００がＮＳ記憶部２３０に記録する処理を図示したものである。
ネットワークストレージ２００は、ＧＯＰ分割データを構成するＴＳパケット数（ＧＴＣ）に基づき、ＮＳ記憶部２３０の記憶領域の割り当てをブロック単位で行う。このとき、ネットワークストレージ２００は、ＧＯＰ分割データが記憶された最初のブロックの識別番号（ＢｌｏｃｋＩＤ）と、使用するブロックの数（ＢｌｏｃｋＣｏｕｎｔ）とを算出する。
そして、ネットワークストレージ２００は、録画データを構成する順番で、各ＧＯＰ分割データに一意のＤａｔａＩＤを付与する。
これらの〔ＤａｔａＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕をＢｌｏｃｋテーブル２２３に記録する。
【０１７１】
図３４では、ＧＯＰ分割データ［１］〜［２０］が、ＤａｔａＩＤ「０００００００１」からＤａｔａＩＤ「００００００２０」で示すレコードに記録される。
ＤａｔａＩＤ「００００００００」は空き領域が確保されたことを示しており、ＢｌｏｃｋＩＤ「０００００００１」から８０００のブロックが空き領域（ＲｅｆＣｏｕｎｔｅｒ＝０）として確保されていることを示している。また、ＮｅｘｔＩＤには、次に割り当て可能なブロック（空き領域）の情報が記録されたレコードのＤａｔａＩＤが記録される。
この図３４のＢｌｏｃｋテーブルにおいて、ＤａｔａＩＤ「００００００００」で示すレコードには、ＢｌｏｃｋＣｏｕｎｔ＝８０００の空き領域があることを示す情報が記録されている。
【０１７２】
（ＧＯＰテーブル２２１の更新）
そして、ネットワークストレージ２００は、ＧＯＰテーブル２２１の更新を行い、図３２に示すように、各ＧＯＰ分割データに対応するＧＯＰテーブル２２１の〔ＤａｔａＩＤ、ＵｓｅｒＣｏｕｎｔ、ＧＯＰＳｔａｔｕｓ〕が記録される。
図３２に示すように、ＤａｔａＩＤ「０００００００１」からＤａｔａＩＤ「００００００２０」に示すレコードが追加され、〔ＰｒｏｇｒａｍＩＤ，ＳＧＰ，ＧＴＣ〕には、各ＧＯＰ分割データの情報が記録される。ＤａｔａＩＤは、ＮＳ記憶部２３０に記録されたＧＯＰ分割データの順番が記録される。ＵｓｅｒＣｏｕｎｔには１が記録される。ＧＯＰＳｔａｔｕｓには、“Ａ（Available）”が記録される。
【０１７３】
ＳＴＢ６００−１のＴｉｍｅテーブル６２２−１には、図３６（ａ）に示すように、〔ＰｒｏｇｒａｍＩＤ，ＳＧＰ，ｔｉｍｅ，ｆｉｌｅ，ｐｏｓｉｔｉｏｎ，Ｌｅｎｇｔｈ〕で構成されるレコードが格納される。このレコードは、録画データを、ネットワークストレージ２００の解析データに基づき、抽出したＧＯＰ分割データの情報である。このレコードには、録画データの開始位置からＧＯＰ分割データの先頭までの位置（ｐｏｓｉｔｉｏｎ）と、ＧＯＰ分割データ長（Ｌｅｎｇｔｈ）と、先頭ＧＯＰ分割データからの相対時間（ｔｉｍｅ）が計算される。
図３５は、Ｔｉｍｅテーブル６２２−１に記録されたデータを図示したものである。つまり、第２の状態時のＳＴＢ６００−１がアップロードする録画データＲＤ１（ＲＤ１−１およびＲＤ１−２）を図示したものである。
【０１７４】
《第３の状態》
第３の状態について、図３７〜図４０を用いて説明する。
第３の状態は、第２の状態の後で、すでにネットワークストレージ２００にアップロードされている（第２の状態でＳＴＢ６００−１がアップロードした）録画データと一部同じ（重複する）録画データを記録したＳＴＢ６００−２が、ネットワークストレージ２００に重複しない録画データをアップロードするときの状態である。
【０１７５】
図３７は、ＳＴＢ６００−２に記録された録画データＲＤ２をネットワークストレージ２００にアップロードした後の、図３８に示す第３の状態時のＧＯＰテーブル２２１に記録されたデータを図示したものである。
【０１７６】
（録画データＲＤ２のアップロード）
このＳＴＢ６００−２は、ネットワークストレージ２００でＧＯＰ分割データが重複して記録されないように、重複しないＧＯＰ分割データをアップロードする。
【０１７７】
まず、ＳＴＢ６００−１は、ネットワークストレージ２００に、録画データＲＤ２の情報（これからアップロードするＧＯＰ分割データに係る情報）を提供（送信）する。ここで、Ｆｉｌｅテーブル６２１−２（図３０（ｂ））に記録されたファイル名「ｕｓｅｒ２＿０００１−１」のレコード〔ＰｒｏｇｒａｍＩＤ，Ｓｔａｒｔ−ＰＣＲ，Ｅｎｄ−ＰＣＲ，ｏｆｆｓｅｔ〕が、録画データＲＤ２の情報である。
【０１７８】
ネットワークストレージ２００は、録画データＲＤ２の情報を確認して、ＮＳ記憶部２３０に記録されているＧＯＰ分割データ（つまり、録画データＲＤ１がアップロードされたＧＯＰ分割データ）と重複しない範囲の、ＧＯＰ分割データの開始位置のＰＣＲパケットの位置（ＳＧＰ）と、ＧＯＰ分割データを構成するＴＳパケットの数（ＧＴＣ）とを、ＳＴＢ６００−２に提供（送信）する。
【０１７９】
以上により、ＳＴＢ６００−２は、録画データＲＤ２（ストリームデータ）からＳＧＰを検出するだけで、ネットワークストレージ２００から提供された情報に基づいて、ＧＯＰ分割データを抽出することができる。そして、ＳＴＢ６００−２は抽出したＧＯＰ分割データをネットワークストレージ２００にアップロードする。
これにより、ＳＴＢ６００−２は、図３７に示す［２１］（ＤａｔａＩＤ＝０００００２１）のＧＯＰ分割データを抽出し、ネットワークストレージ２００にアップロードする。
【０１８０】
（録画ＲＤ２の残ＴＳパケットの格納、再生時抽出処理）
ここで、録画データからＧＯＰ分割データ抽出した後、録画データの先頭と末尾で残ＴＳパケット（残先頭ＴＳパケット、残末尾ＴＳパケット）が発生する。これも録画データＲＤ１と同様に処理が行われ、ＳＴＢ記憶部６３０には、Ｔｉｍｅテーブル６２２から得られるｆｉｌｅ「ｕｓｅｒ２−０００１−１」の先頭から、ｐｏｓｉｔｉｏｎ分のＴＳパケット、すなわち残先頭ＴＳパケットが記録される。
【０１８１】
以上のように、ＳＴＢ６００−２は、録画データＲＤ２を構成するＧＯＰ分割データをネットワークストレージ２００にアップロードする。
【０１８２】
図３９は、アップロードされたＧＯＰ分割データをネットワークストレージ２００がＮＳ記憶部２３０に記録する処理を示したものである。
ネットワークストレージ２００は、ＧＯＰ分割データを構成するＴＳパケット数（ＧＴＣ）に基づき、ＮＳ記憶部２３０の記憶領域の割り当てをブロック単位で行う。このとき、ネットワークストレージ２００は、ＧＯＰ分割データが記憶された最初のブロックの識別番号（ＢｌｏｃｋＩＤ）と、使用するブロックの数（ＢｌｏｃｋＣｏｕｎｔ）とを算出する。
そして、ネットワークストレージ２００は、録画データを構成する順番で、各ＧＯＰ分割データに一意のＤａｔａＩＤを付与する。
これらの〔ＤａｔａＩＤ、ＢｌｏｃｋＩＤ、ＢｌｏｃｋＣｏｕｎｔ〕をＢｌｏｃｋテーブル２２３に記録する。
【０１８３】
図３９のＢｌｏｃｋテーブルは、ＮＳ記憶部２３０の記憶領域に、ＧＯＰ分割データ［１］〜［２０］が、ＤａｔａＩＤ「０００００００１」からＤａｔａＩＤ「００００００２０」で示すレコードのブロックに記録されていることを示している。
そして、ＳＴＢ６００−２からアップロードされたＧＯＰ［２１］〜［４０］が、ＤａｔａＩＤ「００００００２１」からＤａｔａＩＤ「００００００４０」に示すレコードのブロックに記録されていることを示している。
この図３９のＢｌｏｃｋテーブルにおいて、ＤａｔａＩＤ「００００００００」で示すレコードには、ＢｌｏｃｋＣｏｕｎｔ＝８０００の空き領域があることを示す情報が記録されている。
【０１８４】
（ＧＯＰテーブル２２１の更新）
そして、ネットワークストレージ２００は、ＧＯＰテーブル２２１の更新を行い、図３８に示すように、各ＧＯＰ分割データに対応するＧＯＰテーブル２２１の〔ＤａｔａＩＤ、ＵｓｅｒＣｏｕｎｔ、ＧＯＰＳｔａｔｕｓ〕が記録される。
図３８に示すように、ＤａｔａＩＤ「００００００２１」からＤａｔａＩＤ「００００００４０」に示すレコードが追加され、〔ＰｒｏｇｒａｍＩＤ，ＳＧＰ，ＧＴＣ〕には、各ＧＯＰ分割データの情報が記録される。ＤａｔａＩＤは、ＮＳ記憶部２３０に記録されたＧＯＰ分割データの順番であり、図３９と同じ数値が記録される。ＵｓｅｒＣｏｕｎｔには、１が記録され、さらに、重複したＤａｔａＩＤ「０００００００２」〜「００００００２０」のレコードにおいて、数値がインクリメント（＋１）されて記録される。ＧＯＰＳｔａｔｕｓには、“Ａ（Available）”が記録される。
【０１８５】
図４０（ｂ）に示すように、ＳＴＢ６００−２のＴｉｍｅテーブル６２２−２には、〔ＰｒｏｇｒａｍＩＤ，ＳＧＰ，ｔｉｍｅ，ｆｉｌｅ，ｐｏｓｉｔｉｏｎ，Ｌｅｎｇｔｈ〕で構成されるレコードが格納される。このレコードは、録画データを、ネットワークストレージ２００の解析データに基づき抽出したＧＯＰ分割データの情報である。このレコードには、録画データの開始位置からＧＯＰ分割データの先頭までの位置（ｐｏｓｉｔｉｏｎ）と、ＧＯＰ分割データ長（Ｌｅｎｇｔｈ）と、先頭ＧＯＰ分割データからの相対時間（ｔｉｍｅ）が計算されて格納される。
【０１８６】
以上のように第１の実施形態によれば、放送ストリームのデータをＧＯＰ単位で区切り、ネットワークストレージ２００にアップロードすることにより、ＳＴＢ６００においてネットワークストレージ２００からデータを取得し、再生することが可能となる。
また、ＳＴＢ６００内にＴｉｍｅテーブル６２２を作成することにより、特殊再生に対するＳＴＢ６００の処理が軽減されるという効果が得られる。
さらに、ネットワークストレージ２００内でＰｒｏｇｒａｍＩＤ、ＳＧＰによるデータ重複の識別を、データ・デデュープを用いて行うことにより、従来よりも処理負荷の低いデータ重複の識別が可能となる。
【０１８７】
本発明は、前記した実施形態に限定されることなく、本発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
【０１８８】
例えば、第１の実施形態では、放送サーバ１００およびネットワークストレージ２００とストリーム解析装置３００とを分割して記載したが、ストリーム解析装置３００を放送サーバ１００、又はネットワークストレージ２００に内包させることも可能である。この場合、図１のシステム構成図は、ネットワークストレージ２００とネットワーク４００が接続するように変更される。
【０１８９】
第１の実施形態では、放送に使用するストリームをＭＰＥＧ−２  ＴＳに限定した例を説明したが、使用するＶｉｄｅｏデータについては、特殊再生のデータ区切りが識別可能なフォーマットであり、ＭＰＥＧ−ＴＳでエンコード可能であれば適用可能である。
例えば、ＶｉｄｅｏデータにＨ．２６４を使用した場合、Ｈ．２６４エンコード時の各種パラメータを適切に運用することにより、前記データ区切りを実現することが可能である。
なお、前記の適切な運用とは、例えば「デジタルテレビネットワーク機能仕様書 ストリーミング仕様書 コーデック編（デジタルテレビ情報化研究会）付録規定Ａ  Ｈ．２６４  ｜  ＭＰＥＧ４−ＡＶＣの運用」などがある。
【符号の説明】
【０１９０】
１      ストリーム放送録画システム
１００  放送サーバ
２００  ネットワークストレージ（ＮＳ）
２１０  ＮＳＤＢ管理部
２２０  ＮＳＤＢ
２２１  ＧＯＰテーブル
２２２  ＰＣＲテーブル
２２３  Ｂｌｏｃｋテーブル
２３０  ＮＳ記憶部（録画データ記憶部）
２５０  解析データ受信部
２６０  ストレージ管理部
２７０  録画データ受信部
３００  ストリーム解析装置
３５０  ストリーム受信部
３６０  ストリーム解析部
３７０  ネットワークストレージ通信部
４００  ネットワーク（放送ネットワーク）
５００  ネットワーク（通信ネットワーク）
６００（６００−１、６００−２）  ＳＴＢ
６１０  ＳＴＢＤＢ管理部
６２０  ＳＴＢＤＢ
６２１  Ｆｉｌｅテーブル
６２１−１  ＳＴＢ６００−１のＦｉｌｅテーブル
６２１−２  ＳＴＢ６００−２のＦｉｌｅテーブル
６２２  Ｔｉｍｅテーブル
６２２−１  ＳＴＢ６００−１のＴｉｍｅテーブル
６２２−２  ＳＴＢ６００−２のＴｉｍｅテーブル
６３０  ＳＴＢ記憶部
６４０  入力制御部
６４１  操作入力部
６５０  ストリームデータ受信部
６６０  録画データ送信部
６７０  録画データ受信部
６８０  信号変換出力部
【図１】
0005949040.tif 000002
【図２】
0005949040.tif 000003
【図３】
0005949040.tif 000004
【図４】
0005949040.tif 000005
【図５】
0005949040.tif 000006
【図６】
0005949040.tif 000007
【図７】
0005949040.tif 000008
【図８】
0005949040.tif 000009
【図９】
0005949040.tif 000010
【図１０】
0005949040.tif 000011
【図１１】
0005949040.tif 000012
【図１２】
0005949040.tif 000013
【図１３】
0005949040.tif 000014
【図１４】
0005949040.tif 000015
【図１５】
0005949040.tif 000016
【図１６】
0005949040.tif 000017
【図１７】
0005949040.tif 000018
【図１８】
0005949040.tif 000019
【図１９】
0005949040.tif 000020
【図２０】
0005949040.tif 000021
【図２１】
0005949040.tif 000022
【図２２】
0005949040.tif 000023
【図２３】
0005949040.tif 000024
【図２４】
0005949040.tif 000025
【図２５】
0005949040.tif 000026
【図２６】
0005949040.tif 000027
【図２７】
0005949040.tif 000028
【図２８】
0005949040.tif 000029
【図２９】
0005949040.tif 000030
【図３０】
0005949040.tif 000031
【図３１】
0005949040.tif 000032
【図３２】
0005949040.tif 000033
【図３３】
0005949040.tif 000034
【図３４】
0005949040.tif 000035
【図３５】
0005949040.tif 000036
【図３６】
0005949040.tif 000037
【図３７】
0005949040.tif 000038
【図３８】
0005949040.tif 000039
【図３９】
0005949040.tif 000040
【図４０】
0005949040.tif 000041