【文献】
Yang Guo et. al.,P2Cast: peer-to-peer patching scheme for VoD service,ProceedingWWW '03 Proceedings of the 12th international conference on World Wide Web ,2003年,pp.301-309
(58)【調査した分野】(Int.Cl.,DB名)
P2Pネットワークにより、上流の端末装置から映像ストリームのデータを受信しバッファメモリに蓄積して再生し、前記バッファメモリから映像ストリームのデータを読み出して下流の端末装置へ送信する端末装置において、
前記上流の端末装置のバッファメモリに蓄積された映像ストリームのデータを識別するバッファマップを取得するためのバッファマップ要求を前記上流の端末装置へ送信し、前記上流の端末装置から前記バッファマップを取得するバッファマップ取得手段と、
前記バッファマップ取得手段により取得されたバッファマップに基づいて、前記映像ストリームのデータを通常レートにて取得するためのデータ要求を前記上流の端末装置へ送信し、前記上流の端末装置から通常レートのデータを受信して前記バッファメモリに蓄積するデータ取得手段と、
前記バッファメモリに蓄積された映像ストリームのデータが所定量以下になった場合、前記映像ストリームのデータを通常レートよりも低速のレートにて取得するための低レートデータ要求を、前記映像ストリームのデータを蓄積しているサーバへ送信し、前記サーバから低レートのデータを受信して前記バッファメモリに蓄積し、前記バッファメモリに蓄積された映像ストリームのデータをパッチングするパッチング手段と、
前記サーバとの間の通信回線の速度を測定し、前記速度に基づいて、前記サーバとの間の通信回線が混雑しているか否かを判定し、前記パッチング手段により前記サーバから低レートのデータを取得しているときの前記サーバとの間の通信回線の速度を測定し、前記速度に基づいて、前記低レートのデータを取得しているときの前記サーバとの間の通信回線が混雑しているか否かを判定する回線状況判定手段とを備え、
前記パッチング手段は、
前記バッファメモリに蓄積された映像ストリームのデータが所定量以下になり、かつ、前記通信回線が混雑していない場合、前記映像ストリームのデータを通常レートにて取得するためのデータ要求を前記サーバへ送信し、前記サーバから通常レートのデータを受信して前記バッファメモリに蓄積し、前記バッファメモリに蓄積された映像ストリームのデータが所定量以下になり、かつ、前記通信回線が混雑している場合、前記映像ストリームのデータを通常レートよりも低速のレートにて取得するための低レートデータ要求を前記サーバへ送信し、前記サーバから低レートのデータを受信して前記バッファメモリに蓄積し、
さらに、前記サーバから低レートのデータを受信している場合に、前記低レートのデータを取得しているときの前記サーバとの間の通信回線が混雑していないとき、前記低レートデータ要求を前記サーバへ送信し、前記サーバから低レートのデータを受信して前記バッファメモリに蓄積し、前記低レートのデータを取得しているときの前記サーバとの間の通信回線が混雑しているとき、前記映像ストリームにおける音声データを取得するための音声データ要求を前記サーバへ送信し、前記サーバから音声データを受信して前記バッファメモリに蓄積する、ことを特徴とする端末装置。
【発明を実施するための形態】
【0029】
以下、本発明を実施するための形態について図面を用いて詳細に説明する。以下に説明する実施例1〜3は、P2Pネットワークを構成する複数の端末装置、ライブ映像等の映像ストリームを配信する配信サーバ、及び、端末装置からの要求に従って映像データを送信するパッチングサーバを含む通信システムを対象とする。実施例1の端末装置は、パッチング処理(詳細については後述する)を行う際に、パッチングサーバとの間の通信回線が混雑しているとき、パッチングサーバから低レート(通常レートよりも低速のレート)の映像データを取得し、通信回線が混雑していないとき、通常レートの映像データを取得することを特徴とする。実施例2の端末装置は、P2Pネットワークにより上流の端末装置から映像データを取得する際に、上流の端末装置との間の通信回線が混雑しているとき、上流の端末装置から低レートの映像データを取得し、通信回線が混雑していないとき、通常レートの映像データを取得することを特徴とする。実施例3の端末装置は、実施例2において、低レートの映像データの代わりに音声データのみを取得することを特徴とする。これにより、端末装置は、途切れることなく映像ストリームのデータを取得することができ、通信回線が混雑している場合であっても、配信サービスを継続させることが可能となる。
【0030】
〔P2Pネットワークの通信システム〕
図1は、本発明の実施形態によるP2Pネットワークを含む通信システムの全体構成を示す概略図である。この通信システム5は、
図19(1)(2)に示したメッシュ型接続構造及びプル型中継手法のP2Pネットワークを構成し、複数の端末装置(以下、「ノード」という。)1A,1B,1C,・・・(総称して「ノード1」という。)、配信サーバ2、パッチングサーバ3及びディレクトリサーバ4を備えている。これらの装置は、インターネット等の通信回線を介して接続される。
【0031】
ノード1は、P2Pネットワークにより、配信サーバ2から配信された映像ストリームのデータを、上流側に接続されたノード1(以下、「上流ノード1」という。)から受信して蓄積し、下流側に接続されたノード1(以下、「下流ノード1」という。)へ送信すると共に、蓄積したデータをデコードして再生する。また、ノード1は、蓄積している映像ストリームのデータが所定量以下になったときに行うパッチング処理の際に、パッチングサーバ3から映像ストリームのデータを受信する。パッチング処理については後述する。
【0032】
配信サーバ2は、映像ストリームをエンコードし、エンコードした映像ストリームのデータをDC毎に、P2Pネットワークによりそれぞれのノード1へ配信すると共に、パッチングサーバ3へ送信する。映像ストリームのデータには、映像データに加え音声データも含まれる。
【0033】
パッチングサーバ3は、映像ストリームのデータを配信サーバ2から連続的に受信し、受信したデータに基づいて、現在の視聴ポイントを設定する。そして、パッチングサーバ3は、ノード1から視聴ポイント要求を受信し、設定した現在の視聴ポイントを、視聴ポイント要求を送信してきたノード1へ送信する。また、パッチングサーバ3は、ノード1からデータ要求を受信し、データ要求に対応した映像ストリームのデータを、データ要求を送信してきたノード1へ送信する。
【0034】
ディレクトリサーバ4は、P2Pネットワークに参加しているノード1、配信サーバ2及びパッチングサーバ3のアドレス等の情報を管理する。ディレクトリサーバ4は、P2Pネットワークに新たに参加したノード1から当該ノード1に関する情報を受信し、通信システム5を構成する配信サーバ2及びパッチングサーバ3に関する情報、P2Pネットワークに参加している全てまたは一部のノード1に関する情報、並びに、上流ノード1に関する情報及び下流ノード1に関する情報を、新たに参加したノード1へ送信する。これにより、新たに参加したノード1は、配信サーバ2、パッチングサーバ3、上流ノード1及び下流ノード1との間で通信を行うことができる。
【0035】
〔実施例1〕
まず、実施例1について説明する。実施例1のノード1は、蓄積している映像ストリームのデータが所定量以下になったときに行うパッチング処理の際に、パッチングサーバ3との間の回線が混雑しているとき、パッチングサーバ3から低レートの映像データを取得する例である。
図2は、実施例1におけるP2Pネットワークの処理の概要を説明する図である。
図2に示すように、ノード1Cの上流ノードがノード1A,1Bであり、ノード1A,1Bのバッファメモリには、DC8〜DC22がそれぞれ蓄積され、ノード1Cのバッファメモリには、DC8〜DC14が蓄積されているものとする。また、ノード1Cは、上流ノード1A,1BからバッファマップA,Bを取得しているものとする。
【0036】
ノード1Cは、パッチング処理の際に、パッチングサーバ3との間の回線状況をチェックし、この回線が混雑していることを判定すると、DC15における低レートの映像データを取得するための低レートデータ要求をパッチングサーバ3へ送信し、パッチングサーバ3からDC15の低レートの映像データ(以下、「低レートデータ」という。)を受信し、DC15の低レートデータをバッファメモリに蓄積する。同様に、ノード1Cは、パッチングサーバ3からDC16〜DC19の低レートデータを受信してバッファメモリに蓄積する。ここで、ノード1Cは、バッファメモリに蓄積されたDCが視聴ポイント以下になった場合に、再生を停止するが、視聴ポイント要求をパッチングサーバ3へ送信し、パッチングサーバ3から視聴ポイントを受信し、視聴ポイント以降のDCを取得するための低レートデータ要求をパッチングサーバ3へ送信し、パッチングサーバ3からそのDCの低レートデータを受信することで、再生を継続する。
【0037】
尚、ノード1Cは、視聴ポイント要求、及び当該視聴ポイントの低レートデータを取得するための低レートデータ要求をパッチングサーバ3へ送信し、パッチングサーバ3から視聴ポイント、及び当該視聴ポイントの低レートデータを取得するようにしてもよい。
【0038】
そして、ノード1Cは、パッチング処理が終了すると、DC20,DC21について通常レートの映像データを取得するためのデータ要求をノード1Aへ送信し、ノード1AからDC20,DC21の通常レートの映像データ(以下、「通常レートデータ」という。)を受信してバッファメモリに蓄積する。また、ノード1Cは、DC22について映像データを取得するためのデータ要求をノード1Bへ送信し、ノード1BからDC22のデータを受信してバッファメモリに蓄積する。
【0039】
これにより、パッチング処理の際に、パッチングサーバ3との間の回線が混雑しているとき、パッチングサーバ3からノード1Cへ低レートの映像データが送信されるから、送信データ量が低減し、ノード1Cとパッチングサーバ3との間の輻輳を回避することができ、ノード1Cにおける映像データの再生は途切れることなく低遅延とすることができる。
【0040】
(実施例1によるノードの構成)
実施例1によるノード1の構成について説明する。
図3は、実施例1によるノード1の構成を示すブロック図である。このノード1は、送受信手段10、バッファメモリ11、再生手段12、バッファマップ保存手段13、バッファマップ作成手段14及び回線状況管理(判定)手段15を備えている。
図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ネットワークに参加したとき、または再生が停止したとき、視聴ポイントを取得するための視聴ポイント要求をパッチングサーバ3へ送信し、パッチングサーバ3から視聴ポイントを受信する。
【0045】
データ取得手段54は、視聴ポイント以降の未取得の映像データを取得するために、上流ノード1から取得したバッファマップをバッファメモリ11から読み出し、バッファマップに基づいて、取得したいデータが蓄積されている上流ノード1(データの取得先)を特定し、データ要求を取得先の上流ノード1へ送信する。そして、データ取得手段54は、取得先の上流ノード1からデータ要求に対応するデータを受信し、バッファメモリ11に蓄積する。
【0046】
パッチング手段55は、パッチング処理の際に、回線状況管理手段15によりパッチングサーバ3との間の回線が混雑していないと判定された場合、通常レートデータを取得するためのデータ要求をパッチングサーバ3へ送信し、回線が混雑していると判定された場合、低レートデータを取得するための低レートデータ要求をパッチングサーバ3へ送信する。そして、パッチング手段55は、パッチングサーバ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のバッファマップを作成し、作成したバッファマップを送受信手段10に出力する。バッファマップ作成手段14により作成されたバッファマップは、下流ノード1からのバッファマップ要求に従って送信される。
【0052】
回線状況管理手段15は、送受信手段10を介して、パッチングサーバ3との間の回線状況(パッチングサーバ3から当該ノード1への回線状況)をチェックして回線速度を測定し、測定した回線速度が所定速度よりも低い場合、回線が混雑していると判定し、測定した回線速度が所定速度以上である場合、回線が混雑していないと判定し、回線状況を送受信手段10に出力する。
【0053】
(バッファメモリ)
図5は、バッファメモリ11に蓄積されるデータの量と、視聴ポイント、パッチングスレッショルド及び再生スレッショルドとの関係を説明する図である。
図5に示すように、バッファメモリ11には、例えば、14個のDCを蓄積する領域が確保されており、時間軸上に番号が若い順にDCが蓄積される。バッファメモリ11は、新たなDCが蓄積されるときに、最も古いDCが廃棄される。
図5の例は、バッファメモリ11にDC9〜DC22が蓄積されており、新たなDC22が蓄積されたことにより、最も古いDC8が廃棄されたことを示している。
【0054】
また、バッファメモリ11には、視聴ポイントを基準位置にして、これよりも番号が新しい方、すなわちこれから視聴するデータの所定位置にパッチングスレッショルド及び再生スレッショルドが予め設定されている。視聴ポイントは、再生手段12により映像データが再生される現在の位置であって、当該ノード1を用いて配信サービスを受ける利用者が視聴する現時点の映像データの位置を示している。パッチングスレッショルドは、上流ノード1の代わりにパッチングサーバ3からDCが取得される位置を示している。バッファメモリ11に蓄積されたDCの位置がパッチングスレッショルド以下になると、パッチング処理が行われる。送受信手段10のパッチング手段55は、バッファメモリ11を検索することにより、再生に伴ってDCが減少し、バッファメモリ11の先頭から隙間なく蓄積された末尾のDCの位置を示すポインタがパッチングスレッショルド以下になった場合に(または、視聴ポイントからパッチングスレッショルドまでの間に存在しないDCがある場合に(DCは存在するが、連番のDCが抜けている場合に、))、パッチングサーバ3からDCを取得する。再生スレッショルドは、再生手段12が再生を最初に開始するために必要なデータ量の位置、または再生を再開するために必要なデータ量の位置を示している。再生手段12は、バッファメモリ11からDCを読み出して再生を開始または再開する際に、DCが再生スレッショルドの位置まで蓄積されるのを待って、視聴ポイントの位置のDCを読み出して再生を行う。
【0055】
(データ再生処理)
図6は、視聴ポイント及び再生スレッショルドを基準位置としたデータ再生処理を示すフローチャートである。このデータ再生処理は、再生手段12により行われる。再生手段12は、再生中であるか否かを判定し(ステップS601)、再生中であると判定した場合(ステップS601:Y)、ステップS602へ移行し、再生中でない(再生が停止中である)と判定した場合(ステップS601:N)、ステップS605へ移行する。
【0056】
再生手段12は、再生中の場合、ステップS601から移行してバッファメモリ11を検索し、バッファメモリ11の先頭から隙間なく蓄積された末尾のDCの位置を示すポインタが視聴ポイント以下であるか否かを判定する(ステップS602)。再生手段12は、ステップS602において、DCのポインタが視聴ポイント以下でないと判定した場合(ステップS602:N)、再生を継続する(ステップS603)。つまり、再生手段12は、バッファメモリ11から視聴ポイントのDCを読み出し、DCにより映像データを再生する。一方、再生手段12は、ステップS602において、DCのポインタが視聴ポイント以下であると判定した場合(ステップS602:Y)、再生を停止する(ステップS604)。この場合、ノード1の送受信手段10は、バッファメモリ11をクリアし、視聴ポイント取得手段53は、パッチングサーバ3から視聴ポイントを取得し、パッチング手段55は、視聴ポイント以降のデータをパッチングサーバ3から取得する。
【0057】
再生手段12は、再生中でない(再生が停止中である)場合、ステップS601から移行してバッファメモリ11を検索し、DCのポインタが再生スレッショルド以下であるか否かを判定する(ステップS605)。再生手段12は、ステップS605において、DCのポインタが再生スレッショルド以下でないと判定した場合(ステップS605:N)、再生を開始する(ステップS606)。つまり、再生手段12は、バッファメモリ11から視聴ポイントのDCを読み出し、DCにより映像データを再生する。一方、再生手段12は、ステップS605において、DCのポインタが再生スレッショルド以下であると判定した場合(ステップS605:Y)、再生停止を継続する。
【0058】
このように、データ再生処理を行う再生手段12は、バッファメモリ11から視聴ポイントのDCを読み出し、DCにより映像データを再生し、DCが視聴ポイント以下になった場合に再生を停止し、DCが再生スレッショルドの位置まで蓄積されるのを待って、再生を開始する。
【0059】
(パッチング処理)
図7は、パッチングスレッショルドを基準位置とした通常のパッチング処理を示すフローチャートである。このパッチング(手当て)処理は、送受信手段10のパッチング手段55により行われ、バッファメモリ11に蓄積されたDCのポインタがパッチングスレッショルド以下になった場合に、上流ノード1からDCを取得する代わりに、緊急にパッチングサーバ3からDCを取得するものである。
【0060】
送受信手段10のパッチング手段55は、バッファメモリ11を検索し、DCのポインタがパッチングスレッショルド以下であるか否かを判定し(ステップS701)、DCのポインタがパッチングスレッショルド以下であると判定した場合(ステップS701:Y)、パッチング処理を行う。すなわち、パッチング手段55は、データ要求を上流ノード1へ送信する代わりに、パッチングサーバ3へ送信し(ステップS702)、パッチングサーバ3からデータ(DC)を受信し、DCをバッファメモリ11に蓄積する(ステップS703)。一方、パッチング手段55は、ステップS701において、DCのポインタがパッチングスレッショルド以下でないと判定した場合(ステップS701:N)、パッチング処理を行わない。
【0061】
このように、パッチング処理を行うパッチング手段55は、バッファメモリ11に蓄積されたDCのポインタがパッチングスレッショルド以下になった場合に、上流ノード1からDCを取得する代わりに、緊急にパッチングサーバ3からDCを取得する。尚、実施例1では、パッチング手段55は、
図7に示した通常のパッチング処理を改良した処理を行い、回線状況に応じてレートの異なる映像データをパッチングサーバ3から取得する。詳細については後述する。
【0062】
(実施例1によるノードの処理)
次に、実施例1によるノード1の処理について説明する。
図8は、実施例1によるノード1の処理を示すフローチャートである。
【0063】
ノード1が、配信サービスを行うP2Pネットワークに新たに参加すると、ノード1は、ネットワーク参加処理を行う(ステップS801)。
図11は、ネットワーク参加処理を説明する図であり、ノード1CがP2Pネットワークに新たに参加した場合を示している。ノード1CがP2Pネットワークに新たに参加すると、ノード1Cにおける送受信手段10のネットワーク参加処理手段51は、ディレクトリサーバ4へアクセスし、当該ノード1Cに関する情報(URL、IPアドレス等)をディレクトリサーバ4へ送信する(ステップS1101)。ディレクトリサーバ4は、ノード1Cからノード1Cに関する情報を受信すると、当該情報を記憶装置に登録して管理する。そして、ディレクトリサーバ4は、通信システム5を構成する配信サーバ2、パッチングサーバ3及びP2Pネットワークに参加している全てまたは一部のノード1に関する情報、並びに上流ノード1に関する情報及び下流ノード1に関する情報(URL、IPアドレス等)を、ノード1Cへ送信する(ステップS1102)。これにより、ノード1Cは、配信サーバ2、パッチングサーバ3、上流ノード1及び下流ノード1へアクセスすることができ、通信を行うことができる。すなわち、
図11に示すように、ノード1Cは、パッチングサーバ3へアクセスして視聴ポイント及び映像ストリームのデータを取得することができ、上流ノード1A,1Bへアクセスしてバッファマップ及び映像ストリームのデータを取得することができる。
【0064】
図8に戻って、ノード1は、上流ノード1からバッファマップを取得する(ステップS802)。具体的には、ノード1における送受信手段10のバッファマップ取得手段52は、ディレクトリサーバ4から受信した上流ノード1に関する情報に基づいて、バッファマップ要求を上流ノード1へ送信し、上流ノード1からバッファマップを受信し、バッファマップ保存手段13に出力する。バッファマップ保存手段13は、バッファマップをバッファメモリ11に保存する。通常、複数台の上流ノード1が存在する。
【0065】
ノード1は、パッチングサーバ3から視聴ポイントを取得する(ステップS803)。具体的には、ノード1における送受信手段10の視聴ポイント取得手段53は、ディレクトリサーバ4から受信したパッチングサーバ3に関する情報に基づいて、視聴ポイント要求をパッチングサーバ3へ送信し、パッチングサーバ3から視聴ポイントを受信する。尚、ノード1は、パッチングサーバ3から視聴ポイント、及び当該視聴ポイント以降の映像ストリームのデータを取得するようにしてもよい。これにより、新たなノード1がP2Pネットワークに参加したときに、新たなノード1は、上流ノード1から映像ストリームのデータを取得する場合に比べ、迅速かつ低遅延に映像ストリームのデータを取得することができる。
【0066】
ノード1は、通常時に、上流ノード1から映像ストリームのデータを取得し、パッチング処理時に、パッチングサーバ3から映像ストリームのデータを取得し、バッファメモリ11に蓄積する(ステップS804)。この映像データ取得処理の詳細については後述する。また、ノード1は、バッファメモリ11から映像ストリームのデータを読み出し、下流ノード1へ送信する(ステップS805)。この映像データ送信処理の詳細については後述する。
【0067】
ノード1は、P2Pネットワークから離脱したか否かを判定し(ステップS806)、P2Pネットワークから離脱していない場合(ステップS806:N)、映像データ取得処理(ステップS804)及び映像データ送信処理(ステップS805)を行い、P2Pネットワークから離脱した場合(ステップS806:Y)、所定のネットワーク離脱処理を行う(ステップS807)。ノード1は、P2Pネットワークに参加している間、前述の映像データ取得処理(ステップS804)及び映像データ送信処理(ステップS805)を繰り返す。
【0068】
(映像データ取得処理)
次に、
図8に示した映像データ取得処理(ステップS804)について詳細に説明する。
図9は、その詳細な処理を示すフローチャートである。ノード1における送受信手段10のデータ取得手段54は、
図8に示したステップS802または後述するステップS903にて取得した複数のバッファマップ(上流ノード1のバッファマップ)に基づいて、上流ノード1からデータを取得し、バッファメモリ11に蓄積する(ステップS901)。具体的には、データ取得手段54は、複数のバッファマップのうち、視聴中の上流ノード1から取得したバッファマップであること等、予め定められた条件により、いずれか一つのバッファマップを選択し、この選択したバッファマップに基づいて、バッファメモリ11内において視聴ポイント以降の未取得データを特定し、そのデータを取得するためのデータ要求を、選択したバッファマップに対応する上流ノード1へ送信する。そして、データ取得手段54は、データ要求を送信した上流ノード1からデータを受信し、バッファメモリ11に蓄積する。例えば、データ取得手段54は、バッファマップに基づいて、未取得データのDC番号を特定し、このDC番号の通常レートデータを蓄積している上流ノード1を特定し、データ要求を、特定した上流ノード1へ送信し、通常レートデータを受信する。
【0069】
送受信手段10の再生手段12は、
図6に示したデータ再生処理を行う(ステップS902)。すなわち、再生手段12は、バッファメモリ11から視聴ポイントのデータを読み出して映像データを再生し、バッファメモリ11に蓄積されたデータが視聴ポイント以下になった場合に再生を停止し、データが再生スレッショルドの位置にまで蓄積されるのを待って、再生を開始する。この場合、バッファメモリ11には、通常レートデータと低レートデータとが混在することがあり得るが、再生手段12は、バッファメモリ11から読み出したデータのレートに関わらず、読み出したデータを再生する。
【0070】
送受信手段10のバッファマップ取得手段52は、バッファマップ保存手段13からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード1へ送信し、バッファマップを上流ノード1から受信してバッファマップ保存手段13に出力する(ステップS903)。バッファマップ保存手段13は、バッファマップをバッファメモリ11に保存する。これにより、上流ノード1のバッファマップは、所定時間間隔で更新される。
【0071】
送受信手段10のパッチング手段55は、
図7に示したステップS701のとおり、バッファメモリ11を検索し、バッファメモリ11に蓄積されているデータの位置がパッチングスレッショルド以下であるか否かを判定することで、パッチング処理を行うか否かを判定する(ステップS904)。パッチング手段55は、パッチング処理を行わないと判定した場合(ステップS904:N)、ノード1は当該映像データ取得処理を終了する。一方、パッチング手段55は、パッチング処理を行うと判定した場合(ステップS904:Y)、ステップS905へ移行する。
【0072】
回線状況管理手段15は、ステップS904から移行して、送受信手段10を介して、パッチングサーバ3との間の回線速度(パッチングサーバ3からノード1への回線速度)をチェックし(ステップS905)、パッチングサーバ3との間の回線が混雑しているか否かを判定する(ステップS906)。回線状況管理手段15は、パッチングサーバ3との間の回線が混雑していないと判定した場合(ステップS906:N)、ステップS907へ移行し、パッチングサーバ3との間の回線が混雑していると判定した場合(ステップS906:Y)、ステップS908へ移行する。例えば、回線状況管理手段15は、測定したパッチングサーバ3の回線速度(測定速度)と予め設定された速度(設定速度)とを比較し、測定速度が設定速度を超えている場合、回線が混雑していないと判定し、測定速度が設定速度以下の場合、回線が混雑していると判定する。設定速度として、例えば、配信レートにシグナリングのオーバヘッドを加えた速度が用いられる。
【0073】
送受信手段10のパッチング手段55は、パッチングサーバ3との間の回線が混雑していない場合、ステップS906から移行して、パッチングサーバ3から通常レートデータを取得し、バッファメモリ11に蓄積する(ステップS907)。具体的には、パッチング手段55は、データ要求をパッチングサーバ3へ送信し、データ要求に対応する通常レートデータをパッチングサーバ3から受信し、バッファメモリ11に蓄積する。
【0074】
一方、送受信手段10のパッチング手段55は、パッチングサーバ3との間の回線が混雑している場合、ステップS906から移行して、パッチングサーバ3から低レートデータを取得し、バッファメモリ11に蓄積する(ステップS908)。具体的には、パッチング手段55は、低レートデータ要求をパッチングサーバ3へ送信し、低レートデータ要求に対応する低レートデータをパッチングサーバ3から受信し、バッファメモリ11に蓄積する。
【0075】
これにより、ノード1は、パッチング処理において、パッチングサーバ3との間の回線が混雑している場合、パッチングサーバ3から低レートデータを取得するようにしたから、送信データ量が低減し、ノード1とパッチングサーバ3との間の輻輳を回避することができる。そして、バッファメモリ11には、通常レートデータと低レートデータとが混在することになる。この場合、再生手段12は、ステップS902のデータ再生処理において、バッファメモリ11から連続した通常レートデータ及び低レートデータを読み出すから、途切れることのない再生を実現することができる。
【0076】
(映像データ取得処理/変形例)
尚、前述の映像データ取得処理の第1の変形例として、パッチング処理を行う場合、回線の混雑状況に応じて通常レートデータまたは低レートデータを取得する代わりに、低レートデータのみを取得するようにしてもよい。具体的には、送受信手段10のパッチング手段55は、回線状況管理手段15によりパッチング処理を行うと判定された場合、回線の混雑状況に関わらず、低レートデータ要求をパッチングサーバ3へ送信し、低レートデータ要求に対応する低レートデータをパッチングサーバ3から受信し、バッファメモリ11に蓄積する。
【0077】
これにより、ノード1は、パッチング処理において、パッチングサーバ3から低レートデータを取得するようにしたから、送信データ量は低減し、ノード1とパッチングサーバ3との間の輻輳を回避することができる。そして、再生手段12は、バッファメモリ11から連続した通常レートデータ及び低レートデータを読み出すから、途切れることのない再生を実現することができる。
【0078】
また、前述の映像データ取得処理の第2の変形例として、パッチングサーバ3から低レートデータを取得しているときのパッチングサーバ3との間の回線をチェックし、回線が混雑している場合、音声データのみを取得するようにしてもよい。具体的には、送受信手段10のパッチング手段55が、ステップS908において、パッチングサーバ3から低レートデータを取得する処理を行っているときに、回線状況管理手段15は、パッチングサーバ3との間の回線速度をチェックし、パッチングサーバ3との間の回線が低レートデータ受信時において混雑しているか否かを判定する。例えば、回線状況管理手段15は、低レートデータを取得しているときに測定したパッチングサーバ3の回線速度(測定速度)と予め設定された速度(設定速度)とを比較し、測定速度が設定速度を超えている場合、回線が混雑していないと判定し、測定速度が設定速度以下の場合、回線が混雑していると判定する。設定速度として、例えば、低レートの配信レートにシグナリングのオーバヘッドを加えた速度が用いられる。
【0079】
送受信手段10のパッチング手段55は、低レートデータを取得しているときに回線が混雑していない場合、低レートデータを取得し、回線が混雑している場合、音声データのみを取得する。すなわち、パッチング手段55は、音声データを取得するための音声データ要求をパッチングサーバ3へ送信し、パッチングサーバ3から音声データのみを受信してバッファメモリ11に蓄積する。
【0080】
これにより、ノード1は、パッチング処理において、パッチングサーバ3から低レートデータを取得しているときに回線が混雑している場合、パッチングサーバ3から音声データのみを取得するようにしたから、送信データ量は一層低減し、ノード1とパッチングサーバ3との間の輻輳を一層回避することができる。そして、バッファメモリ11には、通常レートデータと低レートデータと音声データとが混在することになる。この場合、再生手段12は、ステップS902のデータ再生処理において、バッファメモリ11から連続した通常レートデータ、低レートデータ及び音声データを読み出すから、途切れることのない再生を実現することができる。
【0081】
(映像データ送信処理)
次に、
図8に示した映像データ送信処理(ステップS805)について詳細に説明する。
図10は、その詳細な処理を示すフローチャートである。ノード1のバッファマップ作成手段14は、所定の時間間隔にて、バッファメモリ11に蓄積されたデータに基づいて、当該ノード1のバッファマップを作成する(ステップS1001)。
【0082】
送受信手段10のバッファマップ送信手段56は、下流ノード1からバッファマップ要求を受信したか否かを判定し(ステップS1002)、バッファマップ要求を受信したと判定した場合(ステップS1002:Y)、バッファマップ作成手段14により作成されたバッファマップを、バッファマップ要求を送信してきた下流ノード1へ送信し(ステップS1003)、ステップS1004へ移行する。一方、バッファマップ送信手段56は、ステップS1002において、バッファマップ要求を受信していないと判定した場合(ステップS1002:N)、ステップS1004へ移行する。
【0083】
送受信手段10のデータ送信手段57は、ステップS1002またはステップS1003から移行して、下流ノード1からデータ要求を受信したか否かを判定し(ステップS1004)、データ要求を受信したと判定した場合(ステップS1004:Y)、バッファメモリ11からデータ要求に対応するデータを読み出し、読み出したデータを、データ要求を送信してきた下流ノード1へ送信し(ステップS1005)、処理を終了する。一方、データ送信手段57は、ステップS1004において、データ要求を受信していないと判定した場合(ステップS1004:N)、処理を終了する。
【0084】
これにより、ノード1は、下流ノード1からの要求に応じて、バッファマップ及びデータを送信するから、P2Pネットワークによる映像データの中継を実現することができる。
【0085】
(実施例1によるパッチングサーバの構成)
次に、実施例1によるパッチングサーバ3の構成について説明する。
図12は、実施例1によるパッチングサーバ3の構成を示すブロック図である。このパッチングサーバ3は、送受信手段30、記憶装置31、視聴ポイント把握手段32、視聴ポイント提供手段33及び映像データ変換手段34を備えている。回線状況管理(判定)手段35については後述する。
【0086】
送受信手段30は、配信サーバ2から映像ストリームをDC毎のデータとして受信し、記憶装置31に蓄積する。また、送受信手段30は、ノード1から視聴ポイント要求を受信し、視聴ポイント提供手段33により提供された視聴ポイントを、視聴ポイント要求を送信してきたノード1へ送信する。また、送受信手段30は、ノード1からデータ要求を受信すると、記憶装置31からデータ要求に対応するデータ(通常レートデータ)を読み出し、読み出したデータを、データ要求を送信してきたノード1へ送信する。さらに、送受信手段30は、ノード1から低レートデータ要求を受信すると、記憶装置31から低レートデータ要求に対応する低レートデータを読み出し、読み出した低レートデータを、低レートデータ要求を送信してきたノード1へ送信する。
【0087】
記憶装置31には、配信サーバ2から受信した映像ストリームのデータ(通常レートデータ)であるDCがそのDC番号と共に、時間軸上のシーケンシャル番号順に、所定量蓄積され、また、通常レートデータに対応した低レートデータも同様に蓄積されている。
【0088】
視聴ポイント把握手段32は、送受信手段30が配信サーバ2から連続して受信した映像ストリームのデータに基づいて、現在の視聴ポイントを設定(把握)する。例えば、視聴ポイント把握手段32は、連続して受信した映像ストリームデータのうち最新に受信したデータのDC番号よりも所定数前のDC番号を視聴ポイントに設定する。視聴ポイント提供手段33は、視聴ポイント把握手段32により設定された視聴ポイントを、送受信手段30に提供する。
【0089】
映像データ変換手段34は、記憶装置31から通常レートデータ(配信サーバ2から連続して受信した映像ストリームのデータ)を読み出し、読み出した通常レートデータを低レートデータに変換し、低レートデータを記憶装置31に蓄積する。これにより、記憶装置31には、配信サーバ2から連続して受信した通常レートデータに加え、対応する低レートデータも蓄積される。
【0090】
(実施例1によるパッチングサーバの処理)
次に、実施例1によるパッチングサーバ3の処理について説明する。
図13は、実施例1によるパッチングサーバ3の処理を示すフローチャートである。
【0091】
パッチングサーバ3の送受信手段30は、配信サーバ2から映像ストリームのデータを受信したか否かを判定し(ステップS1301)、データを受信した場合(ステップS1301:Y)、受信したデータを記憶装置31に蓄積する(ステップS1302)。また、映像データ変換手段34は、記憶装置31からデータ(通常レートデータ)を読み出し、読み出した通常レートデータを低レートデータに変換し、低レートデータを記憶装置31に蓄積する(ステップS1303)。また、視聴ポイント把握手段32は、連続して受信した映像ストリームのデータに基づいて、視聴ポイントを設定する(ステップS1304)。一方、送受信手段30は、ステップS1301において、データを受信していない場合(ステップS1301:N)、ステップS1305へ移行する。
【0092】
送受信手段30は、ステップS1301またはステップS1304から移行して、ノード1から視聴ポイント要求を受信したか否かを判定し(ステップS1305)、視聴ポイント要求を受信した場合(ステップS1305:Y)、視聴ポイント提供手段33は、視聴ポイント把握手段32によりステップS1304にて設定された視聴ポイントを送受信手段30に提供する。そして、送受信手段30は、視聴ポイントを、視聴ポイント要求を送信してきたノード1へ送信する(ステップS1306)。一方、送受信手段30は、視聴ポイント要求を受信していない場合(ステップS1305:N)、ステップS1307へ移行する。
【0093】
送受信手段30は、ステップS1305またはステップS1306から移行して、ノード1からデータ要求(通常レートデータを取得するためのデータ要求)を受信したか否かを判定し(ステップS1307)、データ要求を受信した場合(ステップS1307:Y)、記憶装置31からデータ要求に対応する通常レートデータを読み出し、読み出した通常レートデータを、データ要求を送信してきたノード1へ送信する(ステップS1308)。一方、送受信手段30は、データ要求を受信していない場合(ステップS1307:N)、ステップS1309へ移行する。
【0094】
送受信手段30は、ステップS1307またはステップS1308から移行して、ノード1から低レートデータ要求を受信したか否かを判定し(ステップS1309)、低レートデータ要求を受信した場合(ステップS1309:Y)、記憶装置31から低レートデータ要求に対応する低レートデータを読み出し、読み出した低レートデータを、低レートデータ要求を送信してきたノード1へ送信する(ステップS1310)。一方、送受信手段30は、低レートデータ要求を受信していない場合(ステップS1309:N)、ステップS1311へ移行する。そして、パッチングサーバ3は、処理が終了しない限り、ステップS1301〜ステップS1310を繰り返す(ステップS1311)。
【0095】
以上のように、実施例1によれば、ノード1における送受信手段10のパッチング手段55は、パッチングサーバ3との間の回線が混雑している場合、パッチングサーバ3から低レートデータを取得するようにした。これにより、パッチングサーバ3からノード1への送信データ量が低減し、ノード1とパッチングサーバ3との間の輻輳を回避することができる。そして、ノード1のバッファメモリ11には、通常レートデータ及び低レートデータが混在することになるが、途切れることなく映像ストリームのデータを取得することができる。したがって、パッチングサーバ3との間の回線が混雑している場合であっても、配信サービスを継続させることが可能となり、ノード1を用いる利用者は、再生された映像がフリーズしないから、継続した配信サービスを受けることができる。
【0096】
また、実施例1によれば、ノード1がP2Pネットワークに参加またはP2Pネットワークから離脱した場合であっても、全てのノード1は前述の処理を行うから、配信サービスを継続させることができる。
【0097】
また、実施例1によれば、このP2Pネットワークによる配信サービスと、ソーシャルネットワーク等の他のサービスとを連携する場合にも、全てのノード1は前述の処理を行うから、配信サービスを継続させることができ、他のサービスとの間で低遅延にて時間的な整合を図ることができる。
【0098】
尚、前述した実施例1において、パッチングサーバ3は、ノード1から低レートデータ要求を受信し、低レートデータをノード1へ送信するようにしたが、低レートデータは、低レートの映像データ及び音声データにより構成されるものであってもよいし、音声データを含まない低レートの映像データのみとしてもよい。低レートデータは、例えば、MPEG等のように、動き成分を抽出してフレーム間圧縮を行う動画圧縮形式において、動き成分を含まない画面全体の静止画情報であるイントラフレーム及び音声データにより構成される。また、例えば、イントラフレームのみにより構成される。また、低レートデータの代わりに、音声データのみを送信するようにしてもよい。これにより、回線混雑時に取得した品質の低い映像データ及び音声データ、品質の低い映像データのみ、または音声データのみが再生されることになるが、配信サービスは継続され、利用者は、継続した配信サービスを受けることができる。特に、低レートの映像データのみまたは音声データのみとした場合には、送信データ量が一層低減するから、パッチングサーバ3との間の輻輳を一層回避した状況の下で、配信サービスを継続させることができる。
【0099】
また、実施例1において、ノード1は、パッチング処理の際に、パッチングサーバ3から通常レートデータまたは低レートデータを取得するようにしたが、パッチングサーバ3の代わりに配信サーバ2から取得するようにしてもよい。この場合、配信サーバ2は、
図12に示した構成により、
図13に示した処理を行う。これにより、P2Pネットワークの通信システム5にパッチングサーバ3が存在しない場合であっても、ノード1は、パッチング処理を行うことができる。後述する実施例2,3についても同様である。
【0100】
また、実施例1において、ノード1は、パッチング処理の際に、パッチングサーバ3との間の回線が混雑しているか否かを判定し、混雑状況に応じてデータ要求または低レートデータ要求をパッチングサーバ3へ送信し、パッチングサーバ3から通常レートデータまたは低レートデータを受信するようにした。これに対し、ノード1は、パッチング処理の際に、回線が混雑しているか否かを判定しないで、データ要求をパッチングサーバ3へ送信し、パッチングサーバ3は、複数のノード1から受信するデータ要求の混雑状況を判定し、混雑状況に応じて通常レートデータまたは低レートデータを送信するようにしてもよい。
【0101】
この場合、ノード1は、パッチング処理を行う場合、データ要求をパッチングサーバ3へ送信し、パッチングサーバ3から通常レートデータまたは低レートデータを受信してバッファメモリ11に蓄積する。
【0102】
一方、パッチングサーバ3は、
図12に示したように、回線状況管理手段35も備えることになる。パッチングサーバ3の回線状況管理手段35は、送受信手段30を介して、複数のノード1からデータ要求を受信してデータを複数のノード1へ送信する回線状況をチェックし、複数のノード1との間の回線の混雑状況(帯域状況)を判定する。そして、パッチングサーバ3の送受信手段30は、ノード1からデータ要求を受信したときに、回線状況管理手段35により回線が混雑していないと判定された場合、記憶装置31から通常レートデータを読み出し、読み出した通常レートデータを、データ要求を送信してきたノード1へ送信する。一方、送受信手段30は、回線が混雑していると判定された場合、記憶装置31から低レートデータを読み出し、読み出した低レートデータを、データ要求を送信してきたノード1へ送信する。例えば、回線状況管理手段35は、測定した回線速度(測定速度)と予め設定された速度(設定速度)とを比較し、測定速度が設定速度を超えている場合、回線が混雑していないと判定し、測定速度が設定速度以下の場合、回線が混雑していると判定する。一例として、回線状況管理手段35は、予め測定したパッチングサーバ3における実効帯域の80%を算出し、この算出結果(算出値)と、予め設定された要求帯域の合計値(データ要求中のノード1との間の帯域設定値の合計値)とを比較し、算出値が合計値以下の場合、回線が混雑していると判定し、算出値が合計値以下でない場合、回線が混雑していないと判定する。
【0103】
この場合、パッチングサーバ3の回線状況管理手段35は、低レートデータをノード1へ送信しているときに、さらに、送受信手段30を介して、複数のノード1との間の回線の混雑状況(帯域状況)を判定するようにしてもよい。パッチングサーバ3の送受信手段30は、ノード1からデータ要求を受信したときに、回線状況管理手段35により低レートデータを送信している回線が混雑していないと判定された場合、記憶装置31から低レートデータを読み出し、読み出した低レートデータを、データ要求を送信してきたノード1へ送信する。一方、送受信手段30は、低レートデータを送信している回線が混雑していると判定された場合、記憶装置31から音声データのみを読み出し、読み出した音声データのみを、データ要求を送信してきたノード1へ送信する。例えば、回線状況管理手段35は、低レートデータを送信しているときに測定した回線速度(測定速度)と予め設定された速度(設定速度)とを比較し、測定速度が設定速度を超えている場合、回線が混雑していないと判定し、測定速度が設定速度以下の場合、回線が混雑していると判定する。一例として、回線状況管理手段35は、予め測定したパッチングサーバ3における実効帯域の80%を算出し、この算出結果(算出値)と、予め設定された低レートでの要求帯域の合計値(データ要求中のノード1との間の低レートでの帯域設定値の合計値)とを比較し、算出値が合計値以下の場合、回線が混雑していると判定し、算出値が合計値以下でない場合、回線が混雑していないと判定する。
【0104】
〔実施例2〕
次に、実施例2について説明する。実施例2のノード1は、上流ノード1との間の回線が混雑しているとき、上流ノード1から低レートの映像データを取得する例である。
図14は、実施例2におけるP2Pネットワークの処理の概要を説明する図である。
図14に示すように、ノード1Cの上流ノードがノード1A,1Bであり、ノード1A,1Bのバッファメモリには、通常レートのDC8〜DC22及び対応する低レートのDC8〜DC22がそれぞれ蓄積され、ノード1Cのバッファメモリには、DC8〜DC15が蓄積されているものとする。また、ノード1Cは、DC15を視聴ポイントとしてデータを再生し、上流ノード1A,1BからバッファマップA,Bを取得しているものとする。
【0105】
ノード1Cは、上流ノード1A,1Bとの間の回線状況をチェックし、回線が混雑していることを判定すると、バッファマップA,Bに基づいて取得先のノード1Bを決定し、DC16についての低レートデータを取得するための低レートデータ要求を上流ノード1Bへ送信し、ノード1Bから低レートのDC16を受信し、バッファメモリに蓄積する。同様に、上流ノード1A,1Bとの間の回線が混雑している場合、ノード1Cは、ノード1Bから低レートのDC17〜DC20を取得し、ノード1Aから低レートのDC21を取得し、ノード1Bから低レートのDC22を取得する。
【0106】
そして、ノード1Cは、上流ノード1A,1Bとの間の回線が混雑していないことを判定すると、通常レートデータを取得するためのデータ要求をノード1A,1Bのいずれかへ送信し、通常レートデータを受信してバッファメモリに蓄積する。
【0107】
これにより、ノード1Cと上流ノード1A,1Bとの間の回線が混雑している場合、上流ノード1A,1Bからノード1Cへ低レートデータが送信されるから、送信データ量が低減し、ノード1Cは、途切れることなく映像データを受信することができる。したがって、配信サービスを継続させることができ、ノード1Cは、映像データの再生を途切れることなく行うことができる。
【0108】
(実施例2によるノードの構成)
実施例2によるノード1の構成について説明する。
図15は、実施例2によるノード1の構成を示すブロック図である。このノード1は、送受信手段20、バッファメモリ21、再生手段12、バッファマップ保存手段13、バッファマップ作成手段14、映像データ選択手段22、映像データ変換手段23及び回線状況管理(判定)手段24を備えている。
図15に示す構成は、
図1に示した通信システム5に含まれるノード1A,1B,1C,・・・に共通である。送受信手段20は、配信サーバ2、パッチングサーバ3、ディレクトリサーバ4、上流ノード1及び下流ノード1との間で通信を行う。
【0109】
送受信手段20は、
図4に示した実施例1の構成と同様に、ネットワーク参加処理手段51、バッファマップ取得手段52、視聴ポイント取得手段53、データ取得手段54、パッチング手段55、バッファマップ送信手段56、データ送信手段57等を備えている。
【0110】
ネットワーク参加処理手段51は、
図4に示した実施例1と同様に、当該ノード1がP2Pネットワークに新たに参加するときに、当該ノード1のアドレス等の情報を含む参加要求をディレクトリサーバ4へ送信し、P2Pネットワークに参加しているノード1に関する情報等をディレクトリサーバ4から受信する。
【0111】
バッファマップ取得手段52は、
図4に示した実施例1と同様に、バッファマップ要求を上流ノード1へ送信し、上流ノード1からバッファマップを受信する。視聴ポイント取得手段53は、
図4に示した実施例1と同様に、当該ノード1がP2Pネットワークに参加したとき、または、再生が停止したとき、視聴ポイント要求をパッチングサーバ3へ送信し、視聴ポイントをパッチングサーバ3から受信する。
【0112】
データ取得手段54は、
図4に示した実施例1と同様に、視聴ポイント以降の映像データを取得するために、上流ノード1から取得したバッファマップに基づいて、取得したいデータが蓄積されている上流ノード1(データの取得先)を特定する。また、データ取得手段54は、
図4に示した実施例1とは異なり、回線状況管理手段24により上流ノード1との間の回線が混雑していないと判定された場合、映像データ選択手段22から通常レートデータを示す選択結果を入力し、通常レートデータを取得するためのデータ要求を上流ノード1へ送信する。一方、データ取得手段54は、回線が混雑していると判定された場合、映像データ選択手段22から低レートデータを示す選択結果を入力し、低レートデータを取得するための低レートデータ要求を上流ノード1へ送信する。そして、データ取得手段54は、上流ノード1から通常レートデータまたは低レートデータを受信し、バッファメモリ21に蓄積する。
【0113】
パッチング手段55は、
図7に示した通常のパッチング処理を行い、パッチングサーバ3から通常レートデータを受信してバッファメモリ21に蓄積する。尚、パッチング手段55は、
図4に示した実施例1と同様に、パッチング処理の際に、回線状況管理手段15と同等の処理も行う回線状況管理手段24により判定されたパッチングサーバ3との間の回線の混雑状況に応じて、通常レートデータまたは低レートデータをパッチングサーバ3から取得するようにしてもよい。
【0114】
バッファマップ送信手段56は、
図4に示した実施例1と同様に、下流ノード1からバッファマップ要求を受信し、バッファマップ作成手段14により作成された当該ノード1のバッファマップをバッファメモリ21から読み出し、バッファマップ要求を送信してきた下流ノード1へ送信する。
【0115】
データ送信手段57は、
図4に示した実施例1とは異なり、下流ノード1から通常レートデータを取得するためのデータ要求、または低レートデータを取得するための低レートデータ要求を受信する。そして、データ送信手段57は、データ要求を受信した場合、このデータ要求に対応した通常レートデータをバッファメモリ21から読み出し、読み出した通常レートデータを、データ要求を送信してきた下流ノード1へ送信する。一方、データ送信手段57は、低レートデータ要求を受信した場合、この低レートデータ要求に対応した低レートデータをバッファメモリ21から読み出し、読み出した低レートデータを、低レートデータ要求を送信してきた下流ノード1へ送信する。
【0116】
バッファメモリ21には、
図5に示した実施例1と同様に、映像データを所定のサイズに分割したDC(通常レートのDC)がそのDC番号と共に、時間軸上のシーケンシャル番号順に蓄積され、さらに、通常レートのDCに対応した低レートのDC(図示しない映像データ変換手段により通常レートのDCが変換された低レートのDC)も、そのDC番号と共に、時間軸上のシーケンシャル番号順に蓄積されている。すなわち、バッファメモリ21には、通常レートデータと低レートデータとがシーケンシャルなDC番号順に蓄積されている。また、バッファメモリ21には、上流ノード1のバッファマップも保存されている。
【0117】
再生手段12は、
図3及び
図6に示した実施例1と同様に、バッファメモリ21から通常レートデータを読み出して再生を行う。前述のとおり、バッファメモリ21には、通常レートデータ及び低レートデータが蓄積されるが、再生のためには通常レートデータが優先的に用いられる。
【0118】
バッファマップ保存手段13は、
図3に示した実施例1と同様に、所定の時間間隔にて、上流ノード1のバッファマップを取得するための取得要求を送受信手段20に出力し、送受信手段20からバッファマップを入力し、入力したバッファマップをバッファメモリ21に保存する。
【0119】
バッファマップ作成手段14は、
図3に示した実施例1と同様に、所定の時間間隔にて、バッファメモリ21に蓄積されたデータに基づいて、当該ノード1のバッファマップを作成し、作成したバッファマップを送受信手段20に出力する。
【0120】
映像データ選択手段22は、回線状況管理手段24から回線状況を入力し、回線状況が混雑していることを示している場合、通常レートデータを選択結果に設定し、回線状況が混雑していないことを示している場合、低レートデータを選択結果として設定する。そして、映像データ選択手段22は、設定した選択結果を送受信手段20のデータ取得手段54に出力する。
【0121】
映像データ変換手段23は、バッファメモリ21から新たに蓄積された通常レートデータを読み出し、通常レートデータを低レートデータに変換し、変換後の低レートデータをバッファメモリ21に蓄積する。これにより、バッファメモリ21には、通常レートデータと低レートデータとが対になって蓄積される。尚、通常レートデータを低レートデータに変換する手法は既知であるから、ここでは説明を省略する。
【0122】
回線状況管理手段24は、送受信手段20を介して、上流ノード1との間の回線状況をチェックして回線速度を測定し、測定した回線速度が所定速度よりも低い場合、回線が混雑していると判定し、測定した回線速度が所定速度以上である場合、回線が混雑していないと判定する。そして、回線状況管理手段24は、判定した回線状況を送受信手段20及び映像データ選択手段22に出力する。
【0123】
(実施例2によるノードの処理)
次に、実施例2によるノード1の処理について説明する。実施例2によるノード1は、
図8に示した実施例1のフローチャートのうち、ステップS801〜ステップS803,ステップS806及びステップS807と同様の処理を行い、ステップS804,S805とは異なる処理を行う。ステップS801〜ステップS803,ステップS806及びステップS807の処理については実施例1にて説明済みであるから、ここでは説明を省略する。
【0124】
図8において、実施例2によるノード1は、ステップS801〜ステップS803の処理の後、上流ノード1から通常レートデータまたは低レートデータを取得し、バッファメモリ21に蓄積する(ステップS804)。この映像データ取得処理の詳細については後述する。また、ノード1は、下流ノード1へ通常レートデータまたは低レートデータを送信する(ステップS805)。この映像データ送信処理の詳細については後述する。そして、ノード1は、
図8に示した実施例1と同様に、P2Pネットワークに参加している間、前述の映像データ取得処理(ステップS804)及び映像データ送信処理(ステップS805)を繰り返す。
【0125】
(映像データ取得処理)
次に、実施例2における
図8の映像データ取得処理(ステップS804)について詳細に説明する。
図16は、その詳細な処理を示すフローチャートである。回線状況管理手段24は、送受信手段20を介して、上流ノード1との間の回線速度(上流ノード1から当該ノード1への回線速度)をチェックし(ステップS1601)、上流ノード1との間の回線が混雑しているか否かを判定する(ステップS1602)。回線状況管理手段24は、上流ノード1との間の回線が混雑していないと判定した場合(ステップS1602:N)、ステップS1603へ移行し、上流ノード1との間の回線が混雑していると判定した場合(ステップS1602:Y)、ステップS1604へ移行する。例えば、回線状況管理手段24は、測定した上流ノード1の回線速度(測定速度)と予め設定された速度(設定速度)とを比較し、測定速度が設定速度を超えている場合、回線が混雑していないと判定し、測定速度が設定速度以下の場合、回線が混雑していると判定する。設定速度として、例えば、配信レートにシグナリングのオーバヘッドを加えた速度が用いられる。
【0126】
ノード1における送受信手段20のデータ取得手段54は、上流ノード1との間の回線が混雑していない場合、ステップS1602から移行して、
図8に示したステップS802または後述するステップS1606にて取得した複数のバッファマップ(上流ノード1のバッファマップ)に基づいて、上流ノード1から通常レートデータを取得し、バッファメモリ21に蓄積する(ステップS1603)。具体的には、データ取得手段54は、複数のバッファマップのうちいずれか一つのバッファマップを選択し、この選択したバッファマップに基づいて、バッファメモリ21内において視聴ポイント以降の未取得データを特定し、その通常レートデータを取得するためのデータ要求を、選択したバッファマップに対応する上流ノード1へ送信する。そして、データ取得手段54は、データ要求を送信した上流ノード1から通常レートデータを受信し、バッファメモリ21に蓄積する。例えば、データ取得手段54は、バッファマップに基づいて、未取得データのDC番号を特定し、このDC番号の通常レートデータを蓄積している上流ノード1を特定し、データ要求を、特定した上流ノード1へ送信し、通常レートデータを受信する。
【0127】
一方、ノード1における送受信手段20のデータ取得手段54は、上流ノード1との間の回線が混雑している場合、ステップS1602から移行して、
図8に示したステップS802または後述するステップS1606にて取得した複数のバッファマップ(上流ノード1のバッファマップ)に基づいて、上流ノード1から低レートデータを取得し、バッファメモリ21に蓄積する(ステップS1604)。具体的には、データ取得手段54は、複数のバッファマップのうちいずれか一つのバッファマップを選択し、この選択したバッファマップに基づいて、バッファメモリ21内において視聴ポイント以降の未取得データを特定し、その低レートデータを取得するための低レートデータ要求を、選択したバッファマップに対応する上流ノード1へ送信する。そして、データ取得手段54は、低レートデータ要求を送信した上流ノード1から低レートデータを受信し、バッファメモリ21に蓄積する。
【0128】
送受信手段20の再生手段12は、ステップS1603及びステップS1604から移行して、
図6に示したデータ再生処理を行う(ステップS1605)。そして、送受信手段20のバッファマップ取得手段52は、バッファマップ保存手段13からの取得要求に基づいて、所定の時間間隔にて、バッファマップを取得するためのバッファマップ要求を上流ノード1へ送信し、バッファマップを上流ノード1から受信してバッファマップ保存手段13に出力する(ステップS1606)。バッファマップ保存手段13は、バッファマップをバッファメモリ21に保存する。これにより、バッファマップは、所定時間間隔で更新される。
【0129】
送受信手段20のパッチング手段55は、
図7に示したステップS701のとおり、バッファメモリ21を検索し、蓄積されているデータの位置がパッチングスレッショルド以下であるか否かを判定することで、パッチング処理を行うか否かを判定する(ステップS1607)。パッチング手段55は、パッチング処理を行うと判定した場合(ステップS1607:Y)、パッチングサーバ3からデータ(通常レートデータ)を取得し、バッファメモリ21に蓄積する(ステップS1608)。具体的には、パッチング手段55は、データ要求をパッチングサーバ3へ送信し、データ要求に対応する通常レートデータをパッチングサーバ3から受信してバッファメモリ21に蓄積する。
【0130】
映像データ変換手段23は、ステップS1607にてパッチング処理を行わないと判定した場合(ステップS1607:N)またはステップS1608から移行して、バッファメモリ21から新たに蓄積された通常レートデータを読み出し、低レートデータに変換し、変換後の低レートデータをバッファメモリ21に蓄積する(ステップS1609)。
【0131】
これにより、ノード1は、上流ノード1との間の回線が混雑している場合、上流ノード1から低レートデータを取得するようにしたから、送信データ量が低減し、ノード1と上流ノード1との間の輻輳を回避することができる。そして、バッファメモリ21には、通常レートデータと低レートデータとが混在することになる。この場合、再生手段12は、ステップS1605のデータ再生処理において、バッファメモリ21から連続した通常レートデータ及び低レートデータを読み出すから、途切れることのない再生を実現することができる。
【0132】
(映像データ取得処理/変形例)
尚、前述の映像データ取得処理の変形例として、上流ノード1から低レートデータを取得しているときの上流ノード1との間の回線をチェックし、回線が混雑している場合、音声データのみを取得するようにしてもよい。具体的には、送受信手段20のデータ取得手段54が、ステップS1604において、上流ノード1から低レートデータを取得する処理を行っているときに、回線状況管理手段24は、上流ノード1との間の回線速度をチェックし、上流ノード1との間の回線が低レートデータ受信時において混雑しているか否かを判定する。例えば、回線状況管理手段24は、低レートデータを取得しているときに測定した上流ノード1の回線速度を算出し、この算出結果(算出値)と、予め設定された設定値(例えば、低速の配信レートにシグナリングのオーバヘッドを加えた速度値)とを比較し、算出値が設定値以下の場合、回線が混雑していると判定し、算出値が設定値以下でない場合、回線が混雑していないと判定する。
【0133】
送受信手段20のデータ取得手段54は、低レートデータを取得しているときに回線が混雑していない場合、低レートデータを取得し、回線が混雑している場合、音声データのみを取得する。すなわち、データ取得手段54は、音声データを取得するための音声データ要求を上流ノード1へ送信し、上流ノード1から音声データのみを受信してバッファメモリ21に蓄積する。
【0134】
これにより、ノード1は、上流ノード1から低レートデータを取得しているときに回線が混雑している場合、上流ノード1から音声データのみを取得するようにしたから、送信データ量は一層低減し、ノード1と上流ノード1との間の輻輳を一層回避することができる。そして、バッファメモリ21には、通常レートデータと低レートデータと音声データとが混在することになる。この場合、再生手段12は、ステップS1605のデータ再生処理において、バッファメモリ21から連続した通常レートデータ、低レートデータ及び音声データを読み出すから、途切れることのない再生を実現することができる。
【0135】
(映像データ送信処理)
次に、実施例2における
図8の映像データ送信処理(ステップS805)について詳細に説明する。
図17は、その詳細な処理を示すフローチャートである。実施例2の映像データ送信処理は、
図10に示した実施例1の映像データ送信処理(ステップS1001〜ステップS1005)と同じ処理(ステップS1701〜ステップS1705)に、さらにステップS1706及びステップS1707の処理を加えたものである。
【0136】
ノード1における送受信手段20のデータ送信手段57は、ステップS1704またはステップS1705から移行して、下流ノード1から低レートデータ要求を受信したか否かを判定し(ステップS1706)、低レートデータ要求を受信したと判定すると(ステップS1706:Y)、バッファメモリ21から低レートデータ要求に対応する低レートデータを読み出し、読み出した低レートデータを、低レートデータ要求を送信してきた下流ノード1へ送信し(ステップS1707)、処理を終了する。一方、データ送信手段57は、ステップS1706において、低レートデータ要求を受信していないと判定すると(ステップS1706:N)、処理を終了する。
【0137】
これにより、ノード1は、下流ノード1からの要求に応じて、バッファマップ及び通常レートデータまたは低レートデータを送信するから、P2Pネットワークによる映像データの中継を実現することができる。
【0138】
(実施例2によるパッチングサーバの構成及び処理)
次に、実施例2によるパッチングサーバ3は、
図12を参照して、送受信手段30、記憶装置31、視聴ポイント把握手段32及び視聴ポイント提供手段33を備えている。また、パッチングサーバ3は、実施例1と同様に、
図13に示したステップS1301、ステップS1302、ステップS1304〜ステップS1308及びステップS1311の処理を行い、実施例2とは異なり、低レートデータに関する処理は行わない。
【0139】
以上のように、実施例2によれば、ノード1における送受信手段20のデータ取得手段54は、上流ノード1との間の回線が混雑している場合に、上流ノード1から低レートデータを取得するようにした。これにより、上流ノード1から当該ノード1への送信データ量が低減し、上流ノード1とノード1との間の輻輳を回避することができる。そして、ノード1のバッファメモリ21には、通常レートデータ及び低レートデータが混在することになるが、途切れることなく映像ストリームのデータを取得することができる。したがって、上流ノード1との間の回線が混雑している場合であっても、配信サービスを継続させることが可能となり、ノード1を用いる利用者は、再生された映像がフリーズしないから、継続した配信サービスを受けることができる。
【0140】
また、実施例2によれば、ノード1がP2Pネットワークに参加またはP2Pネットワークから離脱した場合であっても、全てのノード1は前述の処理を行うから、配信サービスを継続させることができる。
【0141】
また、実施例2によれば、このP2Pネットワークによる配信サービスと、ソーシャルネットワーク等の他のサービスとを連携する場合にも、全てのノード1は前述の処理を行うから、配信サービスを継続させることができ、他のサービスとの間で低遅延にて時間的な整合を図ることができる。
【0142】
尚、前述した実施例2において、上流ノード1は、下流ノード1から低レートデータ要求を受信し、低レートデータを下流ノード1へ送信するようにしたが、低レートデータは、前述したとおり、低レートの映像データ及び音声データにより構成されるものであってもよいし、音声データを含まない低レートの映像データのみとしてもよい。これにより、回線混雑時に取得した品質の低い映像データ及び音声データ、品質の低い映像データのみ、または音声データのみが再生されることになるが、配信サービスは継続され、利用者は、継続した配信サービスを受けることができる。特に、低レートの映像データのみとした場合には、送信データ量が一層低減するから、上流ノード1との間の輻輳を一層回避した状況の下で、配信サービスを継続させることができる。
【0143】
〔実施例2/変形例〕
次に、実施例2の変形例について説明する。実施例2の変形例は、実施例2において、映像ストリームのデータに階層化の概念を導入するものである。具体的には、実施例2の変形例によるノード1は、実施例2の処理を前提にして、上流ノード1から受信した通常レートデータを、差分データ及び低レートデータに分離し、分離した差分データ及び低レートデータをバッファメモリに蓄積する。また、ノード1は、下流ノード1からのデータ要求に従って、バッファメモリから差分データ及び低レートデータを読み出し、これらのデータを結合することで通常レートデータを生成し、生成した通常レートデータを下流ノード1へ送信する。つまり、ノード1は、通常レートデータの代わりに、通常レートデータを構成する差分データ及び低レートデータをバッファメモリに蓄積して管理する。この場合、
図1に示した配信サーバ2は、配信すべき映像ストリームのデータを予め擬似的に階層化し、階層化した映像ストリームのデータ、つまり、差分データ及び低レートデータから構成される通常レートデータを配信する。
【0144】
(実施例2の変形例によるノードの構成)
実施例2の変形例によるノード1の構成について説明する。
図21は、実施例2の変形例によるノード1の構成を示すブロック図である。このノード1は、送受信手段25、バッファメモリ26、再生手段12、バッファマップ保存手段13、バッファマップ作成手段14、映像データ選択手段22、回線状況管理手段24及び映像データ分離/結合手段27を備えている。
図21に示す構成は、
図1に示した通信システム5に含まれるノード1A,1B,1C,・・・に共通である。送受信手段25は、配信サーバ2、パッチングサーバ3、ディレクトリサーバ4、上流ノード1及び下流ノード1との間で通信を行う。
【0145】
送受信手段25は、
図4に示した実施例1の構成と同様に、ネットワーク参加処理手段51、バッファマップ取得手段52、視聴ポイント取得手段53、データ取得手段54、パッチング手段55、バッファマップ送信手段56、データ送信手段57等を備えている。
【0146】
ネットワーク参加処理手段51、バッファマップ取得手段52、視聴ポイント取得手段53及びバッファマップ送信手段56は、
図4に示した構成において、実施例2と同様の処理を行う。
【0147】
データ取得手段54は、実施例2と同様に、視聴ポイント以降の映像データを取得するために、上流ノード1から取得したバッファマップに基づいて、取得したいデータが蓄積されている上流ノード1(データの取得先)を特定する。また、データ取得手段54は、回線状況管理手段24により上流ノード1との間の回線が混雑していないと判定された場合、映像データ選択手段22から通常レートデータを示す選択結果を入力し、通常レートデータを取得するためのデータ要求を上流ノード1へ送信する。一方、データ取得手段54は、回線が混雑していると判定された場合、映像データ選択手段22から低レートデータを示す選択結果を入力し、低レートデータを取得するための低レートデータ要求を上流ノード1へ送信する。
【0148】
データ取得手段54は、上流ノード1から通常レートデータを受信した場合、通常レートデータを映像データ分離/結合手段27に出力し、映像データ分離/結合手段27から通常レートデータが分離された差分データ及び低レートデータを入力し、入力した差分データ及び低レートデータをバッファメモリ26に蓄積する。また、データ取得手段54は、上流ノード1から低レートデータを受信した場合、受信した低レートデータをバッファメモリ26に蓄積する。
【0149】
パッチング手段55は、
図7に示した通常のパッチング処理を行う際に、パッチングサーバ3から受信した通常レートデータを映像データ分離/結合手段27に出力し、映像データ分離/結合手段27から通常レートデータが分離された差分データ及び低レートデータを入力し、入力した差分データ及び低レートデータをバッファメモリ26に蓄積する。尚、パッチング手段55は、実施例1と同様に、パッチング処理の際に、パッチングサーバ3との間の回線の混雑状況に応じて、通常レートデータまたは低レートデータをパッチングサーバ3から取得するようにしてもよい。
【0150】
データ送信手段57は、実施例2と同様に、下流ノード1から通常レートデータを取得するためのデータ要求、または低レートデータを取得するための低レートデータ要求を受信する。そして、データ送信手段57は、データ要求を受信した場合、このデータ要求に対応した差分データ及び低レートデータをバッファメモリ26から読み出し、読み出した差分データ及び低レートデータを、映像データ分離/結合手段27に出力し、映像データ分離/結合手段27から差分データ及び低レートデータが結合された通常レートデータを入力し、入力した通常レートデータを、データ要求を送信してきた下流ノード1へ送信する。一方、データ送信手段57は、低レートデータ要求を受信した場合、この低レートデータ要求に対応した低レートデータをバッファメモリ26から読み出し、読み出した低レートデータを、低レートデータ要求を送信してきた下流ノード1へ送信する。
【0151】
図22は、
図21に示した実施例2の変形例のノード1におけるバッファメモリ26を説明する図である。バッファメモリ26には、通常レートデータ(通常レート映像)を構成する差分データ及び低レートデータ(低レート映像)が、映像データを所定のサイズに分割したDCの番号と共に、時間軸上のシーケンシャル番号順に蓄積されている。すなわち、バッファメモリ26には、通常レートデータが分離された差分データと低レートデータとがシーケンシャルなDC番号順に蓄積されている。差分データは、通常レートデータが階層化された場合の上位階層のデータに相当し、低レートデータは、基本階層のデータに相当する。また、バッファメモリ26には、上流ノード1のバッファマップも保存されている。尚、上流ノード1から低レートデータが取得された場合、バッファメモリ26には、そのDC番号において低レートデータのみが蓄積されている場合もあり得る。
【0152】
再生手段12は、バッファメモリ26から視聴ポイントの差分データ及び低レートデータを読み出し、読み出した差分データ及び低レートデータを映像データ分離/結合手段27に出力し、映像データ分離/結合手段27から差分データ及び低レートデータが結合された通常レートデータを入力し、入力した通常レートデータを再生する。また、再生手段12は、バッファメモリ26の視聴ポイントに低レートデータのみが蓄積されている場合、低レートデータを読み出して再生を行う。
【0153】
バッファマップ保存手段13、バッファマップ作成手段14、映像データ選択手段22及び回線状況管理手段24は、
図15に示した構成において、実施例2と同様の処理を行う。
【0154】
図23は、
図21に示した実施例2の変形例における映像データ分離/結合手段27の処理を説明する図である。映像データ分離/結合手段27は、データ取得手段54、パッチング手段55または再生手段12から通常レートデータを入力した場合、映像データ分離手段として機能する。映像データ分離/結合手段27は、入力した1つのDCである通常レートデータを差分データ及び低レートデータに分離し、分離した差分データ及び低レートデータを、通常レートデータの入力先であるデータ取得手段54、パッチング手段55または再生手段12に出力する。
【0155】
例えば、映像データ分離/結合手段27は、MPEG等のフレーム間圧縮を用いる動画圧縮形式において、入力した通常レートデータ(通常レート映像)をインターフレーム及びイントラフレームに分離し、インターフレームを差分データとし、イントラフレームを低レートデータとする。
【0156】
一方、映像データ分離/結合手段27は、データ送信手段57から差分データ及び低レートデータを入力した場合、映像データ結合手段として機能する。映像データ分離/結合手段27は、入力した差分データ及び低レートデータを1つのDCである通常レートデータに結合し、結合した通常レートデータをデータ送信手段57に出力する。
【0157】
(実施例2の変形例によるノードの処理)
次に、実施例2の変形例によるノード1の処理について説明する。実施例2の変形例によるノード1は、
図8に示したフローチャートのうち、ステップS801〜ステップS803,ステップS806及びステップS807と同様の処理を行い、ステップS804,S805とは異なる処理を行う。ステップS801〜ステップS803,ステップS806及びステップS807の処理については説明済みであるから、ここでは説明を省略する。
【0158】
図8において、実施例2の変形例によるノード1は、ステップS801〜ステップS803の処理の後、上流ノード1から通常レートデータまたは低レートデータを取得し、取得した通常レートデータを差分データ及び低レートデータに分離してバッファメモリ26に蓄積し、取得した低レートデータをバッファメモリ26に蓄積する(ステップS804)。この映像データ取得処理の詳細については後述する。また、ノード1は、バッファメモリ26から差分データ及び低レートデータを読み出して通常レートデータに結合し、結合した通常レートデータを下流ノード1へ送信し、バッファメモリ26から低レートデータを読み出して下流ノード1へ送信する(ステップS805)。この映像データ送信処理の詳細については後述する。そして、ノード1は、P2Pネットワークに参加している間、前述の映像データ取得処理(ステップS804)及び映像データ送信処理(ステップS805)を繰り返す。
【0159】
(映像データ取得処理)
次に、実施例2の変形例における
図8の映像データ取得処理(ステップS804)について詳細に説明する。
図24は、その詳細な処理を示すフローチャートである。
図24に示すステップS2401,ステップS2402,ステップS2405〜ステップS2408は、
図16に示したステップS1601,ステップS1602,ステップS1604〜ステップS1607とそれぞれ同じであるから、説明を省略する。
【0160】
回線状況管理手段24が、ステップS2402において、上流ノード1との間の回線が混雑していると判定した場合(ステップS2402:Y)、送受信手段25のデータ取得手段54は、上流ノード1から取得したバッファマップに基づいて、上流ノード1から低レートデータを取得し、バッファメモリ26に蓄積する(ステップS2405)。一方、回線状況管理手段24が、上流ノード1との間の回線が混雑していないと判定した場合(ステップS2402:N)、データ取得手段54は、上流ノード1から取得したバッファマップに基づいて、上流ノード1から通常レートデータを取得する(ステップS2403)。そして、データ取得手段54は、取得した通常レートデータを映像データ分離/結合手段27に出力し、映像データ分離/結合手段27は、通常レートデータを差分データ及び低レートデータに分離し、データ取得手段54は、映像データ分離/結合手段27により分離された差分データ及び低レートデータをバッファメモリ26に蓄積する(ステップS2404)。
【0161】
送受信手段25のパッチング手段55が、ステップS2408において、パッチング処理を行うと判定した場合(ステップS2408:Y)、パッチングサーバ3からデータ(通常レートデータ)を取得する(ステップS2409)。そして、パッチング手段55は、取得した通常レートデータを映像データ分離/結合手段27に出力し、映像データ分離/結合手段27は、通常レートデータを差分データ及び低レートデータに分離し、パッチング手段55は、映像データ分離/結合手段27により分離された差分データ及び低レートデータをバッファメモリ26に蓄積する(ステップS2410)。
【0162】
(映像データ送信処理)
次に、実施例2の変形例における
図8の映像データ送信処理(ステップS805)について詳細に説明する。
図25は、その詳細な処理を示すフローチャートである。
図25に示すステップS2501〜ステップS2504、ステップS2507、ステップS2508及びステップS2510は、
図17に示したステップS1701〜ステップS1704、ステップS1705、ステップS1706及びステップS1707とそれぞれ同じであるから、説明を省略する。
【0163】
送受信手段25のデータ送信手段57が、ステップS2504において、下流ノード1からデータ要求を受信したと判定した場合(ステップS2504:Y)、バッファメモリ26からデータ要求に対応する差分データ及び低レートデータを読み出す(ステップS2505)。データ送信手段57は、読み出した差分データ及び低レートデータを映像データ分離/結合手段27に出力し、映像データ分離/結合手段27は、差分データ及び低レートデータを結合して通常レートデータを生成する(ステップS2506)。そして、データ送信手段57は、映像データ分離/結合手段27により結合された通常レートデータを、データ要求を送信してきた下流ノード1へ送信する(ステップS2507)。尚、バッファメモリ26にデータ要求に対応するデータとして低レートデータのみが蓄積されている場合、データ送信手段57は、バッファメモリ26から低レートデータを読み出し、読み出した低レートデータを、データ要求を送信してきた下流ノード1へ送信する。
【0164】
送受信手段25のデータ送信手段57が、ステップS2508において、下流ノード1から低レートデータ要求を受信したと判定した場合(ステップS2508:Y)、バッファメモリ26から低レートデータ要求に対応する低レートデータを読み出し(ステップS2509)、読み出した低レートデータを、低レートデータ要求を送信してきた下流ノード1へ送信する(ステップS2510)。
【0165】
以上のように、実施例2の変形例によれば、実施例2と同様に、ノード1における送受信手段25のデータ取得手段54は、上流ノード1との間の回線が混雑している場合に、上流ノード1から低レートデータを取得するようにした。これにより、実施例2と同様の効果を奏し、配信サービスを継続させることが可能となる。
【0166】
また、実施例2の変形例によれば、ノード1の映像データ分離/結合手段27は、上流ノード1またはパッチングサーバ3からの通常レートデータを、差分データ及び低レートデータに分離し、データ取得手段54は、映像データ分離/結合手段27により分離された差分データ及び低レートデータをバッファメモリ26に蓄積するようにした。また、映像データ分離/結合手段27は、送受信手段25のデータ送信手段57によりバッファメモリ26から読み出された差分データ及び低レートデータを結合して通常レートデータを作成し、データ送信手段57は、映像データ分離/結合手段27により結合された通常レートデータを下流ノード1へ送信するようにした。つまり、ノード1は、通常レートデータの代わりに、通常レートデータが分離された差分データ及び低レートデータをバッファメモリ26に蓄積して管理するようにした。これにより、実施例2では通常レートデータと低レートデータとを2重に管理するが、実施例2の変形例では2重の管理が不要となり、バッファメモリ26の容量を小さくすることができる。また、実施例2では、通常レートデータを低レートデータに変換する映像データ変換手段23が必要であるが、実施例2の変形例では、配信サーバ2において映像ストリームが予め階層化されるから、映像データ変換手段23が不要である。これにより、実施例2の変形例では、処理負荷の高い変換処理を行う必要がなく、映像データ分離/結合手段27による簡易な分離及び結合処理だけで済むから、ノード1の処理量を低減することができる。
【0167】
尚、前述した実施例2の変形例によるノード1は、上流ノード1から受信した通常レートデータを、差分データ及び低レートデータに分離し、分離した差分データ及び低レートデータをバッファメモリ26に蓄積して管理するようにした。また、配信サーバ2は、配信すべき映像ストリームのデータを、差分データ及び低レートデータに予め擬似的に階層化し、階層化した映像ストリームのデータ、つまり、差分データ及び低レートデータから構成される通常レートデータを配信するようにした。これに対し、別の例として、配信サーバ2は、映像ストリームに対し、階層符号化方式(例えば、AVC/H.264 scalable extension SVC(Scalable Video Coding))を用いてエンコードを行い、基本階層のデータ及び上位階層のデータから構成される通常レートデータを配信するようにしてもよい。階層符号化方式は、空間解像度(画素数)または時間解像度(フレームレート)が異なる複数の映像信号を単一符号化ストリームとして符号化する方式をいう。階層符号化により、空間解像度または時間解像度が低い映像データ及び付加情報が、それぞれ基本階層のデータ及び上位階層のデータとして生成される。階層符号化方式は既知であるから、ここでは詳細な説明を省略する。詳細については、例えば、「ITU-T Rec.H.264 ISO/ICE SC 29/WG11 14496-10(MPEG-4 AVC).Advanced Video Coding for Generic Audiovisual Services.Ver.8,July 2007.」を参照されたい。この場合、ノード1は、上流ノード1から受信した通常レートデータを、基本階層のデータ及び上位階層のデータに分離し、分離した基本階層のデータ及び上位階層のデータをバッファメモリ26に蓄積して管理する。
【0168】
〔実施例3〕
次に、実施例3について説明する。実施例3のノード1は、上流ノード1との間の回線が混雑しているとき、上流ノード1から音声データのみを取得する例である。
図18は、実施例3におけるP2Pネットワークの処理の概要を説明する図である。
図18に示すように、ノード1Cの上流ノードがノード1A,1Bであり、ノード1A,1Bのバッファメモリには、通常レートのDC8〜DC22がそれぞれ蓄積され、ノード1Cのバッファメモリには、DC8〜DC16が蓄積されているものとする。また、ノード1Cは、DC15を視聴ポイントとしてデータを再生し、上流ノード1A,1BからバッファマップA,Bを取得しているものとする。
【0169】
ノード1Cは、上流ノード1A,1Bとの間の回線状況をチェックし、回線が混雑していることを判定すると、バッファマップA,Bに基づいて取得先のノード1Bを決定し、DC17についての音声データのみを取得するための音声データ要求を上流ノード1Bへ送信し、ノード1Bから音声データのDC17を受信し、バッファメモリに蓄積する。同様に、上流ノード1A,1Bとの間の回線が混雑している場合、ノード1Cは、ノード1Bから音声データのDC18を取得し、ノード1Aから音声データのDC19〜DC22を取得する。
【0170】
これにより、ノード1Cと上流ノード1A,1Bとの間の回線が混雑している場合、上流ノード1A,1Bからノード1Cへ音声データが送信されるから、送信データ量が低減し、ノード1Cは、途切れることなく映像ストリームのデータを受信することができる。したがって、配信サービスを継続させることができ、ノード1Cは、データの再生を途切れることなく行うことができる。
【0171】
実施例2によるノード1と実施例3によるノード1とを比較すると、実施例2によるノード1は、回線が混雑している場合、低レートデータ要求を上流ノード1へ送信し、低レートデータを上流ノード1から受信してバッファメモリ21に蓄積するが、実施例3によるノード1は、低レートデータ要求の代わりに、音声データのみを取得するための音声データ要求を送信し、音声データのみを受信してバッファメモリ21に蓄積する。
【0172】
実施例3によるノード1は、
図15に示した実施例2の構成から映像データ変換手段23を除いた構成をしており、
図16に示した実施例2と同様の処理を行うが、低レートデータを扱うことなく音声データを扱う点で実施例2と相違する。すなわち、ノード1における送受信手段20のデータ取得手段54は、回線状況管理手段24により上流ノード1との間の回線が混雑していないと判定された場合、映像データ選択手段22から通常レートデータを示す選択結果を入力し、通常レートデータを取得するためのデータ要求を上流ノード1へ送信する(ステップS1603)。一方、データ取得手段54は、回線が混雑していると判定された場合、映像データ選択手段22から音声データを示す選択結果を入力し、音声データを取得するための音声データ要求を上流ノード1へ送信する(ステップS1604)。そして、データ取得手段54は、上流ノード1から通常レートデータまたは音声データを受信し、バッファメモリ21に蓄積する。
【0173】
データ送信手段57は、下流ノード1からデータ要求または音声データ要求を受信する。そして、データ送信手段57は、データ要求を受信した場合、このデータ要求に対応した通常レートデータをバッファメモリ21から読み出し、読み出した通常レートデータを、データ要求を送信してきた下流ノード1へ送信する。ここで、音声データのみが蓄積されていた場合、通常レートデータの代わりに音声データが送信される。一方、データ送信手段57は、音声データ要求を受信した場合、この音声データ要求に対応した音声データをバッファメモリ21から読み出し、読み出した音声データを、音声データ要求を送信してきた下流ノード1へ送信する。
【0174】
再生手段12は、バッファメモリ21から通常レートデータまたは音声データを読み出して再生を行う。前述のとおり、バッファメモリ21には、通常レートデータ及び音声データが蓄積されている。
【0175】
映像データ選択手段22は、回線状況管理手段24から回線状況を入力し、回線状況が混雑していないことを示している場合、通常レートデータを選択結果に設定し、回線状況が混雑していることを示している場合、音声データを選択結果として設定する。そして、映像データ選択手段22は、設定した選択結果を送受信手段20のデータ取得手段54に出力する。
【0176】
尚、実施例3によるパッチングサーバ3の構成及び処理は実施例2と同様であるので、ここでは説明を省略する。
【0177】
以上のように、実施例3によれば、ノード1における送受信手段20のデータ取得手段54は、上流ノード1との間の回線が混雑している場合に、上流ノード1から音声データのみを取得するようにした。これにより、上流ノード1から当該ノード1への送信データ量が低減し、上流ノード1とノード1との間の輻輳を回避することができる。そして、ノード1のバッファメモリ21には、通常レートデータ及び音声データが混在することになるが、途切れることなく映像ストリームのデータを取得することができる。したがって、上流ノード1との間の回線が混雑している場合であっても、配信サービスを継続させることが可能となり、ノード1を用いる利用者は、再生された映像がフリーズしないから、継続した配信サービスを受けることができる。
【0178】
また、実施例3によれば、実施例2と同様に、ノード1がP2Pネットワークに参加またはP2Pネットワークから離脱した場合であっても、配信サービスを継続させることができ、このP2Pネットワークによる配信サービスと、ソーシャルネットワーク等の他のサービスとを連携する場合にも、配信サービスを継続させることができ、他のサービスとの間で低遅延にて時間的な整合を図ることができる。
【0179】
尚、本発明の実施例1〜3によるノード1、配信サーバ2、パッチングサーバ3及びディレクトリサーバ4のハードウェア構成としては、通常のコンピュータを使用することができる。ノード1、配信サーバ2、パッチングサーバ3及びディレクトリサーバ4は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。実施例1によるノード1に備えた送受信手段10、バッファメモリ11、再生手段12、バッファマップ保存手段13、バッファマップ作成手段14及び回線状況管理手段15の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、実施例2,3によるノード1に備えた送受信手段20、バッファメモリ21、再生手段12、バッファマップ保存手段13、バッファマップ作成手段14、映像データ選択手段22、映像データ変換手段23及び回線状況管理手段24の各機能も、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、パッチングサーバ3の送受信手段30、記憶装置31、視聴ポイント把握手段32、視聴ポイント提供手段33、映像データ変換手段34及び回線状況管理手段35の各機能も、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。