【文献】
鈴木健太郎,他3名,連続メディアデータ放送のためのP2P配信システムの設計と実装,マルチメディア,分散,協調とモバイル(DICOMO2008)シンポジウム論文集 情報処理学会シンポジウムシリーズ Vol.2008 No.1 [CD−ROM],日本,社団法人情報処理学会,2008年 7月 9日,第2008巻,第1号,p.1378-1385
(58)【調査した分野】(Int.Cl.,DB名)
P2Pネットワークにより、上流の端末装置から映像ストリームのデータを受信しバッファメモリに蓄積して再生し、前記バッファメモリから映像ストリームのデータを読み出して下流の端末装置へ送信する端末装置において、
前記上流の端末装置のバッファメモリに蓄積されている映像ストリームのデータのうち、前記上流の端末装置における再生前の映像ストリームのデータ及び再生後の所定時間前までの映像ストリームのデータを識別するバッファマップを取得するためのバッファマップ要求を前記上流の端末装置へ送信し、前記上流の端末装置から前記バッファマップを取得するバッファマップ取得手段と、
前記バッファマップ取得手段により取得されたバッファマップにより識別される映像ストリームのデータを取得するためのデータ要求を、前記上流の端末装置へ送信し、前記上流の端末装置からデータ要求に対応するデータを受信し、前記バッファメモリに蓄積するデータ取得手段と、
を備えたことを特徴とする端末装置。
【背景技術】
【0002】
従来、ライブ映像等を配信するP2Pネットワークサービスが知られている。P2Pネットワークサービスは、ネットワーク上で対等な関係にある端末装置間を相互に接続することにより、ライブ映像等のデータを送受信する通信サービスをいう。P2Pネットワークサービスを実現するための端末装置間の接続構造の例として、メッシュ型、ツリー型があり、端末装置間でデータを中継する手法の例として、プル型、プッシュ型がある。以下に説明するP2Pネットワークは、接続構造がメッシュ型であり、データ中継手法がプル型であるものとして説明する。
【0003】
図17(1)は、P2Pネットワークにおけるメッシュ型接続構造を説明する図であり、
図17(2)は、P2Pネットワークにおけるプル型中継手法を説明する図である。
図17(1)を参照して、メッシュ型接続構造は、上流の端末装置と下流の端末装置との間の接続数の関係が、m:n(m,nは正の整数)となる構造をいう。このようなメッシュ型接続構造のP2Pネットワークにおいて、例えば、波長分割多重伝送を行うことで、安定した通信及びスケーラビリティを実現する手法が提案されている(例えば、特許文献1を参照)。
【0004】
図17(2)を参照して、プル型中継手法は、下流の端末装置からの要求に従って上流の端末装置がデータを送信する手法である。具体的には、端末装置100A,100B,100Cを含むP2Pネットワークの通信システムにおいて、以下のステップS1〜ステップS3の処理を行うことにより、上流の端末装置100A,100Bが保持しているデータが下流の端末装置100Cへ送信される。まず、上流の端末装置100Aは、保持しているデータのシーケンス番号(データチャンク(DC)番号)をバッファマップとして下流の端末装置100Cへ通知する(ステップS1)。DCについては後述する。端末装置100Cは、端末装置100Aからバッファマップを受信し、バッファマップが示すシーケンス番号に基づいて、保持していないデータを取得するための要求を端末装置100Aへ通知する(ステップS2)。そして、端末装置100Aは、端末装置100Cからの要求に従って、要求されたデータを端末装置100Cへ送信する(ステップS3)。例えば、端末装置100Cは、端末装置100A,100Bから取得したバッファマップが示すシーケンス番号に基づいて、データ「1」「3」を取得するための要求を端末装置100Aへ送信することでデータ「1」「3」を受信し、データ「2」「4」を取得するための要求を端末装置100Bへ送信することでデータ「2」「4」を受信する。これにより、端末装置100Cは、上流の端末装置100A,100Bからデータ「1」「2」「3」「4」を取得することができる。
【0005】
また、端末装置100Cは、自らが保持しているデータのシーケンス番号をバッファマップとして、図示しない下流の端末装置へ通知する。そして、端末装置100Cは、下流の端末装置から要求に従って、要求されたデータを下流の端末装置へ送信する。これにより、端末装置100Cは、下流の端末装置へデータを送信することができる。
【0006】
このように、P2Pネットワークは、ライブ映像等の配信サービスを受ける複数の端末装置により構成されるP2Pグループを形成し、1台の端末装置に対し、上流側に複数の端末装置を接続し、下流側に複数の端末装置を接続する。1台の端末装置は、複数の上流の端末装置からデータを取得し、取得したデータを中継することで複数の下流の端末装置へデータを提供する。このようなP2Pネットワークの通信システムによれば、端末装置は、ライブ映像等を配信する配信サーバから直接的にデータを受信することなく、上流の端末装置からデータを受信するから、効率的な配信サービスを実現することができる。
【0007】
図18は、従来のP2Pネットワークにおける処理の概要を説明する図である。このP2Pネットワークを含む通信システムは、ライブ映像等のデータを配信する図示しない配信サーバ、配信サーバからのデータを中継する複数の端末装置、及び、P2Pネットワークに参加している端末装置のアドレスの情報等を管理する図示しないディレクトリサーバを備えて構成される。このようなP2Pネットワークに新たに端末装置100Cが参加した場合、端末装置100Cは、ディレクトリサーバから、上流の端末装置100A,100Bに関するアドレスの情報等を取得する。そして、端末装置100Cは、上流の端末装置100A,100Bのバッファメモリに蓄積されている視聴ポイント以降(再生前)のライブ映像等のデータに関する情報が示されたバッファマップA,Bを取得する。視聴ポイントは、映像データが再生される現在の位置であって、配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。ここで、端末装置100Cは、先に、端末装置100BからバッファマップBを取得し(ステップS1801)、その後に、端末装置100AからバッファマップAを取得するものとする(ステップS1802)。
【0008】
バッファマップは、バッファメモリに蓄積されている映像データの状態(データチャンクの蓄積状態)を示す保管情報であり、データチャンク番号を識別可能な情報からなる。データチャンク(DC)とは、映像データを所定のサイズで分割したときのデータをいい、例えば1秒間の映像データをいう。データチャンク番号(DC番号)とは、映像データを所定のサイズ毎のDCに時間軸上で順番に分割したときのDCの番号をいい、映像データのDCを識別するためのシーケンシャルな番号をいう。
【0009】
いま、端末装置100Aのバッファメモリには、DC10〜DC21が蓄積されており、端末装置100Aは再生中であって、その視聴ポイントがDC16であるとする。また、端末装置100Bのバッファメモリには、DC11〜DC14が蓄積されており、端末装置100Bは再生中でなく(非再生中であって)、その視聴ポイントがDC11であるとする。端末装置Bが非再生中であるのは、再生スレッショルドを満たすデータがバッファメモリに蓄積されていないからである。再生スレッショルドは、非再生中のときに再生を開始するために必要なデータ量の位置を示している。つまり、端末装置100Bは、非再生中のときに再生を開始するために、DCが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のDCを読み出して再生を行う。
図18に示すように、バッファマップAは、DC16〜DC21が蓄積されていることを示しており、バッファマップBは、DC11〜DC14が蓄積されていることを示している。
【0010】
端末装置100Cは、取得したバッファマップA,Bのうちの先に取得したバッファマップBを特定し、特定したバッファマップBが示す最も古い(過去の)データを特定し、そのデータの位置を視聴ポイントに設定する。
図18では、バッファマップBが示す最も古いデータはDC11であるから、端末装置100Cは、DC11の位置を視聴ポイントに設定する。そして、端末装置100Cは、バッファマップA,Bに基づいて、データの取得先である端末装置100Aまたは端末装置100Bを決定し、上流の端末装置100A,100Bへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【発明を実施するための形態】
【0026】
以下、本発明を実施するための形態について図面を用いて詳細に説明する。以下に説明する実施例1,2は、P2Pネットワークを構成する複数の端末装置、ライブ映像等の映像ストリームを配信する配信サーバ、及び、端末装置からの要求に従って映像データを送信するパッチングサーバを含む通信システムを対象とする。
【0027】
実施例1の端末装置は、上流の端末装置のバッファメモリに蓄積されている視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイント以前のデータ(再生後のデータ)に関する情報が示されたバッファマップを取得し、取得したバッファマップに基づいて、上流の端末装置からデータを取得することを特徴とする。これにより、例えば、一部の上流の端末装置が非再生中であり、他の上流の端末装置が再生中の場合、端末装置が、非再生中の上流の端末装置から取得したバッファマップが示す最も古いデータの位置を視聴ポイントに設定したときであっても、再生中の上流の端末装置から取得したバッファマップに基づいて、再生中の上流の端末装置から、非再生中の上流の端末装置が蓄積していないデータであって再生中の上流の端末装置が蓄積しているデータ(再生後のデータ)を取得することができる。したがって、端末装置は、上流の端末装置に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを効率良く取得することができる。また、視聴ポイントは大きく遅延することがないから、安定した配信サービスを実現することができる。
【0028】
実施例2の端末装置は、実施例1に加えさらに、上流の端末装置からデータを取得できないため、視聴ポイントが上流の端末装置よりも所定時間遅れている場合、パッチングサーバからデータを取得することを特徴とする。これにより、端末装置が、再生中の上流の端末装置からデータを取得する直前に、その上流の端末装置がP2Pネットワークから離脱したり、そのデータが上流の端末装置に蓄積されていなかったりした場合であっても、端末装置は、そのデータを確実に取得することができる。したがって、端末装置は、上流の端末装置に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを効率良く、かつ確実に取得することができる。また、視聴ポイントは大きく遅延することがないから、一層安定した配信サービスを実現することができる。
【0029】
〔P2Pネットワークの通信システム〕
図1は、本発明の実施形態によるP2Pネットワークを含む通信システムの全体構成を示す概略図である。この通信システム5は、
図17(1)(2)に示したメッシュ型接続構造及びプル型中継手法のP2Pネットワークを構成し、複数の端末装置(以下、「ノード」という。)1A,1B,1C,・・・(総称して「ノード1」という。)、配信サーバ2、パッチングサーバ3及びディレクトリサーバ4を備えている。これらの装置は、インターネット等の通信回線を介して接続される。
【0030】
ノード1は、P2Pネットワークにより、配信サーバ2から配信された映像ストリームのデータを、上流側に接続されたノード1(以下、「上流ノード1」という。)から受信して蓄積し、下流側に接続されたノード1(以下、「下流ノード1」という。)へ送信すると共に、蓄積したデータをデコードして再生する。また、ノード1は、蓄積している映像ストリームのデータが所定量以下になったときに行うパッチング処理、及び、上流ノード1からデータを取得できないため、視聴ポイントが上流ノード1よりも所定時間遅れているときに行う遅延処理により、パッチングサーバ3から映像ストリームのデータを受信する。パッチング処理及び遅延処理については後述する。
【0031】
配信サーバ2は、映像ストリームをエンコードし、エンコードした映像ストリームのデータをDC毎に、P2Pネットワークによりそれぞれのノード1へ配信すると共に、パッチングサーバ3へ送信する。
【0032】
パッチングサーバ3は、配信サーバ2から映像ストリームのデータを連続的に受信して記憶装置に蓄積し、受信したデータに基づいて、現在の視聴ポイントを設定する。そして、パッチングサーバ3は、ノード1から視聴ポイント要求を受信し、設定した現在の視聴ポイントを、視聴ポイント要求を送信してきたノード1へ送信する。また、パッチングサーバ3は、ノード1からデータ要求を受信し、データ要求に対応した映像ストリームのデータを、データ要求を送信してきたノード1へ送信する。
【0033】
ディレクトリサーバ4は、P2Pネットワークに参加しているノード1、配信サーバ2及びパッチングサーバ3のアドレス等の情報を管理すると共に、ノード1における視聴ポイント及び視聴ポイントの遅延時間を管理する。ディレクトリサーバ4は、P2Pネットワークに新たに参加したノード1から当該ノード1に関する情報を受信し、通信システム5を構成する配信サーバ2及びパッチングサーバ3に関する情報、P2Pネットワークに参加している全てまたは一部のノード1に関する情報、並びに、上流ノード1に関する情報及び下流ノード1に関する情報を、新たに参加したノード1へ送信する。これにより、新たに参加したノード1は、配信サーバ2、パッチングサーバ3、上流ノード1及び下流ノード1との間で通信を行うことができる。また、ディレクトリサーバ4は、ノード1から視聴ポイント及び視聴ポイントの遅延時間を受信し、全てのノード1の視聴ポイント及び遅延時間を管理する。
【0034】
〔実施例1〕
まず、実施例1について説明する。実施例1のノード1は、上流ノード1のバッファメモリに蓄積されている視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイント以前のデータ(再生後のデータ)に関する情報が示されたバッファマップを取得し、取得したバッファマップに基づいて、上流ノード1からデータを取得する例である。
図2は、実施例1におけるP2Pネットワークの処理の概要を説明する図である。
図2に示すように、ノード1Cの上流ノードがノード1A,1Bであり、ノード1Aのバッファメモリには、再生後のDC10〜DC15及び再生前のDC16〜DC21が蓄積され、視聴ポイントがDC16の位置に設定され、ノード1Aは再生中であるものとする。また、ノード1Bのバッファメモリには、再生前のDC11〜DC14が蓄積され、視聴ポイントがDC11に設定され、ノード1Bは非再生中であるものとする。
【0035】
ノード1Cは、P2Pネットワークへ参加すると、図示しないディレクトリサーバ4から上流ノード1A,1Bに関するアドレスの情報等を受信し、上流ノード1A,1Bからバッファマップを取得する。ここで、ノード1Cは、先に、上流ノード1BからバッファマップBを取得し(ステップS201)、その後に、上流ノード1AからバッファマップAを取得するものとする(ステップS202)。
【0036】
ノード1Cが上流ノード1A,1Bから取得するバッファマップには、上流ノード1A,1Bのバッファメモリに蓄積されている視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイントよりも所定時間前のデータ(再生後の所定時間前までのデータ)に関する情報が示されている。
図2では、上流ノード1Aから取得するバッファマップAには、DC13〜DC21に関する情報が示されており、DC13〜DC15は再生後のデータであり、DC16〜DC21は再生前のデータである。また、上流ノード1Bから取得するバッファマップBには、DC11〜DC14に関する情報が示されており、DC11〜DC14は再生前のデータである。上流ノード1Bのバッファメモリには再生後のデータが蓄積されていないから、バッファマップBには、再生後のデータに関する情報が示されていない。
【0037】
ノード1Cは、取得したバッファマップA,Bのうちの先に取得したバッファマップBを特定し、特定したバッファマップBが示す最も古いDC11を特定し、そのDC11の位置を視聴ポイントに設定する。そして、ノード1Cは、バッファマップA,Bに基づいて、データの取得先である上流ノード1Aまたは上流ノード1Bを決定し、上流ノード1A,1Bへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【0038】
図2に示した例では、ノード1Cは、バッファマップBに基づいて、上流ノード1BからDC11〜DC14を取得し(ステップS203)、バッファメモリに蓄積する(ステップS204)。そして、ノード1Cは、バッファマップAに基づいて、上流ノード1AからDC15〜DC21を取得し(ステップS205)、バッファメモリに蓄積する(ステップS206)。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード1Cは、バッファメモリから視聴ポイントのDC11を読み出し、再生を開始する(ステップS207)。
【0039】
このように、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード1Cは、
図18に示した従来技術では取得できなかった所望のデータであるDC15を、上流ノード1Aから取得することができる。したがって、ノード1Cは、非再生中の上流ノード1Bに所望のデータであるDC15が蓄積されるのを待つ必要がなく、再生中の上流ノード1Aから効率良く取得することができ、低遅延にて再生を開始することができる。
【0040】
(実施例1によるノードの構成)
実施例1によるノード1の構成について説明する。
図3は、実施例1によるノード1の構成を示すブロック図である。このノード1は、送受信手段10、バッファメモリ11、再生手段12、バッファマップ保存手段13及びバッファマップ作成手段14を備えている。
図3に示す構成は、
図1に示した通信システム5に含まれるノード1A,1B,1C,・・・に共通である。送受信手段10は、配信サーバ2、パッチングサーバ3、ディレクトリサーバ4、上流ノード1及び下流ノード1との間で通信を行う。
【0041】
図4は、
図3に示した送受信手段10の構成を示すブロック図である。送受信手段10は、ネットワーク参加処理手段51、バッファマップ取得手段52、視聴ポイント設定手段53、データ取得手段54、パッチング手段55、バッファマップ送信手段56及びデータ送信手段57等を備えている。
【0042】
送受信手段10のネットワーク参加処理手段51は、当該ノード1がP2Pネットワークに新たに参加するときに、当該ノード1のアドレス等の情報を含む参加要求をディレクトリサーバ4へ送信する。これにより、ディレクトリサーバ4は、当該ノード1に関する情報を管理する。また、ネットワーク参加処理手段51は、ディレクトリサーバ4から、P2Pネットワークに参加しているノード1に関する情報、配信サーバ2及びパッチングサーバ3に関する情報、並びに、上流ノード1に関する情報及び下流ノード1に関する情報を受信する。これにより、当該ノード1は、上流ノード1及び下流ノード1、配信サーバ2及びパッチングサーバ3との間で通信を行うことができる。
【0043】
バッファマップ取得手段52は、バッファマップ保存手段13からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード1へ送信し、バッファマップを上流ノード1から受信してバッファマップ保存手段13に出力する。上流ノード1から受信したバッファマップは、バッファマップ保存手段13によりバッファメモリ11に保存され、所定の時間間隔にて更新される。
【0044】
視聴ポイント設定手段53は、当該ノード1がP2Pネットワークに参加して上流ノード1からバッファマップを取得した後、取得したバッファマップのうちの先に取得したバッファマップを特定し、特定したバッファマップが示す最も古いデータを特定し、そのデータの位置を視聴ポイントに設定する。
【0045】
データ取得手段54は、視聴ポイント以降(再生前)の未取得の映像データを取得するために、上流ノード1から取得したバッファマップをバッファメモリ11から読み出し、バッファマップに基づいて、取得したいデータが蓄積されている上流ノード1(データの取得先)を特定し、データ要求を取得先の上流ノード1へ送信する。そして、データ取得手段54は、取得先の上流ノード1からデータ要求に対応するデータを受信し、バッファメモリ11に蓄積する。
【0046】
パッチング手段55は、パッチング処理の際に、データを取得するためのデータ要求をパッチングサーバ3へ送信し、パッチングサーバ3からデータ要求に対応するデータを受信し、バッファメモリ11に蓄積する。
【0047】
バッファマップ送信手段56は、下流ノード1からバッファマップ要求を受信し、バッファマップ作成手段14により作成された当該ノード1のバッファマップを、バッファマップ要求を送信してきた下流ノード1へ送信する。
【0048】
データ送信手段57は、下流ノード1からデータ要求を受信し、データ要求に応じたデータをバッファメモリ11から読み出し、読み出したデータを、データ要求を送信してきた下流ノード1へ送信する。
【0049】
図3に戻って、バッファメモリ11には、映像データを所定のサイズに分割したDCがそのDC番号と共に、時間軸上のシーケンシャル番号順に蓄積されている。また、バッファメモリ11には、上流ノード1のバッファマップが保存されている。バッファメモリ11の詳細については後述する。
【0050】
再生手段12は、バッファメモリ11から視聴ポイントのデータを読み出して再生を行う。再生手段12によるデータ再生処理の詳細については後述する。バッファマップ保存手段13は、所定の時間間隔にて、上流ノード1のバッファマップを取得するための取得要求を送受信手段10に出力し、送受信手段10から上流ノード1のバッファマップを入力し、バッファメモリ11に保存する。
【0051】
バッファマップ作成手段14は、所定の時間間隔にて、バッファメモリ11に蓄積されたデータに基づいて、当該ノード1のバッファマップを作成する。そして、バッファマップ作成手段14は、作成したバッファマップを送受信手段10に出力する。バッファマップ作成手段14により作成されたバッファマップは、下流ノード1からのバッファマップ要求に従って送信される。
【0052】
具体的には、バッファマップ作成手段14は、前述のとおり、バッファメモリ11に蓄積されている視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイントから所定時間前までのデータ(再生後の所定時間前までのデータ)に関する情報を示すバッファマップを作成する。
【0053】
ここで、所定時間前までのデータにおける所定時間とは、バッファマップ保存手段13及びバッファマップ取得手段52によりバッファマップが更新される所定の時間間隔(更新時間)以上の時間であることが望ましい。例えば、バッファマップの更新時間が3秒であり、1秒毎のデータがDCとしてバッファメモリ11に蓄積されている場合、所定時間は3秒以上となる。
【0054】
図8は、バッファマップを説明する図である。このバッファマップは、再生後のデータであるDC12〜DC14(3)及び再生前のデータであるDC15〜DC22(4)に関する情報を示すものである。DCを1秒間の映像データとし、バッファマップの更新時間を3秒とした場合、例えば、バッファマップ作成手段14は、
図8に示すように、再生前のデータDC15〜DC22に加え、再生後の3秒前までのDC12〜DC14に関する情報を示すバッファマップを作成する。
【0055】
このように、再生前のDCに加え、再生後の所定時間前までのDCに関する情報を示すバッファマップが作成される。したがって、このバッファマップに基づいてデータを取得するノード1は、再生後の所定時間前までのDCに含まれる、従来技術では取得できなかった所望のデータを取得することができ、視聴ポイントの遅延を適度に抑制することができる。
【0056】
この場合、所定時間を、バッファマップの更新時間である3秒としたとき、バッファメモリ11には、所定時間である3秒前を超える時間のDC(例えば6秒前までのDC)が蓄積されるようにしてもよい。これにより、所望のデータを取得するためのデータ要求が多少遅れて送信されてきた場合であっても、バッファメモリ11から所望のデータが廃棄される前に、当該所望データを確実に送信することができる。
【0057】
尚、バッファマップ作成手段14は、再生前のDCに加え、バッファメモリ11に蓄積されている再生後の全てのDCに関する情報を示すバッファマップを作成するようにしてもよい。
【0058】
(バッファメモリ)
図5は、バッファメモリ11に蓄積されるデータの量と、視聴ポイント、パッチングスレッショルド及び再生スレッショルドとの関係を説明する図である。
図5に示すように、バッファメモリ11には、例えば、14個のDCを蓄積する領域が確保されており、時間軸上に番号が若い順にDCが蓄積される。バッファメモリ11は、新たなDCが蓄積されるときに、最も古いDCが廃棄される。
図5の例は、バッファメモリ11にDC9〜DC22が蓄積されており、新たなDC22が蓄積されたことにより、最も古いDC8が廃棄されたことを示している。
【0059】
また、バッファメモリ11には、視聴ポイントを基準位置にして、これよりも番号が大きい方の所定位置にパッチングスレッショルド及び再生スレッショルドが予め設定されている。視聴ポイントは、前述のとおり、再生手段12により映像データが再生される現在の位置であって、当該ノード1を用いて配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。視聴ポイントよりも古いデータが再生後のDC(1)であり、視聴ポイント以降のデータが再生前のDC(2)である。
【0060】
パッチングスレッショルドは、パッチング処理において、上流ノード1の代わりにパッチングサーバ3からDCが取得される位置を示している。バッファメモリ11に蓄積されたDCの位置がパッチングスレッショルド以下になると、パッチング処理が行われる。送受信手段10のパッチング手段55は、バッファメモリ11を検索することにより、再生に伴ってDCが減少し、バッファメモリ11の先頭から隙間なく蓄積された末尾のDCの位置を示すポインタがパッチングスレッショルド以下になった場合に(または、視聴ポイントからパッチングスレッショルドまでの間に存在しないDCがある場合に(DCは存在するが、連番のDCが抜けている場合に、))、パッチングサーバ3からDCを取得する。再生スレッショルドは、前述のとおり、非再生中のときに再生を開始するために必要なデータ量の位置を示しており、再生手段12が再生を最初に開始するために必要なデータ量の位置、または再生を再開するために必要なデータ量の位置を示している。再生手段12は、バッファメモリ11からDCを読み出して再生を開始または再開する際に、DCが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のDCを読み出して再生を行う。
【0061】
(データ再生処理)
図6は、視聴ポイント及び再生スレッショルドを基準位置としたデータ再生処理を示すフローチャートである。このデータ再生処理は、再生手段12により行われる。再生手段12は、再生中であるか否かを判定し(ステップS601)、再生中であると判定した場合(ステップS601:Y)、ステップS602へ移行し、再生中でない(非再生中である、再生が停止中である)と判定した場合(ステップS601:N)、ステップS605へ移行する。
【0062】
再生手段12は、再生中の場合、ステップS601から移行してバッファメモリ11を検索し、バッファメモリ11の先頭から隙間なく蓄積された末尾のDCの位置を示すポインタが視聴ポイント以下であるか否かを判定する(ステップS602)。再生手段12は、ステップS602において、DCのポインタが視聴ポイント以下でないと判定した場合(ステップS602:N)、再生を継続する(ステップS603)。つまり、再生手段12は、バッファメモリ11から視聴ポイントのDCを読み出し、DCにより映像データを再生する。一方、再生手段12は、ステップS602において、DCのポインタが視聴ポイント以下であると判定した場合(ステップS602:Y)、再生を停止する(ステップS604)。
【0063】
再生手段12は、再生中でない(非再生中である、再生が停止中である)場合、ステップS601から移行してバッファメモリ11を検索し、DCのポインタが再生スレッショルド以下であるか否かを判定する(ステップS605)。再生手段12は、ステップS605において、DCのポインタが再生スレッショルド以下でないと判定した場合(ステップS605:N)、再生を開始する(ステップS606)。つまり、再生手段12は、バッファメモリ11から視聴ポイントのDCを読み出し、DCにより映像データを再生する。一方、再生手段12は、ステップS605において、DCのポインタが再生スレッショルド以下であると判定した場合(ステップS605:Y)、再生停止を継続する。
【0064】
このように、データ再生処理を行う再生手段12は、バッファメモリ11から視聴ポイントのDCを読み出し、DCにより映像データを再生し、DCが視聴ポイント以下になった場合に再生を停止し、DCが再生スレッショルドの位置まで蓄積されるのを待って、再生を開始する。
【0065】
(パッチング処理)
図7は、パッチングスレッショルドを基準位置としたパッチング処理を示すフローチャートである。このパッチング(手当て)処理は、送受信手段10のパッチング手段55により行われ、バッファメモリ11に蓄積されたDCのポインタがパッチングスレッショルド以下になった場合に、上流ノード1からDCを取得する代わりに、緊急にパッチングサーバ3からDCを取得するものである。
【0066】
送受信手段10のパッチング手段55は、バッファメモリ11を検索し、DCのポインタがパッチングスレッショルド以下であるか否かを判定し(ステップS701)、DCのポインタがパッチングスレッショルド以下であると判定した場合(ステップS701:Y)、パッチング処理を行う。すなわち、パッチング手段55は、データ要求を上流ノード1へ送信する代わりに、パッチングサーバ3へ送信し(ステップS702)、パッチングサーバ3からデータ(DC)を受信し、DCをバッファメモリ11に蓄積する(ステップS703)。一方、パッチング手段55は、ステップS701において、DCのポインタがパッチングスレッショルド以下でないと判定した場合(ステップS701:N)、パッチング処理を行わない。
【0067】
このように、パッチング処理を行うパッチング手段55は、バッファメモリ11に蓄積されたDCのポインタがパッチングスレッショルド以下になった場合に、上流ノード1からDCを取得する代わりに、緊急にパッチングサーバ3からDCを取得する。
【0068】
(実施例1によるノードの処理)
次に、実施例1によるノード1の処理について説明する。
図9は、実施例1によるノード1の処理を示すフローチャートである。
【0069】
ノード1が、配信サービスを行うP2Pネットワークに新たに参加すると、ノード1は、ネットワーク参加処理を行う(ステップS901)。
図12は、ネットワーク参加処理を説明する図であり、ノード1CがP2Pネットワークに新たに参加した場合を示している。ノード1CがP2Pネットワークに新たに参加すると、ノード1Cにおける送受信手段10のネットワーク参加処理手段51は、ディレクトリサーバ4へアクセスし、当該ノード1Cに関する情報(URL、IPアドレス等)をディレクトリサーバ4へ送信する(ステップS1201)。ディレクトリサーバ4は、ノード1Cからノード1Cに関する情報を受信すると、当該情報を記憶装置に登録して管理する。そして、ディレクトリサーバ4は、通信システム5を構成する配信サーバ2、パッチングサーバ3及びP2Pネットワークに参加している全てまたは一部のノード1に関する情報、並びに上流ノード1に関する情報及び下流ノード1に関する情報(URL、IPアドレス等)を、ノード1Cへ送信する(ステップS1202)。これにより、ノード1Cは、配信サーバ2、パッチングサーバ3、上流ノード1及び下流ノード1へアクセスすることができ、通信を行うことができる。すなわち、
図12に示すように、ノード1Cは、上流ノード1A,1Bへアクセスしてバッファマップ及び映像ストリームのデータを取得することができ、パッチングサーバ3へアクセスして視聴ポイント及び映像ストリームのデータを取得することができる。
【0070】
図9に戻って、ノード1は、上流ノード1からバッファマップを取得する(ステップS902)。具体的には、ノード1における送受信手段10のバッファマップ取得手段52は、ディレクトリサーバ4から受信した上流ノード1に関する情報に基づいて、バッファマップ要求を上流ノード1へ送信し、上流ノード1からバッファマップを受信し、バッファマップ保存手段13に出力する。バッファマップ保存手段13は、バッファマップをバッファメモリ11に保存する。通常、複数台の上流ノード1が存在する。
【0071】
ノード1は、ステップS902にて取得したバッファマップのうち先に取得したバッファマップを特定し、そのバッファマップの最も古いデータの位置を視聴ポイントに設定する(ステップS903)。
【0072】
ノード1は、上流ノード1から映像ストリームのデータを取得し、パッチング処理時及び遅延処理時に、パッチングサーバ3から映像ストリームのデータを取得し、バッファメモリ11に蓄積する(ステップS904)。この映像データ取得処理の詳細については後述する。また、ノード1は、バッファメモリ11から映像ストリームのデータを読み出し、下流ノード1へ送信する(ステップS905)。この映像データ送信処理の詳細については後述する。
【0073】
ノード1は、P2Pネットワークから離脱したか否かを判定し(ステップS906)、P2Pネットワークから離脱していない場合(ステップS906:N)、映像データ取得処理(ステップS904)及び映像データ送信処理(ステップS905)を行い、P2Pネットワークから離脱した場合(ステップS906:Y)、所定のネットワーク離脱処理を行う(ステップS907)。ノード1は、P2Pネットワークに参加している間、前述の映像データ取得処理(ステップS904)及び映像データ送信処理(ステップS905)を繰り返す。
【0074】
(映像データ取得処理)
次に、
図9に示した映像データ取得処理(ステップS904)について詳細に説明する。
図10は、その詳細な処理を示すフローチャートである。ノード1における送受信手段10のデータ取得手段54は、
図9に示したステップS902または後述するステップS1003にて取得した複数のバッファマップ(上流ノード1のバッファマップ)に基づいて、上流ノード1からデータを取得し、バッファメモリ11に蓄積する(ステップS1001)。具体的には、データ取得手段54は、バッファマップに基づいて、データを取得するためのデータ要求を上流ノード1へ送信し、データ要求を送信した上流ノード1から、データ要求に対応するデータを受信し、バッファメモリ11に蓄積する。
【0075】
送受信手段10の再生手段12は、
図6に示したデータ再生処理を行う(ステップS1002)。すなわち、再生手段12は、バッファメモリ11から視聴ポイントのデータを読み出して映像データを再生し、バッファメモリ11に蓄積されたデータが視聴ポイント以下になった場合に再生を停止し、データが再生スレッショルドの位置にまで蓄積されるのを待って、再生を開始する。
【0076】
送受信手段10のバッファマップ取得手段52は、バッファマップ保存手段13からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード1へ送信し、バッファマップを上流ノード1から受信してバッファマップ保存手段13に出力する(ステップS1003)。バッファマップ保存手段13は、バッファマップをバッファメモリ11に保存する。これにより、上流ノード1のバッファマップは、所定時間間隔で更新される。
【0077】
送受信手段10のパッチング手段55は、
図7に示したパッチング処理を行う(ステップS1004)。すなわち、パッチング手段55は、バッファメモリ11に蓄積されたデータのポインタがパッチングスレッショルド以下になった場合に、上流ノード1からデータを取得する代わりに、緊急にパッチングサーバ3からデータを取得する。
【0078】
(映像データ送信処理)
次に、
図9に示した映像データ送信処理(ステップS905)について詳細に説明する。
図11は、その詳細な処理を示すフローチャートである。ノード1のバッファマップ作成手段14は、所定の時間間隔にて、バッファメモリ11に蓄積されたデータに基づいて、視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイントよりも所定時間前のデータ(再生後の所定時間前までのデータ)に関する情報を示すバッファマップを作成する(ステップS1101)。
【0079】
送受信手段10のバッファマップ送信手段56は、下流ノード1からバッファマップ要求を受信したか否かを判定し(ステップS1102)、バッファマップ要求を受信したと判定した場合(ステップS1102:Y)、バッファマップ作成手段14により作成されたバッファマップを、バッファマップ要求を送信してきた下流ノード1へ送信し(ステップS1103)、ステップS1104へ移行する。一方、バッファマップ送信手段56は、ステップS1102において、バッファマップ要求を受信していないと判定した場合(ステップS1102:N)、ステップS1104へ移行する。
【0080】
送受信手段10のデータ送信手段57は、ステップS1102またはステップS1103から移行して、下流ノード1からデータ要求を受信したか否かを判定し(ステップS1104)、データ要求を受信したと判定した場合(ステップS1104:Y)、バッファメモリ11からデータ要求に対応するデータを読み出し、読み出したデータを、データ要求を送信してきた下流ノード1へ送信し(ステップS1105)、処理を終了する。一方、データ送信手段57は、ステップS1104において、データ要求を受信していないと判定した場合(ステップS1104:N)、処理を終了する。
【0081】
以上のように、実施例1によれば、ノード1における送受信手段10のバッファマップ取得手段52は、上流ノード1からバッファメモリ11に蓄積されている視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイントよりも所定時間前のデータ(再生後の所定時間前までのデータ)に関する情報を示すバッファマップを取得し、データ取得手段54は、取得したバッファマップに基づいて、上流ノード1からデータを取得するようにした。これにより、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード1は、上流ノード1から所望のデータを取得できる確率を高めることができ、従来技術では取得できなかったデータを取得することができる。例えば、一部の上流ノード1が非再生中であり、他の上流ノード1が再生中の状態の場合、ノード1が、非再生中の上流ノード1から取得したバッファマップが示す最も古いデータの位置を視聴ポイントに設定したときであっても、再生中の上流ノード1から取得したバッファマップに基づいて、再生中の上流ノード1から、非再生中の上流ノード1に蓄積されていないデータであって再生中の上流ノード1に蓄積されているデータ(再生後のデータ)を取得することができる。したがって、ノード1は、上流ノード1に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを従来技術より効率良く取得することができる。また、視聴ポイントは大きく遅延することがないから、安定した配信サービスを実現することができる。
【0082】
また、実施例1では、バッファマップ取得手段52が再生前のデータ及び再生後の所定時間前までのデータに関する情報を示すバッファマップを取得する場合において、その所定時間を、バッファマップが更新される所定の時間間隔(更新時間)以上の時間とした。これにより、バッファマップが更新され更新後のバッファマップに基づいて所望のデータを取得するまで待つことなく、ノード1は、再生後の所定時間前までのデータに関する情報を示すバッファマップに基づいて、迅速に所望のデータを取得することができる。したがって、所望のデータを効率良く取得することができ、視聴ポイントは大きく遅延することがない。
【0083】
また、実施例1によれば、ノード1がP2Pネットワークに参加またはP2Pネットワークから離脱した場合であっても、全てのノード1は前述の処理を行うから、低遅延で安定した配信サービスを実現することができる。
【0084】
〔実施例2〕
次に、実施例2について説明する。実施例2のノード1は、実施例1に加えさらに、上流ノード1からデータを取得できないため、視聴ポイントが上流ノード1よりも所定時間遅れている場合、パッチングサーバ3からデータを取得する例である。
図13は、実施例2におけるP2Pネットワークの処理(1)の概要を説明する図である。
図13に示す処理(1)は、ノード1が上流ノード1からバッファマップを取得した後、当該上流ノード1からデータを取得する前に、当該上流ノード1がP2Pネットワークから離脱する場合を示している。
【0085】
図13に示すように、ノード1Cの上流ノードがノード1A,1Bであり、ノード1Aのバッファメモリには、再生後のDC10〜DC15及び再生前のDC16〜DC21が蓄積され、視聴ポイントがDC16に設定され、ノード1Aは再生中であるものとする。また、ノード1Bのバッファメモリには、再生前のDC11〜DC14が蓄積され、視聴ポイントがDC11に設定され、ノード1Bは非再生中であるものとする。
【0086】
ノード1Cは、P2Pネットワークへ参加すると、図示しないディレクトリサーバ4から上流ノード1A,1Bに関するアドレスの情報等を受信し、上流ノード1A,1Bからバッファマップを取得する。ここで、ノード1Cは、先に、上流ノード1BからバッファマップBを取得し(ステップS1301)、その後に、上流ノード1AからバッファマップAを取得するものとする(ステップS1302)。
【0087】
上流ノード1Aから取得するバッファマップAには、実施例1と同様に、DC13〜DC21に関する情報が示されており、DC13〜DC15は再生後のデータであり、DC16〜DC21は再生前のデータである。また、上流ノード1Bから取得するバッファマップBには、実施例1と同様に、DC11〜DC14に関する情報が示されており、DC11〜DC14は再生前のデータである。
【0088】
ノード1Cは、取得したバッファマップA,Bのうちの先に取得したバッファマップBを特定し、特定したバッファマップBが示す最も古いDC11を特定し、そのDC11の位置を視聴ポイントに設定する。そして、ノード1Cは、バッファマップA,Bに基づいて、データの取得先である上流ノード1Aまたは上流ノード1Bを決定し、上流ノード1A,1Bへデータ要求を送信し、データ要求に対応するデータを受信して自らのバッファメモリに蓄積する。
【0089】
図13に示した例では、ノード1Cは、バッファマップBに基づいて、上流ノード1BからDC11〜DC14を取得し(ステップS1303)、バッファメモリに蓄積する(ステップS1304)。そして、上流ノード1AがP2Pネットワークから離脱した場合(ステップS1305)、ノード1Cは、バッファマップAに基づいて、上流ノード1AからDC15〜DC21を取得することができない。このため、ノード1Cのバッファメモリに蓄積されたDCが再生スレッショルドに到達できず、ノード1Cは非再生中の状態を継続し、その視聴ポイントはDC11の位置を維持する。結果として、ノード1Cの視聴ポイントは、上流ノード1Aよりも大きく遅れることになる。
【0090】
そこで、ノード1Cは、上流ノード1Aの代わりに、パッチングサーバ3からDC15〜DC21を取得する。具体的には、ノード1Cは、パッチングサーバ3から視聴ポイントを取得し(ステップS1306)、取得した視聴ポイントと、ノード1Cにおける視聴ポイント(DC11)との間の差に基づいて、ノード1Cにおける視聴ポイントの遅延時間を算出する。パッチングサーバ3から取得した視聴ポイントは、P2Pネットワーク全体としての基準となる視聴ポイントを示している。ノード1Cは、算出した遅延時間を画面表示してノード1Cの利用者へ提示したり、遅延情報として保存したりすると共に、ノード1Cにおける視聴ポイント及び遅延時間をディレクトリサーバ4へ送信する(ステップS1307)。利用者は、画面表示された遅延時間によって、自らの視聴する映像が他の利用者の視聴する映像に比べて遅延していることを認識することができ、時刻等の動画内の情報がリアルタイム情報ではないことを認識することができる。また、ソーシャルネットワーク等のアプリケーションは、保存された遅延情報を利用し、提示を遅延させる等することにより、動画との同期をとることもできる。ディレクトリサーバ4は、ノード1Cからその視聴ポイント及び遅延時間を受信し、これらを管理する。
【0091】
そして、ノード1Cは、パッチングサーバ3からDC15〜DC21を取得し(ステップS1308)、バッファメモリに蓄積する(ステップS1309)。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード1Cは、バッファメモリから視聴ポイントのDC11を読み出し、再生を開始する(ステップS1310)。
【0092】
このように、実施例1と同様に、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード1Cは、
図18に示した従来技術では取得できなかった所望のデータであるDC15を、上流ノード1Aから取得することができる。しかし、
図13に示したように、ノード1Cは、上流ノード1AからバッファマップAを取得した後、データを取得する前に、上流ノード1AがP2Pネットワークから離脱した場合、上流ノード1Aからデータを取得することができず、視聴ポイントは上流ノード1Aよりも大きく遅れてしまう。そこで、ノード1Cは、パッチングサーバ3からデータ等を取得するようにした。これにより、ノード1Cは、非再生中の上流ノード1Bに所望のデータが蓄積されるのを待つ必要がなく、パッチングサーバ3から効率良く取得することができ、低遅延にて再生を開始することができる。
【0093】
図14は、実施例2におけるP2Pネットワークの処理(2)の概要を説明する図である。
図14に示す処理(2)は、上流ノード1のバッファメモリ11に、取得したいデータが蓄積されていない場合を示している。
【0094】
図14に示すように、ノード1Cの上流ノードがノード1A,1Bであり、ノード1Aのバッファメモリには、再生後のDC13〜DC18及び再生前のDC19〜DC24が蓄積され、視聴ポイントがDC19の位置に設定され、ノード1Aは再生中であるものとする。また、ノード1Bのバッファメモリには、再生前のDC11〜DC14が蓄積され、視聴ポイントがDC11の位置に設定され、ノード1Bは非再生中であるものとする。
【0095】
ノード1Cは、P2Pネットワークへ参加すると、
図13と同様に、先に、上流ノード1BからバッファマップBを取得し(ステップS1401)、その後に、上流ノード1AからバッファマップAを取得するものとする(ステップS1402)。
【0096】
上流ノード1Aから取得するバッファマップAには、DC16〜DC24に関する情報が示されており、DC16〜DC18は再生後のデータであり、DC19〜DC24は再生前のデータである。また、上流ノード1Bから取得するバッファマップBには、
図13と同様に、DC11〜DC14に関する情報が示されており、DC11〜DC14は再生前のデータである。
【0097】
ノード1Cは、取得したバッファマップA,Bのうちの先に取得したバッファマップBが示す最も古いDC11を特定し、そのDC11の位置を視聴ポイントに設定する。そして、ノード1Cは、バッファマップBに基づいて、上流ノード1BからDC11〜DC14を取得し(ステップS1403)、バッファメモリに蓄積する(ステップS1404)。そして、ノード1Cは、次のDC15を取得する際に、バッファマップA,BにDC15に関する情報が示されていないことを判断する。ノード1Cは、DC15が上流ノード1A,1Bに蓄積されていないから、上流ノード1A,1BからDC15を取得することができない。このため、ノード1Cのバッファメモリに蓄積されたDCが再生スレッショルドに到達できず、ノード1Cは非再生中の状態を継続し、その視聴ポイントはDC11の位置を維持する。結果として、ノード1Cの視聴ポイントは、上流ノード1Aよりも大きく遅れることになる。
【0098】
そこで、ノード1Cは、
図13と同様に、パッチングサーバ3からDC15を取得する。具体的には、ノード1Cは、パッチングサーバ3から視聴ポイントを取得し(ステップS1405)、取得した視聴ポイントと、ノード1Cにおける視聴ポイント(DC11)との間の差に基づいて、ノード1Cにおける視聴ポイントの遅延時間を算出する。ノード1Cは、算出した遅延時間を画面表示してノード1Cの利用者へ提示すると共に、ノード1Cにおける視聴ポイント及び遅延時間をディレクトリサーバ4へ送信する(ステップS1406)。利用者は、画面表示された遅延時間によって、自らの視聴する映像が他の利用者の視聴する映像に比べて遅延していることを認識することができる。ディレクトリサーバ4は、ノード1Cからその視聴ポイント及び遅延時間を受信し、これらを管理する。
【0099】
そして、ノード1Cは、パッチングサーバ3からDC15を取得し(ステップS1407)、バッファメモリに蓄積する(ステップS1408)。そして、ノード1Cは、バッファマップAに基づいて、上流ノード1AからDC16以降のデータを取得し(ステップS1409)、バッファメモリに蓄積する(ステップS1410)。これにより、バッファメモリに蓄積されたデータは、再生スレッショルドに到達する。そして、ノード1Cは、バッファメモリから視聴ポイントのDC11を読み出し、再生を開始する(ステップS1411)。
【0100】
このように、実施例1及び
図13に示した実施例2(1)と同様に、バッファマップに、再生前のデータに加え再生後のデータに関する情報も含めるようにしたから、ノード1Cは、
図18に示した従来技術では取得できなかった所望のデータを、上流ノード1Aから取得することができる。しかし、
図14に示したように、再生中の上流ノード1Aから取得したバッファマップAに所望のデータであるDC15が示されていない場合、ノード1Cは上流ノード1Aからそのデータを取得することができず、視聴ポイントは上流ノード1Aよりも大きく遅れてしまう。そこで、ノード1Cは、パッチングサーバ3からそのデータ等を取得するようにした。これにより、ノード1Cは、非再生中の上流ノード1Bに所望のデータが蓄積されるのを待つ必要がなく、パッチングサーバ3から効率良く取得することができ、低遅延にて再生を開始することができる。
【0101】
(実施例2によるノードの構成)
実施例2によるノード1の構成について説明する。実施例2によるノード1の構成は、
図3に示した実施例1と同様であるが、送受信手段10の構成手段の一部が実施例1と異なる。
図15は、実施例2における送受信手段10の構成を示すブロック図である。実施例2によるノード1の送受信手段10は、
図4に示した実施例1の構成に加え、遅延処理手段58を備えている。ネットワーク参加処理手段51〜データ送信手段57は、実施例1と同様であるから、説明を省略する。
【0102】
遅延処理手段58は、上流ノード1からデータを取得できないため、視聴ポイントが上流ノード1よりも所定時間遅れている場合、パッチングサーバ3から所望のデータを受信してバッファメモリ11に蓄積する。また、遅延処理手段58は、所望のデータを取得するのに先立って、パッチングサーバ3から視聴ポイントを取得して遅延時間を算出し、当該ノード1の視聴ポイント及び遅延時間をディレクトリサーバ4へ送信する。これにより、ディレクトリサーバ4は、ノード1Cにおける視聴ポイント及び遅延時間を管理する。ここで、所定時間とは、バッファマップ保存手段13及びバッファマップ取得手段52によりバッファマップが更新される所定の時間間隔(更新時間)以上の時間であることが望ましい。
【0103】
(実施例2によるノードの処理)
次に、実施例2によるノード1の処理について説明する。実施例2によるノード1は、
図9に示した実施例1のフローチャートのうち、ステップS901〜ステップS903及びステップS905〜ステップS907と同様の処理を行い、ステップS904(映像データ取得処理)とは異なる処理を行う。ステップS901〜ステップS903及びステップS905〜ステップS907の処理については実施例1にて説明済みであるから、ここでは説明を省略する。
【0104】
(映像データ取得処理)
次に、実施例2における
図9の映像データ取得処理(ステップS904)について詳細に説明する。
図16は、その詳細な処理を示すフローチャートである。
図16に示すフローチャートのうちステップS1601〜ステップS1604は、
図10に示した実施例1の映像データ取得処理のステップS1001〜ステップS1004と同様であるから、説明を省略する。
【0105】
ノード1における送受信手段10の遅延処理手段58は、ステップS1604から移行して、視聴ポイントが上流ノード1(最も新しい視聴ポイントを有する上流ノード1)よりも所定時間遅れているか否かを判定する(ステップS1605)。例えば、遅延処理手段58は、自らの視聴ポイントと、上流ノード1の視聴ポイントのうち最も新しい視聴ポイントとを比較し、自らの視聴ポイントが前記最も新しい視聴ポイントよりも所定時間遅れているか否かを判定する。この場合、上流ノード1から取得したバッファマップには、視聴ポイントの情報も含まれているものとし、遅延処理手段58は、上流ノード1から取得したバッファマップに含まれる視聴ポイントを上流ノード1間で比較し、最も新しい(DC番号が大きい)視聴ポイントを特定する。
【0106】
尚、遅延処理手段58は、視聴ポイントが所定時間変化していないか否かを判定するようにしてもよいし、非再生中が所定時間継続しているか否かを判定するようにしてもよい。
【0107】
遅延処理手段58は、ステップS1605において、視聴ポイントが上流ノード1よりも所定時間遅れていると判定した場合(ステップS1605:Y)、視聴ポイント要求をパッチングサーバ3へ送信し、パッチングサーバ3から視聴ポイントを受信する(ステップS1606)。例えば、データ取得手段54がデータ要求を上流ノード1へ送信しても、上流ノード1からデータが返信されない場合、または、所望のデータが上流ノード1に蓄積されていないことをバッファマップから判断した場合には、新たなデータがバッファメモリ11に蓄積されず、結果として、視聴ポイントは上流ノード1よりも所定時間遅れることになる。
【0108】
ノード1における送受信手段10の遅延処理手段58は、パッチングサーバ3から受信した視聴ポイントと自らの視聴ポイントとを比較し、自らの視聴ポイントが、パッチングサーバ3から受信した視聴ポイントから遅延している時間を算出し、算出した遅延時間を画面表示して利用者へ提示すると共に、自らの視聴ポイント及び遅延時間をディレクトリサーバ4へ送信する(ステップS1607)。
【0109】
遅延処理手段58は、上流ノード1から取得できないデータを特定し、特定したデータを取得するためのデータ要求をパッチングサーバ3へ送信し、データ要求に対応するデータをパッチングサーバ3から受信し、バッファメモリ11に蓄積する(ステップS1608)。例えば、ノード1は、データ要求を上流ノード1へ送信しても、その上流ノード1からデータが返信されないため、視聴ポイントが上流ノード1よりも所定時間遅れている場合、その上流ノード1から取得したバッファマップに基づいて、その上流ノード1から取得すべきであったデータを、パッチングサーバ3から取得する。
図13の例では、遅延処理手段58は、上流ノード1Aから取得すべきであったDC15〜DC21を、パッチングサーバ3から取得する。また、ノード1が、上流ノード1から取得したバッファマップに基づいて、取得したいデータが上流ノード1に存在しないと判断し、視聴ポイントが上流ノード1よりも所定時間遅れている場合、その取得したいデータをパッチングサーバ3から取得する。
図14の例では、遅延処理手段58は、上流ノード1に存在しないDC15をパッチングサーバ3から取得する。
【0110】
一方、遅延処理手段58は、ステップS1605において、視聴ポイントが上流ノード1よりも所定時間遅れていないと判定した場合(ステップS1605:N)、またはステップS1608から移行して、映像データ取得処理を終了する。
【0111】
ここで、パッチングサーバ3は、送受信手段、記憶装置及び視聴ポイント設定手段とを備える。パッチングサーバ3の送受信手段は、配信サーバ2から連続して映像ストリームのデータを受信し、受信した映像ストリームのデータを記憶装置に蓄積する。視聴ポイント設定手段は、送受信手段が連続して受信した映像ストリームのデータに基づいて、現在の視聴ポイントを順次設定する。例えば、視聴ポイント設定手段は、連続して受信した映像ストリームのデータのうち最新に受信したデータのDC番号よりも所定数前のDC番号を視聴ポイントに設定する。この視聴ポイントは、P2Pネットワーク全体において基準の視聴ポイントとなる。また、送受信手段は、ノード1から視聴ポイント要求を受信すると、視聴ポイント設定手段により設定された現在の視聴ポイントを、視聴ポイント要求を送信してきたノード1へ送信する。また、送受信手段は、ノード1からデータ要求を受信すると、データ要求に対応するデータを記憶装置から読み出し、読み出したデータを、データ要求を送信してきたノード1へ送信する。
【0112】
以上のように、実施例2によれば、実施例1と同様に、ノード1における送受信手段10のバッファマップ取得手段52は、上流ノード1からバッファメモリ11に蓄積されている視聴ポイント以降のデータ(再生前のデータ)に加え、視聴ポイントよりも所定時間前のデータ(再生後の所定時間前までのデータ)に関する情報を示すバッファマップを取得し、データ取得手段54は、取得したバッファマップに基づいて、上流ノード1からデータを取得するようにした。これにより、実施例1と同様の効果を奏する。
【0113】
また、実施例2によれば、ノード1における送受信手段10の遅延処理手段58は、視聴ポイントが上流ノード1よりも所定時間遅れている場合、パッチングサーバ3からデータを取得するようにした。これにより、ノード1が所望のデータを、再生中の上流ノード1から取得する直前に、その上流ノード1がP2Pネットワークから離脱したり、所望のデータがその上流ノード1に蓄積されていなかったりした場合であっても、ノード1は、所望のデータを確実に取得することができる。したがって、ノード1は、上流ノード1に所望のデータが蓄積されるのを待つ必要がなく、所望のデータを従来技術より効率良く、かつ確実に取得することができる。また、視聴ポイントは大きく遅延することがないから、一層安定した配信サービスを実現することができる。
【0114】
以上、実施例を挙げて本発明を説明したが、本発明は前記実施例に限定されるものではなく、その技術思想を逸脱しない範囲で種々変形可能である。例えば、実施例2において、ノード1は、
図16に示したステップS1606〜ステップS1608の遅延処理の際に、パッチングサーバ3からデータを取得するようにしたが、パッチングサーバ3の代わりに配信サーバ2から取得するようにしてもよい。これにより、P2Pネットワークの通信システム5にパッチングサーバ3が存在しない場合であっても、ノード1は、遅延処理を行うことができる。
【0115】
尚、本発明の実施例1,2によるノード1、配信サーバ2、パッチングサーバ3及びディレクトリサーバ4のハードウェア構成としては、通常のコンピュータを使用することができる。ノード1、配信サーバ2、パッチングサーバ3及びディレクトリサーバ4は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。ノード1に備えた送受信手段10、バッファメモリ11、再生手段12、バッファマップ保存手段13及びバッファマップ作成手段14の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。