説明

コンテンツ配信システム、並びにこれに用いられるピア及びピアプログラム

【課題】所望のコンテンツのダウンロードファイルのダウンロードに失敗しても、所望のコンテンツを再生できるコンテンツ配信システムを提供する。
【解決手段】ピア30は、センタサーバ10からコンテンツ情報を取得する。ピア30はコンテンツ情報に基づいて所望のコンテンツのダウンロードファイルを保存している他のピア30を特定し、特定した他のピア30からダウンロードファイルをダウンロードする。ピア30はダウンロードファイルのダウンロードの成否を判断し、ダウンロードに成功したと判断したときダウンロードファイルを再生する。一方、ダウンロードに失敗したと判断したときコンテンツ情報に基づいてダウンロードに失敗したダウンロードファイルに対応したストリームファイルをストリームサーバ20に要求し、取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンテンツ配信システム、並びにこれに用いられるピア及びピアプログラムに関し、さらに詳しくは、ストリーミングサーバと、ストリーミングサーバに接続された複数のピアとを備えたコンテンツ配信システム、並びにこれに用いられるピア及びピアプログラムに関する。
【背景技術】
【0002】
近年ピアツーピア型コンテンツ配信システムが隆盛を見せている。一般に、ピアツーピア型コンテンツ配信システムは、コンテンツのストリームファイルを配信しながらコンテンツを再生するストリーム方式よりもむしろ、コンテンツのダウンロードファイルを全てダウンロードした後にコンテンツを再生するダウンロード方式を採用する。ストリーム方式の場合、ネットワーク障害が発生すると、ストリームファイルの配信が中止されるため、その時点でコンテンツの再生も中止されるが、ダウンロード方式の場合、ネットワーク障害が発生しても、ダウンロードファイルのダウンロードが既に完了していれば、コンテンツの再生が中止されることはない。
【0003】
さらに、ダウンロード方式の場合、ネットワークの伝送能力以上のビットレートのコンテンツであってもダウンロード可能であるため、ストリーム方式よりも映像品質の高いコンテンツを配信できる。
【0004】
しかし、ダウンロード方式ではダウンロードファイルのダウンロードに成功しなければならず、ネットワークの障害等によりダウンロードファイルの一部のダウンロードに失敗した場合、コンテンツを再生できない。
【特許文献1】特開2004−64769号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明の目的は、所望のコンテンツのダウンロードファイルのダウンロードに失敗しても、所望のコンテンツを再生できるコンテンツ配信システムを提供することである。
【0006】
本発明のもう1つの目的は、所望のコンテンツのダウンロードファイルの一部のダウンロードに失敗しても、映像品質をなるべく低下させずにコンテンツを再生できるコンテンツ配信システムを提供することである。
【課題を解決するための手段及び発明の効果】
【0007】
本発明によるコンテンツ配信システムは、ストリームサーバと、ストリームに接続された複数のピアとを備えたコンテンツ配信システムである。ストリームサーバは、コンテンツのストリームファイルを記憶するための記憶手段を備える。ピアは、ローカル記憶手段と、情報記憶手段と、ダウンロード手段と、再生制御手段と、要求手段とを備える。ローカル記憶手段はコンテンツのダウンロードファイルを記憶する。情報記憶手段は、複数のピアに保存されているコンテンツの詳細とコンテンツのダウンロードファイルの所在とコンテンツのストリームファイルの所在とに関するコンテンツ情報を記憶する。ダウンロード手段は、コンテンツ情報に基づいて他のピアから所望のコンテンツのダウンロードファイルをダウンロードしてローカル記憶手段に保存する。再生制御手段は、ダウンロードに成功したとき所望のコンテンツのダウンロードファイルの再生を指示し、ダウンロードに失敗したときストリーム再生を指示する。要求手段は、ストリーム再生の指示に応答してコンテンツ情報に基づいて所望のコンテンツのストリームファイルの配信を要求する。ストリームサーバはさらに配信手段を備える。配信手段は、要求に応答してストリームファイルを配信する。ピアはさらに再生手段を備える。再生手段は再生制御手段の指示に応答してダウンロードファイル又は配信されたストリームファイルに基づいて所望のコンテンツを再生する。
【0008】
本発明によるコンテンツ配信システムは、コンテンツのダウンロードファイルの所在とストリームファイルの所在とをコンテンツ情報に含める。ピアは所望のコンテンツのダウンロードファイルのダウンロードの成否を判断し、ダウンロードに成功したと判断したときダウンロードファイルを再生する。一方、ダウンロードに失敗したと判断したときコンテンツ情報に基づいて所望のコンテンツのストリームファイルを取得する。そのため、ピアはダウンロードファイルのダウンロードの成否にかかわらず、所望のコンテンツを再生できる。
【0009】
好ましくは、ダウンロードファイルは、連続して配列され、配列順に再生される複数のダウンロードデータブロックを含み、ストリームファイルは、連続して配列される複数のストリームデータブロックを含む。情報記憶手段はさらに、ダウンロードデータブロックに対応したストリームデータブロックを特定するための特定情報を含む。再生制御手段は、判断手段と、指示手段とを含む。判断手段は各ダウンロードデータブロックのダウンロードに成功したか否かを判断する。指示手段は、判断の結果ダウンロードデータのダウンロードに成功したとき、ダウンロードデータブロックの再生を指示し、判断の結果ダウンロードデータのダウンロードに失敗したとき、ストリーム再生を指示する。要求手段はストリーム再生の指示に応答して特定情報に基づいてダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックの配信を要求する。配信手段は要求に応答してストリームデータブロックを配信する。再生手段は指示手段の指示に応答してダウンロードデータブロック及び/又は配信されたストリームデータブロックを再生する。ここで、ダウンロードデータブロック及びストリームデータブロックはデータのかたまりであり、たとえばフレームやGOP(Group Of Pictures)である。また、複数のGOPのかたまりであってもよい。
【0010】
この場合、ピアはダウンロードデータブロックごとにダウンロードの成否を判断する。コンテンツ再生時、ピアはダウンロードデータブロックを配列順に再生するが、ダウンロードに成功したダウンロードデータブロックを再生し、かつ、ダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックをストリーム再生する。したがって、ピアはダウンロードファイルのうちダウンロードに成功した部分についてはダウンロードファイルを再生する。そのため映像品質の低下を可能な限り抑制しながら所望のコンテンツを再生できる。
【0011】
好ましくは、判断手段は判断した結果を判断テーブルに登録し、指示手段は判断テーブルに基づいてダウンロードデータブロックの再生又はストリーム再生を指示する。
【0012】
この場合、判断手段が各ダウンロードデータブロックを再生するごとにダウンロードの成否を判断する必要がなく、予めダウンロードの成否を判断してその判断結果を判断テーブルに登録する。そのため指示手段はコンテンツの再生時に判断手段の判断結果を待つ必要がなく、判断テーブルを参照すれば、再生すべきダウンロードブロックのダウンロードの成否を判断できる。
【0013】
好ましくは、特定情報は、各ダウンロードデータブロックの再生開始時間を示す第1のタイムスタンプと、各ストリームデータブロックの再生開始時間を示す第2のタイムスタンプとを含み、要求手段は、特定情報に基づいて、ダウンロードに失敗したダウンロードデータブロックの第1のタイムスタンプに最も近い第2のタイムスタンプを有するストリームデータブロックを要求する。
【0014】
この場合、タイムスタンプに基づいてダウンロードデータブロックに対応するストリームデータブロックを特定できる。
【0015】
本発明によるピアは、コンテンツのストリームファイルを有するストリームサーバと他のピアとに接続可能なピアである。本発明によるピアは、ローカル記憶手段と、情報記憶手段と、ダウンロード手段と、再生制御手段と、要求手段と、再生手段とを備える。ローカル記憶手段は、コンテンツのダウンロードファイルを記憶する。情報記憶手段は、コンテンツの詳細とコンテンツのダウンロードファイルの所在とコンテンツのストリームファイルの所在とに関するコンテンツ情報を記憶する。ダウンロード手段は、コンテンツ情報に基づいて他のピアから所望のコンテンツのダウンロードファイルをダウンロードしてローカル記憶手段に保存する。再生制御手段は、ダウンロードに成功したとき所望のコンテンツのダウンロードファイルの再生を指示し、ダウンロードに失敗したときストリーム再生を指示する。要求手段は、ストリーム再生の指示に応答してコンテンツ情報に基づいて所望のコンテンツのストリームファイルの配信をストリームサーバに要求する。再生手段は、再生制御手段の指示に応答してダウンロードファイル又はストリームサーバから配信されたストリームファイルに基づいて所望のコンテンツを再生する。
【0016】
本発明によるピアは、コンテンツのダウンロードファイルの所在とストリームファイルの所在とに関するコンテンツ情報を有する。ピアはダウンロードファイルのダウンロードの成否を判断し、所望のコンテンツのダウンロードに成功したと判断したときダウンロードファイルを再生する。一方、ダウンロードに失敗したと判断したときコンテンツ情報に基づいて所望のコンテンツのストリームファイルを取得する。そのため、ピアはダウンロードファイルのダウンロードの成否にかかわらず、所望のコンテンツを再生できる。
【0017】
好ましくは、ダウンロードファイルは、連続して配列され、配列順に再生される複数のダウンロードデータブロックを含み、ストリームファイルは、連続して配列される複数のストリームデータブロックを含む。情報記憶手段はさらに、ダウンロードデータブロックに対応したストリームデータブロックを特定するための特定情報を含む。再生制御手段は、判断手段と、指示手段とを含む。判断手段は、各ダウンロードデータブロックのダウンロードに成功したか否かを判断する。指示手段は、判断の結果ダウンロードデータのダウンロードに成功したとき、ダウンロードデータブロックの再生を指示し、判断の結果ダウンロードデータのダウンロードに失敗したとき、ストリーム再生を指示する。要求手段はストリーム再生の指示に応答して特定情報に基づいてダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックの配信をストリームサーバに要求する。再生手段は指示手段の指示に応答してダウンロードデータブロック及び/又はストリームサーバから配信されたストリームデータブロックを再生する。
【0018】
この場合、ピアはダウンロードデータブロックごとにダウンロードの成否を判断する。コンテンツ再生時、ピアはダウンロードデータブロックを配列順に再生するが、ダウンロードに成功したダウンロードデータブロックを再生し、ダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックをストリーム再生する。したがって、ピアはダウンロードファイルのうちダウンロードに成功した部分についてはダウンロードファイルを再生する。そのため映像品質の低下を可能な限り抑制しながら所望のコンテンツを再生できる。
【0019】
本発明によるピアプログラムは、コンテンツのストリームファイルを有するストリームサーバと他のピアとに接続可能なコンピュータに実行させるためのピアプログラムである。ピアプログラムはコンピュータに、コンテンツの詳細とコンテンツのダウンロードファイルの所在とコンテンツのストリームファイルの所在とに関するコンテンツ情報を情報記憶手段に保存するステップと、コンテンツ情報に基づいて他のピアから所望のコンテンツのダウンロードファイルをダウンロードしてローカル記憶手段に保存するステップと、ダウンロードに成功したとき所望のコンテンツのダウンロードファイルの再生を指示し、ダウンロードに失敗したときストリーム再生を指示する再生制御ステップと、ストリーム再生の指示に応答してコンテンツ情報に基づいて所望のコンテンツのストリームファイルの配信をストリームサーバに要求する要求ステップと、再生制御手段の指示に応答してダウンロードファイル又はストリームサーバから配信されたストリームファイルに基づいて所望のコンテンツを再生する再生ステップとを実行させるためのものである。
【0020】
本発明によるピアプログラムでは、コンテンツのダウンロードファイルの所在とストリームファイルの所在とをコンテンツ情報を含む。ピアプログラムは所望のコンテンツのダウンロードファイルのダウンロードの成否を判断し、ダウンロードに成功したと判断したときダウンロードファイルを再生する。一方、ダウンロードに失敗したと判断したときコンテンツ情報に基づいて所望のコンテンツのストリームファイルを取得する。そのため、ピアプログラムはダウンロードファイルのダウンロードの成否にかかわらず、所望のコンテンツを再生できる。
【0021】
好ましくは、ダウンロードファイルは、連続して配列され、配列順に再生される複数のダウンロードデータブロックを含み、ストリームファイルは、連続して配列される複数のストリームデータブロックを含む。ピアプログラムはさらに、ダウンロードデータブロックに対応したストリームデータブロックを特定するための特定情報を情報記憶手段に保存するステップを含む。再生制御ステップは、各ダウンロードデータブロックのダウンロードに成功したか否かを判断するステップと、判断の結果ダウンロードデータのダウンロードに成功したとき、ダウンロードデータブロックの再生を指示し、判断の結果ダウンロードデータのダウンロードに失敗したとき、ストリーム再生を指示するステップとを含む。要求ステップはストリーム再生の指示に応答して特定情報に基づいてダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックの配信をストリームサーバに要求する。再生ステップは指示手段の指示に応答してダウンロードデータブロック及び/又はストリームサーバから配信されたストリームデータブロックを再生する。
【0022】
この場合、ピアプログラムはダウンロードデータブロックごとにダウンロードの成否を判断する。コンテンツ再生時、ピアプログラムはダウンロードデータブロックを配列順に再生するが、ダウンロードに成功したダウンロードデータブロックを再生し、ダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックをストリーム再生する。したがって、ピアプログラムはダウンロードファイルのうちダウンロードに成功した部分についてはダウンロードファイルを再生する。そのため映像品質の低下を可能な限り抑制しながら所望のコンテンツを再生できる。
【発明を実施するための最良の形態】
【0023】
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
【0024】
1.構成
[システム全体構成]
図1を参照して、本発明の実施の形態によるコンテンツ配信システムは、センタサーバ10と、ストリームサーバ20と、複数のピア30とを備える。ピア30はインターネット等の電気通信回線(図示せず)を介してセンタサーバ10及びストリームサーバ20に接続され、かつ相互にも接続可能である。各ピア30はコンテンツのダウンロードファイルを保存し、ダウンロードファイルをピア30間で相互に配信する。したがって、センタサーバ10にダウンロードファイルは保存されない。
【0025】
ストリームサーバ20はストリームデータベース21にコンテンツのストリームファイルを保存する。ストリームサーバ20はピア30からのストリーム要求に応答してストリームファイルを配信する。
【0026】
センタサーバ10は、コンテンツの詳細とダウンロードファイルの所在とストリームファイルの所在とに関するコンテンツ情報をコンテンツ管理データベース11に保存する。センタサーバ10は、ダウンロードファイルの所在に関する情報を各ピア30から収集し、ストリームファイルの所在に関する情報をストリームサーバ20から収集してコンテンツ情報を更新する。センタサーバ10は更新したコンテンツ情報を各ピア30に通知する。
【0027】
ピア30は、ローカルデータベース31と、制御部32と、ダウンロード部33と、要求部34と、再生部35とを含む。
【0028】
ローカルデータベース31はダウンロードファイルを保存する。ダウンロードファイルは図2に示すように、連続して配列される複数のGOPで構成される。GOPは連続して配列された複数のフレーム(1つのIピクチャ、複数のBピクチャ及びPピクチャ)で構成される。ダウンロードファイルのGOPは配列順に再生される。
【0029】
ダウンロードファイルはまた、複数のフレームの固まりであって、GOPよりもサイズの大きい複数のフラグメントFRに分割される。図2ではダウンロードファイルは30個のフラグメントFR0〜FR29に分割されている。GOPは隣接する2つのフラグメントにまたがる場合がある。図2中のGOP878、GOP1672、GOP3323がこれに当たる。ピア30は他のピア30から各フラグメントFRをダウンロードし、ダウンロード後、これらのフラグメントFRを結合する。
【0030】
なお、ストリームファイルも図2に示すように連続して配列される複数のGOPで構成されるが、フラグメントには分割されない。以降、ダウンロードファイルのGOPをGOPDとし、ストリームファイルのGOPをGOPSとする。
【0031】
ローカルデータベース31はさらに、センタサーバ10から送信されたコンテンツ情報を保存する。
【0032】
ダウンロード部33はコンテンツ情報に基づいて所望のコンテンツを保存する他のピア30からダウンロードファイルをダウンロードする。ダウンロード部33は、ダウンロード時に図2に示した所望のコンテンツのダウンロードファイルとともにインフォメーションファイルとインデックスファイルとをダウンロードし、ローカルデータベース31に保存する。インフォメーションファイルは、ダウンロード後に複数のフラグメントを結合するための情報を含む。インデックスファイルは表1に示すダウンロードインデックスを含む。
【表1】

