(57)【要約】【課題】ネットワークを介して互いに接続された複数のノード装置がピアツーピア方式で相互に通信することが可能なシステムにおいて、各ノード装置がコンテンツを他のノード装置から取得して再生する技術を改良する。【解決手段】コンテンツを、複数のサブコンテンツデータが多重化されて成る多重化コンテンツとして構成し、複数のサブコンテンツデータを、複数のノード装置から選択された複数のソースノードにそれぞれ分散して保存する。コンテンツの再生の指示に応答して、複数のサブコンテンツデータを複数のソースノードから取得する。それら取得された複数のサブコンテンツデータを、各サブコンテンツデータごとに、複数の記憶手段にそれぞれ記憶する。複数のサブコンテンツデータを、対応する記憶手段から読み出し、それら読み出された複数のサブコンテンツデータを、互いに同期するように多重化し、それにより、コンテンツを再生する。【選択図】図１
2009124527.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに接続された複数のノード装置がピアツーピア方式で相互に通信することが可能なピアツーピア通信システムにおいて、各ノード装置がコンテンツを他のノード装置から取得して再生するコンテンツ再生方法であって、
前記コンテンツは、複数のサブコンテンツデータが多重化されて成る多重化コンテンツとして構成され、前記複数のサブコンテンツデータは、前記複数のノード装置から選択された複数のソースノードにそれぞれ、対応するタイムスタンプと共に、分散して保存されており、
前記多重化コンテンツの再生の指示に応答して、前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、前記複数のソースノードから取得するコンテンツデータ取得工程と、
それら取得された複数のサブコンテンツデータを、各サブコンテンツデータごとに、対応するタイムスタンプと共に、複数の記憶手段にそれぞれ記憶するデータ記憶工程と、
前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、対応する記憶手段から読み出し、それら読み出された複数のサブコンテンツデータを、対応するタイムスタンプを参照して、互いに同期するように多重化し、それにより、前記多重化コンテンツを再生するコンテンツ再生工程と
を含むコンテンツ再生方法。
【請求項２】
さらに、
各サブコンテンツデータごとに、対応する記憶手段にサブコンテンツデータのうちの新しい部分が保存される一方で、対応する記憶手段からサブコンテンツデータのうちの古い部分が読み出される結果、対応する記憶手段が消費される消費速度と、サブコンテンツデータを、対応するソースノードから受信する受信速度とを互いに比較する比較工程と、
各サブコンテンツデータごとに、前記受信速度が前記消費速度より遅い場合に、対応するソースノードがサブコンテンツデータを送信する送信速度を増加させる送信速度増加工程と、
各サブコンテンツデータごとに、前記受信速度が前記消費速度より速い場合に、対応するソースノードの前記送信速度を減少させる送信速度減少工程と
を含む請求項１に記載のコンテンツ再生方法。
【請求項３】
前記複数のサブコンテンツデータは、レベルがすべて互いに一致するとは限らない複数のプライオリティをそれぞれ予め与えられており、
当該コンテンツ再生方法は、さらに、
前記複数のサブコンテンツデータのうち、前記プライオリティのレベルが基準値より高いハイプライオリティデータのうち、対応する記憶手段に保存されているデータの量が設定値以上である場合に、そのときに、他のサブコンテンツデータのうち、対応する記憶手段に保存されているデータの量の如何を問わず、前記ハイプライオリティデータのみを、対応する記憶手段から読み出して再生する一部再生工程を含む請求項１または２に記載のコンテンツ再生方法。
【請求項４】
さらに、
前記複数のサブコンテンツデータのうち、前記プライオリティのレベルが前記基準値以下であるロープライオイリティデータのうち、対応する記憶手段に保存されているデータの量が設定値以上である場合に、そのときに、他のサブコンテンツデータのうち、対応する記憶手段に保存されているデータの量も設定値以上であることを条件に、すべてのサブコンテンツデータを、前記複数の記憶手段からそれぞれ読み出し、対応するタイムスタンプを参照して互いに同期させつつ再生する全部再生工程を含む請求項３に記載のコンテンツ再生方法。
【請求項５】
前記複数のサブコンテンツデータは、映像データと音声データと字幕データと広告データとのうちの少なくとも二つを含む請求項１ないし４のいずれかに記載のコンテンツ再生方法。
【請求項６】
前記複数のサブコンテンツデータは、画像データと音声データとテキストデータとのうちの少なくとも二つを含む請求項１ないし４のいずれかに記載のコンテンツ再生方法。
【請求項７】
前記コンテンツデータ取得工程は、
前記多重化コンテンツの再生の指示に応答して、前記複数のサブコンテンツデータの識別情報であるサブコンテンツデータ識別情報を特定する識別情報特定工程と、
その特定されたサブコンテンツデータ識別情報に基づいて前記複数のソースノードを特定するソースノード特定工程と、
前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、取得する要求であるサブコンテンツデータ取得要求を、前記特定された複数のソースノードに送信するサブコンテンツデータ取得要求送信工程と
を含む請求項１ないし６のいずれかに記載のコンテンツ再生方法。
【請求項８】
ピアツーピア方式で通信可能な状態でネットワークを介して他の複数のノード装置に接続されるノード装置であって、
多重化コンテンツを生成するために多重化されるべき複数のサブコンテンツデータを、各サブコンテンツデータごとに、各サブコンテンツデータの全部について、対応するタイムスタンプと共に、互いに識別可能に記憶することが可能な記憶装置と、
他のノード装置からサブコンテンツデータが要求された場合に、その要求されたサブコンテンツデータを、対応するタイムスタンプと共に、前記記憶装置から読み出して前記他のノード装置に向かって送信する送信機と、
多重化コンテンツを再生するために、他の複数のノード装置からそれぞれ送信された複数のサブコンテンツデータを、対応するタイムスタンプと共に、受信する受信機と、
その受信機によって受信された複数のサブコンテンツデータを、各サブコンテンツデータごとに、対応するタイムスタンプと共に、それぞれ保存することが可能な複数の記憶手段と、
それら複数の記憶手段から、前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、読み出し、それら読み出された複数のサブコンテンツデータを、対応するタイムスタンプを参照して、互いに同期するように多重化し、それにより、前記多重化コンテンツを再生する再生装置と
を含むノード装置。
【請求項９】
請求項１ないし７のいずれかに記載のコンテンツ再生方法を実施するためにコンピュータによって実行されるプログラム。
【請求項１０】
請求項８に記載のノード装置の各手段としてコンピュータを機能させるために実行されるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して互いに接続された複数のノード装置がピアツーピア方式で相互に通信することが可能なピアツーピア通信システムにおいて、各ノード装置がコンテンツを他のノード装置から取得して再生する技術に関するものである。
【背景技術】
【０００２】
複数のノード装置（例えば、複数のパーソナルコンピュータ）間でコンテンツ（例えば、視聴覚コンテンツ）等の情報を共有するために、複数のノード装置の参加によってオーバレイネットワークを論理的に構築し、そのオーバレイネットワーク上で前記複数のノード装置が相互に通信を行うことを可能にする技術が既に実用化されている。
【０００３】
そのような通信システムの一例が特許文献１にピアツーピア通信システムとして開示されている。この通信システムにおいては、複数のノード装置に、オーバレイネットワーク上における複数の論理的位置がそれぞれ割り当てられる。複数のノード装置にそれぞれ割り当てられる複数の論理的位置を、オーバレイネットワーク上において分散して記憶させるために、例えば、分散ハッシュテーブルＤＨＴ(Distributed Hash Table)が用いられる。
【特許文献１】特開２００６−１９７４００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ピアツーピア通信システムにおいてあるノード装置から他のノード装置に配信されて再生されるコンテンツとしては、複数のサブコンテンツデータが複合されたものである場合がある。例えば、映画のコンテンツである場合には、少なくとも、映像データと、音声データとが複合されて１つのコンテンツが構成される。また、カラオケのコンテンツである場合には、少なくとも、音声データと、字幕データ（歌詞データを含む）とが複合されて１つのコンテンツが構成される。
【０００５】
ところで、例えば、同じ映像データを用いるコンテンツであっても、それに組み合わされる音声データが一種類であるとは限らず、複数種類存在する場合があり、この場合には、結局、複数種類のコンテンツが構成されることになる。
【０００６】
本発明者は、このことに注目した結果、同じデータを共有する複数種類のコンテンツを個別に作成したのでは、同じデータが重複して使用されることになり、その保存のために、ピアツーピア通信システムにおいてメモリ空間が重複して使用されることになることに気がついた。
【０００７】
本発明者は、さらに、１つのコンテンツを構成するために使用されるデータ、すなわち、サブコンテンツデータが複数存在し、かつ、その組合せが複数存在する場合には、サブコンテンツデータごとに、ノード装置同士で通信を行い、複合コンテンツを再生したいノード装置において、他の複数のノード装置から受信した複数のサブコンテンツデータを、互いに同期するように多重化して再生することが、ピアツーピア通信システムにおけるメモリ空間の重複使用を回避するために有効であることに気がついた。
【０００８】
以上説明した本発明者の知見に基づき、本発明は、ネットワークを介して互いに接続された複数のノード装置がピアツーピア方式で相互に通信することが可能なピアツーピア通信システムにおいて、各ノード装置がコンテンツを他のノード装置から取得して再生する技術を改良することを課題としてなされたものである。
【課題を解決するための手段】
【０００９】
本発明によって下記の各態様が得られる。各態様は、項に区分し、各項には番号を付し、必要に応じて他の項の番号を引用する形式で記載する。これは、本発明が採用し得る技術的特徴の一部およびそれの組合せの理解を容易にするためであり、本発明が採用し得る技術的特徴およびそれの組合せが以下の態様に限定されると解釈すべきではない。すなわち、下記の態様には記載されていないが本明細書には記載されている技術的特徴を本発明の技術的特徴として適宜抽出して採用することは妨げられないと解釈すべきなのである。
【００１０】
さらに、各項を他の項の番号を引用する形式で記載することが必ずしも、各項に記載の技術的特徴を他の項に記載の技術的特徴から分離させて独立させることを妨げることを意味するわけではなく、各項に記載の技術的特徴をその性質に応じて適宜独立させることが可能であると解釈すべきである。
【００１１】
（１）  ネットワークを介して互いに接続された複数のノード装置がピアツーピア方式で相互に通信することが可能なピアツーピア通信システムにおいて、各ノード装置がコンテンツを他のノード装置から取得して再生するコンテンツ再生方法であって、
前記コンテンツは、複数のサブコンテンツデータが多重化されて成る多重化コンテンツとして構成され、前記複数のサブコンテンツデータは、前記複数のノード装置から選択された複数のソースノードにそれぞれ、対応するタイムスタンプと共に、分散して保存されており、
前記多重化コンテンツの再生の指示に応答して、前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、前記複数のソースノードから取得するコンテンツデータ取得工程と、
それら取得された複数のサブコンテンツデータを、各サブコンテンツデータごとに、対応するタイムスタンプと共に、複数の記憶手段にそれぞれ記憶するデータ記憶工程と、
前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、対応する記憶手段から読み出し、それら読み出された複数のサブコンテンツデータを、対応するタイムスタンプを参照して、互いに同期するように多重化し、それにより、前記多重化コンテンツを再生するコンテンツ再生工程と
を含むコンテンツ再生方法。
【００１２】
この方法によれば、多重化コンテンツを合成するために使用される複数のサブコンテンツデータが、複数のノード装置に分散して保存される。さらに、この方法によれば、あるノード装置が、デスティネーションノードとして、その多重化コンテンツを再生することを希望する場合に、複数のサブコンテンツデータをそれぞれ、複数のノード装置から選択された複数のソースノードから受信する。
【００１３】
さらにまた、この方法によれば、デスティネーションノードが、それが受信した複数のサブコンテンツデータを、対応するタイムスタンプを参照して、互いに同期するように多重化し、それにより、目標の多重化コンテンツを再生する。多重化コンテンツを再生するために、複数のサブコンテンツデータが、互いに識別可能な状態で、複数の記憶手段に保存される。
【００１４】
したがって、この方法によれば、同じピアツーピア通信システムにおいて、同じサブコンテンツデータを共有する複数種類のコンテンツが再生される可能性がある場合に、同じサブコンテンツデータが重複して複数のノード装置に保存される可能性が減少し、それにより、各ノード装置のメモリ容量の有効利用が容易となる。
【００１５】
（２）  さらに、
各サブコンテンツデータごとに、対応する記憶手段にサブコンテンツデータのうちの新しい部分が保存される一方で、対応する記憶手段からサブコンテンツデータのうちの古い部分が読み出される結果、対応する記憶手段が消費される消費速度と、サブコンテンツデータを、対応するソースノードから受信する受信速度とを互いに比較する比較工程と、
各サブコンテンツデータごとに、前記受信速度が前記消費速度より遅い場合に、対応するソースノードがサブコンテンツデータを送信する送信速度を増加させる送信速度増加工程と、
各サブコンテンツデータごとに、前記受信速度が前記消費速度より速い場合に、対応するソースノードの前記送信速度を減少させる送信速度減少工程と
を含む（１）項に記載のコンテンツ再生方法。
【００１６】
デスティネーションノードにおいて、複数のサブコンテンツデータを複数のソースノードからそれぞれ受信して多重化して再生するためには、記憶手段（例えば、それら複数のサブコンテンツデータを部分的に、かつ、一時的に保存するバッファメモリ）に、必ず、すべてのサブコンテンツデータについて、各サブコンテンツデータのうちの新しい部分が存在するようにすることが重要である。
【００１７】
なぜなら、それら複数のサブコンテンツデータは、互いに同期するように多重化しなければならず、そのためには、あるサブコンテンツデータの、対応する記憶手段からの読み出しタイミングに対し、他のサブコンテンツデータの、対応する記憶手段からの読み出しタイミングを遅延させることが可能であるようにすることが必要であるからである。
【００１８】
一方、デスティネーションノードにおいて、記憶手段からサブコンテンツデータを読み出す速度は、そのデスティネーションノードの内部クロックに依存する。同様に、各ソースノードがサブコンテンツデータをデスティネーションノードに向かって送信する速度は、各ソースノードの内部クロックに依存する。デスティネーションノードの内部クロックと、各ソースノードの内部クロックとは、必ずしも同じ周期でクロック信号を出力するとは限らない。
【００１９】
そのため、デスティネーションノードのデータ読み出し速度と、各ソースノ−ドのデータ送信速度とが、必ずしも一致しない。その結果、デスティネーションノードにおいて、記憶手段に残存するサブコンテンツデータの量が変動する可能性があり、よって、サブコンテンツデータによって、容量が有限である記憶手段がオーバーフローしてしまうか空になってしまう可能性がある。
【００２０】
そのような事態が発生すると、複数のサブコンテンツデータ間において正確に同期をとることが不可能となり、その結果、例えば、ある多重化コンテンツの再生中、あるサブコンテンツデータは、記憶手段に存在するから再生されるが、他のサブコンテンツデータは、記憶手段に存在しないから再生されないといった不都合が発生する可能性がある。
【００２１】
これに対し、本項に係る方法によれば、デスティネーションノードにおいて、各サブコンテンツデータごとに、対応する記憶手段にサブコンテンツデータのうちの新しい部分が保存される一方で、対応する記憶手段からサブコンテンツデータのうちの古い部分が読み出される結果、対応する記憶手段が消費される消費速度と、サブコンテンツデータを、対応するソースノードから受信する受信速度とが互いに比較される。
【００２２】
ここに、「消費速度」は、サブコンテンツデータのうち記憶手段に残存しているデータの量の変化速度を意味している。この「変化速度」は、主に、サブコンテンツデータの、記憶手段からの読み出し速度に依存するが、サブコンテンツデータの、記憶手段への書き込み速度にも依存する。
【００２３】
したがって、この方法においては、サブコンテンツデータの、記憶手段からの読み出し速度が、サブコンテンツデータの、ソースノードからの受信速度と比較されるのではなく、その読み出し速度と書き込み速度との関係を反映した消費速度という新規の概念が採用され、その消費速度が、サブコンテンツデータの、ソースノードからの受信速度と比較される。
【００２４】
よって、この方法によれば、サブコンテンツデータの、記憶手段からの読み出し速度が、サブコンテンツデータの、ソースノードからの受信速度と比較される場合より、サブコンテンツデータによって記憶手段がオーバーフローしてしまうか空になってしまう可能性をより正確に推定することが可能となる。
【００２５】
さらに、この方法によれば、各サブコンテンツデータごとに、サブコンテンツデータの受信速度が記憶手段の消費速度より遅い場合に、そのままでは記憶手段が空になってしまうかもしれないため、対応するソースノードがサブコンテンツデータをデスティネーションノードに送信する送信速度が増加させられる。一方、各サブコンテンツデータごとに、サブコンテンツデータの受信速度が記憶手段の消費速度より速い場合に、そのままでは記憶手段がオーバーフローしてしまうかもしれないため、対応するソースノードの送信速度が減少させられる。
【００２６】
このように、この方法によれば、ソースノードがサブコンテンツデータを送信する速度が増減させられ、それにより、サブコンテンツデータのうち新しい部分が必ず記憶手段に存在、その結果、サブコンテンツデータによって記憶手段がオーバーフローしてしまう可能性も空になってしまう可能性も減少する。
【００２７】
（３）  前記複数のサブコンテンツデータは、レベルがすべて互いに一致するとは限らない複数のプライオリティをそれぞれ予め与えられており、
当該コンテンツ再生方法は、さらに、
前記複数のサブコンテンツデータのうち、前記プライオリティのレベルが基準値より高いハイプライオリティデータのうち、対応する記憶手段に保存されているデータの量が設定値以上である場合に、そのときに、他のサブコンテンツデータのうち、対応する記憶手段に保存されているデータの量の如何を問わず、前記ハイプライオリティデータのみを、対応する記憶手段から読み出して再生する一部再生工程を含む（１）または（２）項に記載のコンテンツ再生方法。
【００２８】
すべてのサブコンテンツデータにつき、各サブコンテンツのうち記憶手段に保存されているデータの量が設定値以上となったときにはじめて、すべてのサブコンテンツデータを正確に同期させて多重化することが可能であることから、このときにはじめて、多重化コンテンツの再生を開始するようにして前記（１）または（２）項に係る方法を実施することが可能である。
【００２９】
しかし、この場合には、多重化コンテンツの再生が開始されるまでの待ち時間が長くなり、また、多重化コンテンツを構成する複数のサブコンテンツデータのうちのいずれもユーザが最初から視聴するということはできない。
【００３０】
一方、同じ多重化コンテンツを構成する複数のサブコンテンツデータの中に、素早く再生することが要求されるもの、すなわち、プライオリティのレベルが高いものと、そのような要求がそれほど強くないもの、すなわち、プライオリティのレベルが低いものとが混在する場合がある。
【００３１】
このような事情に鑑み、本項に係る方法によれば、同じ多重化コンテンツを構成する複数のサブコンテンツデータのうち、プライオリティのレベルが基準値より高いハイプライオリティデータのうち、対応する記憶手段に保存されているデータの量が設定値以上である場合に、そのときに、他のサブコンテンツデータのうち、対応する記憶手段に保存されているデータの量の如何を問わず、ハイプライオリティデータのみが、対応する記憶手段から読み出されて再生される。
【００３２】
したがって、この方法によれば、ハイプライオリティのサブコンテンツデータのみが対象とされて、ロープライオリティのサブコンテンツデータとの同期も同時再生も伴うことなく、単独で、かつ、ロープライオリティのサブコンテンツより先行して、再生される。
【００３３】
（４）  さらに、
前記複数のサブコンテンツデータのうち、前記プライオリティのレベルが前記基準値以下であるロープライオイリティデータのうち、対応する記憶手段に保存されているデータの量が設定値以上である場合に、そのときに、他のサブコンテンツデータのうち、対応する記憶手段に保存されているデータの量も設定値以上であることを条件に、すべてのサブコンテンツデータを、前記複数の記憶手段からそれぞれ読み出し、対応するタイムスタンプを参照して互いに同期させつつ再生する全部再生工程を含む（３）項に記載のコンテンツ再生方法。
【００３４】
この方法によれば、すべてのサブコンテンツデータにつき、各サブコンテンツのうち記憶手段に保存されているデータの量が設定値以上となったときにはじめて、すべてのサブコンテンツデータが正確に同期させられて多重化され、その結果、再生される。
【００３５】
したがって、この方法によれば、多重化コンテンツが、一部のサブコンテンツデータしか再生されないという不完全な状態で再生される区間が発生せずに済む。
【００３６】
（５）  前記複数のサブコンテンツデータは、映像データと音声データと字幕データと広告データとのうちの少なくとも二つを含む（１）ないし（４）項のいずれかに記載のコンテンツ再生方法。
【００３７】
（６）  前記複数のサブコンテンツデータは、画像データと音声データとテキストデータとのうちの少なくとも二つを含む（１）ないし（４）項のいずれかに記載のコンテンツ再生方法。
【００３８】
（７）  前記コンテンツデータ取得工程は、
前記多重化コンテンツの再生の指示に応答して、前記複数のサブコンテンツデータの識別情報であるサブコンテンツデータ識別情報を特定する識別情報特定工程と、
その特定されたサブコンテンツデータ識別情報に基づいて前記複数のソースノードを特定するソースノード特定工程と、
前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、取得する要求であるサブコンテンツデータ取得要求を、前記特定された複数のソースノードに送信するサブコンテンツデータ取得要求送信工程と
を含む（１）ないし（６）項のいずれかに記載のコンテンツ再生方法。
【００３９】
（８）  ピアツーピア方式で通信可能な状態でネットワークを介して他の複数のノード装置に接続されるノード装置であって、
多重化コンテンツを生成するために多重化されるべき複数のサブコンテンツデータを、各サブコンテンツデータごとに、各サブコンテンツデータの全部について、対応するタイムスタンプと共に、互いに識別可能に記憶することが可能な記憶装置と、
他のノード装置からサブコンテンツデータが要求された場合に、その要求されたサブコンテンツデータを、対応するタイムスタンプと共に、前記記憶装置から読み出して前記他のノード装置に向かって送信する送信機と、
多重化コンテンツを再生するために、他の複数のノード装置からそれぞれ送信された複数のサブコンテンツデータを、対応するタイムスタンプと共に、受信する受信機と、
その受信機によって受信された複数のサブコンテンツデータを、各サブコンテンツデータごとに、対応するタイムスタンプと共に、それぞれ保存することが可能な複数の記憶手段と、
それら複数の記憶手段から、前記複数のサブコンテンツデータを、対応するタイムスタンプと共に、読み出し、それら読み出された複数のサブコンテンツデータを、対応するタイムスタンプを参照して、互いに同期するように多重化し、それにより、前記多重化コンテンツを再生する再生装置と
を含むノード装置。
【００４０】
このノード装置は、前記（１）項に係る方法を実施するのに好適なノード装置の一例である。このノード装置は、前述のデスティネーションノードとして機能することも、前述のソースノードとして機能することも可能である。
【００４１】
（９）  （１）ないし（７）項のいずれかに記載のコンテンツ再生方法を実施するためにコンピュータによって実行されるプログラム。
【００４２】
このプログラムがコンピュータにより実行されれば、前記（１）ないし（７）項のいずれかに係る方法と基本的に同じ原理に従い、同様な作用効果が実現され得る。
【００４３】
（１０）  （８）項に記載のノード装置の各手段としてコンピュータを機能させるために実行されるプログラム。
【００４４】
このプログラムがコンピュータにより実行されれば、前記（８）項に係るノード装置と基本的に同じ原理に従い、同様な作用効果が実現され得る。
【００４５】
以上説明し２つのプログラムは、いずれも、それの機能を果たすためにコンピュータにより実行される指令の組合せのみならず、各指令に従って処理されるファイルやデータをも含むように解釈することが可能である。
【００４６】
また、それら２つのプログラムは、いずれも、それ単独でコンピュータにより実行されることにより、所期の目的を達するものとしたり、他のプログラムと共にコンピュータにより実行されることにより、所期の目的を達するものとすることができる。後者の場合、それら２つのプログラムは、いずれも、データを主体とするものとすることができる。
【００４７】
（１１）  （９）または（１０）項に記載のプログラムをコンピュータ読取り可能に記録した記録媒体。
【００４８】
この記録媒体は種々な形式を採用可能であり、例えば、フレキシブル・ディスク等の磁気記録媒体、ＣＤ、ＣＤ−ＲＯＭ等の光記録媒体、ＭＯ等の光磁気記録媒体、ＲＯＭ等のアンリムーバブル・ストレージ等のいずれかを採用し得る。
【発明を実施するための最良の形態】
【００４９】
以下、本発明のさらに具体的な実施の形態のうちのいくつかを図面に基づいて詳細に説明する。
【００５０】
図１には、本発明の第１実施形態に従うコンテンツ再生方法を実施するために使用されるピアツーピア通信システム１０が示されている。このピアツーピア通信システム１０においては、複数のノード装置１２がピアツーピア方式で相互に通信することが可能な状態で、ネットワーク１４を介して互いに接続されている。このピアツーピア通信システム１０が、特開２００６−１９７４００号公報に開示されており、その公報は、全体として、引用によって本明細書に合体させられる。
【００５１】
上記コンテンツ再生方法は、そのように構成されたピアツーピア通信システム１０において、各ノード装置１２がコンテンツを他のノード装置１２から取得してストリーミング再生するために実施される。本実施形態においては、コンテンツの一例として、複数のサブコンテンツデータが多重化されて成る多重化コンテンツが対象にされ、具体的には、第１のサブコンテンツデータとしての映像データと、第２のサブコンテンツデータとしての音声データとが多重化されたコンテンツ（例えば、映画コンテンツ）が対象にされる。
【００５２】
上記コンテンツ再生方法が実施されると、同じコンテンツを構成する映像データと音声データとが、それぞれソースノードとして機能する複数のノード装置１２に分散して保存され、あるノード装置１２が、デスティネーションノードとして、それら映像データおよび音声データを、複数のソースノードからそれぞれ受信する。さらに、そのデスティネーションノードは、それら映像データおよび音声データを、それぞれのタイムスタンプ（各フレームごとに埋め込まれた、各フレームの再生予定時刻）を参照して、互いに同期するように多重化し、それにより、多重化コンテンツを再生する。
【００５３】
図２には、各ノード装置１２のハードウエア構成がブロック図で概念的に表されている。各ノード装置１２は、例えば、パーソナルコンピュータとして構成され、具体的には、プロセッサとしてのＣＰＵ２０と、プログラムメモリとしてのＲＯＭ２２と、コンテンツメモリとしての記憶装置２４と、小容量・高速一時蓄積器としてのバッファメモリ３０と、それらを互いに接続するバス３２とを含むように構成される。
【００５４】
記憶装置２４は、コンテンツを大容量で記憶することを可能にするために、例えば、ハードディスクドライブとして具現化される。これに対し、バッファメモリ３０は、高速でデータの読み書きを行うことを可能にするために、例えば、キャッシュとして具現化される。
【００５５】
記憶装置２４は、例えば、各ノード装置１２が、必要に応じて、少なくとも１つのサブコンテンツデータ（例えば、映像データまたは音声データ）の全体を、例えば、他のノード装置１２に送信するために、予め保存するために使用される。
【００５６】
これに対し、バッファメモリ３０は、他のノード装置１２から受信したサブコンテンツデータを、それの再生に先立ち、部分的にかつ一時的に保存するために使用される。バッファメモリ３０は、音声データを一時的に保存するための音声用バッファ４０と、映像データを一時的に保存するための映像用バッファ４２とを含むように構成されている。それら音声用バッファ４０も映像用バッファ４２も、ＦＩＦＯ方式でデータの読み書きが行われるため、未だ再生されていない最新のデータが、許容範囲内の量だけ、音声用バッファ４０にも映像用バッファ４２にも残存するように使用される。
【００５７】
音声用バッファ４０および映像用バッファ４２のそれぞれのメモリサイズは、一般に、使用する通信回線の信号速度、物理的な制約、コスト上の制約や、ユーザが不愉快に感じない待ち時間の最大値などから決まる。メモリサイズが大きいほど、コンテンツを安定的に再生することが可能であるが、各バッファ４０，４２をノード装置１２に実装する際に占有しなければならない面積や、コスト、ユーザが不愉快に感じない待ち時間の最大値などを考慮し、本実施形態においては、音声データまたは映像データを約１分を超えない時間範囲でバッファリングできるメモリサイズを有するように音声用バッファ４０および映像用バッファ４２が設定されている。
【００５８】
図２に示すように、各ノード装置１２は、さらに、ネットワーク１４との通信を可能にする送受信部（いずれも図示しないが、送信機と受信機とを含む）５０と、映像データを復号化する映像デコータ５２と、その復号化された映像データを再生・出力する映像出力部（例えば、液晶ディスプレイ）５４と、音声データを復号化する音声デコータ５６と、その復号化された音声データを再生・出力する音声出力部（例えば、スピーカ）５８とを含むように構成されている。それら送受信部５０、映像デコーダ５２および音声デコーダ５６はいずれも、バス３２に接続され、映像出力部５４は映像デコーダ５２に接続され、音声出力部５８は音声デコーダ５６に接続されている。
【００５９】
各ノード装置１２は、複数のサブコンテンツデータを受信してそれらを多重化するデスティネーションノードとして機能する場合と、そのデスティネーションノードに、いずれかのサブコンテンツデータを送信するソースノードとして機能する場合とがある。
【００６０】
図３には、各ノード装置１２がデスティネーションノードとして機能する場合にＣＰＵ２０によって実行されるためにＲＯＭ２２に記憶されている受信・再生プログラムが概念的にフローチャートで表されている。
【００６１】
この受信・再生プログラムが起動すると、まず、ステップＳ１において、デスティネーションノードとして機能する自ノード装置１２の表示画面に表示されたカタログに掲載されている複数の候補コンテンツのうちのいずれかが、ユーザにより、目標の多重化コンテンツとして選択される。
【００６２】
このステップＳ１においては、さらに、その選択された目標コンテンツを構成する複数のサブコンテンツデータ（図１に示す例においては、音声データおよび映像データ）をそれぞれ識別する複数のサブコンテンツデータ識別情報が、自ノード装置１２に予め記憶されているテーブルなどを参照することにより、特定される。
【００６３】
このステップＳ１においては、さらにまた、特定された複数のサブコンテンツデータ識別情報に基づき、自ノード装置１２に予め記憶されているテーブルなどを参照することにより、複数のノード装置１２のうち、それらサブコンテンツデータをそれぞれ保存している複数のノード装置１２が、複数のソースノードとして特定される。
【００６４】
このステップＳ１においては、さらにまた、複数のサブコンテンツデータのうちの音声データを、対応するタイムスタンプと共に、それらを保存しているソースノードからダウンロードすべく、そのソースノードに対し、音声データをデスティネーションノードに向かって送信するためのメッセージが送信される。
【００６５】
次に、ステップＳ２において、同じ目標コンテンツを構成する複数のサブコンテンツデータのうちの映像データを、対応するタイムスタンプと共に、それらを保存しているソースノードからダウンロードすべく、そのソースノードに対し、映像データをデスティネーションノードに向かって送信するためのメッセージが送信される。
【００６６】
続いて、ステップＳ３において、自ノード装置１２は、複数のソースノードから音声データおよび映像データを受信する。その後、ステップＳ４において、受信した最新のデータ（例えば、１フレーム分のデータ）が音声データであるか否かが判定され、そうであれば、ステップＳ５において、その音声データが、対応するタイムスタンプと共に、音声用バッファ４０に保存される。これに対し、受信した最新のデータ（例えば、１フレーム分のデータ）が映像データである場合には、ステップＳ６において、その映像データが、対応するタイムスタンプと共に、映像用バッファ４２に保存される。
【００６７】
いずれの場合にも、その後、ステップＳ７において、音声データが音声用バッファ４０に保存されている量も、映像データが映像用バッファ４２に保存されている量も、いずれも、設定値以上になったか否かが判定される。
【００６８】
ここに、「設定値」は、音声データまたは映像データの再生を開始してから数十秒間の再生が可能であるように設定される。本実施形態においては、音声データまたは映像データの、対応する各バッファ４０，４２への保存量が設定値に等しい状態から、それら音声データまたは映像データの再生が開始され、各バッファ４０，４２がオーバーフローするか空になってしまう前に、ソースノードに、後に詳述するように、データ送信速度の変更要求が出されるようになっている。
【００６９】
音声データも映像データも、対応する各バッファ４０，４２への保存量が設定値以上である状態には至っていない場合には、ステップＳ３に戻り、複数のソースノードからの受信が継続される。これに対し、音声データも映像データも保存量が設定値以上となった場合には、ステップＳ８において、音声データが複製されて、音声用バッファ４０から記憶装置２４に転送されるとともに、映像データが複製されて、映像用バッファ４２から記憶装置２４に転送される。
【００７０】
その後、ステップＳ９において、音声データが、音声用バッファ４０から、対応するタイムスタンプ（音声データの各フレームごとのタイムスタンプ）と共に読み出されるとともに、映像データが、映像用バッファ４２から、対応するタイムスタンプ（映像データの各フレームごとのタイムスタンプ）と共に読み出され、さらに、それら音声データおよび映像データが、自己の内部クロックを用い、かつ、タイムスタンプを参照することにより、互いに同期するように、多重化して再生される。音声データは、音声出力部５８によって再生される一方、映像データは、映像出力部５４によって再生される。
【００７１】
続いて、ステップＳ１０において、今回のコンテンツが、それの最後まで再生されたか否かが判定される。そうであれば、この受信・再生プログラムの実行が終了するが、そうではなければ、ステップＳ１１に移行する。
【００７２】
このステップＳ１１においては、自ノード装置１２が、音声データを、対応するソースノードから受信する受信速度がカウントされ、さらに、音声用バッファ４０が消費される消費速度がカウントされる。消費速度は、音声用バッファ４０に保存されている音声データの量の変化速度を意味し、音声用バッファ４０からの読み出し速度から、音声用バッファ４０への書き込み速度を引き算することによって算出される。
【００７３】
続いて、ステップＳ１２において、音声データの受信速度が、音声用バッファ４０の消費速度より遅いか否かが判定される。そのままでは音声用バッファ４０が空になってしまう可能性が、音声用バッファ４０がオーバーフローしてしまう可能性より高いか否かが判定されるのである。音声データの受信速度が、音声用バッファ４０の消費速度より遅い場合には、ステップＳ１３において、音声データを保存していてそれを送信するソースノードに、音声データの送信速度を増加させる旨のメッセージが送信される。その送信速度が増加させられれば、自ノード装置１２が音声データを受信する速度が増加し、その結果、音声用バッファ４０が空になってしまう可能性が減少する。
【００７４】
これに対し、音声データの受信速度が、音声用バッファ４０の消費速度より遅くはない場合、すなわち、そのままでは音声用バッファ４０がオーバーフローしてしまう可能性が、音声用バッファ４０がオーバーフローしてしまう可能性より高い場合には、ステップＳ１４において、音声データを保存していてそれを送信するソースノードに、音声データの送信速度を減少させる旨のメッセージが送信される。その送信速度が減少させられれば、自ノード装置１２が音声データを受信する速度が減少し、その結果、音声用バッファ４０がオーバーフローしてしまう可能性が減少する。
【００７５】
なお付言するに、送信速度の、１回の要求ごとの増加・減少量は、例えば、現在の送信速度の約５％である。送信速度の増加・減少量は、デスティネーションノードの内部クロックとソースノードの内部クロックとの間の誤差を吸収できる大きさに設定することが望ましい。
【００７６】
いずれの場合にも、その後、ステップＳ１５において、自ノード装置１２が、映像データを、対応するソースノードから受信する受信速度がカウントされ、さらに、映像用バッファ４２が消費される消費速度がカウントされる。消費速度は、映像用バッファ４２に保存されている映像データの量の変化速度を意味し、映像用バッファ４２からの読み出し速度から、映像用バッファ４２への書き込み速度を引き算することによって算出される。
【００７７】
続いて、ステップＳ１２において、映像データの受信速度が、映像用バッファ４２の消費速度より遅いか否かが判定される。そのままでは映像用バッファ４２が空になってしまう可能性が、映像用バッファ４２がオーバーフローしてしまう可能性より高いか否かが判定されるのである。映像データの受信速度が、映像用バッファ４２の消費速度より遅い場合には、ステップＳ１７において、映像データを保存していてそれを送信するソースノードに、映像データの送信速度を増加させる旨のメッセージが送信される。その送信速度が増加させられれば、自ノード装置１２が映像データを受信する速度が増加し、その結果、映像用バッファ４２が空になってしまう可能性が減少する。
【００７８】
これに対し、映像データの受信速度が、映像用バッファ４２の消費速度より遅くはない場合、すなわち、そのままでは映像用バッファ４２がオーバーフローしてしまう可能性が、映像用バッファ４２がオーバーフローしてしまう可能性より高い場合には、ステップＳ１８において、映像データを保存していてそれを送信するソースノードに、映像データの送信速度を減少させる旨のメッセージが送信される。その送信速度が減少させられれば、自ノード装置１２が映像データを受信する速度が減少し、その結果、映像用バッファ４２がオーバーフローしてしまう可能性が減少する。
【００７９】
いずれの場合にも、その後、ステップＳ１９において、自ノード装置１２は、音声データのうち後続する部分と、映像データのうち後続する部分とを、対応するソースノードから受信する。続いて、ステップＳ２０において、受信した最新のデータ（例えば、１フレーム分のデータ）が音声データであるか否かが判定され、そうであれば、ステップＳ２１において、その音声データが、対応するタイムスタンプと共に、音声用バッファ４０に保存される。これに対し、受信した最新のデータ（例えば、１フレーム分のデータ）が映像データである場合には、ステップＳ２２において、その映像データが、対応するタイムスタンプと共に、映像用バッファ４２に保存される。いずれの場合にも、その後、ステップＳ８に移行する。
【００８０】
図４には、各ノード装置１２が音声データまたは映像データのためのソースノードとして機能する場合にＣＰＵ２０によって実行されるためにＲＯＭ２２に記憶されている送信プログラムが概念的にフローチャートで表されている。
【００８１】
この送信プログラムが起動すると、まず、ステップＳ１０１において、ソースノードとして機能する自ノード装置１２が、デスティネーションノードとしての他のノード装置１２から、音声データまたは映像データを送信することをリクエストするためのメッセージを受信する。
【００８２】
次に、ステップＳ１０２において、自ノード装置１２の記憶装置２４から、要求されたデータが、自己の内部クロックを用い、かつ、対応するタイムスタンプを参照しつつ、読み出して、デスティネーションノードに向かって送信される。
【００８３】
続いて、ステップＳ１０３において、要求されたデータが最後まで、デスティネーションノードに送信されたか否かが判定される。そうではない場合には、ステップＳ１０４において、デスティネーションノードから、データ送信速度の変更要求を受信したか否かが判定される。
【００８４】
自ノード装置１２が、データ送信速度の変更要求を受信した場合には、ステップＳ１０５において、その要求が、データ送信速度増加要求であるか否かが判定される。そうであれば、ステップＳ１０６において、データ送信速度が増加させられ、その速度で、要求されたデータがデスティネーションノードに送信される。そうでなければ、ステップＳ１０７において、データ送信速度が減少させられ、その速度で、要求されたデータがデスティネーションノードに送信される。いずれの場合にも、その後、ステップＳ１０３に戻る。
【００８５】
これに対し、自ノード装置１２が、データ送信速度の変更要求を今が受信していない場合には、ステップＳ１０８において、現在のデータ送信速度で、要求されたデータがデスティネーションノードに送信される。その後、ステップＳ１０３に戻る。
【００８６】
要求されたデータが最後までデスティネーションノードに送信できた場合には、ステップＳ１０３の判定がＹＥＳとなり、この送信プログラムの実行が終了する。
【００８７】
図５には、音声データを送信するノード装置１２（図においては、「音声送信ノード」）と、その音声データを受信するノード装置１２（図においては、「受信ノード」）との間における要求および音声データの複数のフレームの送受信が時系列で概念的に表されている。さらに、映像データを送信するノード装置１２（図においては、「映像送信ノード」）と、その映像データを受信するノード装置１２（図においては、「受信ノード」）との間における要求および映像データの複数のフレームの送受信が時系列で概念的に表されている。
【００８８】
図５に示すように、受信ノードにおいて、音声データの受信速度が速い場合には、その音声データの送信速度が減少させられ、また、映像データの受信速度が遅い場合には、その映像データの送信速度が増加させられ、その結果、音声データおよび映像データのうち、互いに同期すべきフレーム同士が、ほぼ同じタイミングで、同じ受信ノードに到達するようになる。
【００８９】
受信ノードにおいては、音声データも映像データも、対応する各バッファ４０，４２から、同じ内部クロックを用いて、同じ速度で読み出される。そのため、ソースノードから受信ノードに到達するフレームが、音声データと映像データとの間においてほぼ一致すれば、音声用バッファ４０内に残存する音声データの量の変化速度と、映像用バッファ４２内に残存する映像データの量の変化速度とが、ほぼ一致する。
【００９０】
その結果、音声用バッファ４０も映像用バッファ４２も、オーバーフローすることも空になることもなくなり、少ないバッファ容量のもとでも、常に、音声データのフレームと映像データのフレームとであって互いに同期されるべきもの同士を、実際に正確に同期するように、多重化することが可能となる。
【００９１】
以上の説明から明らかなように、本実施形態によれば、各コンテンツが、例えば、映像、字幕、音声（英語音声、吹替え音声など）などの複数のサブコンテンツデータに分解され、かつ、それらサブコンテンツデータが複数のソースノードに分散して保存される。さらに、目的のコンテンツの再生時に、それを構成する複数のサブコンテンツデータが複数のソースノードからダウンロードされてデスティネーションノードにおいて合体させられる。
【００９２】
したがって、本実施形態によれば、複数のサブコンテンツデータを任意に選択して合体させることにより、ユーザの好みに合う多様のコンテンツをデスティネーションノードにおいて新規に生成することが可能となる。
【００９３】
さらに、本実施形態によれば、デスティネーションノードが、コンテンツを構成する複数のサブコンテンツデータが複数のソースノードから受信する際に、各ソースノードのサブコンテンツデータ送信速度が、デスティネーションノードの内部クロックに適合するように調整されるため、各バッファの容量をそれほど増やすことなく、それらサブコンテンツデータを互いに同期させて多重化することが可能となる。
【００９４】
すなわち、本実施形態によれば、デスティネーションノードにおいて要求されるメモリ容量の増加を抑えつつ、デスティネーションノードにおいて多様なコンテンツを生成して再生することが可能となるのである。
【００９５】
以上の説明から明らかなように、本実施形態においては、説明の便宜上、図３におけるステップＳ１ないしＳ３およびＳ１９が、前記（１）項における「コンテンツデータ取得工程」の一例を構成し、図３におけるステップＳ４ないしＳ６およびＳ２０ないしＳ２２が、同項における「データ記憶工程」の一例を構成し、ステップＳ９が同項における「コンテンツ再生工程」の一例を構成していると考えることができる。
【００９６】
さらに、本実施形態においては、説明の便宜上、図３におけるステップＳ１２およびＳ１６が、前記（２）項における「比較工程」の一例を構成し、ステップＳ１３およびＳ１７ならびに図４におけるステップＳ１０６が同項における「送信速度増加工程」の一例を構成し、ステップＳ１４およびＳ１８ならびに図４におけるステップＳ１０７が同項における「送信速度減少工程」の一例を構成していると考えることができる。
【００９７】
さらに、本実施形態においては、説明の便宜上、図３におけるステップＳ１およびＳ２が、前記（７）項における「識別情報特定工程」、「ソースノード特定工程」および「サブコンテンツデータ取得要求送信工程」の組合せの一例を構成していると考えることができる。
【００９８】
さらに、本実施形態においては、説明の便宜上、音声用バッファ４０および映像用バッファ４２が、前記（１）項における「複数の記憶手段」の一例および前記（８）項における「複数の記憶手段」の一例を構成し、映像出力部５４および音声出力部５８が、同項における「再生装置」の一例を構成していると考えることができる。
【００９９】
さらに、本実施形態においては、説明の便宜上、図３に示す受信・再生プログラムおよび図４に示す送信プログラムが互いに共同して、前記（９）項に係る「プログラム」の一例および前記（１０）項に係る「プログラム」の一例を構成していると考えることができる。
【０１００】
次に、本発明の第２実施形態を説明する。ただし、本実施形態は、第１実施形態と共通する要素が多く、異なるのは、再生されるコンテンツの種類と、受信・再生プログラムの内容とであるため、共通する要素については、同一の符号または名称を使用して引用することにより、重複した説明を省略し、異なる要素についてのみ、詳細に説明する。
【０１０１】
本実施形態においては、デスティネーションノードにおいて再生される多重化コンテンツが、音声・字幕（歌詞）データと、映像データとが多重化されて成るカラオケのコンテンツである。音声・字幕データは、音声データと字幕データとが予め多重化されたデータであり。この音声・字幕データは、１台のノード装置１２に、１つのファイルとして保存される。
【０１０２】
音声・字幕データと映像データとを、各データが早期に再生されることが要求される程度、すなわち、プライオリティのレベルに関して互いに比較すると、カラオケというサービスにおいては、他のノード装置１２からダウンロードしたらできる限り速やかに自ノード装置１２において再生したいという一般的な要求がある。この要求を満たすために、音声・字幕データのプライオリティのレベルが、映像データのプライオリティのレベルより高く設定されている。
【０１０３】
ところで、第１実施形態においては、音声データも映像データも、対応する各バッファへの保存量が設定値以上となることを条件に、多重化コンテンツの再生が開始される。これに対し、本実施形態においては、ハイプライオリティの音声・字幕データの、音声用バッファ４０への保存量が設定値以上となれば、ロープライオリティの映像データの、映像用バッファ４２への保存量が設定値以上となることを待たずに、音声・字幕データの再生が、映像データに先行して、開始される。これにより、カラオケというサービスを受けるユーザの一般的な要望を満たすことができる。
【０１０４】
図６には、本実施形態に従うコンテンツ再生方法が実施されるピアツーピア通信システム１０における各ノード装置１２のハードウエア構成がブロック図で概念的に表されている。各ノード装置１２は、図２に示すノード装置１２と基本的に共通しており、異なるのは、音声用バッファ４０に代えて音声・字幕用バッファ７０が用いられる点のみである。
【０１０５】
図７には、本実施形態における受信・再生プログラムが概念的にフローチャートで表されている。以下、この受信・再生プログラムを説明するが、図３に示す受信・再生プログラムと共通するステップについては、既に説明したステップの番号を引用することにより、重複した説明を省略する。
【０１０６】
図７に示す受信・再生プログラムが起動すると、まず、ステップＳ２０１において、図３に示すステップＳ１に準じて、デスティネーションノードとして機能する自ノード装置１２が要求する音声・字幕データを保存している他のノード装置１２であるソースノードに、その音声・字幕データを自ノード装置１２に送信することをリクエストするためのメッセージが送信される。
【０１０７】
次に、ステップＳ２０２において、図３に示すステップＳ２に準じて、デスティネーションノードとして機能する自ノード装置１２が要求する映像データを保存している他のノード装置１２であるソースノードに、その映像データを自ノード装置１２に送信することをリクエストするためのメッセージが送信される。
【０１０８】
続いて、ステップＳ２０３において、図３に示すステップＳ３に準じて、各ソースノードから、音声・字幕データまたは映像データが受信される。その後、ステップＳ２０４において、受信した最新のデータ（例えば、１フレーム分のデータ）が音声・字幕データであるか否かが判定される。そうであれば、ステップＳ２０５において、その受信されたデータが音声・字幕用バッファ７０（図２に示す音声用バッファ４０を置換するもの）に、対応するタイムスタンプと共に、保存される。受信した最新のデータ（例えば、１フレーム分のデータ）が音声・字幕データではなく、映像データである場合には、ステップＳ２０６において、その受信されたデータが、映像用バッファ４２に、対応するタイムスタンプと共に、保存される。
【０１０９】
その後、ステップＳ２０７において、音声・字幕データの、音声・字幕用バッファ７０への保存量が設定値以上となったか否かが判定される。そうでなければ、ステップＳ２０３に戻るが、そうであれば、ステップＳ２０８において、映像データの、映像用バッファ４２への保存量が設定以上となったか否かが判定される。今回は、そうではないと仮定すれば、判定がＮＯとなり、ステップＳ２０９に移行する。
【０１１０】
このステップＳ２０９においては、映像データに代わる既存（標準）の背景データが記憶装置２４から読み出されるとともに、音声・字幕データが音声・字幕用バッファ７０から読み出され、それにより、背景データと、音声・字幕データとが再生される。その後、ステップＳ２１０において、再生された音声・字幕データが複製されて、記憶装置２４に保存される。
【０１１１】
続いて、ステップＳ２１１において、音声・字幕データが最後まで再生されたか否かが判定される。そうではない場合には、ステップＳ２１２において、図３に示すステップＳ１１に準じて、自ノード装置１２が、音声・字幕データを、対応するソースノードから受信する受信速度がカウントされ、さらに、音声・字幕用バッファ７０が消費される消費速度がカウントされる。
【０１１２】
続いて、ステップＳ２１３において、音声・字幕データの受信速度が、音声・字幕用バッファ７０の消費速度より遅いか否かが判定される。そのままでは音声・字幕用バッファ７０が空になってしまう可能性が、音声・字幕用バッファ７０がオーバーフローしてしまう可能性より高いか否かが判定されるのである。音声・字幕データの受信速度が、音声・字幕用バッファ７０の消費速度より遅い場合には、ステップＳ２１４において、音声・字幕データを保存していてそれを送信するソースノードに、音声・字幕データの送信速度を増加させる旨のメッセージが送信される。その送信速度が増加させられれば、自ノード装置１２が音声・字幕データを受信する速度が増加し、その結果、音声・字幕用バッファ７０が空になってしまう可能性が減少する。
【０１１３】
これに対し、音声・字幕データの受信速度が、音声・字幕用バッファ７０の消費速度より遅くはない場合、すなわち、そのままでは音声・字幕用バッファ７０がオーバーフローしてしまう可能性が、音声・字幕用バッファ７０がオーバーフローしてしまう可能性より高い場合には、ステップＳ２１５において、音声・字幕データを保存していてそれを送信するソースノードに、音声・字幕データの送信速度を減少させる旨のメッセージが送信される。その送信速度が減少させられれば、自ノード装置１２が音声・字幕データを受信する速度が減少し、その結果、音声・字幕用バッファ７０がオーバーフローしてしまう可能性が減少する。
【０１１４】
いずれの場合にも、その後、ステップＳ２１６において、図３に示すステップＳ１５と同様にして、自ノード装置１２が、映像データを、対応するソースノードから受信する受信速度がカウントされ、さらに、映像用バッファ４２が消費される消費速度がカウントされる。
【０１１５】
続いて、ステップＳ２１７において、図３に示すステップＳ１２と同様に、映像データの受信速度が、映像用バッファ４２の消費速度より遅いか否かが判定される。そのままでは映像用バッファ４２が空になってしまう可能性が、映像用バッファ４２がオーバーフローしてしまう可能性より高いか否かが判定されるのである。映像データの受信速度が、映像用バッファ４２の消費速度より遅い場合には、ステップＳ２１８において、映像データを保存していてそれを送信するソースノードに、映像データの送信速度を増加させる旨のメッセージが送信される。その送信速度が増加させられれば、自ノード装置１２が映像データを受信する速度が増加し、その結果、映像用バッファ４２が空になってしまう可能性が減少する。
【０１１６】
これに対し、映像データの受信速度が、映像用バッファ４２の消費速度より遅くはない場合、すなわち、そのままでは映像用バッファ４２がオーバーフローしてしまう可能性が、映像用バッファ４２がオーバーフローしてしまう可能性より高い場合には、ステップＳ２１９において、映像データを保存していてそれを送信するソースノードに、映像データの送信速度を減少させる旨のメッセージが送信される。その送信速度が減少させられれば、自ノード装置１２が映像データを受信する速度が減少し、その結果、映像用バッファ４２がオーバーフローしてしまう可能性が減少する。
【０１１７】
いずれの場合にも、その後、ステップＳ２２０において、自ノード装置１２は、音声・字幕データのうち後続する部分と、映像データのうち後続する部分とを、対応するソースノードから受信する。続いて、ステップＳ２２１において、受信した最新のデータ（例えば、１フレーム分のデータ）が音声・字幕データであるか否かが判定され、そうであれば、ステップＳ２２２において、その音声・字幕データが、対応するタイムスタンプと共に、音声・字幕用バッファ７０に保存される。これに対し、受信した最新のデータ（例えば、１フレーム分のデータ）が映像データである場合には、ステップＳ２２３において、その映像データが、対応するタイムスタンプと共に、映像用バッファ４２に保存される。いずれの場合にも、その後、ステップＳ２０８に移行する。
【０１１８】
映像データの、映像用バッファ４２への保存量が設定値以上となった場合には、ステップＳ２０８の判定がＹＥＳとなり、ステップＳ２２４に移行する。このステップＳ２２４においては、音声・字幕データが、音声・字幕用バッファ７０から、対応するタイムスタンプ（音声・字幕データの各フレームごとのタイムスタンプ）と共に読み出されるとともに、映像データが、映像用バッファ４２から、対応するタイムスタンプ（映像データの各フレームごとのタイムスタンプ）と共に読み出され、さらに、それら音声・字幕データおよび映像データが、自己の内部クロックを用い、かつ、タイムスタンプを参照することにより、互いに同期するように、多重化して再生される。音声・字幕データのうちの音声デデータは、音声出力部５８によって再生される一方、音声・字幕データのうちの字幕データと、映像データとは、映像出力部５４によって再生される。
【０１１９】
その後、ステップＳ２２５において、音声・字幕データが複製されて、音声・字幕用バッファ７０から記憶装置２４に転送されるとともに、映像データが複製されて、映像用バッファ４２から記憶装置２４に転送される。
【０１２０】
続いて、ステップＳ２１１において、音声・字幕データが最後まで再生できたか否かが判定される。そうでなければ、ステップＳ２１２に移行するが、そうであれば、ステップＳ２２６において、映像データが最後まで再生できたか否かが判定される。そうでなければ、ステップＳ２２７において、映像データが複製されて、映像用バッファ４２から記憶装置２４に転送される。その後、ステップＳ２２６に戻る。これに対し、映像データが最後まで再生できた場合には、ステップＳ２２６の判定がＹＥＳとなり、この受信・再生プログラムの実行が終了する。
【０１２１】
以上の説明から明らかなように、本実施形態においては、説明の便宜上、図７におけるステップＳ２０７ないしＳ２０９が、前記（３）項における「一部再生工程」の一例を構成し、ステップＳ２０７、Ｓ２０８およびＳ２２４が、前記（４）項における「全部再生工程」の一例を構成していると考えることができる。
【０１２２】
さらに、本実施形態においては、説明の便宜上、音声・字幕用バッファ７０および映像用バッファ４２が、前記（１）項における「複数の記憶手段」の一例および前記（８）項における「複数の記憶手段」の一例を構成していると考えることができる。
【０１２３】
さらに、本実施形態においては、説明の便宜上、図７に示す受信・再生プログラムおよび図４に示す送信プログラムが互いに共同して、前記（９）項に係る「プログラム」の一例および前記（１０）項に係る「プログラム」の一例を構成していると考えることができる。
【０１２４】
本明細書における「サブコンテンツデータ」には、例えば、映像データ、音声データ、テキストデータ、字幕データ、歌詞データ、音符データ、広告データ、他の外国語での音声データ、ステレオ方式の音声データ、サラウンド方式の音声データ、ノード装置１２のプログラムなどがあるが、これらに限定されない。
【０１２５】
以上、本発明の実施の形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、前記［発明の開示］の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【図面の簡単な説明】
【０１２６】
【図１】本発明の第１実施形態に従うコンテンツ再生方法が実施されるピアツーピア通信システム１０を概略的に示す図である。
【図２】図１に示す代表的なノード装置１２のハードウエア構成を概念的に表すブロック図である。
【図３】図２に示すノード装置１２のＣＰＵ２０によって実行される受信・再生プログラムを概念的に表すフローチャートである。
【図４】図２に示すノード装置１２のＣＰＵ２０によって実行される送信プログラムを概念的に表すフローチャートである。
【図５】図１に示す複数のノード装置１２のうち、音声データを送信する音声送信ノードと、その音声データを受信する受信ノードとの間における要求および音声データの複数のフレームのやりとりを経時的に説明するとともに、映像データを送信する映像送信ノードと、その映像データを受信する受信ノードとの間における要求および映像データの複数のフレームのやりとりを経時的に説明する図である。
【図６】本発明の第２実施形態に従うコンテンツ再生方法が実施されるピアツーピア通信システム１０における代表的なノード装置１２のハードウエア構成を概念的に表すブロック図である。
【図７】図６に示すノード装置１２のＣＰＵ２０によって実行される受信・再生プログラムを概念的に表すフローチャートである。
【符号の説明】
【０１２７】
１０  ピアツーピア通信システム
１２  ノード装置
１４  ネットワーク
２４  記憶装置
３０  バッファメモリ
４０  音声用バッファ
４２  映像用バッファ
５０  送受信部
７０  音声・字幕用バッファ
【図１】
2009124527.tif 000003
【図２】
2009124527.tif 000004
【図３】
2009124527.tif 000005
【図４】
2009124527.tif 000006
【図５】
2009124527.tif 000007
【図６】
2009124527.tif 000008
【図７】
2009124527.tif 000009