【文献】
Xiaojun Hei et al.,Inferring Network−Wide Quality in P2P Live Streaming Systems,IEEE Journal on Selected Areas in Communications,2007年12月 4日,Vol.25, No.9,pp.1640−1654.
【文献】
Fabio Pianese et al.,PULSE, a Flexible P2P Live Streaming System,IEEE International Conference on Computer Communications(INFOCOM 2006),2006年 4月23日,pp.1−6.
【文献】
Jani Peltotalo et al.,Peer−to−Peer Streaming Technology Survey ,IEEE International Conference on Networking(ICN 2008),2008年 4月13日,pp.342−350.
【文献】
Xiaojun Hei et al.,A Measurement Study of a Large−Scale P2P IPTV System,IEEE Transactions on Multimedia,2007年12月19日,Vol.9, No.8,pp.1672−1687.
(58)【調査した分野】(Int.Cl.,DB名)
前記ライブスライディングウィンドウを通じて特定されてダウンロードされたピースは、前記ストリーミングスライディングウィンドウを通じて特定されてダウンロードされたピースが前記プレイヤにストリームデータをストリーミングするために利用されることとは関係なく、前記ライブストリームデータの最新データを共有するために前記電子機器が含むキャッシュ格納場所に格納されるか、またはネットワークを介して他の電子機器に送信される、請求項1に記載のコンピュータプログラム。
前記ライブストリームデータに対して要求された再生位置は、前記ストリーミングクライアントと前記プレイヤとの間で設定されたタイムマシン制御セッションを通じて前記プレイヤから前記ストリーミングクライアントに送信され、
前記のストリーミングされるストリームデータは、前記ストリーミングクライアントと前記プレイヤとの間で設定されたストリーミングセッションを通じて前記ストリーミングクライアントから前記プレイヤに送信される、請求項1に記載のコンピュータプログラム。
前記ストリーミングセッションを通じた前記ストリーミングクライアントと前記プレイヤとの間のデータ送信と、前記タイムマシン制御セッションを通じた前記ストリーミングクライアントと前記プレイヤとの間のデータ送信は、互いに異なる別のプロトコルによってそれぞれ行われる、請求項5に記載のコンピュータプログラム。
前記ライブスライディングウィンドウを通じて特定されてダウンロードされたピースは、前記ストリーミングスライディングウィンドウを通じて特定されてダウンロードされたピースが前記プレイヤにストリームデータをストリーミングするために利用されることとは関係なく、前記ライブストリームデータの最新データを共有するために前記電子機器が含むキャッシュ格納場所に格納されるか、またはネットワークを介して他の電子機器に送信される、請求項7に記載のスライディングウィンドウ管理方法。
前記ライブスライディングウィンドウを通じて特定されてダウンロードされたピースは、前記ストリーミングスライディングウィンドウを通じて特定されてダウンロードされたピースが前記プレイヤにストリームデータをストリーミングするために利用されることとは関係なく、前記ライブストリームデータの最新データを共有するために前記電子機器が含むキャッシュ格納場所に格納されるか、またはネットワークを介して他の電子機器に送信される、請求項11に記載のスライディングウィンドウ管理システム。
【発明を実施するための形態】
【0010】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0011】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。
図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような
図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が
図1のように限定されることはない。
【0012】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、コンピュータ、ノート型パンコン、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットPCなどがある。一例として、電子機器1(110)は、無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信してよい。
【0013】
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を活用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでもよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的(hierarchical)ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これに限定されることはない。
【0014】
サーバ150、160それぞれは、電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。
【0015】
一例として、サーバ160は、ネットワーク170を介して接続した電子機器1(110)にアプリケーションのインストールのためのファイルを提供してよい。この場合、電子機器1(110)は、サーバ160から提供されたファイルを利用してアプリケーションをインストールしてよい。また、電子機器1(110)が含むオペレーティングシステム(Operating System:OS)および少なくとも1つのプログラム(一例として、ブラウザやインストールされたアプリケーション)の制御にしたがってサーバ150に接続し、サーバ150が提供するサービスやコンテンツの提供を受けてよい。例えば、電子機器1(110)が、アプリケーションの制御にしたがってネットワーク170を介してサービス要求メッセージをサーバ150に送信すると、サーバ150は、サービス要求メッセージに対応するコードを電子機器1(110)に送信してよく、電子機器1(110)は、アプリケーションの制御にしたがってコードに基づく画面を構成して表示することにより、ユーザにコンテンツを提供してよい。他の例として、サーバ150は、メッセージングサービスのための通信セッションを設定し、設定された通信セッションを通じて複数の電子機器110、120、130、140間のメッセージ送受信をルーティングしてもよい。さらに他の例として、サーバ150は、電子機器110、120、130、140にソーシャルネットワークサービスを提供してもよい。さらに他の例として、サーバ150、160は、複数の電子機器110、120、130、140にライブストリーミングサービスを提供してもよい。
【0016】
図2は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。
図2では、1つの電子機器に対する例として電子機器1(110)の内部構成を、1つのサーバに対する例としてサーバ150の内部構成を説明する。他の電子機器120、130、140やサーバ160だけでなく、
図1を参照しながら説明したネットワーク環境に含まれ得るさらに他の電子機器やさらに他のサーバにも、同一または類似の内部構成要素が適用されてもよい。
【0017】
電子機器1(110)とサーバ150は、メモリ211、221、プロセッサ212、222、通信モジュール213、223、および入力/出力インタフェース214、224を含んでよい。メモリ211、221は、コンピュータで読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永久大容量記憶装置(permanent mass storage device)を含んでよい。また、メモリ211、221には、オペレーティングシステムと、少なくとも1つのプログラムコード(一例として、電気機器1(110)にインストールされ駆動するブラウザや上述したアプリケーションなどのためのコード)が格納されてよい。このようなソフトウェア構成要素は、ドライブメカニズム(drive mechanism)を利用してメモリ211、221とは別のコンピュータで読み取り可能な記録媒体からロードされてもよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD−ROMドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール213、223を利用してメモリ211、221にロードされてもよい。例えば、少なくとも1つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム(一例として、上述したサーバ160)がネットワーク170を介して提供するファイルによってインストールされるプログラム(一例として、上述したアプリケーション)に基づいてメモリ211、221にロードされてもよい。
【0018】
プロセッサ212、222は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ211、221または通信モジュール213、223によって、プロセッサ212、222に提供されてよい。プロセッサ212、222は、メモリ211、221のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0019】
通信モジュール213、223は、ネットワーク170を介して電子機器1(110)とサーバ150とが互いに通信するための機能を提供してもよいし、他の電子機器(一例として、電子機器2(120))または他のサーバ(一例として、サーバ160)と通信するための機能を提供してもよい。一例として、電子機器1(110)のプロセッサ212がメモリ211のような記録装置に格納されたプログラムコードにしたがって生成した要求(一例として、コンテンツに対するストリーミングサービス要求)が、通信モジュール213の制御にしたがってネットワーク170を介してサーバ150に伝達されてもよい。これとは逆に、サーバ150のプロセッサ222の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール223とネットワーク170を経て電子機器1(110)の通信モジュール213を通じて電子機器1(110)に受信されてもよい。例えば、通信モジュール213を通じて受信されたサーバ150の制御信号や命令などは、プロセッサ212やメモリ211に伝達されてもよく、コンテンツやファイルなどは、電子機器1(110)がさらに含むことのできる格納媒体に格納されてもよい。
【0020】
入力/出力インタフェース214、224は、入力/出力装置215とのインタフェースのための手段であってよい。例えば、入力装置は、キーボードまたはマウスなどの装置を、また出力装置は、アプリケーションの通信セッションを表示するためのディスプレイのような装置を含んでよい。他の例として、入力/出力インタフェース214は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。より具体的な例として、電子機器1(110)のプロセッサ212は、メモリ211にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ150や電子機器2(120)が提供するデータを利用して構成されるサービス画面215やコンテンツが、入力/出力インタフェース214を通じてディスプレイに表示されてもよい。
【0021】
また、他の実施形態において、電子機器1(110)およびサーバ150は、
図2の構成要素よりも多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、電子機器1(110)は、上述した入力/出力装置215のうち少なくとも一部を含むように実現されてもよいし、トランシーバ、GPS(Global Positioning System)モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。
【0022】
図3は、本発明の一実施形態における、ライブストリーミングサービスのための全体システム環境の例を示した図である。
図3は、メディアストリーミングサーバ310、パケット化サーバ320、デリバリサーバ330、インデックスサーバ340、電子機器350、および複数のピア360を示している。
【0023】
メディアストリーミングサーバ310、パケット化サーバ320、デリバリサーバ330、およびインデックスサーバ340それぞれは、
図1および
図2を参照しながら説明したサーバ150と同一または類似の内部構成要素を備える装置であってよい。また、複数のピア360それぞれと電子機器350は、
図1および
図2を参照しながら説明した電子機器1(110)と同一または類似の内部構成要素を備える装置であってよい。
図3では、メディアストリーミングサーバ310、パケット化サーバ320、デリバリサーバ330、およびインデックスサーバ340をそれぞれ1つずつ示しているが、それぞれ複数のサーバグループの形態で実現されてもよい。例えば、プロ野球の試合を生放送するにあたり4つの試合が行われる場合、4つの試合に対して4つのメディアソースのための4つのメディアストリーミングサーバのグループが存在してもよく、それぞれのメディアソースのために4つのパケット化サーバのグループが存在してもよい。これと同様に、デリバリサーバ330およびインデックスサーバ340も、必要に応じて複数のサーバグループで実現されてもよい。例えば、デリバリサーバ330およびインデックスサーバ340は、同時接続者数のような性能イシューによって求められるサーバの数が決められてもよい。
【0024】
メディアストリーミングサーバ310は、ライブストリームデータを提供するエンコーダ(図示せず)を含むメディアソース装置であってよい。パケット化サーバ320は、このようなメディアストリーミングサーバ310からライブストリームデータを受信してよく、受信したライブストリームデータをP2Pサービスで提供するために、受信したライブストリームデータをピースにパケット化(またはインデクシング)してよい。ストリームデータをピースにパケット化(またはインデクシング)する方法は、周知の多様な方法のうちの1つを利用してよい。
【0025】
デリバリサーバ330は、パケット化サーバ320からパケット化された(またはインデクシングされた)ピースを受信し、これをバッファリングしてよく、P2Pサービスのピア(peer)からの要求に応じ、要求されたライブストリームデータに対するピースを該当のピアに送信してよい。ここで、ピアとは、P2Pサービスを利用するライブストリーミングサービスのクライアントを意味してよく、それぞれ1つの電子機器で実現されてよい。ピアを実現する電子機器は、
図3に示す電子機器350を含み、上述したように
図1および
図2を参照しながら説明した電子機器1(110)と同一または類似の内部構成要素を備える装置であってよい。
【0026】
インデックスサーバ340は、ピアのリストを保持し、ピアの要求に応じた検索結果を提供してよい。
【0027】
ピアを実現する電子機器350では、ストリーミングクライアント351のようなアプリケーションがインストールおよび駆動されてよい。ここで、電子機器350は、駆動するストリーミングクライアント351の制御にしたがい、デリバリサーバ330からピースを受信してもよいし、他のピア(
図3の複数のピア360)を実現する他の電子機器からピースを受信してもよい。
【0028】
また、電子機器350で駆動するストリーミングクライアント351は、電子機器350でインストールおよび駆動される他のアプリケーションであるプレイヤ352と電子機器350で内部的に通信し、プレイヤ352にライブストリームデータを送信してよい。ここで、ストリーミングクライアント351がプレイヤ352に提供するライブストリームデータは、デリバリサーバ330または複数のピア360の少なくとも一部から受信したピースに基づいて組み合わされたデータであってよい。
【0029】
この場合、プレイヤ352は、ストリーミングクライアント351が提供するライブストリームデータを再生してよく、これにより、メディアストリーミングサーバ310が提供するライブストリームデータが電子機器350で再生され、電子機器350のユーザに提供されてよい。
【0030】
ピアを実現する電子機器(一例として、
図3の電子機器350)でインストールおよび駆動されるストリーミングクライアント(一例として、
図3のストリーミングクライアント351)は、電子機器のユーザにライブストリームデータに対するタイムマシン機能を提供してよい。上述したように、従来技術では、各ストリーミングプロトコル別にタイムマシン機能のための制御セッションを実現しなければならなかったのに対し、本発明の実施形態では、タイムマシン制御プロトコルがタイムマシン機能を制御する役割だけを担い、ストリーミングクライアントとプレイヤとの間のストリーミングプロトコル(例えば、PC(Personal Computer)のフラッシュプレイヤは、ストリーミングプロトコルとしてRTMP(RealTime Messaging Protocol)を使用し、iOS(登録商標)やアンドロイド(登録商標)のプレイヤは、ストリーミングプロトコルとしてHLS(HTTP Live Streaming)プロトコルを使用する)は、プレイヤがサポートするストリーミング規格をそのまま利用できるように実現することができる。このような実施形態により、OSやプレイヤに関係なく、同じ規格を利用してタイムマシン機能を制御することができるため、ストリーミングクライアントのプレイヤに対する依存性を除去することができる。プレイヤでタイムマシン制御プロトコルがサポートされない場合、ユーザは、プレイヤを利用しながら、既存のプレイヤが使用しているストリーミングプロトコルを利用してライブ映像だけを視聴することができる。
【0031】
図4は、本発明の一実施形態における、ストリーミングのためのデータ要求優先順位を示した図である。
図4では、
図3を参照しながら説明したデリバリサーバ330、ストリーミングクライアント351、プレイヤ352、複数のピア360を示しており、ピアがストリーミングクライアント351とプレイヤ352とを共にさらに含むことができるキャッシュ410をさらに含んでいる。
【0032】
ライブストリームデータは、生放送の特性上、複数のピア360からP2P方式で提供されるデータやデリバリサーバ330から提供されるデータをストリーミングクライアント351が受信してプレイヤ352に伝達し、プレイヤ352で再生して処理するだけで、データを格納する必要性が低い。しかし、生放送に対するタイムマシン機能を提供することによって過去データをまた再生しなければならない必要性が存在するため、ストリーミングクライアント351は、ピアがメモリの他に、キャッシュ410のような別の格納場所に一定量の過去データを格納するようにピアを制御してよい。
【0033】
したがって、タイムマシン機能を提供する場合、ストリーミングクライアント351は、最初にキャッシュ410のような格納場所からストリーミングのためのデータの提供を受けてよい。キャッシュ410に存在しないデータは、複数のピア360からP2P方式によって提供されてよく、複数のピア360から提供を受けることのできないデータは、デリバリサーバ330から提供を受けてよい。
【0034】
図5は、本発明の一実施形態における、スライディングウィンドウを説明するための図である。ライブストリームデータに対するタイムマシン機能の提供のために、ライブストリームデータのピースは、
図5に示された仮想スライディングピースアレイ510のように管理されてよい。仮想スライディングピースアレイ510とは、実際のピースのアレイを意味するのではなく、実質的には時間の順序にしたがって特定時間のピースを特定することができるように管理されるデータであってよい。例えば、電子機器1(110)は、ストリーミングクライアント351の制御に応じて、受信したピースを、時間の順序にしたがって仮想スライディングピースアレイ510のように管理してよい。例えば、仮想スライディングピースアレイ510において、「Live」側のピースであるほど最新データであってよく、「Live−タイムマシン可能時間」側のピースであるほど過去データであってよい。ここで、タイムマシン可能時間は、最新のデータ(ピース)を基準としてどのくらい過去のデータを再生できるかを示す指標であって、ミリ秒(msec)のような時間の単位で示されてよい。「Live」に該当する時間を「0」とし、タイムマシン可能時間を5分(300000ミリ秒)とするとき、「Live−タイムマシン可能時間」は、最新データを基準として5分前のデータまで戻って見ることができるということを示す。
【0035】
また、ストリーミングクライアント351は、キャッシュマネージャ520を含んでよく、キャッシュマネージャ520を利用してメモリ211やローカルディスク530に格納された実際のピースを管理してよい。一例として、メモリ211に格納されたピースは、複数のピア360やデリバリサーバ330から受信したピースであってよく、ローカルディスク530に格納されたピースは、ライブストリーミングのためにプレイヤ352へのストリーミングが完了した過去データとしてのピースであってよい。言い換えれば、ストリーミングクライアント351は、メモリ211に格納されたピースを利用して生放送映像をプレイヤ352にストリーミングした後、使用済みのピースをタイムマシン機能の使用のためにローカルディスク530に格納してよい。この場合、ローカルディスク530は、
図4のキャッシュ410に対応してよい。
【0036】
ここで、ストリーミングスライディングウィンドウ540は、プレイヤ352に送信されなければならないピースを特定するために利用されてよい。例えば、ストリーミングクライアント351は、現在ストリーミングスライディングウィンドウ540を利用して仮想スライディングピースアレイ510により特定される複数のピースをキャッシュ410、複数のピア360、またはデリバリサーバ330を通じてダウンロードしてプレイヤ352に送信し、キャッシュ410に格納してよい。このとき、ピースは、ストリーミングクライアント351とプレイヤ352との間で利用されるストリーミングプロトコルにしたがってストリーミング方式でプレイヤ352に送信されてよい。
【0037】
図6は、本発明の一実施形態における、探索のためのスライディングウィンドウの移動を説明するための図である。
図6は、ストリーミングスライディングウィンドウ540が移動した例を示している。例えば、プレイヤ352からのタイムマシン機能に対する要求に応じ、ストリーミングクライアント351は、過去データをプレイヤ352に送信してよい。このとき、プレイヤ352は、過去に移動する値(一例として、ミリ秒単位の値)を、要求と共にストリーミングクライアント351に伝達してよい。
【0038】
一例として、プレイヤ352からの要求と共に伝達された値が3分(180000ミリ秒)であると仮定する。この場合、ストリーミングクライアント351は、ストリーミングスライディングウィンドウ540により現在特定される位置から3分だけ過去の位置にストリーミングスライディングウィンドウ540を移動させてよい。
図6は、ストリーミングスライディングウィンドウ540が探索アドレス(seek offset)に移動した例を示している。例えば、ストリーミングクライアント351は、要求された3分(180000ミリ秒)を利用して対応するピースインデックス(piece index)を計算してよく、計算されたピースインデックスの位置にストリーミングスライディングウィンドウ540を移動させてよい。
【0039】
このとき、ストリーミングクライアント351は、移動したストリーミングスライディングウィンドウ540により特定されるピースを、仮想スライディングピースアレイ510で特定し、特定したピースをキャッシュ410、複数のピア360、またはデリバリサーバ330を通じてダウンロードしてプレイヤ352に送信してよい。
【0040】
図7は、本発明の一実施形態における、デュアルスライディングウィンドウを説明するための図である。
図7は、ストリーミングスライディングウィンドウ540の他に、ライブスライディングウィンドウ(live sliding window)710をさらに示している。ライブスライディングウィンドウ710は、移動せずに最新ライブ映像をストリーミングするための領域720に固定されて位置し、ライブ映像のためのピースのダウンロードと共有を担ってよい。
【0041】
P2Pサービスでは、同じピースをより多くのピアが保有しているほど、該当のピースに対する共有率が高くなる。共有率が高いということは、該当のピースを持たないピアが、P2Pサービスにおいて他のピアを通じて該当のピースをより容易に得ることができるということを意味する。したがって、タイムマシン機能を使用するユーザが多くなるほど、最新データを保有しているピアの数が減るため、複数のピア360間のライブ映像に対するピースの共有率は低下するようになる。
【0042】
本実施形態では、ユーザがタイムマシン機能を利用した場合でも全体共有率に及ぼす影響を最小化するために、ライブスライディングウィンドウ710を利用することができる。上述したように、ライブスライディングウィンドウ710は、最新ライブ映像をストリーミングするための領域720に固定されて位置し、ライブ映像のためのピースのダウンロードと共有を担ってよい。このようなライブスライディングウィンドウ710は、プレイヤ352にデータをストリーミングすることとは関係なく、最新データを共有するためだけに動作してよい。ここで、ライブスライディングウィンドウ710を通じてダウンロードされるピースは、ピースを共有するためにダウンロードされるものに過ぎず、プレイヤ352へのストリーミングとは関係ないため、積極的にピースをダウンロードする必要性は低い。したがって、ストリーミングクライアント352は、ライブスライディングウィンドウ710を通じて特定されるピースだけを他のピア(複数のピア360)からダウンロードして格納および共有してよい。
【0043】
また、ユーザがタイムマシン機能を利用している途中に再びライブ映像を見ようとする場合、ストリーミングスライディングウィンドウは、ライブ映像をストリーミングするための領域720側に移動するようになる。このとき、ライブスライディングウィンドウ710を利用して最新データが予めダウンロードされているため、ストリーミングクライアント352は、最新ライブ映像のためのピースをより迅速にプレイヤ352に提供することができるようになる。
【0044】
図8は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示した図であり、
図9は、本発明の一実施形態における、電子機器が実行することのできるスライディングウィンドウ管理方法の例を示したフローチャートである。
【0045】
図8に示すように、電子機器1(110)のプロセッサ212は、構成要素として、仮想スライディングピースアレイ生成部810、ストリーミングスライディングウィンドウ生成部820、ピースダウンロード制御部830、ストリーミング処理部840、およびライブスライディングウィンドウ生成部850を備えてよい。このようなプロセッサ212およびプロセッサ212の構成要素は、
図9のスライディングウィンドウ管理方法に含まれる段階910〜960を実行するように電子機器1(110)を制御してよい。ここで、プロセッサ212およびプロセッサ212の構成要素は、メモリ211に含まれるオペレーティングシステムのコードと少なくとも1つのプログラムのコードとによる命令を実行するように実現されてよい。ここで、プロセッサ212の構成要素は、プロセッサ212によって実行される互いに異なる機能(different functions)の表現であってよい。例えば、プロセッサ212が上述した命令にしたがってピースをダウンロードするように電子機器1(110)を制御する動作の機能的表現としてピースダウンロード制御部830が使用されてよい。
【0046】
段階910で、プロセッサ212は、スライディングウィンドウ管理方法のためのプログラムのファイルに格納されたプログラムコードをメモリ211にロードしてよい。例えば、電子機器1(110)にインストールされたプログラムが駆動される場合、プロセッサ212は、プログラムのファイルからプログラムコードをメモリ211にロードするように電子機器1(110)を制御してよい。例えば、上述したプログラムは、ストリーミングクライアント352のためのアプリケーションであってよい。
【0047】
ここで、プロセッサ212およびプロセッサ212が備える仮想スライディングピースアレイ生成部810、ストリーミングスライディングウィンドウ生成部820、ピースダウンロード制御部830、ストリーミング処理部840、およびライブスライディングウィンドウ生成部850それぞれは、メモリ211にロードされたプログラムコードのうち対応する部分(対応する命令)を実行して以後の段階920〜段階960を実行してよい。段階920〜段階960の実行のために、プロセッサ212およびプロセッサ212の構成要素は、電子機器1(110)を制御してよい。例えば、プロセッサ212は、電子機器1(110)が含む通信モジュール213を制御して電子機器1(110)が他の電子機器やサーバ(一例として、サーバ150)と通信するように電子機器1(110)を制御してよい。
【0048】
段階920で、仮想スライディングピースアレイ生成部810は、ライブストリームデータの最新時点からタイムマシン機能の提供のために予め設定されたタイムマシン可能時間以前の過去時点までのピースを特定するための情報を含む仮想スライディングピースアレイを生成してよい。仮想スライディングピースアレイは、
図5〜
図7を参照しながら説明したように、時点別ピースを特定するためのデータであって、時間や時点によって区分される再生位置とピースを互いにマッチングして格納するデータ構造で実現されてよい。他の例として、仮想スライディングピースアレイは、時間とピースをマッチングして格納するデータ構造であって、特定の再生位置に対応する時間を計算して該当の時間によるピースを特定することができるデータ構造で実現されてもよい。
【0049】
段階930で、ストリーミングスライディングウィンドウ生成部820は、仮想スライディングピースアレイにより特定されるピースのうち予め設定された数の連続するピースを特定するためのストリーミングスライディングウィンドウを生成してよい。例えば、ストリーミングスライディングウィンドウの1番目のインデックスが、仮想スライディングピースアレイの対応するピースを特定してよい。また、ストリーミングスライディングウィンドウの連続するインデックスが、仮想スライディングピースアレイの対応する連続するピースを特定してよい。
【0050】
段階940で、ピースダウンロード制御部830は、ライブストリームデータに対して要求された再生位置のピースインデックスにストリーミングスライディングウィンドウを移動させ、ストリーミングスライディングウィンドウを通じて仮想スライディングピースアレイにより特定されるピースをダウンロードするように電子機器1(110)を制御してよい。ここで、ピースダウンロード制御部830は、電子機器1(110)が含むキャッシュ格納場所、P2P方式によって接続する他の電子機器(一例として、電子機器2(120))、およびライブストリームデータのピースを提供するデリバリサーバ330のうち少なくとも1つから特定されるピースをダウンロードしてよい。上述したように、キャッシュ格納場所、他の電子機器、およびデリバリサーバ330の順序による優先順位でピースのダウンロードが試されてよい。
【0051】
段階950で、ストリーミング処理部840は、ライブストリーミングサービスを提供するために電子機器1(110)にインストールされたストリーミングクライアントで、ダウンロードされたピースを利用して電子機器1(110)にインストールされたプレイヤにストリームデータをストリーミングしてよい。
【0052】
段階960で、ライブスライディングウィンドウ生成部850は、仮想スライディングピースアレイにより特定されるピースのうち最新の予め設定された数の連続するピースを特定するためのライブスライディングウィンドウを生成してよい。ここで、段階960は、他の実施形態では、段階920以後のどこで実行されてもよい。一例として、段階960は、段階930で生成されるストリーミングスライディングウィンドウと共に、ライブスライディングウィンドウを生成するために段階930と共に実行されてもよい。
【0053】
ここで、スライディングウィンドウ管理方法は、ライブスライディングウィンドウを通じて仮想スライディングピースアレイにより特定されるピースをダウンロードする段階(図示せず)をさらに含んでもよい。上述したピースダウンロード制御部830が、このように図示されていない段階を実行してもよい。
【0054】
上述したように、ライブスライディングウィンドウを通じて特定されてダウンロードされたピースは、ストリーミングスライディングウィンドウを通じて特定されてダウンロードされたピースがプレイヤでストリームデータをストリーミングするために利用されることとは関係なく、ライブストリームデータの最新データを共有するために電子機器1(110)が含むキャッシュ格納場所に格納されてもよいし、ネットワークを介して他の電子機器(一例として、複数のピア360のうち少なくとも1つのピア)に送信されてもよい。
【0055】
ここで、段階940で、ピースダウンロード制御部830は、ストリーミングスライディングウィンドウと前記ライブスライディングウィンドウとが互いに重複する場合(ライブストリームデータの最新データを再生しようとする場合)、ライブスライディングウィンドウを通じて特定されて電子機器1(110)のキャッシュ格納場所に格納されたピースを再活用してもよい。上述したように、過去のデータをストリーミングしている途中に最新データをストリーミングしようとする場合、ライブスライディングウィンドウを通じて予めダウンロードされたピースを再活用して使用することが可能であるため、最新ライブ映像をより迅速にプレイヤに提供することができるようになる。
【0056】
ライブストリームデータに対して要求された再生位置は、ストリーミングクライアントとプレイヤとの間で設定されたタイムマシン制御セッションを通じてプレイヤからストリーミングクライアントに送信されてもよい。また、ストリーミングされるストリームデータは、ストリーミングクライアントとプレイヤとの間で設定されたストリーミングセッションを通じてストリーミングクライアントからプレイヤに送信されてもよい。この場合、ストリーミングセッションを通じたストリーミングクライアントとプレイヤとの間のデータ送信と、タイムマシン制御セッションを通じたストリーミングクライアントとプレイヤとの間のデータ送信は、互いに異なる別のプロトコル(一例として、上述したタイムマシン制御プロトコルとストリーミングプロトコル)によってそれぞれ行われてもよい。
【0057】
図8および
図9で省略した内容については、
図1〜7を参照してよい。
【0058】
このように、本発明の実施形態によると、ストリーミングスライディングウィンドウを利用することにより、タイムマシン機能によって特定される再生位置のピースをダウンロードできるように管理することができ、ストリーミングスライディングウィンドウとは別に最新ライブ映像のためのピースをダウンロードするライブスライディングウィンドウをさらに管理することができる。さらに、ストリーミングスライディングウィンドウとライブスライディングウィンドウのデュアルスライディングウィンドウを利用することにより、タイムマシン機能によって特定される再生位置のピースをダウンロードしながら同時に最新データのためのピースを共にダウンロードすることにより、タイムマシン機能の使用が最新ライブ映像のためのピースの共有率に及ぼす影響を最小化することができる。
【0059】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素(processing element)および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでもよい。また、並列プロセッサ(parallel processor)のような、他の処理構成(processing configuration)も可能である。
【0060】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に(collectively)処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置(virtual equipment)、コンピュータ格納媒体または装置に永久的または一時的に具現化(embody)されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
【0061】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてもよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでもよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD−ROM、DVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために1つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同じである。
【0062】
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能である。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0063】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。