【0033】
表1に示すように、ダウンロードインデックスはダウンロードファイル内の各GOPDのオフセットと、タイムスタンプと、GOPD内のIピクチャのサイズとを含む。ダウンロードインデックスは後述するストリームインデックスとともにGOPDに対応するGOPSを特定するための情報として利用される。
【0034】
制御部32はローカルデータベース31に保存したダウンロードファイルの所在に関する情報をセンタサーバ10に通知する。制御部32はまた、他のピア30からの要求に応じてローカルデータベース31に保存されたダウンロードファイルを配信する。
【0035】
制御部32はさらに、ダウンロード部33がダウンロードファイルのダウンロードに成功したか否かを判断する。後述するように、制御部32はダウンロードの成否をGOPDごとに判断する。制御部32は判断結果に基づき、ダウンロード再生又はストリーム再生するよう指示する。ここで、ダウンロード再生とはローカルデータベース31に保存されたダウンロードファイルを再生することをいい、ストリーム再生とはストリームサーバ20から配信されたストリームファイルを再生することをいう。
【0036】
要求部34は、制御部32からのストリーム再生指示に応じてストリームサーバ20にストリームファイルの配信を要求する。
【0037】
再生部35は制御部32からのダウンロード再生指示又はストリーム再生指示に応じてダウンロードファイル又はストリームファイルに基づいてコンテンツを再生する。
【0038】
[コンテンツ情報のデータ構造]
コンテンツ情報は階層構造を有する。具体的には、コンテンツ情報は、アイテム階層と、アイテム階層よりも下位に位置づけられた映像階層とを含む。
【0039】
図3を参照して、アイテム階層40は、1又は2以上のアイテムブロック41からなる。アイテムブロック41の各々に1つのコンテンツが割り当てられる。各アイテムブロック41の属性情報は、割り当てられたコンテンツのユニークIDcuidを含む。アイテムブロック41はさらに、メタ情報42と、複数の映像情報43とを有する。
【0040】
メタ情報42は、静的メタ情報、動的メタ情報に分けられる。静的メタ情報は、登録日付、タイトル、監督、脚本、主演、製作国、あらすじなど、静的情報である。動的メタ情報は、価格など、動的に変動する情報である。
【0041】
映像情報43はコンテンツのファイル(ダウンロードファイル又はストリームファイル)に関する情報で、ファイルのユニークIDmovieIdと、各ユニークIDmovieIdに対応付けて付与された本編ダウンロード又は本編ストリームを示す表示情報ui及び識別情報fnとを含む。
【0042】
図4を参照して、映像階層50は、ファイル(ダウンロードファイル又はストリームファイル)に関する情報を格納するための階層である。映像階層50は複数の映像ブロック51からなる。映像ブロック51の各々に1つのファイル(ダウンロードファイル又はストリームファイル)が割り当てられる。映像ブロック51には、当該ファイルの詳細及び当該ファイルをダウンロード又はストリーム可能なURLが列挙されている。
【0043】
各映像ブロック51の属性情報は、割り当てられたファイルのユニークIDmovieIdと、そのファイルの品質hsdと、ファイルのデータ形式mineと、配信種別disttype(ダウンロード又はストリーム)と、上演時間durationと、インデックスファイルの有無indexFileと、インフォメーションファイルの有無infoFileと、ファイル内のフラグメント分割数numFragmentsと、識別情報fnとを含む。映像ブロック51はさらに、ロケーション情報リストurilistを含む。
【0044】
映像ブロック51に割り当てられたファイルがダウンロードファイルの場合、ロケーション情報リストurilistは、該当するダウンロードファイルが保存されているピアのユニークIDpuidと、ピアの現在の負荷値loadと、複数のフラグメント等の詳細及び所在に関する複数のロケーション情報uriとを含む。
【0045】
各ロケーション情報uriは、各フラグメントFR、インフォメーションファイル及びインデックスファイルのURL情報locationと、パーツ番号subidと、サイズ情報sizeとを含む。パーツ番号subidはファイル固有の番号であり、インフォメーションファイルは「−2」、インデックスファイルは「−1」である。各フラグメントFRのパーツ番号subidは「0」以上である。サイズ情報sizeは各パーツ番号のファイルのデータサイズである。
【0046】
映像ブロック51に割り当てられたファイルがストリームファイルの場合、ロケーション情報リストurilist内のユニークIDpuidはストリームサーバ20のユニークIDである。また、ロケーション情報リストurilistは、インデックスファイルのロケーション情報uriと、ストリームファイルのロケーション情報uriとを含む。ここでいうインデックスファイルはストリームファイル内のGOPSの詳細に関するファイルであり、ストリームインデックスを含む。ストリームインデックスは表1に示したダウンロードインデックスと同様であり、ストリームファイル内の各GOPSのオフセットと、タイムスタンプと、GOPS内のIピクチャのサイズとを含む。
【0047】
なお、ストリームファイルはフラグメントに分割されないため、ストリームファイルのフラグメント分割数numFragmentsは1つである。
【0048】
2.動作
[動作概要]
ピア30は、センタサーバ10からコンテンツ情報を取得する。ピア30はコンテンツ情報に基づいて所望のコンテンツのダウンロードファイルを保存している他のピア30を特定し、特定した他のピア30からダウンロードファイルをダウンロードする。
【0049】
このとき、ピア30はロケーション情報uriに基づいてフラグメント単位でダウンロードファイルをダウンロードする。そのため、図5に示すように複数のフラグメントのうちの一部のフラグメントのダウンロードに失敗する場合がある。図5では30個のフラグメントFR0〜FR29のうちフラグメントFR1のダウンロードに失敗している。
【0050】
コンテンツを再生するとき、ピア30はフラグメントFR0〜FR29の配列順に再生する。このとき、ピア30はダウンロードファイルのうちダウンロードに成功している部分(フラグメントFR0、FR2〜FR29)をダウンロード再生する。一方、ダウンロードに失敗している部分(フラグメントFR1)についてはその部分に相当するストリームファイルをストリームサーバ20から取得しストリーム再生する。図5の例ではピア30は、フラグメントFR1に相当するGOPS878〜GOPS1672を取得し、ストリーム再生する。
【0051】
以上の動作により、ピア30はダウンロードファイルの一部のダウンロードに失敗しても、ダウンロードに成功した部分をダウンロード再生し、失敗した部分をストリーム再生する。したがって、ダウンロードに失敗しても所望のコンテンツを再生できる。さらに、コンテンツの全てをストリーム再生するのではなく、ダウンロードに失敗した部分のみストリーム再生を実施するため、映像画質を可能な限り低下させずにコンテンツを再生できる。
【0052】
[全体動作]
図6を参照して、ピア30はセンタサーバ10からコンテンツ情報を受信する(S1)。ピア30内の制御部32はコンテンツ情報に基づいて所望のコンテンツのダウンロードファイルを保存する他のピア30を特定する。制御部32はアイテムブロック41の複数の映像情報43を検索し、識別情報fnが「本編ダウンロード」であるファイルのユニークIDmovieIdを特定する。続いて、ピア30は特定したユニークIDmovieIdの映像ブロック51を検索する。ダウンロード部33は制御部32が特定した映像ブロック51内のロケーション情報リストurilistに基づいてダウンロードを開始する(S2)。このとき、ピア30はダウンロードファイルのダウンロードインデックスも取得する。
【0053】
ダウンロードを開始した後、制御部32は所望のコンテンツのストリームインデックスを取得する(S3)。制御部32はアイテムブロック41の映像情報43を検索し、識別情報fnが「本編ストリーム」の映像のユニークIDmovieIdを特定する。制御部32はさらに、特定したユニークIDmovieIdの映像ブロック51を検索する。検索した映像ブロック51内のパーツ番号「−1」のロケーション情報uriに基づいてストリームサーバ20にストリームインデックスを要求する。ストリームサーバ20はピア30からの要求に応じて表1に示すストリームインデックスを送信する。ストリームインデックスはストリーム再生をする場合に必要となるため、ピア30はコンテンツを再生する前にストリームインデックスを取得する。
【0054】
ステップS3でストリームインデックスを取得した後、制御部32は、判断処理を開始する(S4)。判断処理では、ダウンロードファイルのダウンロードに成功したか否かをGOPDごとに判断し、判断結果を表2に示す判断テーブルに登録する。
【表2】

