以下、本発明の最良の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、配信する情報を音楽データや映像データなどのコンテンツデータとしたコンテンツ配信システムに対して本発明を適用した場合の実施形態である。
[1.コンテンツ配信システムの構成等]
図1は、本実施形態に係るコンテンツ配信システムSの概要構成例を示す図である。図1に示す物理接続形態のように、コンテンツ配信システムSを構成するコンテンツ配信装置1、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8、接続管理装置3、コンテンツ投入装置4、コンタクト先紹介装置5は、インターネットに代表されるネットワーク上に分散配置されている。なお、コンテンツ配信システムSに直接関係ない装置もネットワーク6に接続されるが、ここでは省略している。また、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8のいずれかの端末装置又は全ての端末装置を示す場合には、便宜上、端末装置2という場合がある。
コンテンツ配信装置1、端末装置2a1,2a2,2b1〜2b4,2c1〜2c8、接続管理装置3、コンテンツ投入装置4、コンタクト先紹介装置5には、各装置を識別する情報としての固有の製造番号(たとえば、MACアドレス)及びIP(Internet Protocol)アドレス(所在情報)が割り当てられており、これら装置は、ネットワークの一例としてのネットワーク6にルータ10等を介して接続されている。すなわち、目的の接続先装置のIPアドレスを宛先IPアドレス、自装置のIPアドレスを送信元IPアドレスとしたヘッダを含むパケットを送信することによって通信接続が可能となっている。
改ページは不要 図1に示す例では、コンテンツ配信装置1、接続管理装置3、コンテンツ投入装置4、コンタクト先紹介装置5は、それぞれ独立した装置としているが、一つの装置においてこれらの装置の機能を実現するようにしてもよい。この場合にはこれらの装置のIPアドレスは同一のものとなり、ポート番号などで区別されることになる。
本実施形態におけるコンテンツ配信システムは、複数の放送チャンネル(以下、単に「チャンネル」と呼ぶ。)でそれぞれコンテンツデータをストリーミング配信するコンテンツ配信装置を頂点として複数の端末装置がネットワーク上にチャンネル毎に階層構造で多層に論理接続されるように接続管理装置によって管理され、コンテンツ配信装置から送信されるコンテンツデータがチャンネル毎に階層構造の上流の端末装置から下流の端末装置にかけて順次端末装置の中継機能によってストリーミング配信される第1配信形態と、複数の端末装置間において、一つの端末装置からのコンテンツデータのダウンロード要求に基づいてコンテンツデータを保持する他の端末装置がコンテンツデータを配信する第2配信形態とを有している。
そして、端末装置の利用者が第1配信形態によりコンテンツ配信装置からのコンテンツデータを視聴するときには、当該端末装置は、視聴対象のチャンネル(以下、「視聴チャンネル」と呼ぶ。ここでは、チャンネルch1〜chNのN個のチャンネルがあるものとする。)の階層構造に参加するとともに、視聴チャンネル以外のチャンネルであって、視聴チャンネルと所定の関係を有するチャンネル(以下、「ザッピング対策チャンネル」と呼ぶ。)の階層構造にも参加するようにしている。
従って、端末装置のユーザによる視聴チャンネルの切替え操作(以下、「ザッピング」と呼ぶ。)を行なわれた場合に、ザッピング対策チャンネルによって、ユーザによるチャンネル切替操作から新たなチャンネルのコンテンツデータを視聴できるまでの時間を短縮させることができる。
図2には、端末装置2Xが第1配信形態における視聴チャンネルAの階層構造とザッピング対策チャンネルBの階層構造とに参加している状態を模式的に示している。なお、図2においては、説明の便宜上ザッピング対策チャンネルを1つのチャンネルとしている。
このように端末装置2Xが視聴チャンネルAとザッピング対策チャンネルBとに接続している状態で、端末装置2Xのユーザが第2配信形態によってコンテンツデータを取得するための操作を行うと、端末装置2Xは、図3に示すように、ザッピング対策チャンネルBを切断し、ザッピング対策チャンネルBの階層構造から脱退する。
その後、端末装置2Xは、図4に示すように、コンテンツ検索メッセージを送信して、ルート端末装置2Zからコンテンツ保持端末装置2Yの所在情報を取得する。その後、端末装置2Xは、コンテンツ保持端末装置2Yに対してコンテンツデータの送信要求を行い、第2配信形態によってコンテンツデータを取得する。
第2配信形態によるコンテンツデータ受信が完了すると、端末装置2Xは、第2配信形態によってコンテンツデータを取得する際に脱退したザッピング対策チャンネルBに再接続し、ザッピング対策チャンネルBの階層構造に再参加し、図2に示す状態に戻る。
以上のように、本実施形態におけるコンテンツ配信システムSでは、端末装置2のユーザが、第1配信形態であるツリー型階層構造による放送形態でコンテンツデータを視聴する際に、視聴するチャンネルと一定の関係を有するザッピング対策チャンネルの階層構造に参加し、その後コンテンツ購入をグリッド型接続などの第2配信形態で行うときにはザッピング対策チャンネルの階層構造から自動で脱退し、第2配信形態でのコンテンツ購入処理が終了したら自動でザッピング対策チャンネルの階層構造に自動的に再参加するようにしているので、ネットワークバンド幅が厳しい環境下においても、ザッピング対策を施しつつ、第1配信形態と第2配信形態とを両立することができるコンテンツ配信システム又はその端末装置を提供することができる。
以下、本実施形態におけるコンテンツ配信システムについて、更に具体的に図面を参照して説明する。
[1.1.第1配信形態について]
コンテンツ配信システムSの第1配信形態は、図1に示すように、コンテンツ配信装置1を頂点として複数の端末装置2a1,2a2,2b1〜2b4,2c1〜2c8がツリー状階層構造で多層に論理接続されており、コンテンツ配信装置1からコンテンツデータが当該ツリー状階層構造の上流の端末装置2から下流の端末装置2かけて順次端末装置2の中継機能によってストリーミング配信されるように構成される。このツリー状階層構造は、コンテンツ配信装置1が配信するチャンネル毎に構成される。
このコンテンツ配信システムSの第1配信形態においては、チャンネル毎にコンテンツ配信装置1を頂点(ここでは、便宜上第0階層とする。)として複数の端末装置2がツリー状階層構造で多層に論理接続されるように接続管理装置3によって管理される。なお、本実施形態においては、ツリー状階層構造として説明するが、これに限られず、複数の端末装置2がチェーン状の階層構造で多層に論理接続されるようにしてもよい。また、端末装置2a1,2a2は便宜上端末装置2aと、端末装置2b1〜2b4は便宜上端末装置2bと、端末装置2c1〜2c8は便宜上端末装置2cという場合がある。
ここで、第1配信形態におけるコンテンツデータの配信動作について、図5を参照して簡単に説明する。図5はコンテンツ配信システムSにおける第1配信形態の配信動作説明図である。
図5に示すように、第1配信形態でコンテンツ配信装置1によってストリーミング配信されるコンテンツデータは、コンテンツ投入装置4によってコンテンツ配信装置1へ投入される。すなわち、コンテンツデータは、コンテンツ投入装置4からコンテンツ配信装置1へ送信され、コンテンツ配信装置1において受信してハードディスク装置に保持される。
接続管理装置3は、図5に示すように、コンテンツ配信システムSにおける第1配信形態に参加していない端末装置2、言い換えればチャンネルのいずれのツリー状階層構造も構成していない端末装置2から接続先紹介要求を受信すると、第1配信形態のツリー状階層構造の状態等に基づいて、その端末装置2がストリーミング配信を受けるための上流の装置として接続する接続先候補(コンテンツ配信装置1又は端末装置2)を選択する。そして、接続管理装置3は、このように選択した接続先候補の所在情報(接続先候補のIPアドレスやポート番号など)及び通信プロトコル等を端末装置2に通知する。また、接続先紹介要求は、他のチャンネルに切り替えるときや、上流装置との接続が切断されたときに端末装置2から送信される。
なお、コンテンツ配信システムSにおいて、すでに通信プロトコルやポート番号が固定されているときには、端末装置2へのポート番号及び通信プロトコルは通知しなくてもよい。ここで、通信プロトコルとして、MMS(Microsoft Media Server)プロトコル、RTSP(Real Time Streaming Protocol)等が用いられる。また、コンテンツデータの形式として、ASF(Advanced Streaming Format)、WMA(Windows(登録商標) Media Audio)、WMV(Windows(登録商標) Media Video)等が用いられる。
端末装置2は、接続管理装置3から接続先候補の所在情報を受信すると、その所在情報を宛先として接続先候補に対し、コンテンツ配信システムSへの参加(接続)を要求し、これにより端末装置2がコンテンツ配信システムSの第1配信形態における階層構造へ組み込まれる。すなわち、端末装置2はコンテンツ配信装置1から配信されるコンテンツデータを受信可能となる。
コンテンツ配信システムSにおける第1配信形態は、このように端末装置2が次々と各チャンネルに参加することによって、コンテンツ配信装置1を頂点として複数の端末装置2がツリー状階層構造で多層に論理接続される。そして、コンテンツ配信装置1から配信されるコンテンツデータは、端末装置2の中継機能により順次下流の端末装置2へ中継されて複数の端末装置2にストリーミング配信される。
すなわち、図5に示すように、コンテンツ配信装置1から端末装置2a1,2a2(第1層の端末装置)へコンテンツデータが送信され、端末装置2a1,2a2はコンテンツデータを受信すると、下流の端末装置2b1〜2b4(第2階層の端末装置)へ受信したコンテンツデータを順次中継する。端末装置2b1〜2b4はコンテンツデータを受信すると、下流の端末装置2c1〜2c8(第3階層の端末装置)へ受信したコンテンツデータを順次中継する。なお、図5においては、理解を容易にするため、複数のチャンネルのうち一つのチャンネルの階層構造のみを表している。
端末装置2は、組み込まれた階層構造の位置の上流の端末装置2又はコンテンツ配信装置1の所在情報と、組み込まれた階層構造の位置の下流の端末装置2の所在情報とを後述のハードディスク装置203に記憶しており、このように記憶した所在情報に基づいて、コンテンツデータの中継を行うようにしている。また、配信されるコンテンツデータは、複数のパケットに分割されて順次配信されるものであり、このようにパケットに分割されて配信されるデータをコンテンツパケットという。
このように端末装置2へ配信されるコンテンツデータは、チャンネル毎にその階層構造を構成する端末装置2へ配信される。配信されるコンテンツデータには、音楽や映画などコンテンツのデータのほか、再生時刻情報が含まれている。そして、コンテンツデータを受信した複数の端末装置2は、順次送信されるコンテンツデータの再生を再生時刻情報に基づいて行う。
ここで、端末装置2におけるリングバッファ領域について説明する。図6は、端末装置2におけるリングバッファ領域を用いてコンテンツデータを受信し、再生或いは下流の端末装置2へ中継する構成を概念的に表した図である。このリングバッファ領域は、参加したチャンネル毎に設けられるものであり、視聴チャンネルのためのリングバッファ領域のほか、ザッピング対策チャンネルのためのリングバッファ領域も設けられることになる。
端末装置2は、第1配信形態に参加したときに、参加したチャンネルにおける階層構造の上流の装置からストリーミング配信されるコンテンツパケットをストリーム受信器によって順次受信し、受信したコンテンツパケットに含まれるコンテンツデータをリングバッファ領域に一時的に蓄積する。リングバッファ領域に一時的に蓄積されたコンテンツデータは、その再生時刻になると、端末装置2の再生手段であるプレイヤによってリングバッファ領域から取り出されて再生される。
ここで、図6に示すように、リングバッファ領域には時計回りの方向で新しいコンテンツデータが順次蓄積され、最も古いコンテンツデータが新しいコンテンツデータに書き換わるように構成されている。すなわち、ストリーム受信器によってリングバッファ領域に書き込まれるポイントをAとすると、このポイントAが時計回りに移動していくのである。
なお、図6におけるリングバッファ領域は概念的に示したものであり、実際にリング形状をしているのではなく、端末装置2の制御手段が、記憶領域における所定アドレス領域に蓄積した最も古いコンテンツデータを順次新しいコンテンツデータに書き換えることにより実現するものである。
また、コンテンツデータには上述のように再生時刻情報が格納されており、プレイヤはリングバッファ領域に蓄積したコンテンツデータのうち、現時刻と合致する再生時刻情報を有するコンテンツデータ(ここでは、図6中Bのポイントのコンテンツデータ)をリングバッファ領域から取り出して順次再生する。なお、ザッピング対策チャンネルのリングバッファ領域に蓄積したコンテンツデータは再生されない。
このようなリングバッファ領域によって、再生時刻前のコンテンツデータを蓄積しながら、再生時刻までにネットワーク6の状態に依存して間欠的に発生するコンテンツパケットの損失に対処する。言い換えれば、コンテンツ配信装置1は、パケットの損失補完処理を行えるだけのマージンを確保しながらコンテンツデータを配信している。なお、パケットの損失補完処理とは、ある一定時間待っても上位装置からのパケットが届かない場合に、上位装置にパケットの再送要求を行い、上位装置から再度パケットを送信させる処理をいう。損失補完処理ではこのように一連の処理を行わなければならず、ある程度時間がかかるため、上述のようにマージンの確保が必要となる。
ここで、階層構造の下流に他の端末装置2が2台接続されている場合、図6に示すように、端末装置2に2つのストリーム送信器が設けられる。このストリーム送信器は、リングバッファ領域に格納されているコンテンツデータを所定量毎にコンテンツパケットのデータ領域に格納してコンテンツパケットを生成し、それぞれ下流に接続された他の端末装置2へこのコンテンツパケットを順次送信する。
第1実施形態における端末装置2では、上流の装置から送信されるコンテンツパケットに含まれるコンテンツデータを取り出してリングバッファ領域に蓄積するようにしているが、コンテンツパケットをそのままリングバッファ領域に蓄積するようにしてもよい。いずれにせよ、ストリーム送信器は、ストリーム受信器によって受信したコンテンツパケットの送信先及び送信元の情報を置き換えたコンテンツパケットを下流の端末装置2に送信することになる。なお、ストリーム受信器は後述のストリーム受信手段に対応し、プレイヤは後述のストリーム再生手段に対応し、ストリーム送信器は後述のストリーム中継手段に対応する。
このように端末装置2は、コンテンツデータを一時的に蓄積するリングバッファ領域を設けることによって、コンテンツパケットをプリバッファリングしながらパケット損失に対する補完を行い、ネットワーク6の経路上で発生するパケット損失の影響を回避するようにしている。
以上のように、コンテンツ配信システムSの第1配信形態では、コンテンツ配信装置1から送信されたコンテンツデータが複数の端末装置2にストリーミング配信され、複数の端末装置2において同時刻にコンテンツを再生することができる。すなわち、コンテンツ配信システムSは、P2Pを用いて複数の端末装置2への放送形式のストリーミング配信を実現している。
[1.2.第2配信形態について]
次に、図7を参照して、コンテンツ配信システムSにおける第2配信形態の概要構成等について説明する。図7は、本実施形態に係るコンテンツ配信システムSにおける第2配信形態を示す図である。この第2配信形態は、P2Pグリッド型配信システムであり、本実施形態においては、分散ハッシュテーブル(以下、「DHT」(Distributed Hash Table)と呼ぶ。)を利用することによりネットワーク上に分散配置された複数の端末装置2間でコンテンツデータの送受信を行う配信形態を例に挙げて説明する。
[1.2.1 DHTの概要]
まず、本実施形態に係るDHTを利用したアルゴリズムについて説明する。
コンテンツ配信システムSの第2配信形態において、当該端末装置2同士が、互いに情報をやり取りする際には、お互いの所在情報としてのIPアドレスを知っていなければならない。
例えば、複数の端末装置間でコンテンツを互いに共有するシステムにおいては、ネットワーク6に参加している各端末装置2が互いにネットワーク6に参加している全ての端末装置2のIPアドレスを知っておくのが単純な手法であるが、端末数が何万何十万と多数になると、その全ての端末装置2のIPアドレスを覚えておくのは現実的ではない。また、任意の端末装置の電源が頻繁にON或いはOFFとすると、各端末装置2において記憶している当該任意の端末装置のIPアドレスの更新が頻繁になり、運用上困難となる。
そこで、1台の端末装置2では、ネットワーク6に参加している全ての端末装置2のうち、必要最低限の一部の端末装置2のIPアドレスだけを記憶しておき、IPアドレスを記憶していない端末装置2については、各端末装置2間で互いに情報を転送し合うことによりコンテンツを届けるシステムが考案されている。
このようなシステムの一例として、DHTを利用したアルゴリズムによって、図7に示すような、オーバーレイネットワークが構築されることになる。つまり、このオーバーレイネットワークは、既存のネットワーク6を用いて形成された仮想的なリンク(論理接続)を構成するネットワークであり、P2Pグリッド型配信形態である。
本実施形態においては、DHTを利用したアルゴリズムによって構築されたオーバーレイネットワークを前提としており、このオーバーレイネットワーク上に配置された端末装置2を、コンテンツ配信システムSの第2配信形態に参加している端末装置2という。なお、コンテンツ配信システムSの第2配信形態への参加は、未だ参加していない端末装置2が、すでに参加している端末装置2に対して参加要求を送ることによって行われる。
コンテンツ配信システムSの第2配信形態に参加している各端末装置2の識別番号である端末IDとして、それぞれの端末装置2毎にユニークな番号(固有番号)を付与する。この番号は、端末装置の最大運用台数を収容できるだけのbit数を持たせる必要がある。例えば、128bitの番号とすれば、2128≒340×1036台の端末装置を運用できる。
より具体的には、各端末装置2の端末IDは、それぞれの端末装置2のIPアドレス或いは製造番号等の端末装置2毎に固有の値を、共通のハッシュ関数(ハッシュアルゴリズム)によりハッシュ化して得たハッシュ値であり、一つのID空間に偏りなく分散して配置されることになる。このように共通のハッシュ関数によりハッシュ化されて求められた端末IDは、当該IPアドレス或いは製造番号が異なれば、同じ値になる確率が極めて低いものである。なお、ハッシュ関数については公知であるので詳しい説明を省略する。また、本実施形態では、IPアドレス(グローバルIPアドレス)を共通のハッシュ関数によりハッシュ化した値を端末IDとする。
また、コンテンツ配信システムSの第2配信形態に参加している複数の端末装置2には、図7に示すように、一の端末装置2から他の端末装置2に配信されるコンテンツデータがコンテンツ投入装置4によって分散して端末装置2に投入されるが、当該コンテンツデータにも、それぞれのコンテンツデータ毎の固有の識別情報(以下、「コンテンツID」と呼ぶ。)を付与する。
そして、当該コンテンツIDは、端末IDと同様の長さ(例えば、128bit等)とし、例えば、コンテンツの名称(コンテンツのタイトル名)やコンテンツの概要情報(あらすじ)等のキーワードが、上記端末IDを得るときと共通のハッシュ関数によりハッシュ化され(つまり、端末装置2のIPアドレスのハッシュ値と同一のID空間に配置)、そのハッシュ値と最も近い(例えば、上位桁がより多く一致する)端末IDを有する端末装置2が、コンテンツデータを保持する端末装置2(以下、「コンテンツ保持端末装置」と呼ぶ。)へのリンク情報、すなわちコンテンツ保持端末装置の所在情報であるIPアドレスを保持する。
コンテンツ保持端末装置は、コンテンツ投入装置4によってランダムに決定される。すなわち、コンテンツ投入装置4は、コンテンツデータを保持すべき1以上の端末装置2をランダムに決定し、このように決定した端末装置にコンテンツデータを送信する。コンテンツ投入装置4からコンテンツデータを受信した端末装置は、コンテンツデータを記憶部に保持することによってコンテンツ保持端末装置として機能する。これにより、コンテンツデータが偏りなくコンテンツ配信システムS上に分散して配置される。
なお、異なるコンテンツデータであっても、同一のキーワード(例えば、コンテンツの名称)になる場合が想定されるが、この場合、同じハッシュ値になってしまうので、これを避けるために、ハッシュ化するキーワードを、例えば、コンテンツの名称と著作権情報(例えば、出演者名、監督名、原作者名、歌手名、作曲者名、又は作詞者名等)の組み合わせとすればよい。本実施形態においては、コンテンツの名称は重複しないものとし、コンテンツの名称をキーワードとするものとする。
このように、各端末装置2及び各コンテンツデータに付与された端末ID及びコンテンツIDは、共通のハッシュ関数によって生成するため、図7に示す如く、同一のリング状のID空間上にさほど偏ることなく、散らばって存在するものとして考えることができる。同図は32bitで端末ID及びコンテンツIDを付与し、図示したものである。図中丸点は端末IDを、四角形はコンテンツIDを示し、反時計回りでIDが増加するものとする。
次に、どの端末装置2に、どのコンテンツデータが保持されるかを、一定の規則の下に決定する。本実施形態においては、「あるコンテンツIDを有するコンテンツデータを管理する端末装置2は、そのコンテンツIDに近い端末IDを有する端末装置2である」という規則とする。ここで、「近い」ことの定義は、当該コンテンツIDを超えず、コンテンツIDと端末IDとの差が一番少ないものとするが、実際には、各コンテンツデータの管理を各端末装置2に割り振る際に、一貫していればよい。図7に示す例では、この定義に基づいて、コンテンツIDaは、当該コンテンツIDaに近い端末ID(以下、「端末IDa」と呼ぶ。)を有する端末装置2に管理され、コンテンツIDbは、当該コンテンツIDbに近い端末ID(以下、「端末IDb」と呼ぶ。)を有する端末装置2に管理され、コンテンツIDcは、当該コンテンツIDcに近い端末ID(以下、「端末IDc」と呼ぶ。)を有する端末装置2に管理される。
なお、ここで「管理」というのは、コンテンツデータを保持していることを意味するのではなく、「コンテンツデータがいずれの端末装置2に保持されているかを知っている」ことを意味する。すなわち、図7において、端末IDaを有する端末装置2は、コンテンツIDaを有するコンテンツデータがいずれの端末装置2に保持されているかを知っており、端末IDbを有する端末装置2及び端末IDcを有する端末装置2も同様にそれぞれコンテンツIDbを有するコンテンツデータ及びコンテンツIDcを有するコンテンツデータがいずれの端末装置2に保持されているかを知っている、ということになる。
このように、あるコンテンツデータがいずれの端末装置2に保持されているかを知っている端末装置2を、そのコンテンツデータのルート端末装置と呼ぶ。つまり、端末IDaを有する端末装置2は、コンテンツIDaを有するコンテンツデータのルート端末装置であって、端末IDbを有する端末装置2は、コンテンツIDbを有するコンテンツデータのルート端末装置であって、端末IDcを有する端末装置2は、コンテンツIDcを有するコンテンツデータのルート端末装置である。
ここで、コンテンツ投入装置4は、コンテンツ配信システムS内の端末装置2をコンテンツ保持端末装置とするためにコンテンツデータを端末装置2へ配布する機能のほか、端末装置2に配布した複数のコンテンツデータ(言い換えれば、コンテンツ保持端末装置が保持しているコンテンツデータ)をそのコンテンツの名称とコンテンツIDとを関連付けた識別情報リストである識別情報リストを生成して端末装置2へ提供する機能を有している。
また、コンテンツ配信システムSの第2配信形態においては、コンタクト先紹介装置5が配置されてる。このコンタクト先紹介装置5は、コンテンツ配信システムSの第2配信形態に参加していない端末装置2からこの第2配信形態への参加要求があったときに、未参加の端末装置2が参加メッセージを送信する既参加の端末装置2(以下、「コンタクト先端末装置」と呼ぶ。)の所在情報を通知する機能を有している。
[1.2.2 ルーティングテーブルの作成]
ここで、図8を参照して、DHTで用いるルーティングテーブルの作成手法の一例について説明する。図8は、DHTによってルーティングテーブルが作成される様子の一例を示す図である。
まず、図8(a)に示す如く、ID空間を幾つかのエリアに分割する。実際には、16分割程度が良く用いられるが、説明を簡単にするためここでは4分割とし、IDをビット長8bitの4進数で表すことにする。そして、端末装置2Nの端末IDを「1133」とし、この端末装置2Nのルーティングテーブルを作る例について説明する。
(レベル1のルーティング)
まず、ID空間を4分割とした場合、それぞれのエリアは4進数で表すと最大桁が異なる4つのエリア「0XXX」「1XXX」、「2XXX」、「3XXX」(Xは0から3の自然数、以下同様。)で分けられる。端末装置2Nは、当該端末装置2N自身の端末IDが「1133」であるため、図8(a)中左下「1XXX」のエリアに存在することになる。そして、端末装置2Nは、自分の存在するエリア(すなわち、「1XXX」のエリア)以外のエリア(すなわち、「0XXX」のエリア、「2XXX」のエリア、「3XXX」のエリア)に存在する端末装置2を適当に選択し、当該端末IDの所在情報、すなわち、当該端末IDのIPアドレスをレベル1のテーブルに記憶する。図9がレベル1のテーブルの一例である。このテーブルでは、「0XXX」のエリアの端末IDとして「0100」、「2XXX」のエリアの端末IDとして「2133」、「3XXX」のエリアの端末IDとして「3213」がそれぞれ選択されている状態を示している。なお、当該レベル1の2列目は端末装置2N自身を示しているため、IPアドレスを記憶する必要はない。
(レベル2のルーティング)
次に、図8(b)に示す如く、上記ルーティングによって4分割したエリアのうち、自分の存在するエリア「1XXX」を更に4分割し、更に4つのエリア「10XX」「11XX」、「12XX」、「13XX」と分ける。そして、上記と同様に自分の存在するエリア「11xx」以外のエリアに存在する端末装置2を適当に選択し、当該端末IDの所在情報であるIPアドレスをレベル2のテーブルに記憶する。図9がレベル2のテーブルの一例である。このテーブルでは、「10XX」のエリアの端末IDとして「1003」、「12XX」のエリアの端末IDとして「1221」が、「13XX」のエリアの端末IDとして「1313」がそれぞれ選択されている状態を示している。なお、レベル2の2列目は端末装置2Nが存在するエリア「11XX」であり、後述するレベル3にてテーブル化されるためIPアドレスを記憶していない。また、上記エリアに端末装置2が存在しない場合には、端末ID及びIPアドレスの欄は空白となる。
(レベル3のルーティング)
更に、上記ルーティングによって4分割したエリアのうち、自分の存在するエリア「11XX」を更に4分割し、更に4つのエリア「110X」「111X」、「112X」、「113X」と分ける。そして、上記と同様に自分の存在するエリア「113X」以外のエリアに存在する端末装置2を適当に選択し、当該端末IDの所在情報であるIPアドレスをレベル3のテーブルに記憶する。図9がレベル3のテーブルの一例である。レベル3の4列目は端末装置2Nが存在するエリアであり、後述するレベル4にてテーブル化されるためIPアドレスを記憶していない。また、上記エリアに端末装置が存在しない場合には、端末ID及びIPアドレスの欄は空白となる。
このようにして、レベル4まで同様にルーティングテーブルを図9に示す如く作成することにより、8bitのID全てを網羅することができる。レベルが上がる毎にテーブルの中に空白が目立つようになる。
以上説明した手法に従って作成したルーティングテーブルを、全ての端末装置2が夫々作成して所有することになる。このように、各端末装置2は、コンテンツ配信システムSにおける複数の端末装置2のうち一部の端末装置2の端末ID(識別情報)とIPアドレス(所在情報)とを関連付けたルーティングテーブルを有しており、このルーティングテーブルは後述のルーティングテーブル記憶手段に記憶される。
ところで、端末装置2は、第2配信形態に未参加のときには、第2配信形態に参加している端末装置2の所在情報などを知らない。そのため、端末装置2は、第2配信形態に参加するときには、次の項で説明するように、ルーティングテーブルを生成する。
[1.2.3.第2配信形態への参加]
次に、図10を参照して、コンテンツ配信システムSにおける第2配信形態に未参加の端末装置2が当該第2配信形態へ参加する方法の一例について説明する。図10は、第2配信形態に未参加の端末装置2M(以下、「新規参加端末装置2M」と呼ぶ。)が当該第2配信形態へ参加する様子の一例を示す図である。
まず、第2配信形態に未参加である新規参加端末装置2Mは、コンテンツ配信システムSの第2配信形態に参加するために、コンタクト先紹介装置5に対して、参加メッセージを送信すべき端末装置2(以下、「コンタクト先端末装置」と呼ぶ。)の所在情報を要求する。
新規参加端末装置2Mは、コンタクト先紹介装置5から参加メッセージを送信すべきコンタクト先端末装置の所在情報が送られてくると、コンタクト先端末装置に対して参加メッセージを送信する。ここで、参加メッセージのあて先識別情報は、新規参加端末装置2Mの端末IDとなっている。すなわち、新規参加端末装置2Mは、第2配信形態に参加する際に、自装置2のIPアドレスのハッシュ値「2133」を宛先識別情報とした参加メッセージを生成する。
コンタクト先端末装置は、新規参加端末装置2Mから送信された参加メッセージを受信すると、コンタクト先端末装置は、この参加メッセージがコンタクト先端末装置宛のメッセージであるか否かを判定する。コンタクト先端末装置宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、宛先識別情報がコンタクト先端末装置宛の識別情報と近いか否かが判定される。即ち、宛先識別情報に対して、コンタクト先端末装置自身が保持しているルーティングテーブルに記憶されている端末装置の識別情報から、一番近い端末装置の識別情報が、自身であるか他の端末装置であるかを判定する。そして、コンタクト先端末装置の識別情報よりも他の端末装置の識別情報の方が宛先識別情報に近いとき、参加メッセージを受信したコンタクト先端末装置は、コンタクト先端末装置自身が保持しているルーティングテーブルのレベル2を参照して、「2XXX」のエリアに属す端末装置2のうち、IPアドレスを知っている端末装置2Bに対して参加メッセージを転送するとともに、自端末装置のルーティングテーブル記憶手段に記憶されたルーティングテーブルのレベル1のテーブルの情報を、新規参加端末装置2Mへ送信する。
このように、コンテンツIDの桁を上から順に適合していく要領で参加メッセージの転送を行い、順次ルーティングテーブルの各レベルの情報を送信する。最終的に宛先識別情報に最も近い端末装置2に辿り着いたところで参加メッセージの転送は終了する。なお、参加メッセージなどのメッセージを目的の端末装置へ辿り着くまでに、上述のように転送する仕組みをDHTルーティングと呼ぶ。
こうして、新規参加端末装置2Mは、参加メッセージを受信した端末装置2からルーティングテーブルの各レベルの情報を上位レベルの情報から順に取得するようにしている。新規参加端末2はこのようにして、第2配信形態に参加するために必要なルーティングテーブルを生成する。
[1.2.4.コンテンツデータの検索方法]
次に、図11を参照して、コンテンツデータを保持している端末装置2の検索方法の一例について説明する。図11は、DHTルーティングによりコンテンツデータを保持している端末装置2が検索される様子の一例を示す図である。
ここでは、端末ID「1133」の端末装置2Nが、コンテンツID「3020」を有するコンテンツデータを探す際の手順について説明する。なお、以下このようにコンテンツデータを探し、コンテンツデータの受信を要求する端末装置を「リクエスト端末装置」と呼ぶ。
リクエスト端末装置2Nは、自己が保持しているルーティングテーブルのレベル1のテーブルを参照して、コンテンツID「3020」と同じエリアの端末IDを持つ端末装置の端末IDを宛先識別情報としてコンテンツ保持端末装置情報(コンテンツ保持端末装置の所在情報を含む情報)の送信要求(以下、「コンテンツ検索メッセージ」と呼ぶ。)を送信する。すなわち、コンテンツID「3020」は「3XXX」のエリアであるため、当該「3XXX」のエリアに属す端末装置2のうち、IPアドレスを知っている(すなわち、自己が保持しているルーティングテーブルにIPアドレスが記憶されている)端末装置2A(端末ID「3213」)に対してコンテンツ検索メッセージを送信する。このように、コンテンツ検索メッセージはコンテンツに対応する固有の識別情報であるコンテンツIDを含むものであり、このコンテンツIDはコンテンツ検索メッセージにおいて宛先識別情報として用いられる。
図11に示す例によれば、端末IDが「3213」である端末装置2AのIPアドレスがリクエスト端末装置2Nのルーティングテーブル(図9参照。)に記憶されているので、リクエスト端末装置2Nは、端末IDが「3213」である端末装置2Aに対してコンテンツ検索メッセージを送信する。
次に、コンテンツ検索メッセージを受信した端末装置2Aは、このコンテンツ検索メッセージが自端末装置2A宛のメッセージであるか否かを判定する。自端末装置2A宛のメッセージであるか否かは、宛先識別情報とルーティングテーブルとに基づいて行われる。具体的には、宛先識別情報が自端末装置2Aの識別情報と近いか否かが判定される。即ち、宛先識別情報に対して、端末装置2A自身が保持しているルーティングテーブルに記憶されている端末装置の識別情報から、一番近い端末装置の識別情報が、自身であるか他の端末装置であるかを判定する。ここでは、自端末装置2Aの識別情報よりも他の端末装置の識別情報の方が、宛先識別情報に近いため、端末装置2Aは、当該端末装置2A自身が保持しているルーティングテーブルのレベル2のテーブルを参照して、「30XX」のエリアに属す端末装置2のうち、IPアドレスを知っている端末装置2B(端末ID「3031」)に対してコンテンツ検索メッセージを転送する。
このように、コンテンツIDの桁を上から順に適合していく要領でコンテンツ検索メッセージの転送が進み、最終的に当該コンテンツデータを管理する端末装置2C(端末ID「3011」)、すなわちルート端末装置に辿り着くと、当該ルート端末装置は、コンテンツ検索メッセージに含まれるコンテンツID「3020」を、自身が管理している後述のインデックス情報の中から検索し、当該コンテンツデータを所有しているコンテンツ保持端末装置のIPアドレス等をリクエスト端末装置2Nに返信するようになっている。
こうして、リクエスト端末装置2Nは、上記ルート端末装置2Cから、コンテンツID「3020」のコンテンツデータの所在情報、即ち、コンテンツID「3020」のコンテンツデータを保持するコンテンツ保持端末装置のIPアドレスを受信して知ることになり、当該コンテンツ保持端末装置から、そのコンテンツデータをダウンロードして取得することになる。
[1.2.5.インデックステーブルへの登録方法]
コンテンツ配信システムSにおける第2配信形態の中で、新しいコンテンツデータをコンテンツ配信システムS上の他の端末装置2に見えるように公開する際の手法について述べる。
本実施形態におけるコンテンツ配信システムSの第2配信形態は、図12に示すように、コンテンツ投入装置4が各コンテンツ保持端末装置となる端末装置2に対して、各コンテンツ保持端末装置毎の管理対象コンテンツとなるコンテンツデータを送信する。コンテンツ投入装置4から管理対象のコンテンツデータを受信したコンテンツ保持端末装置は、後述のハードディスク装置203に受信したコンテンツデータを記憶する。
当該コンテンツデータを配布されたコンテンツ保持端末装置は、図12及び図13に示すように、当該コンテンツ保持端末装置の所在情報及び識別情報を含むコンテンツ保持端末装置情報の登録要求メッセージ(以下、「コンテンツ登録メッセージ」と呼ぶ。)を、コンテンツの名称等から求めたコンテンツIDと同じ端末IDを持つ端末装置に向けて(この端末装置が実在するか否かはこの時点ではわからない。)送信する。そして、このコンテンツ登録メッセージも、上記コンテンツ検索メッセージと同様にルーティングテーブルに従って、次々と転送されていき、当該コンテンツ登録メッセージに含まれるコンテンツIDに最も近い端末IDを有する端末装置2まで転送されたところで、その端末装置2がもはや送信先の端末装置が他にないと判断すると、当該端末装置2自身がそのコンテンツのルート端末装置となるべきだと判断し、図13に示すように、当該コンテンツ登録メッセージに含まれるコンテンツ保持端末装置情報である当該コンテンツID、コンテンツ保持端末装置のIPアドレス、及び補助情報(タイトル、ジャンル、拡張情報等の属性情報や、監督名等の著作権情報やストリーミング時間等)をインデックス情報として後述のインデックステーブル222に記憶する。
このようにルート端末装置のインデックステーブル222にコンテンツ保持端末装置の所在情報であるIPアドレスが登録されると、以後リクエスト端末装置からのコンテンツ検索メッセージに対してインデックステーブルに登録したコンテンツ保持端末装置の所在情報をリクエスト端末装置へ返信する。このようにして本実施形態では、コンテンツ投入装置4から配布されたコンテンツをコンテンツ保持端末装置に登録し、ルート端末装置を介して検索できるようにすることで、他の端末装置にコンテンツを公開する。
インデックステーブル222は、図14に示すように、コンテンツ保持端末装置の所在情報(所在情報)であるIPアドレスなどを含むコンテンツ保持端末装置情報を記憶するためのテーブルである。このインデックステーブル222には、コンテンツ保持端末装置のIPアドレスのほか、コンテンツ保持端末装置を紹介した時刻等がコンテンツ保持端末装置情報として1行(所定記憶エリア)毎に記憶される。
[2.コンテンツ配信装置1の構成等の説明]
次に、図17を参照して、コンテンツ配信装置1の構成及び動作について更に詳説する。
図17は、本実施形態におけるコンテンツ配信装置1の概略構成例を示す図である。コンテンツ配信装置1は、一般のサーバコンピュータを適用可能であり、図17に示すように、CPU(Central Processing Unit)102と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置としての主記憶装置105と、各種データ等を記憶するハードディスク装置103と、ネットワーク6を介して端末装置2、接続管理装置3やコンテンツ投入装置4との間で通信を行うネットワークインタフェース104と、所定の情報を入力可能なキーボード107やマウス108等の入力手段を制御する周辺機器制御チップ106と、CPU102からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述の内蔵ディスプレイ110に表示するビデオチップ109と、ビデオチップ109から送信される信号に応じた表示を行う内蔵ディスプレイ110と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ111と、音源チップ111から出力されるオーディオ信号を音波に変換する内蔵スピーカ112と、を備えて構成され、これらの各種構成要素はシステムバス101を介して相互に接続されている。
なお、ネットワークインタフェース104は、ルータ10aを介してネットワーク6に接続される。このルータ10aは、図1に示すルータ10に相当するものである。
なお、本実施形態においては、CPU102と主記憶装置105とで制御部130を構成している。また、コンテンツ配信装置1には、上述のように内蔵ディスプレイ(液晶ディスプレイ等)110等が内蔵されており、例えば、コンテンツ配信システムSを運用する放送運営者は、この内蔵ディスプレイ110を見ながら入力手段から所定の情報を入力することができる。なお、本実施形態においては、これら内蔵ディスプレイ110や内蔵スピーカ112などがコンテンツ配信装置1に内蔵されているが、これに限らず、例えば、別に接続されるものであってもよい。
(主記憶装置105ついて)
また、主記憶装置105には、コンテンツ配信装置1のコンピュータとしての基本的な機能を提供するためのOS(オペレーティングシステム)プログラム117と、ハードディスク装置103の放送コンテンツ記憶領域に記憶されたコンテンツデータを取り出して端末装置2へストリーミング配信するためのストリーム制御プログラム115と、チャンネル毎に接続された各端末装置2の所在情報(IPアドレスやポート番号など)の管理等を行うためのトポロジー管理プログラム116と、内蔵ディスプレイ110を制御するための画面制御プログラム118と、エンコードされた音楽コンテンツデータをデコードするための音楽デコーダプログラム119と、ハードディスク装置103に記憶されている放送コンテンツデータ113から読み出したコンテンツデータを端末装置2へ送信する前に一時的に記憶するリングバッファ領域120と、下流の端末装置2に配信するコンテンツデータをチャンネル毎にコンテンツ投入装置4から受信し、ハードディスク装置103に記憶するコンテンツ管理プログラム121等が記憶されており、これらはCPU102によって読み出され、CPU102によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム117は、CPU102によって読み出されて実行されることにより、キーボード107やマウス108の入出力に関する機能や、主記憶装置105やハードディスク装置103などのメモリ管理などのコンテンツ配信装置1であるコンピュータの基本的な機能を実行可能にするものである。
そして、このOSプログラム117がCPU102によって実行された状態で、上述のストリーム制御プログラム115、トポロジー管理プログラム116、画面制御プログラム118、音楽デコーダプログラム119、コンテンツ管理プログラム121が主記憶装置105から読み出されて実行される。
なお、OSプログラム117、ストリーム制御プログラム115、トポロジー管理プログラム116、画面制御プログラム118、音楽デコーダプログラム119、コンテンツ管理プログラム121等は、例えば、ネットワーク6に接続されたサーバ等から主記憶装置105にダウンロードされるようにしてもよく、また、CD−ROM等の記録媒体に記録されてから記録媒体のドライブを介して、主記憶装置105に読み込まれるようにしてもよい。
(制御部130について)
制御部130は、上述のようにCPU102と主記憶装置105とから構成され、CPU102が主記憶装置105に記憶された各種プログラム115〜119,121を読み出して実行することにより、コンテンツ配信装置1全体を統括制御し、かつ、後述するコンテンツデータ配信手段等として機能するようになっている。なお、CPU102がストリーム制御プログラム115を実行することによって、コンテンツデータ配信手段等として、またCPU102がトポロジー管理プログラム116を実行することによって、トポロジー管理手段として、また、CPU102が画面制御プログラム118を実行することによって、表示制御手段等として、CPU102が音楽デコーダプログラム119を実行することによって、再生手段として、CPU102がコンテンツ管理プログラム121を実行することによって、配信コンテンツ受信手段、配信コンテンツ保存手段として、それぞれ機能するようになっている。更に、ハードディスク装置103は、コンテンツデータが記憶されるコンテンツデータ記憶手段として使用される。
(配信コンテンツ受信手段、配信コンテンツ保存手段について)
配信コンテンツ受信手段は、コンテンツ投入装置4に対してコンテンツデータの送信を要求し、コンテンツ投入装置4から送信されるコンテンツデータやそのコンテンツの名称などを受信する。また、配信コンテンツ保存手段は、コンテンツ投入装置4からコンテンツデータが配信コンテンツ受信手段によって受信された場合に、受信したコンテンツデータを放送コンテンツデータ113としてハードディスク装置103に保存する。
また、ハードディスク装置103には、予め各チャンネルで放送するコンテンツデータの順番を記憶する放送番組情報が記憶されており、配信コンテンツ受信手段は、この番組情報に基づいて、コンテンツ投入装置4に対して送信要求するコンテンツデータを決定し、コンテンツ投入装置4への送信要求を行う。
なお、配信コンテンツ受信手段は、放送番組情報に基づいて、コンテンツ投入装置4に対するコンテンツデータの送信要求を行うのではなく、放送番組情報をコンテンツ投入装置4のハードディスク装置403に記憶させておき、コンテンツ投入装置4が放送番組情報に基づいて、順次コンテンツデータを送信するようにしてもよい。この場合、コンテンツ配信装置1はチャンネル毎にコンテンツ投入装置4が投入したコンテンツデータを順次下流装置へ配信することになる。
(コンテンツデータ配信手段について)
コンテンツデータ配信手段は、ネットワーク6を介してコンテンツデータをストリーミング配信する。すなわち、ハードディスク装置103において記憶されている放送用コンテンツデータを取り出し、ネットワーク6を介して論理接続された端末装置2(例えば、ツリー型に接続された場合には最上階層端末装置)等にストリーミング配信する。なお、コンテンツデータには、コンテンツの名称などの情報も含まれる。
このコンテンツデータ配信手段による端末装置2等へのストリーミング配信は、以下の手順で実行される。
コンテンツデータ配信手段は、ハードディスク装置103に予め記憶されている放送コンテンツデータ113から、放送番組情報に基づいてコンテンツデータを順次取り出してリングバッファ領域120に記憶させる。
次に、コンテンツデータ配信手段は、リングバッファ領域120から取り出したコンテンツデータを、ストリーミング配信用のデータ形式、例えばASF、WMA、WMV等のデータ形式にエンコードする。
その後、コンテンツデータ配信手段は、接続された端末装置2等に対して、それぞれ対応するコンテンツデータを所定容量毎に分割しながらコンテンツパケットに格納し、ネットワーク6を介して、このコンテンツパケットへ送信する。
なお、コンテンツデータ配信手段は、DJなどによってキーボード107などの入力手段よって選択されたコンテンツを流すようにしてもよい。
(トポロジー管理手段について)
コンテンツ配信装置1は、複数のチャンネルを割り振られており、トポロジー管理手段は、割り振られたチャンネルに構成されるツリー状階層構造の第1階層に参加している端末装置2の所在情報(IPアドレスやポート番号など)をチャンネル毎に管理している。そして、上述の配信手段はトポロジー管理手段が管理する端末装置2のIPアドレスを宛先アドレスとし、配信用IPアドレスを送信元として端末装置2へコンテンツデータの配信を行う。
(表示制御手段について)
表示制御手段は、ビデオチップ109及び内蔵ディスプレイ110を制御して、コンテンツデータや各種情報を表示する機能を有している。すなわち、表示制御手段は、内蔵ディスプレイ110にどのようにコンテンツの映像や各種情報を表示するかを制御することができる。
(再生手段について)
再生手段は、放送コンテンツデータ113を内蔵ディスプレイ110に表示したり、内蔵スピーカ112から出力したりする機能を有している。
[3.端末装置2の構成等の説明]
次に、図18を参照して、端末装置2の構成及び動作について更に詳説する。図18は、本実施形態における端末装置2の概略構成例を示す図である。
端末装置2は、一般のパーソナルコンピュータ或いは専用端末を適用可能であり、図18に示すように、CPU(Central Processing Unit)202と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置205と、各種データ等を記憶するハードディスク装置203と、ネットワーク6を介してネットワーク上のコンテンツ配信装置1、接続管理装置3やコンテンツ投入装置4、コンタクト先紹介装置5及び他の端末装置2との間で有線通信による通信を行うためのネットワークインタフェース204と、ユーザによる端末装置2の遠隔操作が可能な所定の赤外線信号を送信及び受信するユーザ入力用リモコン208と、このユーザ入力用リモコン208と赤外線により通信を行うための赤外線ポート207と、赤外線ポート207を制御する周辺機器制御チップ206と、CPU202からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータを後述の内蔵ディスプレイ210に表示するビデオチップ209と、ビデオチップ209から送信される信号に応じた表示を行う内蔵ディスプレイ210と、FM音源(Frequency Modulation)やWave Table音源などの音源を有する音源チップ211と、音源チップ211から出力されるオーディオ信号を音波に変換する内蔵スピーカ212とを備えて構成され、これらの各種構成要素はシステムバス201を介して相互に接続されている。
なお、本実施形態においては、CPU202と主記憶装置205とで制御部230を構成している。また、ネットワークインタフェース204は、ルータ10bを介して、ネットワーク6に接続されている。このルータ10bは、図1に示すルータ10に相当するものである。
上述したようなユーザ入力用リモコン208では、コンテンツ配信システムSにおけるコンテンツの購入などの操作が可能である。本実施形態におけるユーザ入力用リモコン208では、コンテンツ配信システムSのチャンネルを選択するための選択手段としてチャンネル選択ボタンを有しており、端末装置2のユーザはこのチャンネル選択ボタンによって所望のチャンネルに接続することができる。なお、図15に示すように、内蔵ディスプレイ210の画面上にチャンネル選択ボタン22,23を表示し、リモコン208の操作によってチャンネルを選択するようにしてもよい。
(主記憶装置205について)
また、主記憶装置205には、端末装置2のコンピュータとしての基本的な機能を提供するためのOSプログラム217と、第1配信形態において、コンテンツ配信装置1から直接又は他の端末装置2に中継されてストリーミング配信されるコンテンツデータをストリーム受信及び下流の端末装置2へストリーミング送信するためのストリーム制御プログラム215と、第1配信形態において、ツリー接続された一層上流の端末装置2(或いはコンテンツ配信装置1)の所在情報(IPアドレスやポート番号)とツリー接続された一層下流の端末装置2の所在情報の管理等を行うためのトポロジー管理プログラム216と、内蔵ディスプレイ210を制御するための画面制御プログラム218と、第1配信形態において、上流の装置からストリーミング受信したコンテンツデータをデコードしてストリーミング再生したり、第2配信形態でダウンロードしてハードディスク装置203に記憶したコンテンツデータを再生したりするための音楽デコーダプログラム219と、所定の記憶容量を有し、ストリーミング受信したコンテンツデータを順次一時的に記憶するリングバッファ領域220と、第1配信形態でコンテンツデータをストリーミング再生しており、リモコン208等の操作によりコンテンツデータのダウンロード要求があったときに第2配信形態によってコンテンツデータをダウンロードするためのコンテンツ購入プログラム221等が記憶されており、これらはCPU202によって読み出され、CPU202によってこれらのプログラムに従った機能が実行される。
また、主記憶装置205には、更にインデックステーブル222(図14参照)を記憶するためのインデックステーブル記憶領域やルーティングテーブル223(図9参照)を記憶するためのルーティングテーブル記憶領域が設けられている。
また、リングバッファ領域220は、参加しているチャンネル(視聴チャンネル及びザッピング対策チャンネル)において配信されるコンテンツデータをチャンネル毎に一時的に記憶する領域であり、ザッピング対策チャンネルのリングバッファ領域に蓄積したコンテンツデータは再生されず中継のみのために用いられることから、リングバッファ領域は、再生チャンネルのリングバッファ領域に比べその容量を小さくしている。このようにザッピング対策チャンネルのリングバッファ領域を小さくしているため、主記憶装置205を効率よく使用することができる。勿論、設定等により全てのリングバッファ領域の容量を同一とするようにすることも可能である。
ここで、OSプログラム217は、CPU202によって読み出されて実行されることにより、ユーザ入力用リモコン208の入出力に関する機能や、主記憶装置205やハードディスク装置203などのメモリ管理などの端末装置2であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム217がCPU202によって実行された状態で、上述のストリーム制御プログラム215、トポロジー管理プログラム216、画面制御プログラム218、音楽デコーダプログラム219、コンテンツ購入プログラム221等が主記憶装置205から読み出されて実行される。
なお、OSプログラム217、ストリーム制御プログラム215、トポロジー管理プログラム216、画面制御プログラム218、音楽デコーダプログラム219、コンテンツ購入プログラム221等は、例えば、ネットワーク6に接続されたサーバ等から主記憶装置205にダウンロードされるようにしてもよく、また、CD−ROM等の記録媒体に記録されてから記録媒体のドライブを介して、主記憶装置205に読み込まれるようにしてもよい。
(制御部230について)
制御部230は、上述のようにCPU202と主記憶装置205とから構成され、CPU202が主記憶装置205に記憶された各種プログラム215〜219,221を読み出して実行することにより、端末装置2全体を統括制御し、かつ、後述する接続手段、ストリーミング受信手段、表示制御手段、ストリーミング再生手段、ストリーミング中継手段、デコード手段、識別情報取得手段、識別情報リスト受信手段、ダウンロード操作検出手段、切断手段、再接続手段、判定手段、ダウンロード処理手段、メッセージ宛先判定手段、コンテンツデータ記憶制御手段、コンテンツ保持端末装置情報選択手段、コンテンツ保持端末装置情報返信手段、コンテンツ識別情報演算手段、コンテンツ登録メッセージ生成手段、コンテンツ登録メッセージ送信手段、メッセージ転送手段、コンテンツ再生手段等として機能するようになっている。
なお、CPU202がストリーム制御プログラム215を実行することによってストリーミング受信手段、ストリーミング中継手段等として、またCPU202がトポロジー管理プログラム216を実行することによって、接続手段等として、またCPU202が画面制御プログラム218を実行することによって表示制御手段等として、更にCPU202が音楽デコーダプログラム219を実行することによってデコード手段、ストリーミング再生手段、コンテンツ再生手段等として、更にCPU202がコンテンツ購入プログラム221を実行することによって、識別情報リスト受信手段、識別情報取得手段、判定手段、ダウンロード操作検出手段、切断手段、再接続手段、ダウンロード処理手段、コンテンツデータ記憶制御手段、メッセージ宛先判定手段、コンテンツ保持端末装置情報選択手段、コンテンツ保持端末装置情報返信手段、コンテンツ識別情報演算手段、コンテンツ登録メッセージ生成手段、コンテンツ登録メッセージ送信手段、メッセージ転送手段等として、それぞれ機能するようになっている。
(接続手段について)
接続手段は、端末装置2をコンテンツ配信システムSの第1配信形態へ参加させるために、チャンネル選択手段であるリモコン208のチャンネル選択ボタンのユーザによる操作によって選択されたチャンネルに関する接続先紹介要求を接続管理装置3へ送信し、その後、接続管理装置3から通知された接続先候補に接続する。さらに、接続手段は、チャンネル選択手段によって選択されたチャンネルと所定の関係を有するチャンネル(ザッピング対策チャンネル)に関する接続先紹介要求を接続管理装置3へ送信し、その後、接続管理装置3から通知された接続先候補に接続する。
より具体的には、接続手段は、端末装置2をコンテンツ配信システムSへ参加させるために、接続管理装置3へ登録要求を送信して接続管理装置3へ登録すると共に、接続先紹介要求を送信して接続管理装置3へチャンネル選択手段によって選択されたチャンネルの接続先候補及びそのチャンネルと所定の関係を有するチャンネルの接続先候補を要求する機能を有している。この登録要求や接続先紹介要求には、端末装置2のユーザがリモコン208のチャンネル選択ボタン等を操作することによって選択されるチャンネルを指定した情報、選択されたチャンネルと所定の関係を有するチャンネルの情報及び自端末装置2の所在情報等を含む。
また、接続手段は、接続管理装置3へ送信した接続先紹介要求に対して、接続管理装置3からネットワーク6を介して通知される視聴用チャンネルやザッピング対策チャンネルの接続先候補の情報、すなわち接続先候補の端末装置の所在情報であるIPアドレスやポート番号などの情報(以下、接続先候補の情報を含めて、「接続先候補」と略すことがある。)を受信する機能を有する。
更に、接続手段は、受信した各チャンネルの接続先候補の情報に基づいて、その接続先候補への論理接続を行う機能を有する。すなわち、接続手段は、接続先候補の情報に基づいて、接続先候補のIPアドレス及びポート番号等をあて先とした接続要求を行い、接続先候補との論理接続を行う。このように接続先候補と接続することによって複数のチャンネル(視聴用チャンネル及び複数のザッピング対策チャンネル)の階層構造に組み込まれ、第1配信形態に参加することになる。
(ストリーミング受信手段について)
ストリーミング受信手段は、ネットワークインタフェース204を介して第1配信形態によって上流装置、すなわち上流に論理接続したコンテンツ配信装置1又は上流に接続された端末装置2からコンテンツパケットとして送信されるコンテンツデータをチャンネル(視聴用チャンネル及びザッピング対策チャンネル)毎にストリーミング受信し、このようにストリーミング受信したコンテンツデータをチャンネル毎にリングバッファ領域220に順次記憶する。なお、コンテンツデータ受信手段や後述のコンテンツデータ中継手段は、公知のストリーミング配信用プロトコルを用いることができるほか、独自の専用プロトコルを用いるようにすることもできる。
(ストリーミング再生手段について)
ストリーミング再生手段は、ネットワークインタフェース204を介して第1配信形態によって上流装置からストリーミング受信してリングバッファ領域220に順次記憶されたコンテンツデータを順次再生する機能を有している。
このストリーミング再生手段は、参加している複数のチャンネルのうちチャンネル選択ボタン等によって最後に選択された最新のチャンネルに対応するコンテンツデータをリングバッファ領域から取り出して、音源チップ211やビデオチップ209を動作させることによってこの機能を実現しており、リングバッファ領域220に格納したコンテンツデータを順次取り出して、所定のコンテンツデータ形式(たとえば、Wave形式)に変換して音源チップ211やビデオチップ209へ入力し、コンテンツの再生を行う。
ストリーミング再生手段によって所定のコンテンツデータ形式に変換されたコンテンツデータは、そのコンテンツデータがオーディオ情報を含む場合には、そのオーディオ情報が音源チップ211によってオーディオ信号へ変換された後、内蔵スピーカ212から出力される。
また、ストリーミング再生手段によって所定のコンテンツデータ形式に変換されたコンテンツデータは、そのコンテンツデータに映像情報が含まれるときには、後述の表示制御手段による制御によってこの映像情報が内蔵ディスプレイ210に表示される。
また、ストリーミング再生手段は、リングバッファ領域220に格納されたコンテンツデータに含まれる再生開始時刻情報に基づいて、当該コンテンツデータを再生するタイミングを決定する。すなわち、再生手段は、リングバッファ領域220に格納されたコンテンツデータをその再生開始時刻で内蔵スピーカ212や内蔵ディスプレイ210に出力するように構成されている。
(表示制御手段について)
表示制御手段は、ビデオチップ209及び内蔵ディスプレイ210を制御して、コンテンツデータや各種情報を表示する機能を有している。すなわち、表示制御手段は、内蔵ディスプレイ210にどのようにコンテンツの映像や各種情報を表示するかを制御することができる。
(ストリーミング中継手段について)
ストリーミング中継手段は、第1配信形態における上流装置、すなわちコンテンツ配信装置1又は上流に接続された端末装置2からネットワーク6を介してストリーミング受信されたコンテンツデータを、下流に接続された他の端末装置2へネットワーク6を介して転送する。
(識別情報リスト受信手段について)
識別情報リスト受信手段は、コンテンツ投入装置4から送信される識別情報リストを受信する機能を有している。コンテンツ投入装置4から送信される識別情報リストは、第2配信形態においてダウンロード可能なコンテンツデータの名称とコンテンツIDとが関連付けられた情報であり、自端末装置2がコンテンツ投入装置4へ識別情報リストの送信要求を行うことによって、コンテンツ投入装置4から送信されるものである。
(ダウンロード操作検出手段について)
ダウンロード操作検出手段は、第2配信形態によるコンテンツデータのダウンロード要求の操作を検出する機能を有する。例えば、図16に示すように第2配信形態においてダウンロード可能なコンテンツデータが内蔵ディスプレイ210の所定領域24に一覧表示されている状態で、ユーザがリモコン208を操作して、ダウンロードするコンテンツデータを指定枠25により指定してダウンロードボタン26を選択したことを検出することによって、第2配信形態によるコンテンツデータのダウンロード要求の操作を検出する。
(切断手段について)
切断手段は、ダウンロード操作検出手段によってダウンロード要求の操作が検出されたとき、接続手段によって接続状態にあるチャンネルのうち、チャンネル選択手段によって選択されたチャンネルと所定の関係を有するチャンネルに関する接続先候補との接続を切断する機能を有する。
ここで、切断手段は、チャンネル選択手段によって選択されたチャンネルと所定の関係を有するチャンネルが複数ある場合であって、ダウンロード操作検出手段によってダウンロード要求の操作が検出されたとき、接続手段によって接続状態にあるチャンネルのうち、チャンネル選択手段によって選択されたチャンネルと所定の関係を有する全てのチャンネルに関する接続先候補との接続を切断する。すなわち、切断手段は、全てのザッピング対策チャンネルの階層構造から脱退するのである。
このようにザッピング対策チャンネルが複数ある場合には、全てのザッピング対策チャンネルから脱退するので、通信帯域をより多く確保することができ、第2配信形態での通信を安定させることができる。
また、所定の関係を有するチャンネルは、上述したようにチャンネル選択手段によって選択されたチャンネル番号に隣接するチャンネル番号を有するチャンネルである。
(識別情報取得手段について)
識別情報取得手段は、ダウンロード操作検出手段によってダウンロード要求の操作が検出されたとき、ダウンロード要求されたコンテンツデータを第2配信形態で取得するために、ダウンロード要求されたコンテンツデータの識別情報であるコンテンツIDを取得する。
ダウンロード要求されたコンテンツIDの取得は、以下のように行われる。
第1配信形態においてストリーミング再生手段によって再生されるコンテンツデータに関してダウンロード要求の操作があると、識別情報取得手段は、識別情報リスト受信手段によって受信した識別情報リストからダウンロード要求されたコンテンツデータの識別情報であるコンテンツIDを取得する。
ここで、識別情報取得手段は、後述するコンテンツ識別情報演算手段によってダウンロード要求されたコンテンツデータのコンテンツIDを求めるようにしてもよい。すなわち、ダウンロード要求されたコンテンツデータの名称をキーワードとして上記ハッシュ関数によりハッシュ化することによってコンテンツIDを求めるのである。このようにダウンロード要求されたコンテンツデータの名称をキーワードとしてコンテンツIDを求めることにより、端末装置2における第2配信形態でのダウンロード処理がし易くなる。なお、第2配信形態によってダウンロード可能なコンテンツの名称は、コンテンツ投入装置4から一覧表などの形式で取得し、コンテンツ識別情報演算手段は、この一覧表などからコンテンツの名称を取得することで、コンテンツIDを算出することができる。
(判定手段)
判定手段は、ダウンロード要求されたコンテンツデータ全体がリングバッファ領域220に蓄積されているか否かを判定する。
ここで、自端末装置がコンテンツ保持端末装置として機能する場合には、コンテンツ保持端末装置として保持すべきコンテンツデータは、ハードディスク装置203のコンテンツデータ記憶領域(コンテンツデータ記憶手段の一例に相当)に記憶される。また、過去にダウンロードしたコンテンツデータも同様にハードディスク装置203のコンテンツデータ記憶領域に記憶される。判定手段は、ダウンロード要求されたコンテンツデータがハードディスク装置203のコンテンツデータ記憶領域に記憶されているか否かを判定する。
(コンテンツデータ記憶制御手段)
コンテンツデータ記憶制御手段は、この判定手段によって、ダウンロード要求されたコンテンツデータ全体がリングバッファ領域220に蓄積されていると判定すると、第2配信形態によってコンテンツデータのダウンロードを行わずに、リングバッファ領域220に蓄積されているコンテンツデータをハードディスク装置203のコンテンツデータ記憶領域に記憶する。そして、判定手段によって、ダウンロード要求されたコンテンツデータ全体がリングバッファ領域220に蓄積されていると判定すると、切断手段は、接続状態にあるチャンネルの接続先候補との接続を切断しない。
また、判定手段によって、ダウンロード要求されたコンテンツデータがハードディスク装置203のコンテンツデータ記憶領域に記憶されていると判定すると、切断手段は、接続状態にあるチャンネルの接続先候補との接続を切断せず、かつ後述するダウンロード処理手段は、第2配信形態によってコンテンツデータのダウンロードを行わない。
(ダウンロード処理手段について)
ダウンロード処理手段は、識別情報取得手段によって取得されたコンテンツデータの識別情報に基づいて、ダウンロード要求されたコンテンツデータを第2配信形態の端末装置からダウンロードする機能を有しており、ダウンロード先検索手段、ダウンロード送信要求手段、ダウンロードデータ受信手段などから構成されている。
ダウンロード先検索手段は、識別情報取得手段によって取得されたコンテンツデータのコンテンツIDに基づいて、ダウンロード要求されたコンテンツデータを保持するコンテンツ保持端末装置を検索する。
コンテンツ保持端末装置の検索は、識別情報取得手段によって取得されたコンテンツIDを宛先識別情報としたコンテンツ検索メッセージを生成し、そのコンテンツIDと同じエリアの端末IDを持つ端末装置の所在情報をルーティングテーブル223から取り出して、その端末装置へコンテンツ検索メッセージを送信することによって行う。
そして、コンテンツ検索メッセージに対して、識別情報取得手段によって取得されたコンテンツIDのコンテンツデータを保持するコンテンツ保持端末装置の所在情報がルート端末装置から送信される。
このようにして、ダウンロード先検索手段は、ダウンロード要求されたコンテンツデータを保持するコンテンツ保持端末装置を検索する。
また、ダウンロード送信要求手段は、ダウンロード先検索手段によって検索されたコンテンツ保持端末装置に、ダウンロード要求されたコンテンツデータの送信をネットワーク6を介して要求(以下、「ダウンロード送信要求」と呼ぶ。)する。このダウンロード送信要求は、コンテンツ保持端末装置の所在情報を宛先として、ダウンロード要求に対応するコンテンツデータのコンテンツIDを設定するものである。なお、ダウンロード先検索手段によって検索されたコンテンツ保持端末装置が複数ある場合には、近隣のコンテンツ保持端末装置の一つに対してダウンロード送信要求が行われる。
ここで、「近隣のコンテンツ保持端末装置」とは、ダウンロード送信要求を行う端末装置が、コンテンツ保持端末装置とDHTルーティングにおいて端末IDが近い端末装置、或いは、物理ネットワークにおいて近いコンテンツ保持端末装置を意味する。特に、ダウンロード送信要求を行うコンテンツ保持端末装置を物理ネットワークにおいて近いコンテンツ保持端末装置とする場合には、コンテンツ保持端末装置からのコンテンツデータのダウンロードを短時間で行うことができる。なお、「物理ネットワークにおいて近い」とは、ダウンロード送信要求を行う端末装置からのメッセージ到達時間が短い、或いはダウンロード送信要求を行う端末装置からのポップ数(ルータを経由する数)が少ない等を意味する。
また、ダウンロードデータ受信手段は、ダウンロード要求されたコンテンツデータを保持するコンテンツ保持端末装置からダウンロード要求されたコンテンツデータをネットワーク6を介して受信する。コンテンツ保持端末装置から送信されるコンテンツデータは、第1配信形態のようなストリーミング形式ではなく、ダウンロード形式のデータであるが、ストリーミング形式とすることも可能である。
ダウンロード受信手段により受信したコンテンツデータは、制御部230によって、ハードディスク装置203のコンテンツデータ記憶領域に記憶される。
(再接続手段について)
再接続手段は、ダウンロード要求されたコンテンツデータのダウンロードデータ受信手段での受信が完了すると、切断手段によって切断したザッピング対策チャンネルに関する接続先紹介要求を接続管理装置3へ送信し、その後、接続管理装置3から通知された接続先候補に再接続する機能を有する。
なお、この再接続手段において、ダウンロードデータ受信手段での受信が完了して所定期間経過後に、切断手段によって切断したザッピング対策チャンネルに再接続するようにしてもよい。また、この所定期間を端末装置2における第2配信形態の利用状況に応じて変更するようにしてもよい。例えば、第2配信形態の連続利用時間の履歴をハードディスク装置203に記憶しておき、連続利用時間の平均時間に応じて前記所定期間を定めるようにすることができる。このようにすれば、切断手段によるチャンネルの切断と再接続手段によるチャンネルの再接続を頻繁に行なうような状態を低減することができ、その結果、第1配信形態における各階層構造に対する負荷を低減することが可能となる。
(メッセージ宛先判定手段について)
メッセージ宛先判定手段は、ネットワーク6を介して受信したメッセージの宛先識別情報とルーティングテーブルとに基づいて、受信したメッセージが自端末装置2宛であるか否かを判定する。このメッセージ宛先判定手段が判定するメッセージは、上述のコンテンツ検索メッセージ、コンテンツ登録メッセージなどである。
受信したメッセージが自端末装置2宛であるか否かの判定は、メッセージに含まれる宛先端末ID(宛先識別情報)を取り出し、主記憶装置205に記憶したルーティングテーブルに基づいて判定する。すなわち、各種のメッセージをネットワークインタフェース204を介して受信したとき、メッセージ宛先判定手段は、受信したメッセージに含まれる宛先識別情報とルーティングテーブル223に記憶した端末IDとを比較し、メッセージに含まれる宛先識別情報と一番近いルーティングテーブル223上の端末IDが自端末装置2の端末IDであると判定すると、自端末装置2宛のメッセージであると判定する。
(コンテンツ保持端末装置情報選択手段について)
コンテンツ保持端末装置情報選択手段は、メッセージ宛先判定手段によりネットワーク6を介して受信したメッセージが自端末装置2宛であり、かつコンテンツ検索メッセージであると判定すると、インデックステーブル222からコンテンツ検索メッセージが対象とするコンテンツIDのコンテンツデータを保持するコンテンツ保持端末装置の所在情報を選択する。なお、インデックステーブル222にコンテンツ保持端末装置の所在情報が複数ある場合には、それらを全部或いはいくつか選択する。
(コンテンツ保持端末装置情報返信手段について)
コンテンツ保持端末装置情報返信手段は、コンテンツ保持端末装置情報選択手段によって選択されたコンテンツ保持端末装置の所在情報を、リクエスト端末装置へネットワーク6を介して返信する。
(コンテンツ識別情報演算手段について)
コンテンツ識別情報演算手段は、コンテンツデータの固有情報を上記の如く所定のハッシュ関数によって演算することによってコンテンツデータの識別情報であるコンテンツIDを演算する。
(コンテンツ登録メッセージ生成手段について)
コンテンツ投入装置4からコンテンツデータを受信したとき、受信したコンテンツデータをハードディスク装置203のコンテンツデータ記憶領域(コンテンツデータ記憶手段の一例に相当)に記憶する。又、コンテンツデータのコンテンツの名称をコンテンツ識別情報演算手段によって演算したコンテンツIDを宛先識別情報とし、自端末装置の端末ID及びIPアドレスを含むコンテンツ登録メッセージを生成する。
(コンテンツ登録メッセージ送信手段について)
コンテンツ登録メッセージ送信手段は、コンテンツ登録メッセージ生成手段によって生成したコンテンツ登録メッセージを、ハードディスク装置203に記憶したコンテンツデータのコンテンツIDに基づいて、ルーティングテーブル223に記憶された端末装置の識別情報から送信先端末装置を選択して送信する。例えば、図9に示すようなルーティングテーブルを有しており、かつハードディスク装置203に記憶したコンテンツデータのコンテンツIDが「1231」である場合、コンテンツ登録メッセージ送信手段は、ルーティングテーブルから端末ID「1221」を送信先端末装置として選択し、当該端末ID「1221」の端末装置のIPアドレス「21.13.21.13」を取り出す。そして、当該IPアドレス「21.13.21.13」を送信先端末装置としてコンテンツ登録メッセージを送信する。なお、このコンテンツ登録メッセージの宛先識別情報は「1231」となる。
(メッセージ転送手段について)
メッセージ転送手段は、メッセージ宛先判定手段によりネットワーク6を介して受信したメッセージが自端末装置宛ではないと判定されると、受信したメッセージの宛先識別情報に基づいて、転送先の端末装置の所在情報をルーティングテーブル223から取り出し、転送先の端末装置へ受信したメッセージを転送する。
(デコード手段について)
デコード手段は、他の端末装置2から送信されるコンテンツデータ等をディスプレイ210に表示し、スピーカ212から出力するためにデコードする。すなわち、他の端末装置2から送信されるコンテンツデータは、ストリーミング配信用のデータ形式、例えばASF、WMA、WMV等のデータ形式でエンコードされており、このようにエンコードされているコンテンツデータをディスプレイ210やスピーカ212から出力できるようにデコードする。
(コンテンツ再生手段について)
コンテンツ再生手段は、ハードディスク装置203に記憶したコンテンツデータを取り出して再生するものであり、このとき制御部230は、ストリーム制御プログラム215に基づいてビデオチップ209及び音源チップ211を動作させることによりコンテンツデータが再生される。
[4.接続管理装置3の構成等の説明]
次に、図19を参照して、接続管理装置3の構成及び動作について説明する。
図19は、本実施形態における接続管理装置3の概略構成例を示す図である。接続管理装置3は、一般のサーバコンピュータを適用可能であり、図19に示すように、CPU(Central Processing Unit)302と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置305と、各種データ等を記憶するハードディスク装置303と、ネットワーク6を介してコンテンツ配信装置1、コンテンツ投入装置4や端末装置2との間で通信を行うネットワークインタフェース304と、所定の情報を入力可能なキーボード307やマウス308等の入力手段を制御する周辺機器制御チップ306と、CPU302からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータをディスプレイ310に表示するビデオチップ309とを備えて構成され、これらの各種構成要素はシステムバス301を介して相互に接続されている。
なお、本実施形態においては、CPU302と主記憶装置305とで制御部330を構成している。なお、ネットワークインタフェース304は、ルータ10cを介して、ネットワーク6に接続されている。このルータ10cは、図1に示すルータ10に相当するものである。
(主記憶装置305について)
また、主記憶装置305には、接続管理装置3のコンピュータとしての基本的な機能を提供するためのOSプログラム317と、複数の端末装置2の所在情報(IPアドレスやポート番号など)などを管理するための端末管理プログラム318と、コンテンツ配信装置を頂点として複数の端末装置がネットワーク上にツリー状階層構造で多層に論理接続されるように構築及び管理等するためのトポロジー管理プログラム319と、端末装置2から送信される接続先紹介要求に対して接続先候補を選択し、端末装置2へ接続先候補の情報を送信等するための接続先紹介プログラム320等が記憶されており、これらはCPU302によって読み出され、CPU302によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム317は、CPU302によって読み出されて実行されることにより、キーボード307やマウス308の入出力に関する機能や、主記憶装置305やハードディスク装置303などのメモリ管理などの接続管理装置3であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム317がCPU302によって実行された状態で、上述の端末管理プログラム318、トポロジー管理プログラム319、接続先紹介プログラム320等が実行される。
なお、OSプログラム317、端末管理プログラム318、トポロジー管理プログラム319、接続先紹介プログラム320等は、例えば、ネットワーク6に接続されたサーバ等から主記憶装置305にダウンロードされるようにしてもよく、また、CD−ROM等の記録媒体に記録されてから記録媒体のドライブを介して、主記憶装置305に読み込まれるようにしてもよい。
(制御部330について)
制御部330は、上述のようにCPU302と主記憶装置305とから構成され、CPU302が主記憶装置305に記憶された各種プログラム317〜320を読み出して実行することにより、接続管理装置3全体を統括制御し、かつ、後述する接続先紹介要求受信手段、接続先候補選択手段、接続先候補通知手段、トポロジー管理手段、端末管理手段等として機能する。更に、ハードディスク装置303は、コンテンツ配信装置1を頂点として、ネットワーク6上において階層構造で多層に論理接続された複数の端末装置の接続状態情報をチャンネル毎に記憶する接続状態情報記憶手段として使用される。
なお、CPU302が端末管理プログラム318を実行することによって、端末管理手段等として、またCPU302がトポロジー管理プログラム319を実行することによってトポロジー管理手段等として、更にCPU302が接続先紹介プログラム320を実行することによって接続先紹介要求受信手段、接続先候補選択手段、接続先候補通知手段等として、それぞれ機能する。
(端末管理手段について)
端末管理手段は、端末装置2からの登録要求を受信すると、端末管理データベース314へこの端末装置2の所在情報であるIPアドレスなどをチャンネル毎に登録する。また、コンテンツ配信装置1からの登録要求を受信した場合も、このコンテンツ配信装置1の所在情報であるIPアドレスなどを各チャンネル毎に端末管理データベース314に登録する。なお、これらの端末装置2の所在情報は端末装置2からの登録要求に含まれ、この登録要求から所在情報を取得する。
(トポロジー管理手段について)
トポロジー管理手段は、コンテンツ配信装置1から送信されるチャンネルの生成要求に基づいて、ツリー状階層構造を生成するための新規トポロジー生成手段と、端末装置2の接続先紹介要求や接続切断通知などのトポロジー変動通知によってツリー状階層構造における端末装置2の接続情報を変更するトポロジー変更手段としての機能を有している。また、トポロジー管理手段は、階層構造を構成する端末装置2の接続状態情報を接続状態情報記憶手段としてのトポロジーデータベース315へ記憶する。
新規トポロジー生成手段は、コンテンツ投入装置4からチャンネルの生成要求を受信すると、トポロジーテーブルを生成してトポロジーデータベース315へ登録する。ここで、トポロジーテーブルは、ツリー状階層構造を構成する端末装置2の接続状態情報などを格納するためのテーブルであり、トポロジーデータベース315に登録される。
トポロジー変更手段は、トポロジーデータベース315に記憶されるトポロジーテーブルに端末装置2の情報を追加又は削除する機能を実行するものであり、端末装置2からの接続先紹介要求トポロジー参加報告に基づいて、トポロジーテーブルへの追加又は変更を行うものである。
(接続先紹介要求受信手段について)
接続先紹介要求受信手段は、新規に第1配信形態に参加又は新規のチャンネルしようとする端末装置2からネットワーク6を介して接続先紹介要求を受信する。
(接続先候補選択手段について)
接続先候補選択手段は、新規に第1配信形態に参加又は新規のチャンネルに参加しようとする端末装置2からネットワーク6を介して接続先紹介要求を受信したとき、端末装置2の接続先紹介要求に対する接続先候補を、トポロジーデータベース315に記憶された接続状態情報から選択する。
(接続先候補通知手段について)
接続先候補通知手段は、接続先候補選択手段によって選択された接続先候補を、接続先紹介要求を送信した端末装置2へネットワーク6を介して通知する機能を有する。この接続先候補の通知は、接続先候補の情報、すなわち接続先候補の端末装置2の通信プロトコル、IPアドレスやポート番号などの情報を含む。
[5.コンテンツ投入装置4の構成等の説明]
次に、図20を参照して、コンテンツ投入装置4の構成及び動作について説明する。
図20は、本実施形態におけるコンテンツ投入装置4の概略構成例を示す図である。コンテンツ投入装置4は、一般のサーバコンピュータを適用可能であり、図20に示すように、CPU(Central Processing Unit)402と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置405と、各種データ等を記憶するハードディスク装置403と、ネットワーク6を介してコンテンツ配信装置1、端末装置2及び接続管理装置3等との間で通信を行うネットワークインタフェース404と、所定の情報を入力可能なキーボード407やマウス408等の入力手段を制御する周辺機器制御チップ406と、CPU402からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータをディスプレイ410に表示するビデオチップ409とを備えて構成され、これらの各種構成要素はシステムバス401を介して相互に接続されている。
なお、本実施形態においては、CPU402と主記憶装置405とで制御部430を構成している。なお、ネットワークインタフェース404は、ルータ10dを介して、ネットワーク6に接続されている。このルータ10dは、図1に示すルータ10に相当するものである。
(主記憶装置405について)
また、主記憶装置405には、コンテンツ投入装置4のコンピュータとしての基本的な機能を提供するためのOSプログラム417と、第1配信形態におけるコンテンツ配信装置1や第2配信形態における端末装置2に対してコンテンツデータの送信及び管理を行うためのコンテンツ管理プログラム419と、第1配信形態や第2配信形態において投入された複数のコンテンツデータのコンテンツの名称とコンテンツIDを関連付けた識別情報リストである識別情報リストを生成してハードディスク装置403の識別情報リスト記憶領域に記憶したり、ハードディスク装置403の識別情報リスト記憶領域から識別情報リストを取り出して、端末装置2へ送信するためのカタログ管理プログラム418等が記憶されており、これらはCPU402によって読み出され、CPU402によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム417は、CPU402によって読み出されて実行されることにより、キーボード407やマウス408の入出力に関する機能や、主記憶装置405やハードディスク装置403などのメモリ管理などのコンテンツ投入装置4であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム417がCPU402によって実行された状態で、上述のカタログ管理プログラム418、コンテンツ管理プログラム419等が実行される。
なお、OSプログラム417、カタログ管理プログラム418、コンテンツ管理プログラム419等は、例えば、ネットワーク6に接続されたサーバ等から主記憶装置405にダウンロードされるようにしてもよく、また、CD−ROM等の記録媒体に記録されてから記録媒体のドライブを介して、主記憶装置405に読み込まれるようにしてもよい。
(制御部430について)
制御部430は、上述のようにCPU402と主記憶装置405とから構成され、CPU402が主記憶装置405に記憶された各種プログラム417〜419を読み出して実行することにより、コンテンツ投入装置4全体を統括制御し、かつ、後述するコンテンツ投入手段、識別情報リスト生成手段、識別情報リスト送信手段等として機能する。更に、ハードディスク装置403は、第1配信形態におけるコンテンツ配信装置1や第2配信形態のコンテンツ保持端末装置へ送信して投入するコンテンツデータを記憶するコンテンツデータ記憶領域と、コンテンツ配信装置1や第2配信形態のコンテンツ保持端末装置へ投入したコンテンツデータに関する識別情報リストを記憶する識別情報リスト記憶手段としての識別情報リスト記憶領域等から構成される。
ここで、識別情報リスト記憶手段は、上述のようにコンテンツ配信装置1によってストリーミング配信するコンテンツデータ以外のコンテンツデータの識別情報を含む識別情報リストをも記憶する。従って、放送形態で直接配信されるコンテンツデータ以外のコンテンツデータを第2配信形態で取得することができる。例えば、コンテンツデータが音楽コンテンツの場合には、過去に視聴した音楽コンテンツを第2配信形態で取得することが可能となる。
なお、CPU402がカタログ管理プログラム418を実行することによって、識別情報リスト生成手段、識別情報リスト送信手段等として、またCPU402がコンテンツ管理プログラム419を実行することによってコンテンツ投入手段等として、それぞれ機能する。
(コンテンツ投入手段について)
コンテンツ投入手段は、第2配信形態にて配信するコンテンツデータを複数の端末装置2のうち一部の端末装置2に送信する。具体的には、以下のように動作する。
コンテンツ配信装置1からの要求或いはキーボード407やマウス408等の入力手段からの操作によって、コンテンツデータの投入指示があったとき、コンテンツ投入手段は、その投入指示に対応するコンテンツデータをハードディスク装置403のコンテンツデータ記憶領域から取り出す。
ハードディスク装置403から取り出したコンテンツデータは、コンテンツ投入手段によって、第1配信形態及び第2配信形態の両方の配信形態に送信され、投入される。但し、コンテンツ投入手段は第1配信形態へ投入されないコンテンツデータであっても、第2配信形態へ投入されることがある。
すなわち、コンテンツ投入手段は、ハードディスク装置403から取り出したコンテンツデータをコンテンツ配信装置1に送信する。コンテンツ配信装置1に送信されたコンテンツデータは、第1配信形態で各端末装置2へストリーミング配信される。
また、コンテンツ投入手段は、ハードディスク装置403から取り出したコンテンツデータを第2配信形態におけるいくつかの端末装置2に送信し、コンテンツ保持端末装置として機能させる。送信先の端末装置2はコンテンツ投入手段によってランダムに決定される。
(識別情報リスト生成手段について)
識別情報リスト生成手段は、コンテンツ投入手段によってコンテンツデータの投入が行われると、ハードディスク装置403の識別情報リスト記憶領域に記憶した識別情報リストを更新する。すなわち、コンテンツ投入手段によって新たに投入したコンテンツデータのコンテンツの名称及びコンテンツIDとを関連付けた情報を識別情報リストに加える。
(識別情報リスト送信手段について)
識別情報リスト送信手段は、識別情報リスト記憶手段に記憶した識別情報リストを複数の端末装置に送信する。すなわち、コンテンツ配信装置1や端末装置2から識別情報リスト送信要求があったときには、ハードディスク装置403の識別情報リスト記憶領域に記憶した識別情報リストを要求した装置に対して送信する。
[6.コンタクト先紹介装置5の構成等の説明]
次に、図21を参照して、コンタクト先紹介装置5の構成及び動作について説明する。
図21は、本実施形態におけるコンタクト先紹介装置5の概略構成例を示す図である。コンタクト先紹介装置5は、一般のサーバコンピュータを適用可能であり、図21に示すように、CPU(Central Processing Unit)502と、各種プログラム等を記憶(格納)する書き換え可能な主記憶装置505と、各種データ等を記憶するハードディスク装置503と、ネットワーク6を介して端末装置2との間で通信を行うネットワークインタフェース504と、所定の情報を入力可能なキーボード507やマウス508等の入力手段を制御する周辺機器制御チップ506と、CPU502からイメージデータを受け取り、内部のビデオメモリ(図示せず)に書き込むと共にこのビデオメモリに書き込んだデータをディスプレイ510に表示するビデオチップ509とを備えて構成され、これらの各種構成要素はシステムバス501を介して相互に接続されている。
なお、本実施形態においては、CPU502と主記憶装置505とで制御部530を構成している。なお、ネットワークインタフェース504は、ルータ10eを介して、ネットワーク6に接続されている。このルータ10eは、図1に示すルータ10に相当するものである。
(主記憶装置505について)
また、主記憶装置505には、コンタクト先紹介装置5のコンピュータとしての基本的な機能を提供するためのOSプログラム517と、複数の端末装置2の所在情報(IPアドレスやポート番号など)などを管理するための端末管理プログラム518と、第2配信形態に参加していない端末装置2からの要求に応じて、コンタクト先の他の端末装置2を紹介するためのコンタクト先端末装置紹介プログラム519等が記憶されており、これらはCPU502によって読み出され、CPU502によってこれらのプログラムに従った機能が実行される。
ここで、OSプログラム517は、CPU502によって読み出されて実行されることにより、キーボード507やマウス508の入出力に関する機能や、主記憶装置505やハードディスク装置503などのメモリ管理などのコンタクト先紹介装置5であるコンピュータの基本的な機能を実行可能にするものである。そして、このOSプログラム517がCPU502によって実行された状態で、上述の端末管理プログラム518、コンタクト先端末装置紹介プログラム519等が実行される。
なお、OSプログラム517、端末管理プログラム518、コンタクト先端末装置紹介プログラム519等は、例えば、ネットワーク6に接続されたサーバ等から主記憶装置505にダウンロードされるようにしてもよく、また、CD−ROM等の記録媒体に記録されてから記録媒体のドライブを介して、主記憶装置505に読み込まれるようにしてもよい。
(制御部530について)
制御部530は、上述のようにCPU502と主記憶装置505とから構成され、CPU502が主記憶装置505に記憶された各種プログラム517〜519を読み出して実行することにより、コンタクト先紹介装置5全体を統括制御し、かつ、後述する端末装置管理手段、コンタクト先端末装置紹介手段等として機能する。
なお、CPU502が端末管理プログラム518を実行することによって、端末管理手段等として、またCPU502がコンタクト先端末装置紹介プログラム519を実行することによってコンタクト先端末装置紹介手段等として、それぞれ機能する。
(端末管理手段について)
端末管理手段は、端末装置2からの第2配信形態に対する登録要求を受信すると、端末管理データベース515へこの端末装置2の所在情報であるIPアドレスなどを登録する。なお、これらの端末装置2の所在情報は端末装置2からの登録要求に含まれ、この登録要求から所在情報を取得する。
(コンタクト先端末装置紹介手段について)
コンタクト先端末装置紹介手段は、端末装置2からの第2配信形態に対する登録要求を受信したとき、端末管理データベース515に登録した端末装置2から、登録要求を行った端末装置2が参加メッセージを送信すべき端末装置2を選択する。
コンタクト先端末装置紹介手段は、選択した端末装置2の所在情報を端末管理データベース515から取り出し、登録要求を行った端末装置2に送信する。
[7.コンテンツ配信システムSの動作]
以下、コンテンツ配信装置1、端末装置2、接続管理装置3、コンテンツ投入装置4及びコンタクト先紹介装置5の詳細動作について、フローチャートを用いて更に具体的に説明する。
(コンテンツ配信装置1の処理フローの説明)
まず、コンテンツ配信装置1の更に具体的な動作について、図22を参照して説明する。図22は、コンテンツ配信装置1における処理全体を示すフローチャートである。なお、以下の各処理は、コンテンツ配信装置1の制御部130が上述した手段等として機能することによって実行されるものである。
まず、図22に示すように、コンテンツ配信装置1の電源がONされると、コンテンツ配信装置1において、CPU102は、主記憶装置105やハードディスク装置103のアクセス許可、作業領域を初期化等の初期設定処理を実行し(ステップS100)、各プログラム115〜120をCPU102による実行状態とし、制御部130としての機能を動作させた後、ステップS101に処理を移す。
ステップS101において、コンテンツ配信装置1における制御部130は、コンテンツ投入装置4に対して第1配信形態において放送するコンテンツデータを要求し、当該要求に対してコンテンツ投入装置4から送信されるコンテンツデータをハードディスク装置103における放送コンテンツ記憶領域に記憶する。
ステップS102において、コンテンツ配信装置1における制御部130は、放送運営者から放送の開始要求又は停止要求があったか否かを判定する。ここで、放送運営者から放送の開始要求又は停止要求があったか否かは、キーボード107やマウス108等の入力手段から放送開始の操作がなされたか否か、或いはキーボード107やマウス108等の入力手段から放送停止の操作がなされたか否かにより判断される。ここで、放送運営者とは、第1配信形態及び第2配信形態によるコンテンツ配信の管理を行う事業者を意味するが、第1配信形態によるコンテンツ配信と第2配信形態とを別々の事業者によって行うようにしてもよい。
この処理において、放送運営者から放送の開始要求があったと判定されると(ステップS102:Yes)、制御部130は、ハードディスク装置103から取り出したコンテンツデータを所定容量毎に分割しながらコンテンツパケットに格納し、ネットワーク6を介して、このコンテンツパケットを下流に論理接続された端末装置2へ送信する準備を行う。一方、同様に、放送運営者から放送の停止要求があったと判定されると(ステップS102:Yes)、制御部130は、下流に論理接続されている端末装置2に対して行っているコンテンツパケットの生成を停止し(ステップS103)、処理をステップS130に移す。
一方、ステップS102において、制御部130は、放送運営者から放送の開始要求がなかったと判定した場合には(ステップS102:NO)、ステップS110に処理を移す。
ステップS110において、コンテンツ配信装置1における制御部130は、端末装置2からセッション開設か切断の要求があったか否かを判断する。この処理において、コンテンツ配信装置1における制御部130は、ネットワーク6を介して、端末装置2からセッション開設か切断の要求があったか否かを判断することとなる。
この処理において、制御部130は、セッション開設の要求があったと判定した場合には(ステップS110:YES)、その端末装置2との接続を開設し(ステップS111)、セッション切断の要求があったと判定した場合には(ステップS110:YES)、その端末装置2との接続を切断し(ステップS111)、ステップS112に処理を移す。つまり、制御部130は、端末装置2からの要求に応じて、端末装置2の接続状態を変更設定させる制御を行うこととなる。
ステップS110においてセッション開設の要求があったと判定した場合(ステップS110:YES)、制御部130は、ステップS112において、コンテンツ配信装置1の下流に論理接続されている端末装置2に対して、コンテンツデータをストリーミング送信する。すなわち、ステップS103において生成したコンテンツパケットを、ネットワーク6を介して、下流に論理接続された端末装置2へ順次送信する。また、セッション切断の要求があったと判定されると(ステップS110:YES)、制御部130は、コンテンツ配信装置1の下流に論理接続されている端末装置2に対して、コンテンツデータのストリーミング送信を停止する。すなわち、ステップS103において生成したコンテンツパケットの送信を停止する(ステップS112)。ステップS112の処理が終了すると、制御部130は、ステップS120に処理を移す。
一方、ステップS110において、制御部130は、端末装置2からセッション開設も切断も要求がなかったと判定した場合には(ステップS110:NO)、ステップS120に処理を移す。
ステップS120において、制御部130は、電源がオフであるか否かを判断し、電源がオフであると判定した場合には(ステップS120:YES)、本処理を終了する一方、電源がオフではないと判定した場合には(ステップS120:NO)、ステップS102から繰り返し処理を実行することとなる。
(端末装置2の処理フローの説明)
次に、端末装置2の更に具体的な動作について、図23〜図32のフローチャートを参照して説明する。図23〜図32は端末装置2における処理を示すフローチャートである。なお、以下の各処理は、端末装置2の制御部230が上述した手段等として機能することによって実行されるものである。
図23に示すように、端末装置2の電源がONになると、端末装置2のCPU202は、主記憶装置205やハードディスク装置203のアクセス許可、作業領域確保を初期化等の初期設定動作を実行し、各プログラム215〜219,221をCPU202による実行状態とし、制御部230としての機能を動作させた後(ステップS200)、ステップS201に処理を移す。
ステップS201において、制御部230は、コンテンツ投入装置4から識別情報リストを取得する。この識別情報リストの取得は、制御部230がコンテンツ投入装置4に対して、識別情報リストを要求し、当該要求に対して送信される識別情報リストを受信することによって行う。
この識別情報リストは、上述のように第2配信形態において取得可能な複数のコンテンツデータの名称等とコンテンツIDとが関連付けられた情報であり、制御部230がこの識別情報リストを取得し、内蔵ディスプレイ210に表示することによって、端末装置2のユーザがリモコン208等の操作により、第2配信形態でのコンテンツデータの取得を行うことができるようにしている。
次に、制御部230は、ステップS202における初期チャンネル設定処理を行った後、ステップS203に処理を移す。このステップS202の処理は、図26におけるS240〜S247の処理であり、後述で詳説する。
ステップS203において、制御部230は、ユーザからのチャンネル選択指示があったか否かを判定する。ユーザからのチャンネル選択指示があったか否かは、リモコン208等のチャンネル選択手段からチャンネル選択指示の操作がなされたか否かにより判断される。
この処理において、制御部230は、ユーザからのチャンネル選択指示があったと判定した場合には(ステップS203:YES)、チャンネル変更処理に移行する(ステップS204)。このステップS204の処理は、図27及び図28におけるS250〜S254,S260〜S267の処理であり、後述で詳説する。
一方、ステップS203において、ユーザからのチャンネル選択指示がなかったと判定すると(ステップS203:NO)、制御部230は、接続管理装置3から上流装置の候補を受信したか否かを判定する(ステップS205)。すなわち、ステップS204におけるチャンネル変更処理において行った接続先候補の紹介要求に対して、接続管理装置3から上流装置の接続先候補が通知されたか否かを判定するのである。
この処理において、接続管理装置3から上流装置の接続先候補を受信したと判定すると(ステップS205:YES)、制御部230は、接続管理装置3から通知された上流装置の接続先候補の中から1つの接続先候補の上流装置を選択した後(ステップS206)、ステップS207の処理に移行する。
ステップS207において、制御部230は、選択した接続先候補の上流装置にネットワーク6を介して論理接続する。上流装置への論理接続は、制御部230が、当該上流装置へネットワーク6を介して接続要求を行うことによって実行される。ステップS207の処理が終了すると、制御部130は、ステップS208に処理を移す。
その後、ステップS208において、制御部230は、ネットワーク6を介して、上流装置に対してコンテンツデータのストリーミング配信を要求し、ステップS209の処理に移行する。
ステップS209において、制御部230は、ネットワーク6を介して接続管理装置3へトポロジー参加報告を送信する。
一方、ステップS205において、接続管理装置3から上流装置の候補を受信しなかったと判定すると(ステップS205:NO)、制御部230は、上流装置からコンテンツパケットを受信したか否かを判定する(ステップS210)。
この処理において、制御部230は、上流装置からコンテンツパケットを受信したと判定すると(ステップS210:YES)、上流装置から受信したコンテンツパケットからコンテンツデータを取り出してリングバッファ領域220に記憶し、更にそのコンテンツデータを取り出してコンテンツパケットとして下流側の端末装置2へ転送する(ステップS211)。
その後、制御部230は、上流装置から受信したコンテンツパケットが選択チャンネルのコンテンツパケットであるか否かを判定する(ステップS212)。選択チャンネルのコンテンツパケットであるか否かは、制御部230がネットワーク6を介して上流装置から受信したコンテンツパケットのヘッダ部に基づいて判定する。すなわち、制御部230は、コンテンツパケットのヘッダ部に含まれるチャンネル情報が、選択チャンネルであるか否かにより判定するのである。
ここで、選択チャンネルとは、参加している複数のチャンネルのうちチャンネル選択ボタン等によって最後に選択された最新のチャンネルを意味する。
この処理において、上流装置から受信したコンテンツパケットが選択チャンネルのコンテンツパケットであると判定されると(ステップS212:YES)、制御部230は、リングバッファ領域220に記憶したコンテンツデータを取得して再生する(ステップS213)。コンテンツパケットの再生は、音源チップ211やビデオチップ209を動作させることによってこの機能を実現しており、リングバッファ領域220に格納したコンテンツデータのうち再生時刻となったコンテンツパケットを順次取り出して、所定のコンテンツデータ形式(たとえば、Wave形式)に変換して音源チップ211やビデオチップ209へ入力し、コンテンツの再生を行う。
一方、自上流装置から受信したコンテンツパケットが選択チャンネルのコンテンツパケットではないと判定すると(ステップS212:NO)、制御部230は、ステップS213の処理は行わない。
ステップS210において、上流装置からコンテンツパケットを受信しなかったと判定されると(ステップS210:NO)、制御部230は、ストリーミングの配信開始/停止要求があるか否かを判定する(ステップS214)。ストリーミングの配信開始/停止要求があるか否かは、下流の端末装置2から送信されるストリーミングの配信開始要求を受信したか否か、或いは下流の端末装置2から送信されるストリーミングの配信停止要求を受信したか否かによって判断される。
この処理において、制御部230は、ストリーミングの配信の開始要求があったと判定すると(ステップS214:YES)、当該ストリーミング配信の開始要求を行った下流装置に対してのコンテンツパケットの転送を開始する(ステップS215)。また、制御部230は、ストリーミングの配信の停止要求があったと判定すると(ステップS214:YES)、当該ストリーミング配信の停止要求を行った下流装置に対してのコンテンツパケットの転送を停止する(ステップS215)。
この処理は、ステップS211におけるコンテンツパケットの転送を行うか否かの設定となり、ストリーミングの配信の開始要求があったと判定すると、コンテンツパケットの下流装置への転送を行う設定となり、ストリーミングの配信の停止要求があったと判定すると、コンテンツパケットの下流装置への転送の停止を行う設定となる。
一方、ステップS214において、ストリーミングの配信の開始要求/停止要求がなかったと判定すると(ステップS214:NO)、制御部230は、コンテンツ登録メッセージを受信したか否かを判定する(ステップS216)。コンテンツ登録メッセージを受信したか否かは、コンテンツ保持端末装置からネットワーク6を介して送信されるコンテンツ登録メッセージが自端末装置2で受信されたか否かによって判断される。
この処理において、コンテンツ登録メッセージを受信したと判定すると(ステップS216:YES)、制御部230は、主記憶装置205のインデックステーブル222に受信したコンテンツ登録メッセージに含まれるコンテンツ保持端末装置の所在情報及びコンテンツ保持端末装置が保持するコンテンツデータのコンテンツID等を関連付けてインデックステーブル222に追加する(ステップS217)。
その後、制御部230は、自端末装置2がルート端末装置であるか否かを判定する(ステップS218)。端末装置2がルート端末装置であるか否かは、受信したコンテンツ登録メッセージの宛先識別情報とルーティングテーブル223とに基づいて判断される。
この処理において、制御部230は、自端末装置2がルート端末装置でないと判定すると(ステップS218:NO)、ルーティングテーブル223に基づいて、コンテンツ登録メッセージを他の端末装置2へ転送する(ステップS219)。一方、自端末装置2がルート端末装置であると判定すると(ステップS218:YES)、制御部230は、ステップS219の処理は行わない。
ステップS216において、コンテンツ登録メッセージを受信しなかったと判定すると(ステップS216:NO)、制御部230は、コンテンツ削除メッセージを受信したか否かを判定する(ステップS220)。コンテンツ削除メッセージを受信したか否かは、ネットワーク6を介して、コンテンツ保持端末装置から送信されるコンテンツ削除メッセージが受信されたか否かによって判断される。
この処理において、制御部230は、コンテンツ削除メッセージを受信したと判定すると(ステップS220:YES)、インデックステーブル222からコンテンツ削除メッセージに対応するインデックス情報(コンテンツID、コンテンツ保持ノード装置の所在位置等)を削除した後(ステップS221)、ステップS218の処理に移行する。
ステップS220において、コンテンツ削除メッセージを受信しなかったと判定すると(ステップS220:NO)、制御部230は、投入されるコンテンツデータを受信したか否かを判定する(ステップS222)。
この処理において、制御部230は、コンテンツ投入装置4から投入されるコンテンツデータを受信したと判定すると(ステップS222:YES)、投入コンテンツ受信処理を行う(ステップS223)。この投入コンテンツ受信処理は、図29におけるS275〜S278の処理であり、後述にて詳説する。
ステップS222において、投入されるコンテンツデータ受信しなかったと判定すると(ステップS222:NO)、制御部230は、ユーザからのコンテンツ購入指示があるか否かを判定する(ステップS224)。ユーザからのコンテンツ購入指示があるか否かは、リモコン208等の入力手段からコンテンツ購入指示の操作がなされたか否かにより判断される。
この処理において、制御部230は、ユーザによるダウンロード要求の操作、すなわちコンテンツ購入指示があったと判定すると(ステップS224:YES)、コンテンツ購入処理を行う(ステップS225)。このコンテンツ購入処理は、図30におけるS280〜S289の処理であり、後述にて詳説する。ユーザによるダウンロード要求の操作は、例えば、内蔵ディスプレイ210に図16に示すような画面が表示されている状態で、ユーザによるリモコン208の所定操作が行われたときに、ユーザによるダウンロード要求の操作が行われたと判定する。
ステップS224において、ユーザからのコンテンツ購入指示がなかったと判定すると(ステップS224:NO)、制御部230は、他の端末装置2からコンテンツダウンロード要求があるか否かを判定する(ステップS226)。このコンテンツダウンロード要求は、第2配信形態でのコンテンツデータ全体の一括送信の要求であり、自端末装置2がコンテンツ保持端末装置或いはコンテンツダウンロード要求に係るコンテンツデータをキャッシュするキャッシュ装置であるときに、コンテンツダウンロード要求を受信したと判定される。
この処理において、制御部230は、他の端末装置2からコンテンツダウンロード要求があったと判定すると(ステップS226:YES)、コンテンツダウンロード要求に対応するコンテンツデータをハードディスク装置203から取り出し、コンテンツダウンロード要求を行った他の端末装置2へ取り出したコンテンツデータを送信する(ステップS227)。
また、この処理において、制御部230は、他の端末装置2からコンテンツダウンロード要求がなかったと判定すると(ステップS226:NO)、購入コンテンツデータをダウンロードしたか否かを判定する(ステップS228)。購入コンテンツデータをダウンロードしたか否かは、ユーザによるダウンロード要求の操作、すなわちコンテンツ購入指示があったときに、ダウンロード要求したコンテンツ保持端末装置からコンテンツデータが受信されたか否かにより判断される。
この処理において、購入コンテンツデータをダウンロードしたと判定すると(ステップS228:YES)。ダウンロードした購入コンテンツデータをハードディスク装置203に記憶し、保存する(ステップS229)。なお、コンテンツデータは、コンテンツ保持端末装置から所定の容量に分割されてコンテンツパケットとして送信され、制御部230は、コンテンツパケット毎に受信して、ハードディスク装置203に記憶することになる。
ステップS229の処理が終了すると、制御部230は、接続管理装置3に対して、ザッピング対策チャンネルに関する上流装置の接続先候補の紹介要求を送信する(ステップS230)。この処理は、後述するステップS284において脱退したザッピング対策チャンネルに再度参加させるための処理である。
ステップS228において、購入コンテンツデータをダウンロードしていないと判定されると(ステップS228:NO)、制御部230は、コンテンツ検索メッセージを受信したか否かを判定する(ステップS231)。コンテンツ検索メッセージを受信したか否かは、端末装置2からネットワーク6を介して、リクエスト端末装置から送信されるコンテンツ検索メッセージが受信されたか否かによって判断される。
この処理において、制御部230は、コンテンツ検索メッセージを受信したと判定すると(ステップS231:YES)、ステップS232においてコンテンツ検索処理を行う。このコンテンツ検索処理は、図32におけるS290〜S294の処理であり、後述にて詳説する。
ステップS231において、コンテンツ検索メッセージを受信しなかったと判定されると(ステップS231:NO)、制御部230は、コンテンツ保持端末装置情報を受信したか否かを判定する(ステップS233)。このコンテンツ保持端末装置情報は、コンテンツ保持端末装置の所在情報を含む情報であり、コンテンツ保持端末装置情報を受信したと判定すると(ステップS233:YES)、制御部230は、取得したコンテンツ保持端末装置の所在情報に基づいて、コンテンツ保持端末装置に対してコンテンツデータ全体の一括送信を要求する(ステップS234)。
ステップS233において、コンテンツ保持端末装置情報を受信しなかったと判定されると(ステップS233:NO)、制御部230は、第2配信形態への参加メッセージを受信したか否かを判定する(ステップS235)。
この処理において、制御部230は、第2配信形態への参加メッセージを受信したと判定すると(ステップS235:YES)、所持しているテーブル情報を参加メッセージの送信元の端末装置へ送信する(ステップS236)。すなわち、ルーティングテーブル223のテーブル情報のうち、参加メッセージの宛先識別情報と合致しないレベルのうち最もレベルの小さいレベルのテーブル情報をルーティングテーブル223から取り出し、参加メッセージを送信した端末装置2へ送信する。
その後、制御部230は、端末装置2がルート端末装置であるか否かを判定する(ステップS237)。端末装置2がルート端末装置であるか否かは、受信した参加メッセージの宛先識別情報とルーティングテーブル223とに基づいて判断される。
この処理において、制御部230は、自端末装置2がルート端末装置でないと判定すると(ステップS237:NO)、ルーティングテーブル223に基づいて、参加メッセージを他の端末装置2へ転送する(ステップS238)。一方、自端末装置2がルート端末装置であると判定すると(ステップS237:YES)、制御部230は、ステップS238の処理は行わない。
次に、S202における初期チャンネル設定処理について図26のフローチャートを参照して具体的に説明する。
図26に示すように、制御部230は、まず最終視聴チャンネル保存ファイルから視聴チャンネルを取得する(ステップS240)。この最終視聴チャンネル保存ファイルは、端末装置2の電源OFF時直前に視聴しているチャンネル(以下、「最終視聴チャンネル」と呼ぶ。)が制御部230によってハードディスク装置203に記憶され、保存されたものである。ハードディスク装置203には、最終視聴チャンネル保存ファイル記憶用領域が確保される。
次に、制御部230は、最終視聴チャンネルを取得できたか否かを判定する(ステップS241)。最終視聴チャンネルを取得できたか否かは、ハードディスク装置203に最終視聴チャンネル保存ファイルが記憶されているか否かによって判断される。すなわち、最終視聴チャンネル保存ファイルが記憶されているときには、そのファイルから最終視聴チャンネルを取得するのである。
この処理において、最終視聴チャンネルを取得できないと判定されると(ステップS241:NO)、制御部230は、最初に視聴するチャンネルをデフォルトチャンネル(ここでは、チャンネルch1とする。)に設定する。
一方、最終視聴チャンネルを取得できると判定されたとき(ステップS241:YES)、或いはステップS242において視聴チャンネルをチャンネルch1としたとき、制御部230は、最初に視聴するチャンネルを最終視聴チャンネル或いはチャンネルch1に決定し、接続管理装置3に対して、視聴チャンネルに関する上流装置の接続先候補を要求(ステップS243)し、ステップS244の処理に移行する。
ステップS244において、制御部230は、接続管理装置3に対して、視聴チャンネルのチャンネル番号よりも1だけ小さいチャンネルに関する上流装置の接続先候補を要求して、ステップS245の処理に移行する。
ステップS245において、制御部230は、接続管理装置3に対して、視聴チャンネルのチャンネル番号よりも2だけ小さいチャンネルに関する上流装置の接続先候補を要求して、ステップS246の処理に移行する。
ステップS246において、制御部230は、接続管理装置3に対して、視聴チャンネルのチャンネル番号よりも1だけ大きいチャンネルに関する上流装置の接続先候補を要求して、ステップS247の処理に移行する。
ステップS247において、制御部230は、接続管理装置3に対して、視聴チャンネルのチャンネル番号よりも2だけ大きいチャンネルに関する上流装置の接続先候補を要求する。
以上のように、初期チャンネル設定処理においては、最終視聴チャンネル或いはデフォルトチャンネルを視聴チャンネルとしてそのチャンネルの接続先候補を要求するとともに、視聴チャンネルのチャンネル番号よりも±2の範囲のチャンネルに関する接続先候補を要求するようにしている。この接続先候補の要求に対して接続管理装置3から通知される接続先候補は、前述したステップS205においてそれぞれ受信することになる。たとえば、全チャンネルがch1〜ch10である場合において、最終視聴チャンネルがch1であれば接続先候補を要求するチャンネルは、ch1のほか、ch2(ch1+1),ch3(ch1+2),ch9(ch1−1),ch10(ch1−2)となる。
次に、S204における初期チャンネル処理について図27のフローチャート及び図28のフローチャートを参照して具体的に説明する。
図27に示すように、まず制御部230は、「+」ボタンが押下されたか否かを判定する(ステップS250)。「+」ボタンが押下されたか否かは、例えば、内蔵ディスプレイ210に表示されたチャンネル選択画面が表示されている状態で、リモコン208等の操作によって、「+」ボタンが押下されたか否かによって判断される。図15には、端末装置2の内蔵ディスプレイ210に表示されるチャンネル選択画面の例を示しており、チャンネル選択ボタン22が「+」ボタンに、チャンネル選択ボタン23が「−」ボタンに対応する。なお、表示枠21にはストリーミング再生手段によって再生されるコンテンツが表示される。
この処理において、制御部230は、「+」ボタンが押下されたと判定すると(ステップS250:YES)、ステップS251において「チャンネル変更処理(+)」を実行する。
この処理は、図28(a)に示すように、ステップS260〜S263の処理からなる。まず、制御部230は、現在の視聴チャンネルのチャネル番号よりも2だけ小さいザッピング対策チャンネルにおけるコンテンツ供給元端末である上流装置に対して、コンテンツストリームの停止を要求する(ステップS260)。すなわち、現在の視聴チャンネルのチャネル番号よりも2だけ小さいザッピング対策チャンネルに関し、自端末装置2と論理接続され、自端末装置2に対して第1配信形態でストリーミング配信を行っているコンテンツ配信装置1又は他の端末装置2に対して、コンテンツデータのストリーミング配信を停止するようにネットワーク6を介して要求する。
その後、制御部230は、現在の視聴チャンネルのチャネル番号よりも2だけ小さいザッピング対策チャンネルのトポロジーから脱退する(ステップS261)。すなわち、制御部230は、現在の視聴チャンネルのチャネル番号よりも2だけ小さいザッピング対策チャンネルに関する上流装置とのセッションの切断するとともに、同ザッピング対策チャンネルに関する下流装置がある場合には、下流装置とのセッションを切断することにより、同ザッピング対策チャンネルのトポロジーから脱退し、ステップS262の処理に移行する。
ステップS262において、制御部230は、接続管理装置3に対して、現在の視聴チャンネルのチャネル番号よりも3だけ大きいチャンネルをザッピング対策チャンネルとし、このザッピング対策チャンネルに関する上流装置の接続先候補を要求して、ステップS263の処理に移行する。
ステップS263において、制御部230は、視聴チャンネルを現在の視聴チャンネルのチャネル番号に+1だけしたチャンネルに切り替える。例えば、現在の視聴チャンネルがチャンネルch5の場合、チャンネルch6を視聴チャンネルとする。
一方、図27のステップS250の処理において、制御部230は、「+」ボタンが押下されなかったと判定すると(ステップS251:NO)、「−」ボタンが押下されたか否かを判定する(ステップS252)。
この処理において、制御部230は、「−」ボタンが押下されたと判定すると(ステップS252:YES)、ステップS253において「チャンネル変更処理(−)」を実行する。
この処理は、図28(b)に示すように、ステップS264〜S267の処理からなる。まず、制御部230は、現在の視聴チャンネルのチャネル番号よりも2だけ大きいザッピング対策チャンネルにおけるコンテンツ供給元端末である上流装置に対して、コンテンツストリームの停止を要求する(ステップS264)。すなわち、現在の視聴チャンネルのチャネル番号よりも2だけ大きいザッピング対策チャンネルに関し、自端末装置2と論理接続され、自端末装置2に対して第1配信形態でストリーミング配信を行っているコンテンツ配信装置1又は他の端末装置2に対して、コンテンツデータのストリーミング配信を停止するようにネットワーク6を介して要求する。
その後、制御部230は、現在の視聴チャンネルのチャネル番号よりも2だけ大きいザッピング対策チャンネルのトポロジーから脱退する(ステップS265)。すなわち、制御部230は、現在の視聴チャンネルのチャネル番号よりも2だけ大きいザッピング対策チャンネルに関する上流装置とのセッションの切断するとともに、同ザッピング対策チャンネルに関する下流装置がある場合には、下流装置とのセッションを切断することにより、同ザッピング対策チャンネルのトポロジーから脱退し、ステップS266の処理に移行する。
ステップS266において、制御部230は、接続管理装置3に対して、現在の視聴チャンネルのチャネル番号よりも3だけ小さいチャンネルをザッピング対策チャンネルとし、このザッピング対策チャンネルに関する上流装置の接続先候補を要求して、ステップS267の処理に移行する。
ステップS268において、制御部230は、視聴チャンネルを現在の視聴チャンネルのチャネル番号に−1だけしたチャンネルに切り替える。例えば、現在の視聴チャンネルがチャンネルch5の場合、チャンネルch4を視聴チャンネルとする。
図28(a)に示すステップS251の「チャンネル変更処理(+)」の処理が終了したとき、或いは図28(b)に示すステップS253の「チャンネル変更処理(−)」の処理が終了したとき、図27に示すステップS254の処理に移行する。
この処理において、最終視聴チャンネル保存ファイルに視聴チャンネルの番号を書く。すなわち、ハードディスク装置203に記憶される最終視聴チャンネル保存ファイルの視聴チャンネル番号を、ステップS263又はステップS267で切替えた視聴チャンネルのチャンネル番号に上書きする。
以上のように、チャンネル変更処理では、ユーザによる視聴チャンネルの切替え操作が行なわれると、視聴チャンネルの切替えを行なうとともに、ザッピング対策チャンネルの切替え処理を行なうようにしている。
なお、本実施形態においては、視聴チャンネルのチャンネル番号の±2の範囲内のチャンネルをザッピング対策チャンネルとしたが、視聴チャンネルの番号ごとに、ザッピング対策チャンネルを設定するようにしてもよい。例えば、チャンネル毎に視聴頻度を検出しておき、視聴頻度の低いチャンネルが視聴チャンネルの場合には、ザッピング対策チャンネルの数を増やし、視聴頻度の高いチャンネルが視聴チャンネルの場合には、ザッピング対策チャンネルの数を減らすことにより、効率よくザッピング対策チャンネルを設定することができる。
次に、S223における投入コンテンツ受信処理について図29を参照して具体的に説明する。
まず、端末装置2の制御部230は、ステップS222において受信した投入コンテンツデータをハードディスク装置203のコンテンツデータ記憶領域に記憶し、保存する(ステップS275)。
その後、制御部230は、自端末装置2がルート端末装置であるか否かを判定する(ステップS276)。端末装置2がルート端末装置であるか否かは、受信したコンテンツデータのコンテンツの名称を所定のハッシュ関数によって演算してコンテンツIDを有する端末装置が自端末装置であるか否かによって判断される。
この処理において、制御部230は、自端末装置2がルート端末装置でないと判定すると(ステップS276:NO)、ルーティングテーブル223に基づいて、ネットワーク6を介してコンテンツ登録メッセージを他の端末装置2へ送信する(ステップS278)。一方、自端末装置2がルート端末装置であると判定すると(ステップS276:YES)、制御部230は、インデックステーブル222にコンテンツIDと自端末装置の所在情報を追加して登録する(ステップS277)。
以上のように、投入コンテンツ受信処理では、コンテンツ投入装置4から投入されたコンテンツデータをハードディスク装置203に記憶して保存するとともに、ルート端末装置のインデックステーブルに登録するようにしている。
次に、S225におけるコンテンツ購入処理について図30を参照して具体的に説明する。
まず、端末装置2の制御部230は、識別情報リストから購入するコンテンツIDを取得する(ステップS280)。すなわち、ステップS224においてユーザからのコンテンツ購入指示があったと判定したコンテンツデータに関するコンテンツIDをコンテンツ投入装置4から取得した識別情報リストから取得する。
次に、制御部230は、リングバッファ領域220内に購入コンテンツデータの完全版が存在するか否かを判定する(ステップS281)。購入コンテンツデータの完全版が存在するか否かは、ステップS225においてユーザからのコンテンツ購入指示があったと判定したコンテンツデータ全体がリングバッファ領域220に蓄積されているか否かによる判定する。なお、放送形態で視聴途中のコンテンツデータはリングバッファ領域220にその全体が蓄積されておらず、ステップS281の判定がYESとなるのは、放送形態ですでに視聴終了したコンテンツデータであって、リングバッファ領域220に蓄積されているものに限られることになる。
この処理において、リングバッファ領域220内に購入コンテンツデータの完全版が存在すると判定されると(ステップS281:YES)、制御部230は、この購入コンテンツデータをハードディスク装置203のコンテンツデータ記憶領域に記憶する(ステップS282)。リングバッファ領域220に記憶されたコンテンツデータは、ストリーミング再生用のコンテンツデータであるため、このステップS282の処理においては、リングバッファ領域220に記憶されたコンテンツデータを購入コンテンツ形式(ダウンロード形式)に変換した後、ハードディスク装置203のコンテンツデータ記憶領域に記憶することになる。また、リングバッファ領域220内に購入コンテンツデータの完全版が存在すると判定されると(ステップS281:YES)、制御部230は、ザッピング対策チャンネルのコンテンツ供給元端末である上流装置に対してコンテンツストリームの停止を要求せず、ザッピング対策チャンネルのトポロジーからの脱退も行わない。すなわち、制御部230は、ザッピング対策チャンネルに関する上流装置とのセッションを切断しない。
一方、ステップS281において、リングバッファ領域220内に購入コンテンツデータの完全版が存在しないと判定されると(ステップS281:NO)、制御部230は、全てのザッピング対策チャンネルのコンテンツ供給元端末である上流装置に対してコンテンツストリームの停止を要求する(ステップS283)。すなわち、全てのザッピング対策チャンネルに関し、自端末装置2と論理接続され、自端末装置2に対して第1配信形態でストリーミング配信を行っているコンテンツ配信装置1又は他の端末装置2に対して、コンテンツデータのストリーミング配信を停止するようにネットワーク6を介して要求する。
その後、制御部230は、全てのザッピング対策チャンネルのトポロジーから脱退する(ステップS284)。すなわち、制御部230は、全てのザッピング対策チャンネルに関する上流装置とのセッションの切断するとともに、同ザッピング対策チャンネルに関する下流装置がある場合には、下流装置とのセッションを切断することにより、同ザッピング対策チャンネルのトポロジーから脱退し、ステップS285の処理に移行する。
ステップS285の処理は、第2配信形態への参加処理であり、このステップS285の処理は、図31におけるS270〜S274の処理であり、後述で詳説する。
ステップS285における第2配信形態への参加処理が終了すると、制御部230は、制御部230は、インデックステーブル222にコンテンツIDが存在するか否かを判定する(ステップS286)。
この処理において、インデックステーブル222にコンテンツIDが存在すると判定されると(ステップS286:YES)、制御部230は、インデックステーブル222からコンテンツ保持端末装置の所在情報を取得し(ステップS287)、ステップS288の処理に移行する。
ステップS288において、制御部230は、インデックステーブル222から取得したコンテンツ保持端末装置の所在情報宛に、コンテンツ送信要求を送信する。すなわち、制御部230は、コンテンツ保持端末装置に対してダウンロード送信要求を行う。
インデックステーブル222にコンテンツIDが存在しないと判定されると(ステップS286:NO)、制御部230は、ネットワーク6を介して次の端末装置へメッセージを転送する(ステップS289)。すなわち、制御部230は、ルーティングテーブル223に基づいて、ネットワーク6を介してコンテンツ検索メッセージを他の端末装置2へ転送する。
ここで、S285における第2配信形態への参加処理について図31を参照して具体的に説明する。
まず、端末装置2の制御部230は、コンタクト先紹介装置5へネットワーク6を介して、コンタクト先情報を要求する(ステップS270)。このコンタクト先情報の要求に対して、コンタクト先紹介装置5からネットワーク6を介して送信されてくるコンタクト先情報をネットワークインタフェース204を介して受信する(ステップS271)。
受信したコンタクト先情報には、コンタクト先の端末装置の所在情報が含まれており、制御部230は、受信したコンタクト先情報に含まれるコンタクト先の端末装置に対して参加メッセージをネットワーク6を介して送信する(ステップS272)。この参加メッセージは、自端末装置の識別情報を宛先識別情報としている。
このように送信した参加メッセージは、コンタクト先の端末装置2から順次転送され、転送できない位置の端末装置2まで辿り着く。そして、参加メッセージを受信した複数の端末装置から各レベル毎のテーブル情報を受信する(ステップS273)。
次に、制御部230は、このように受信した複数のテーブル情報に基づいて、ルーティングテーブルを生成する(ステップS274)。
このように端末装置2は、購入要求要求があると、第2配信形態へ参加するようにしており、これにより複数の端末装置2間で第2配信形態によってコンテンツを送受信することが可能となっている。
以上のように、コンテンツ購入処理では、ユーザによるコンテンツの購入操作が行なわれると、全てのザッピング対策チャンネルのツリー状階層構造から脱退し、その後、第2配信形態でコンテンツデータを取得するようにしている。従って、第2配信形態でコンテンツデータを取得するときには、ザッピング対策チャンネルのツリー状階層構造から脱退するため、第2配信形態でのコンテンツデータの取得の際にザッピング対策チャンネルによる影響が無い。
なお、全てのザッピング対策チャンネルのツリー状階層構造から脱退するのではなく、第2配信形態でコンテンツデータの取得に大きな影響を与えないような場合には、一部のみのザッピング対策チャンネルのツリー状階層構造から脱退するようにしてもよい。
一部のみのザッピング対策チャンネルのツリー状階層構造から脱退する場合、制御部230は、視聴チャンネルの番号ごとに脱退するザッピング対策チャンネルを設定するようにしてもよい。
例えば、制御部230は、チャンネル毎に視聴頻度を検出しておき、視聴頻度の低いチャンネルが視聴チャンネルの場合には、脱退するザッピング対策チャンネルの数を少なくし、視聴頻度の高いチャンネルが視聴チャンネルの場合には、脱退するザッピング対策チャンネルの数を増やすようにすることもできる。
また、制御部230は、第2配信形態でのコンテンツデータの取得状況に応じて、脱退するザッピング対策チャンネルを設定するようにしてもよい。この場合、制御部230は、第2配信形態でのコンテンツデータの取得前に、一部のザッピング対策チャンネルから脱退し、その後、第2配信形態でのコンテンツデータの取得状況(例えば、第2配信形態でのコンテンツデータの受信速度など)に応じて、脱退するザッピング対策チャンネルを増減させる。例えば、第2配信形態でのコンテンツデータの受信速度が所定速度範囲内となるように、脱退するザッピング対策チャンネルを増減させるのである。
次に、S232におけるコンテンツ検索処理について図32を参照して具体的に説明する。
まず、端末装置2の制御部230は、ステップS231において受信したコンテンツ検索メッセージからコンテンツIDを取得する(ステップS290)。
次に、制御部230は、コンテンツ検索メッセージから取得したコンテンツIDがインデックステーブル222に存在するか否かを判定する(ステップS291)。
この処理において、制御部230は、コンテンツ検索メッセージから取得したコンテンツIDがインデックステーブル222に存在すると判定すると(ステップS291:YES)、インデックステーブル222からコンテンツ保持端末装置の所在情報を取得し(ステップS292)、ステップS293の処理に移行する。
ステップS293において、制御部230は、インデックステーブル222から取得したコンテンツ保持端末装置の所在情報をネットワーク6を介してリクエスト端末装置へ送信する。
一方、ステップS291において、コンテンツ検索メッセージから取得したコンテンツIDがインデックステーブル222に存在しないと判定されると(ステップS291:NO)、制御部230は、ネットワーク6を介して次の端末装置へメッセージを転送する(ステップS294)。すなわち、制御部230は、ルーティングテーブル223に基づいて、コンテンツ検索メッセージをネットワーク6を介して他の端末装置2へ転送する。
このように端末装置2のユーザは、コンテンツ配信装置から放送形態でストリーミング配信されるコンテンツを視聴中にチャンネルを切替えた場合であっても、切替え先チャンネルのコンテンツをザッピング対策用に受信しているため、切替え先のコンテンツデータをすぐに視聴することができる。しかも、第2配信形態であるP2Pグリッド型配信形態でコンテンツをダウンロードするときには、ザッピング対策チャンネルから脱退するようにしているため、第2配信形態によるコンテンツのダウロードのために通信帯域を確保することができる。
また、本実施形態における端末装置2は、放送形態で配信されるコンテンツデータをリングバッファ領域に一時的にキャッシュしておき、購入するコンテンツデータがこのリングバッファ領域に蓄積されているときには、リングバッファ領域に蓄積されたコンテンツデータを購入することができる。
従って、新たにP2Pグリッド型配信形態でコンテンツデータを取得するのに比べコンテンツデータの購入処理を短縮することができる。リングバッファ領域の容量を大きくすることによって、放送形態で配信されたコンテンツデータを多数キャッシュすることができるので、コンテンツデータを視聴した後にダウンロードすることが多いようなユーザに対してダウンロード時間の短縮効果が大きい。
(接続管理装置3の処理フローの説明)
次に、接続管理装置3の更に具体的な動作について、図33を参照して説明する。図33は接続管理装置3における処理全体を示すフローチャートである。なお、以下の各処理は、接続管理装置3の制御部330が上述した各手段として機能することによって実行されるものである。
接続管理装置3の電源がONになると、接続管理装置3のCPU302は、主記憶装置305やハードディスク装置303のアクセス許可、作業領域確保を初期化等の初期設定動作を実行し、各プログラム317〜320をCPU302による実行状態とし、制御部330としての機能を動作させた後(ステップS300)、ステップS301に処理を移す。
ステップS301において、制御部330は、端末装置2からの参加要求があるか否かを判定する。この処理において、制御部330は、端末装置2からの第1配信形態への参加要求がネットワーク6を介して受信されたか否かを判定することになる。また、端末装置2からの参加要求には、第1配信形態のうち端末装置2が参加したいチャンネル情報が含まれている。
この処理において、制御部330は、端末装置2から第1配信形態への参加要求を受信したと判定すると(ステップS301:YES)、受信した参加要求に含まれる端末装置2の所在情報をハードディスク装置の端末管理データベース314へ登録する(ステップS302)。
一方、ステップS301において、端末装置2から第1配信形態への参加要求を受信しなかったと判定すると(ステップS301:NO)、制御部330は、コンテンツ配信装置1からの登録要求を受信したか否かを判定する(ステップS310)。
ステップS310において、コンテンツ配信装置1からの登録要求を受信したと判定すると(ステップS310:YES)、制御部330は、受信した登録要求に含まれるコンテンツ配信装置1の所在情報を端末管理データベース314へ登録する(ステップS311)。
次に、制御部330は、新しいチャンネルの情報をトポロジーデータベース315に登録する。すなわち、トポロジーデータベース315に新しいチャンネルのトポロジーテーブルを生成するのである(ステップS312)。
ステップS310において、コンテンツ配信装置1からの登録要求を受信していないと判定すると(ステップS310:NO)、制御部330は、端末装置2から接続先紹介要求をネットワーク6を介して受信したか否かを判定する(ステップS320)。
ステップS320において、端末装置2から接続先紹介要求をネットワーク6を介して受信したと判定すると(ステップS320:YES)、制御部330は、トポロジーデータベース315から接続先紹介要求にかかるチャンネルに対する接続先候補となる端末装置2またはコンテンツ配信装置1を選択する(ステップS321)。
接続管理装置3の制御部330は、このように選択した接続先候補を、接続先紹介要求を行った端末装置2へネットワーク6を介して返信して通知する(ステップS322)。
ステップS320において、端末装置2から接続先紹介要求を受信していないと判定すると(ステップS320:NO)、制御部330は、端末装置2からトポロジー参加報告があったか否かを判定する(ステップS330)。端末装置2からトポロジー参加報告があったか否かは、端末装置2からネットワーク6を介してトポロジー参加報告を受信したか否かにより判定する。
ステップS330において、端末装置2からトポロジー参加報告があったと判定すると(ステップS330:YES)、制御部330は、このトポロジー参加報告に含まれる端末装置2の所在情報を取り出し、トポロジーデータベース315の更新処理を行う(ステップS331)。すなわち、制御部330は、トポロジーの変動をトポロジーデータベース315へ登録する。
ステップS302,S312,S322,S331の処理が終了したとき、或いはステップS330において端末装置2からトポロジー参加報告がないと判定したとき(ステップS330:NO)、制御部330は、接続管理装置3のサービス終了の操作が行われたか否かを判定する(ステップS340)。サービスの終了操作が行われていないと判定すると(S340:NO)、ステップS301からの処理を繰り返し、接続管理装置3のサービス終了の操作が行われたと判定すると(S340:YES)、処理を終了する。
(コンテンツ投入装置4の処理フローの説明)
次に、コンテンツ投入装置4の更に具体的な動作について、図34を参照して説明する。図34はコンテンツ投入装置4における処理全体を示すフローチャートである。なお、以下の各処理は、コンテンツ投入装置4の制御部430が上述した手段等として機能することによって実行されるものである。
コンテンツ投入装置4の電源がONになると、コンテンツ投入装置4のCPU402は、主記憶装置405やハードディスク装置403のアクセス許可、作業領域確保を初期化等の初期設定動作を実行し、各プログラム417〜419をCPU402による実行状態とし、制御部430としての機能を動作させた後(ステップS400)、ステップS401に処理を移す。
ステップS401において、制御部430は、コンテンツ投入指示があるか否かを判定する(ステップS401)。ここで、コンテンツ投入指示があるか否かは、制御部430は、キーボード407やマウス408等の入力手段からのコンテンツ投入の操作がなされたか否か、或いは後述するステップS410においてコンテンツ配信装置1からコンテンツデータの送信要求があったか否かにより判断される。このコンテンツ投入指示は、コンテンツの名称によってコンテンツデータを特定して行われるものである。
この処理において、コンテンツ投入指示があると判定されると(ステップS401:YES)、制御部430は、コンテンツ投入指示によって特定されたコンテンツデータに対応するコンテンツIDをハードディスク装置403に記憶した管理テーブルに記憶した後(ステップS402)、ステップS403に処理を移す。この管理テーブルは、ハードディスク装置403に記憶している複数のコンテンツデータとコンテンツIDとが関連付けて記憶され、更に、ハードディスク装置403に記憶しているコンテンツデータそれぞれについて、コンテンツ配信装置1やコンテンツ保持端末装置へ投入したものであるか否かのフラグが各コンテンツに関連付けて記憶されるものである。なお、フラグには、未投入フラグ(フラグの値が「0」)と投入済フラグ(フラグの値が「1」)とがある。
ステップS403において、制御部430は、識別情報リストを更新し、ステップS404に処理を移す。この識別情報リストの更新は、コンテンツ投入指示によって特定されたコンテンツデータに対応するコンテンツID及びコンテンツの名称とを、ハードディスク装置403に記憶した識別情報リストに追加記憶することによって行う。
ステップS404において、制御部430は、コンテンツ投入指示によって特定されたコンテンツデータを第2配信形態によって配信可能とするために、コンテンツ投入指示によって特定されたコンテンツデータのコンテンツ保持端末装置となる端末装置2をランダムに1以上決定する。このように決定した端末装置2に対して、制御部430は、コンテンツ投入指示によって特定されたコンテンツデータをネットワーク6を介して送信する。
一方、ステップS401において、コンテンツ投入指示がないと判定されると(ステップS401:NO)、制御部430は、コンテンツ配信装置1からコンテンツデータの送信要求があったか否かを判定する。コンテンツデータの送信要求には、コンテンツの名称などによってコンテンツデータを特定して行われるものである。
この処理において、コンテンツ配信装置1からコンテンツデータの送信要求があったと判定されると(ステップS410:YES)、制御部430は、コンテンツデータの送信要求に対応するコンテンツデータをハードディスク装置403から取り出し、ネットワーク6を介してコンテンツ配信装置1へ送信する(ステップS411)。
また、ステップS410において、コンテンツ配信装置1からコンテンツデータの送信要求がないと判定されると(ステップS410:NO)、制御部430は、端末装置2から識別情報リストの送信要求があったか否かを判定する(ステップS420)。
この処理において、端末装置2から識別情報リストの送信要求があったと判定すると(ステップS420:YES)、制御部430は、ハードディスク装置403に記憶している識別情報リストを取り出す。制御部430は、この識別情報リストを、ネットワーク6を介して識別情報リストの送信要求を行った端末装置へ送信する(ステップS421)。
ステップS404,S411,S421の処理が終了したとき、或いはステップS420において端末装置2からトポロジー参加報告がないと判定したとき(ステップS420:NO)、制御部430は、コンテンツ投入装置4のサービス終了の操作が行われたか否かを判定する(ステップS430)。サービスの終了操作が行われていないと判定すると(S430:NO)、ステップS401からの処理を繰り返し、コンテンツ投入装置4のサービス終了の操作が行われたと判定すると(S430:YES)、処理を終了する。
以上のように、コンテンツ投入装置4は、第1配信形態におけるコンテンツ配信装置1と第2配信形態における端末装置2とに対してコンテンツデータを送信して投入するようにしており、コンテンツ投入装置4によってコンテンツ配信システムSにおける第1配信形態と第2配信形態へ投入するコンテンツデータを管理することができる。また、識別情報リストを生成及び更新し、端末装置2からの要求に応じて送信するようにしており、これにより端末装置2は、第1配信形態で配信されるコンテンツデータを、第2配信形態での取得を容易にしている。
また、コンテンツ投入装置4は、コンテンツ配信装置1によってストリーミング配信するコンテンツデータ以外のコンテンツデータの識別情報を含む識別情報リストを記憶することができるので、放送形態で直接配信されるコンテンツデータ以外のコンテンツデータをP2Pグリッド型配信形態で取得することができる。例えば、コンテンツデータが音楽コンテンツの場合には、過去に視聴した音楽コンテンツをP2Pグリッド型配信形態で取得することが可能となる。
(コンタクト先紹介装置5の処理フローの説明)
次に、コンタクト先紹介装置5の更に具体的な動作について、図35を参照して説明する。図35はコンタクト先紹介装置5における処理全体を示すフローチャートである。なお、以下の各処理は、コンタクト先紹介装置5の制御部530が上述した手段等として機能することによって実行されるものである。
コンタクト先紹介装置5の電源がONになると、コンタクト先紹介装置5のCPU502は、主記憶装置505やハードディスク装置503のアクセス許可、作業領域確保を初期化等の初期設定動作を実行し、各プログラム517〜519をCPU502による実行状態とし、制御部530としての機能を動作させた後(ステップS500)、ステップS501に処理を移す。
ステップS501において、制御部430は、コンタクト先紹介要求があるか否かを判定する(ステップS501)。ここで、コンタクト先紹介要求があるか否かは、制御部530が端末装置から送信されるコンタクト先紹介要求をネットワーク6を介して受信したか否かによって判断される。
この処理において、コンタクト先紹介要求があると判定されると(ステップS501:YES)、制御部530は、コンタクト先紹介要求を行った端末装置に対して、第2配信形態におけるコンタクト先候補を返信する(ステップS502)。
ステップS502の処理が終了したとき、或いはステップS501においてコンタクト先紹介要求がないと判定したとき(ステップS501:NO)、制御部530は、コンタクト先紹介装置5のサービス終了の操作が行われたか否かを判定する(ステップS503)。サービスの終了操作が行われていないと判定すると(S503:NO)、ステップS501からの処理を繰り返し、コンタクト先紹介装置5のサービス終了の操作が行われたと判定すると(S503:YES)、処理を終了する。
[8.変形例1]
上記実施形態においては、識別情報リストの端末装置2への送信をコンテンツ投入装置4から行うようにしたが、本変形例1では、以下に述べる構成を上記実施形態に付加することによってコンテンツ配信装置1から送信する。なお、コンテンツ投入装置4は、識別情報リストを生成及び更新せず、又端末装置2はコンテンツ投入装置4に対して識別リストの送信要求を行わない。
コンテンツ配信装置1の制御部130は、コンテンツデータの識別情報を第1配信形態を用いて送信する。コンテンツデータの識別情報の送信は、そのコンテンツデータに含ませて送信するようにしてもよく、又コンテンツデータとは別に送信するようにしてもよい。この処理は、コンテンツ管理プログラム121をCPU102が主記憶装置105から読み出して実行されることにより、識別情報送信手段として機能するものである。すなわち、識別情報送信手段は、配信手段によってストリーミング配信するコンテンツデータの識別情報を送信するのである。
また、端末装置2は、コンテンツ配信装置1から送信されるコンテンツデータの識別情報を用いて、ダウンロード要求されたコンテンツデータの識別情報を取得する。この処理は、コンテンツ購入プログラム221を主記憶装置205からCPU202が読み出して実行することにより、識別情報受信手段として機能するものである。すなわち、識別情報受信手段は、コンテンツ配信装置1から送信されるコンテンツデータの識別情報を受信するのである。そして、識別情報取得手段は、識別情報受信手段によって受信したコンテンツデータの識別情報からダウンロード要求されたコンテンツデータの識別情報を取得する。
このように、P2Pグリッド型配信形態においてコンテンツデータをダウンロードするために必要なコンテンツデータの識別情報がコンテンツ配信装置1から端末装置2へ送信される。従って、端末装置2では、ダウンロードするコンテンツデータの識別情報をコンテンツ投入装置4などに要求して取得する必要がないため、コンテンツ投入装置における処理を軽減することができる。また、コンテンツデータの識別情報をストリーミング配信するコンテンツパケットのヘッダに含ませてコンテンツ配信装置から送信するようにすることもできる。
[9.変形例2]
上記実施形態においては、ルート端末装置がリクエスト端末装置に対してコンテンツデータの所在情報を送信し、リクエスト端末装置がコンテンツ保持端末装置から、そのコンテンツデータをダウンロードして取得するものであったが、ルート端末装置がコンテンツ保持端末装置に対して、リクエスト端末装置へのコンテンツデータの送信を要求するようにしてもよい。
この場合、図36に示すように、ルート端末装置2Zは、リクエスト端末装置2Xから要求されたコンテンツデータを保持するコンテンツ保持端末装置2Yの所在情報をインデックステーブル222から取り出す。そして、当該コンテンツ保持端末装置2Yの所在情報に基づいて、リクエスト端末装置2Xの所在情報を含めたコンテンツデータの送信要求をコンテンツ保持端末装置2Yへ送信する。コンテンツ保持端末装置2Yは、コンテンツデータの送信要求を受信すると、このコンテンツデータの送信要求に含まれるリクエスト端末装置2Xの所在情報に対して、コンテンツデータの送信要求に対応するコンテンツデータを送信することになる。
すなわち、端末装置2の制御部230は、リクエスト端末装置2Xからコンテンツ検索メッセージをルート端末装置2Zとして受信したとき、コンテンツ保持端末装置情報返信手段の機能に代えて、コンテンツ保持端末装置情報選択手段によって選択されたコンテンツ保持端末装置2Yの所在情報を宛先として、リクエスト端末装置2Xの所在情報を含めたコンテンツデータの送信要求を送信するコンテンツデータ送信要求手段として機能する。
なお、リクエスト端末装置2Xは、ダウンロード先検索手段によって検索メッセージを送信し、ダウンロードデータ受信手段は、この検索メッセージに応じたコンテンツデータをコンテンツ保持端末装置2Yから受信する。
このようにルート端末装置がコンテンツ保持端末装置に対して、リクエスト端末装置へのコンテンツデータの送信を要求するように第2配信形態を構成することも可能である。
[10.その他の変形例]
上記実施形態においては、各端末装置2は、コンテンツ配信システムSに参加する場合、第1配信形態に参加すると同時に、第2配信形態にも参加するようにしたが、端末装置2のユーザからダウンロード要求があったときに、第2配信形態に参加するようにしてもよい。第1配信形態に参加すると同時に、第2配信形態にも参加するようにした場合、第2配信形態に参加する端末装置2の数を増加させることができ、第2配信形態におけるコンテンツ配信を安定させて動作することができるが、端末装置2のユーザからダウンロード要求があったときに、第2配信形態に参加するようにすれば、端末装置2や第2配信形態における負荷を低減することができる。
また、第1配信形態の放送形態としてツリー状階層構造を例にして説明したが、これに限られず、サーバ−クライアント型の放送形態でもよい。
また、第2配信形態として、Pastry型のコンテンツ配信システムを例にして説明したが、これに限られず、メッセージの転送方法が異なるkademlia型、chord型、Viceroy型、CAN型などのコンテンツ配信システムにも本発明を適用可能である。