【0055】
判断テーブルは、ダウンロードに成功したGOPDの範囲を示す。表2は図5の例に基づいて作成された判断テーブルである。判断処理の詳細については後述する。
【0056】
判断処理を開始した後、ピア30は再生処理を開始する(S5)。ピア30はGOPD0から配列順に再生を指示するが、判断テーブルを参照しながら、有効なGOPD、つまりダウンロードに成功したGOPDについてはダウンロード再生し、無効なGOPD、つまりダウンロードに失敗したGOPDについてはそのGOPDに相当するGOPSを要求し、ストリーム再生する。
【0057】
[判断処理]
制御部32は、ダウンロードファイルのGOPDごとにダウンロードに成功したか否かを判断する。再生処理のとき、無効なGOPDに相当するストリームファイルのGOPSを取得するためである。
【0058】
図7を参照して、制御部32は初めにカウント値n=0にする(S41)。続いて、GOPDn(=GOPD0)が属するフラグメントFRiを特定する(S42)。具体的には、制御部32は、GOPDnのオフセットOFgとフラグメントFRiのオフセットOFfとを比較する。制御部32は、その値がオフセットOFg以下であり、かつ、オフセットOFgに最も近いオフセットOFfを特定する。ここで、GOPDnのオフセットOFgはダウンロードインデックスから読み出される。また、オフセットOFfは以下の式(1)で求められる。
OFf=ΣSfi−1 (1)
【0059】
ここで、Sfi−1はフラグメントFRi−1のサイズである。サイズSfi−1はロケーション情報uri内のパーツ番号subid=i−1のサイズ情報sizeと同じである。なお、フラグメントFR0のオフセットOFf=0である(但し、ヘッダが存在する場合には、オフセットOFfは0にならないこともある。)。
【0060】
ステップS42でフラグメントFRiを特定した後、制御部32は、GOPDnの先頭が特定したフラグメントFRiのダウンロード完了部分に含まれているか否か判断する(S43)。ダウンロード中、制御部32はフラグメントFRiのうちダウンロードを完了した部分のサイズSdlfを図示しないメモリに記憶する。ピア30がフラグメントFRi全体をダウンロードしたとき、Sdlf=Sfになる。ステップS43で制御部32は以下の式(2)を満たすか否か判断する。
OFgn≦OFf+Sdlf (2)
【0061】
式(2)を満さないとき(S43でNO)、制御部32はGOPDnのダウンロードに失敗したと判断する。一方、式(2)を満たすとき、GOPDnの先頭がフラグメントFRiのダウンロード完了部分に含まれていると判断し(S43でYES)、ステップS44に進む。
【0062】
ステップS44で制御部32は、GOPDnがフラグメントFRiとフラグメントFRi+1とにまたがっているか否かを判断する(S44)。具体的には、制御部32は以下の式(3)を満たすか否かを判断する。
OFg+Sg≦OFf+Sf (3)
【0063】
ここで、SgはGOPDnのサイズであり、以下の式(4)で求められる。
Sg=OFgn+1−OFg (4)
【0064】
式(3)を満たさない場合(S44でNO)、GOPnはフラグメントFRiに含まれる。ステップS44でNOとなるGOPDnはたとえば図5中のGOPD0〜GOPD877である。この場合、制御部32はGOPDnの後尾がフラグメントFRiのダウンロード完了部分に含まれているか否かを判断する(S45)。具体的には、ピア30は以下の式(5)を満たすか否かを判断する。
OFg+Sg≦OFf+Sdlf (5)
【0065】
式(5)を満たさない場合(S45でNO)、制御部32はGOPDnのダウンロードに失敗したと判断する。式(5)を満たす場合(S45でYES)、制御部32はGOPDnのダウンロードに成功したと判断する。
【0066】
ステップS44で制御部32が式(3)を満たすと判断した場合(S44でYES)、GOPDnの後尾はフラグメントFRi+1に含まれる。ステップS44でYESとなるGOPDnはたとえば図5中のGOPD878やGOPD1672である。この場合、制御部32はGOPDnの後尾がフラグメントFRi+1のダウンロード完了部分に含まれているか否かを判断する(S46)。具体的には、制御部32は以下の式(6)を満たすか否かを判断する。
OFg+Sg≦OFfi+1+Sdlfi+1 (6)
【0067】
式(6)を満たさない場合(S46でNO)、制御部32はGOPDnのダウンロードに失敗したと判断する。式(5)を満たす場合(S46でYES)、制御部32はGOPDnのダウンロードに成功したと判断する。
【0068】
制御部32は、ステップS43〜S46で判断した結果を表2に示す判断テーブルに登録する(S47)。判断テーブルに登録されたGOP番号の範囲内のGOPDnは有効(ダウンロード成功)であり、登録されたGOP番号の範囲外のGOPDnは無効(ダウンロード失敗)である。
【0069】
ステップS47で判断結果を判断テーブルに登録後、カウント値nをインクリメントしてステップS42に戻る。したがって、制御部32はダウンロードインデックスに列挙された全てのGOPDのダウンロードの成否を判断する。全てのGOPDについて判断した後(S48でYES)、制御部32は判断処理を終了する。
【0070】
以上の動作により、判断処理で判断テーブルを作成できる。また、GOPDnのダウンロードの成否をフラグメントFRの情報を用いて判断することにより判断処理時間を短縮できる。
【0071】
[再生処理]
ピア30は判断処理と再生処理とを同時に開始し、並列で実行する。ダウンロードファイルの全てのGOPDの判断結果を待って再生処理を実行すれば、ダウンロード直後にコンテンツを再生できないからである。1つのGOPDを再生する時間よりも1つのGOPDのダウンロードの成否を判断する時間の方が短いため、GOPDのダウンロードの成否を判断する前にそのGOPDの再生が開始されることがない。そのため、ピア30は判断処理を再生処理と並列で実行でき、ダウンロード直後にコンテンツを再生できる。以下、図5に示したダウンロードファイルを例として再生処理を説明する。
【0072】
図8を参照して、制御部32は初めにカウント値n=0とし(S6)、判断テーブルに基づいてGOPDn=GOPD0が有効か否かを判断する(S7)。判断の結果GOPD0は有効であり(S7でYES)、かつ、再生未開始であるため(S8、S9ともにNO)、制御部32はダウンロード再生指示を出力する(S11)。再生部35はダウンロード再生指示を受け、ローカルデータベース31からGOPD0を読み出し、再生する(S12)。
【0073】
ステップS12で再生を開始した後、制御部32はカウント値nをインクリメントし(S14)、ステップS7に戻る。制御部32はGOPD0の再生を完了するまでにGOPD1が有効か否か判断する(S7)。GOPD1は有効であり、かつ、ダウンロード再生中であるため(S7でYES)、制御部32は再度ダウンロード再生指示を出力しない。再生部35はダウンロード再生を既に実行中だからである。GOPD0の再生完了後、再生部35はGOPD1のダウンロード再生を実行する(S12)。
【0074】
同様の処理により、再生部35はGOPD2〜GOPD877をダウンロード再生する。GOPD877を再生した後、制御部32はステップS7でGOPD878が無効であると判断する(S7でNO)。ストリーム再生中ではないため(S15でNO)、制御部32はストリーム再生指示を出力する(S16)。要求部34はストリーム再生指示を受け、要求処理を実行する(S17)。要求処理ではGOPD878に相当するGOPSとしてGOPS878を特定し、特定したGOPS878からストリーム配信するようストリームサーバ20に要求する。要求処理の詳細は後述する。
【0075】
ストリームサーバ20は要求部34からの要求を受け、所望のコンテンツのストリームファイルのうちGOPS878からストリーム配信を開始する(S18)。
【0076】
再生部35はステップS16で出力されたストリーム再生指示を受け、GOPD877のダウンロード再生を完了した後、ストリーム再生を開始する(S19)。つまり、配信されたGOPS878を受け、再生する。
【0077】
ストリーム再生を開始後、ステップS7に進み、次のGOPD879の有効性を判断する(S7)。GOPD879も無効であり(S7でNO)、かつ、ストリーム再生中であるため(S15でYES)、制御部32はストリーム再生指示を出力しない。既にストリーム再生が実行されているからである。再生部35はストリーム再生を継続する(S19)。
【0078】
カウント値nのインクリメントを繰り返した後、制御部32はGOPD1673が有効であると判断する(S7)。このとき、ストリーム再生中であるため(S8でNO、S9でYES)、制御部32はストリーム配信のために確立していたストリームサーバ20とのコネクションを切断する(S10)。コネクションを切断することによりストリーム再生は終了する。制御部32はダウンロードインデックス内のGOPD1673のタイムスタンプに基づいて、GOPD1673の再生開始時間にコネクションを切断する。
【0079】
切断後、制御部32はダウンロード再生指示を出力する(S11)。再生部35はダウンロード再生指示に応じてローカルデータベース31からGOPD1673を読み出し、再生する(S12)。GOPD1673以降もダウンロード再生を継続し、最後尾のGOPD9907を再生後(S13でYES)、再生処理を完了する。
【0080】
以上の動作により、ピア30は取得したダウンロードファイルのうちダウンロードに成功した部分はダウンロード再生し、ダウンロードに失敗した部分はストリーム再生する。そのため、ダウンロードファイルの全体のダウンロードに失敗しても、コンテンツを再生できる。さらに、ダウンロードに成功したGOPDについてはダウンロード再生するため、映像画質を可能な限り高く維持できる。
【0081】
[要求処理]
要求処理では、ダウンロードに失敗したGOPDに対応するGOPSを特定する。このとき、ダウンロードインデックス及びストリームインデックスをGOPSを特定するための情報として利用する。
【0082】
図9を参照して、ストリーム再生指示を受けた要求部34は、ダウンロードインデックスを参照し、無効と判断されたGOPDnのタイムスタンプTDnを取得する(S171)。続いて、要求部34はストリームインデックスを検索し、ステップS171で取得したタイムスタンプTDnに最も近いGOPSのタイムスタンプTSkを特定する(S172)。要求部34は、ストリームインデックスを参照して、ステップS172で特定したタイムスタンプTSkに対応したオフセットを特定し(S173)、特定したオフセットを要求コマンドに含めてストリームサーバ20に送信する(S174)。ストリームサーバ20は、ストリームインデックスを参照して、送信されたオフセットに対応したGOPS(図5ではGOP878)からストリーム配信を実行する。
【0083】
以上の動作により、要求部34はダウンロードに失敗したGOPDnのタイムスタンプに最も近いタイムスタンプを有するストリームGOPSからストリーム配信を要求する。図5ではGOPDのGOP番号とGOPSのGOP番号とが同じであるが、エンコード処理の違いによりGOPDのGOP番号とGOPSのGOP番号とが異なる場合もある。上述の要求処理により、互いのGOP番号が異なっていても、ダウンロードに失敗したGOPDに相当するストリームGOPSを特定し、要求できる。
【0084】
以上、本発明の実施の形態を説明したが、制御部32はダウンロードファイルの一部のダウンロードに失敗したと判断した場合、ダウンロード再生せずにストリーム再生を指示してもよい。この場合、再生部35は所望のコンテンツのダウンロード再生を実行することなく、ストリーム再生を実行する。
【0085】
また、本実施の形態では、ピア30は判断処理を再生処理と並列で実行したが、再生開始までにGOP判断処理を完了していてもよい。
【0086】
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
【産業上の利用可能性】
【0087】
本発明によるコンテンツ配信システムは、ピアツーピア型のコンテンツ配信システムに利用可能である。
【図面の簡単な説明】
【0088】
【図1】本発明の実施の形態によるコンテンツ配信システムの構成を示す機能ブロック図である。
【図2】図1に示したピアに保存されるダウンロードファイルのデータ構造を示す説明図である。
【図3】図1に示したコンテンツ配信システムに用いられるコンテンツ情報のデータ構造を示す説明図である。
【図4】図3に示したデータ構造の詳細を示す説明図である。
【図5】図1に示したコンテンツ配信システムの動作を示す説明図である。
【図6】図1に示したコンテンツ配信システムの動作を示すフロー図である。
【図7】図6中のステップS4の詳細を示すフロー図である。
【図8】図6中のステップS5の詳細を示すフロー図である。
【図9】図8中のステップS17の詳細を示すフロー図である。
【符号の説明】
【0089】
20 ストリームサーバ
21 ストリームデータベース
30 ピア
31 ローカルデータベース
32 制御部
33 ダウンロード部
34 要求部
35 再生部
42 メタ情報
uri ロケーション情報

【特許請求の範囲】
【請求項1】
ストリームサーバと、前記ストリームサーバに接続された複数のピアとを備えたコンテンツ配信システムであって、
前記ストリームサーバは、
コンテンツのストリームファイルを記憶するための記憶手段を備え、
前記ピアは、
前記コンテンツのダウンロードファイルを記憶するためのローカル記憶手段と、
前記複数のピアに保存されているコンテンツの詳細と前記コンテンツのダウンロードファイルの所在と前記コンテンツのストリームファイルの所在とに関するコンテンツ情報を記憶するための情報記憶手段と、
前記コンテンツ情報に基づいて他のピアから所望のコンテンツのダウンロードファイルをダウンロードして前記ローカル記憶手段に保存するダウンロード手段と、
ダウンロードに成功したとき前記所望のコンテンツのダウンロードファイルの再生を指示し、ダウンロードに失敗したときストリーム再生を指示する再生制御手段と、
前記ストリーム再生の指示に応答して前記コンテンツ情報に基づいて前記所望のコンテンツのストリームファイルの配信を要求する要求手段とを備え、
前記ストリームサーバはさらに、
前記要求に応答して前記ストリームファイルを配信する配信手段を備え、
前記ピアはさらに、
前記再生制御手段の指示に応答して前記ダウンロードファイル又は配信されたストリームファイルに基づいて前記所望のコンテンツを再生する再生手段を備えることを特徴とするコンテンツ配信システム。
【請求項2】
請求項1に記載のコンテンツ配信システムであって、
前記ダウンロードファイルは、連続して配列され、配列順に再生される複数のダウンロードデータブロックを含み、
前記ストリームファイルは、連続して配列される複数のストリームデータブロックを含み、
前記情報記憶手段はさらに、
前記ダウンロードデータブロックに対応したストリームデータブロックを特定するための特定情報を含み、
前記再生制御手段は、
前記各ダウンロードデータブロックのダウンロードに成功したか否かを判断する判断手段と、
判断の結果ダウンロードデータのダウンロードに成功したとき、前記ダウンロードデータブロックの再生を指示し、判断の結果ダウンロードデータのダウンロードに失敗したとき、ストリーム再生を指示する指示手段とを含み、
前記要求手段は前記ストリーム再生の指示に応答して前記特定情報に基づいて前記ダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックの配信を要求し、
前記配信手段は前記要求に応答して前記ストリームデータブロックを配信し、
前記再生手段は前記指示手段の指示に応答してダウンロードデータブロック及び/又は配信されたストリームデータブロックを再生することを特徴とするコンテンツ配信システム。
【請求項3】
請求項2に記載のコンテンツ配信システムであって、
前記判断手段は判断した結果を判断テーブルに登録し、
前記指示手段は前記判断テーブルに基づいてダウンロードデータブロックの再生又はストリーム再生を指示することを特徴とするコンテンツ配信システム。
【請求項4】
請求項2又は請求項3に記載のコンテンツ配信システムであって、
前記特定情報は、各ダウンロードデータブロックの再生開始時間を示す第1のタイムスタンプと、各ストリームデータブロックの再生開始時間を示す第2のタイムスタンプとを含み、
前記要求手段は、前記特定情報に基づいて、前記ダウンロードに失敗したダウンロードデータブロックの第1のタイムスタンプに最も近い第2のタイムスタンプを有するストリームデータブロックを要求することを特徴とするコンテンツ配信システム。
【請求項5】
コンテンツのストリームファイルを有するストリームサーバと他のピアとに接続可能なピアであって、
前記コンテンツのダウンロードファイルを記憶するためのローカル記憶手段と、
前記コンテンツの詳細と前記コンテンツのダウンロードファイルの所在と前記コンテンツのストリームファイルの所在とに関するコンテンツ情報を記憶するための情報記憶手段と、
前記コンテンツ情報に基づいて前記他のピアから所望のコンテンツのダウンロードファイルをダウンロードして前記ローカル記憶手段に保存するダウンロード手段と、
ダウンロードに成功したとき前記所望のコンテンツのダウンロードファイルの再生を指示し、ダウンロードに失敗したときストリーム再生を指示する再生制御手段と、
前記ストリーム再生の指示に応答して前記コンテンツ情報に基づいて前記所望のコンテンツのストリームファイルの配信を前記ストリームサーバに要求する要求手段と、
前記再生制御手段の指示に応答して前記ダウンロードファイル又は前記ストリームサーバから配信されたストリームファイルに基づいて前記所望のコンテンツを再生する再生手段を備えることを特徴とするピア。
【請求項6】
請求項5に記載のピアであって、
前記ダウンロードファイルは、連続して配列され、配列順に再生される複数のダウンロードデータブロックを含み、
前記ストリームファイルは、連続して配列される複数のストリームデータブロックを含み、
前記情報記憶手段はさらに、
前記ダウンロードデータブロックに対応したストリームデータブロックを特定するための特定情報を含み、
前記再生制御手段は、
前記各ダウンロードデータブロックのダウンロードに成功したか否かを判断する判断手段と、
判断の結果ダウンロードデータのダウンロードに成功したとき、前記ダウンロードデータブロックの再生を指示し、判断の結果ダウンロードデータのダウンロードに失敗したとき、ストリーム再生を指示する指示手段とを含み、
前記要求手段は前記ストリーム再生の指示に応答して前記特定情報に基づいて前記ダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックの配信を前記ストリームサーバに要求し、
前記再生手段は前記指示手段の指示に応答してダウンロードデータブロック及び/又は前記ストリームサーバから配信されたストリームデータブロックを再生することを特徴とするピア。
【請求項7】
コンテンツのストリームファイルを有するストリームサーバと他のピアとに接続可能なコンピュータに実行させるためのピアプログラムであって、
前記コンテンツの詳細と前記コンテンツのダウンロードファイルの所在と前記コンテンツのストリームファイルの所在とに関するコンテンツ情報を情報記憶手段に保存するステップと、
前記コンテンツ情報に基づいて前記他のピアから所望のコンテンツのダウンロードファイルをダウンロードしてローカル記憶手段に保存するステップと、
ダウンロードに成功したとき前記所望のコンテンツのダウンロードファイルの再生を指示し、ダウンロードに失敗したときストリーム再生を指示する再生制御ステップと、
前記ストリーム再生の指示に応答して前記コンテンツ情報に基づいて前記所望のコンテンツのストリームファイルの配信を前記ストリームサーバに要求する要求ステップと、
前記再生制御手段の指示に応答して前記ダウンロードファイル又は前記ストリームサーバから配信されたストリームファイルに基づいて前記所望のコンテンツを再生する再生ステップとをコンピュータに実行させるためのピアプログラム。
【請求項8】
請求項7に記載のピアプログラムであって、
前記ダウンロードファイルは、連続して配列され、配列順に再生される複数のダウンロードデータブロックを含み、
前記ストリームファイルは、連続して配列される複数のストリームデータブロックを含み、
前記ピアプログラムはさらに、
前記ダウンロードデータブロックに対応したストリームデータブロックを特定するための特定情報を前記情報記憶手段に保存するステップを含み、
前記再生制御ステップは、
前記各ダウンロードデータブロックのダウンロードに成功したか否かを判断するステップと、
判断の結果ダウンロードデータのダウンロードに成功したとき、前記ダウンロードデータブロックの再生を指示し、判断の結果ダウンロードデータのダウンロードに失敗したとき、ストリーム再生を指示するステップとを含み、
前記要求ステップは前記ストリーム再生の指示に応答して前記特定情報に基づいて前記ダウンロードに失敗したダウンロードデータブロックに対応したストリームデータブロックの配信を前記ストリームサーバに要求し、
前記再生ステップは前記指示手段の指示に応答してダウンロードデータブロック及び/又は前記ストリームサーバから配信されたストリームデータブロックを再生することを特徴とするピアプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2006−209356(P2006−209356A)
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願番号】特願2005−18799(P2005−18799)
【出願日】平成17年1月26日(2005.1.26)
【出願人】(000000273)オンキヨー株式会社 (502)
【Fターム(参考)】