(57)【要約】  コンピュータ実装方法、装置、システム、製造物、およびコンピュータ可読記憶媒体が、メディアコンテンツを複数のユーザにストリーミングする能力を提供する。メディアコンテンツの／に対する第１のストリームが、メディアコンテンツ内の第１の位置から第１のユーザにストリーミングされる。メディアコンテンツ内のシーク位置までシークする（例えば、前方または後方に）要求が第１のユーザから受信される。シーク位置と適合するメディアコンテンツ内の第２の位置が決定される。第２の位置は、１人または複数の第２のユーザにストリーミングされている第２のストリームに基づく。次いで、第２のストリームは、第１のユーザおよび第２のユーザにストリーミングされる。【選択図】図２
2013542633.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザにメディアコンテンツをストリーミングするためのコンピュータ実装方法であって、
前記メディアコンテンツに対する第１のストリームを前記メディアコンテンツ内の第１の位置から第１のユーザにストリーミングすることと、
前記メディアコンテンツ内のシーク位置までシークする要求を前記第１のユーザから受信することと、
１人または複数の第２のユーザにストリーミングされている第２のストリームに基づく、前記シーク位置と適合する前記メディアコンテンツ内の第２の位置を決定することと、
前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザにストリーミングすることと、
を備えるコンピュータ実装方法。
【請求項２】
前記要求は、前記第１のメディアコンテンツに対する進行タイムラインバー上のスライダを移動させることにより、前記第１のユーザから受信される、
請求項１に記載のコンピュータ実装方法。
【請求項３】
前記第２の位置は、前記メディアコンテンツのショットまたはシーンに基づく、
請求項１に記載のコンピュータ実装方法。
【請求項４】
前記第２の位置は、他の複数のユーザにストリーミングされている複数のメディア・コンテンツ・ストリームを解析することにより決定される、
請求項１に記載のコンピュータ実装方法。
【請求項５】
前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザに前記ストリーミングすることは、前記第１のユーザと前記１人または複数の第２のユーザの間の前記メディアコンテンツの視聴を同期させる、
請求項１に記載のコンピュータ実装方法。
【請求項６】
前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザに前記ストリーミングすることは、前記第２のストリームをマルチキャストすることを備える、
請求項１に記載のコンピュータ実装方法。
【請求項７】
前記第２のストリームを前記ストリーミングすることは、ピア・ツー・ピア（Ｐ２Ｐ）・ネットワーク内で行われる、
請求項１に記載のコンピュータ実装方法。
【請求項８】
前記第２の位置に基づき前記第１のユーザに広告をストリーミングすること
をさらに備える、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記広告は、前記第１のユーザの複数の属性に基づき、前記第１のユーザに特に向けられた、有向広告を備える、
請求項８に記載のコンピュータ実装方法。
【請求項１０】
前記シーク位置と、前記１人または複数の第２のユーザが受信している前記第２のストリーム内の前記第２の位置との間の時間差に基づき前記広告を選択すること
をさらに備える、請求項８に記載のコンピュータ実装方法。
【請求項１１】
コンピュータシステムにおいてメディアコンテンツを複数のユーザにストリーミングするための装置であって、
（ａ）メモリを有するコンピュータと、
（ｂ）前記コンピュータ上で実行するアプリケーションであって、
（ｉ）前記メディアコンテンツに対する第１のストリームを前記メディアコンテンツ内の第１の位置から第１のユーザにストリーミングし、
（ｉｉ）前記メディアコンテンツ内のシーク位置までシークする要求を前記第１のユーザから受信し、
（ｉｉｉ）１人または複数の第２のユーザにストリーミングされている第２のストリームに基づく、前記シーク位置と適合する前記メディアコンテンツ内の第２の位置を決定し、
（ｉｖ）前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザにストリーミングする
ように構成されたアプリケーションと、
を備える装置。
【請求項１２】
前記要求は、前記第１のメディアコンテンツに対する進行タイムラインバー上のスライダを移動させることにより、前記第１のユーザから受信される、
請求項１１に記載の装置。
【請求項１３】
前記第２の位置は、前記メディアコンテンツのショットまたはシーンに基づく、
請求項１１に記載の装置。
【請求項１４】
前記第２の位置は、他の複数のユーザにストリーミングされている複数のメディア・コンテンツ・ストリームを解析することにより決定される、
請求項１１に記載の装置。
【請求項１５】
前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザに前記ストリーミングすることは、前記第１のユーザと前記１人または複数の第２のユーザの間の前記メディアコンテンツの視聴を同期させる、
請求項１１に記載の装置。
【請求項１６】
前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザに前記ストリーミングすることは、前記第２のストリームをマルチキャストすることを備える、
請求項１１に記載の装置。
【請求項１７】
前記第２のストリームを前記ストリーミングすることは、ピア・ツー・ピア（Ｐ２Ｐ）・ネットワーク内で行われる、
請求項１１に記載の装置。
【請求項１８】
前記アプリケーションは、
前記第２の位置に基づき前記第１のユーザに広告をストリーミングする
ようにさらに構成された、請求項１１に記載の装置。
【請求項１９】
前記広告は、前記第１のユーザの複数の属性に基づき、前記第１のユーザに特に向けられた、有向広告を備える、
請求項１８に記載の装置。
【請求項２０】
前記アプリケーションは、
前記シーク位置と、前記１人または複数の第２のユーザが受信している前記第２のストリーム内の前記第２の位置との間の時間差に基づき前記広告を選択する
ようにさらに構成された、請求項１８に記載の装置。
【請求項２１】
コンピュータによりアクセスされたとき、前記コンピュータに複数のプログラム命令をメモリにロードさせ、この中で専用データ構造を生成し、前記コンピュータに特別にプログラムされたコンピュータとして動作させ、複数のユーザにメディアコンテンツをストリーミングする方法を実行する前記複数のコンピュータプログラム命令をエンコードされたコンピュータ可読記憶媒体であって、
前記特別にプログラムされたコンピュータ内で、前記メディアコンテンツに対する第１のストリームを前記メディアコンテンツ内の第１の位置から第１のユーザにストリーミングすることと、
前記特別にプログラムされたコンピュータ内で、前記メディアコンテンツ内のシーク位置までシークする要求を前記第１のユーザから受信することと、
前記特別にプログラムされたコンピュータ内で、１人または複数の第２のユーザにストリーミングされている第２のストリームに基づく、前記シーク位置と適合する前記メディアコンテンツ内の第２の位置を決定することと、
前記特別にプログラムされたコンピュータ内で、前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザにストリーミングすることと、
を備えるコンピュータ可読記憶媒体。
【請求項２２】
前記要求は、前記第１のメディアコンテンツに対する進行タイムラインバー上のスライダを移動させることにより、前記第１のユーザから受信される、
請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２３】
前記第２の位置は、前記メディアコンテンツのショットまたはシーンに基づく、
請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２４】
前記第２の位置は、他の複数のユーザにストリーミングされている複数のメディア・コンテンツ・ストリームを解析することにより決定される、
請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２５】
前記第２のストリームを前記第１のユーザおよび前記第２のユーザに前記ストリーミングすることは、前記第１のユーザと前記１人または複数の第２のユーザの間の前記メディアコンテンツの視聴を同期させる、
請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記第２のストリームを前記第１のユーザおよび前記１人または複数の第２のユーザに前記ストリーミングすることは、前記第２のストリームをマルチキャストすることを備える、
請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記第２のストリームを前記ストリーミングすることは、ピア・ツー・ピア（Ｐ２Ｐ）・ネットワーク内で行われる、
請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記特別にプログラムされたコンピュータ内で、前記第２の位置に基づき前記第１のユーザに広告をストリーミングすること
をさらに備える、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２９】
前記広告は、前記第１のユーザの複数の属性に基づき、前記第１のユーザに特に向けられた、有向広告を備える、
請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３０】
前記特別にプログラムされたコンピュータ内で、前記シーク位置と、前記１人または複数の第２のユーザが受信している前記第２のストリーム内の前記第２の位置との間の時間差に基づき前記広告を選択すること
をさらに備える、請求項２８に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーミングされる複数のメディアプログラムを提供するための複数のシステムおよび複数の方法に関し、詳細には複数のユーザに複数のメディアプログラムを同時にストリーミングしている間に、シーク機能の使用を可能にしながら、帯域幅割当を改善するための方法および装置に関する。
【背景技術】
【０００２】
複数のメディアプログラムが、しばしばネットワーク（例えばインターネット）を介して複数のユーザに分配される（例えばストリーミングまたはダウンロードによる）。しばしば、複数の異なるユーザが、同一のメディアコンテンツを視聴していることがある。このような視聴は、メディアコンテンツの中の異なる時間／位置である場合が多い。例えば、一方の視聴者が、ストリーミングされたメディア・コンテンツ・プログラムを１４分のマークの所で視聴していることがあるが、一方では、他の視聴者が同一のストリーミングされたメディア・コンテンツ・プログラムを３５分のマークの所で見ていることがある。同一メディアプログラムを異なる複数の時間ではあるが複数の視聴者にストリーミングすることで、かなりの帯域幅を消費する。このようなストリーミングを可能にするだけでなく、ネットワーク帯域幅を最小にしながらコンテンツのストリーミングを可能にすることが望ましい。このような複数の問題が、従来技術のストリーミング技術の説明ではさらによく理解されることがある。
【０００３】
複数のメディアプログラムの配布および再生は、この１０年の間にかなり変化した。これまでは、複数のメディアプログラムは（オーディオ、ビデオまたは両方を含むことがある）、アナログ放送（従来の衛星またはケーブル）により、または複数のフィルムを複数の映画館に配布することにより配布された。
【０００４】
これらの従来の配布および再生の手段は、デジタル技術の出現後、依然として採用されたままである。しかしながら、複数のデジタル技術は、複数のメディアプログラムの配布および再生に顕著な影響を与えた。
【０００５】
第一に、デジタル技術は、複数のデジタル・ビデオ・レコーダ（ＤＶＲ）の使用を可能にした。複数のＤＶＲは、標準的な複数のアナログビデオ・カセット・レコーダ（ＶＣＲ）と機能が類似しているが、ライブポーズ（live pause）、他の番組を再生しながら１つの番組を記録する能力、およびＤＶＲ機能に電子プログラムガイドを組み込むことを含むいくつかの追加の有用な機能を提供する（この結果、複数のメディアプログラムの記録を、はるか前に予定することができた）。
【０００６】
第二に、デジタル技術はまた、インターネットを介した複数のメディアプログラムの配布および再生を可能にし、信号処理が改善され、高速インターネットアクセス（例えばＤＳＬ、ファイバおよび／または衛星）をますます多くの家庭が有している。これらの方法による配布および再生は従来の手段と比べて見劣りしなくなった。インターネットを介した複数のメディアプログラムの配布は、単純なダウンロード、プログレッシブダウンロードまたはストリーミングにより行われてもよい。
【０００７】
１人または複数のユーザにコンテンツをストリーミングするために使用してもよい異なるアドレス指定方式が複数ある。このような複数の方法は、ユニキャストアドレス指定、ブロードキャストアドレス指定またはマルチキャストアドレス指定、およびエニーキャストアドレス指定を含む。
【０００８】
エニーキャストアドレス指定では、単一の送信者からのコンテンツが、同一宛先アドレスによりすべて識別される複数の潜在的受信者のグループ内のトポロジ的に最も近いノードにルーティングされる。換言すれば、コンテンツは、同一宛先アドレスによりすべて識別される複数の潜在的受信者のグループの単一のメンバーにルーティングされる。エニーキャストは１対多の中の１の関連づけである。
【０００９】
ユニキャストアドレス指定は、宛先アドレスとネットワークエンドポイントの間の１対１の関連づけを使用する。各宛先アドレスが、単一の受信者エンドポイントを一意に識別する。したがって、ユニキャストアドレス指定の環境では、あらゆるユーザが、サーバから直接、自分自身のコンテンツストリームを受信する。
【００１０】
ブロードキャストアドレス指定およびマルチキャストアドレス指定、すなわち１対多の関連づけでは、コンテンツは、単一の送信で単一の送信者から複数のエンドポイントに同時にルーティングされる。ネットワークは、資格のある受信者を含むすべての複数のネットワークセグメントのために、必要に応じてコンテンツを自動的に複製する。マルチキャストアドレス指定を使って、コンテンツは、複数の宛先への複数のリンクが分離するときだけ複数のコピーを作成して、１回だけネットワークの各リンク上にコンテンツを配送する方策を使用して、複数のユーザのグループに同時に配送される。さらに、マルチキャストの環境では、マルチキャストは、複数のルータが、リアルタイムで、ツリーにまたがるマルチキャスト宛先アドレスへ送信されるコンテンツに対して最適な分配経路を生成するＩＰルーティングレベルで行われる。
【００１１】
上記に鑑みて、多くの従来のシステムが、マルチキャストアドレス指定システムを利用して、複数のメディア・コンテンツ・プログラムを１人または複数のユーザに配送する。このようなシステムを使用することにより、複数のユーザに分配されたとき、より少ない帯域幅が消費される。しかしながら、上述のように、複数のユーザが、異なる複数の時間に同一メディアプログラムを視聴していることがある。このような視聴は、ユーザからの最初の要求に基づき行われることがある、または視聴アプリケーションのシーク機能を使用して引き起こされることがある。例えば、何かがユーザにストリーミングされているとき、視聴者は、スクロールバー／プログレスバー／タイムラインバーを使用して、視聴されているメディアコンテンツ内の異なる位置にシーク（seek）してもよい（例えば、前方または後方に）。
【００１２】
従来技術では、視聴者が新しい位置までストリーミングしたとき、メディア・コンテンツ・プログラムの新たな送信がユーザに配送される。したがって、ユーザが新しい位置までシークすることだけで、帯域幅が消費される。システムが、メディア・コンテンツ・プログラムを所望のプログラム内部の任意の時間で視聴することができ、それにより、依然としてマルチキャストアドレス指定を利用しながら、シーク動作が可能になることが望ましい。
【００１３】
さらに、従来技術の複数のシステムが、ピア・ツー・ピア（Ｐ２Ｐ）・ソフトウェアを使用して、メディア・コンテンツ・プログラムを配送することがある。Ｐ２Ｐシステムでは、各ユーザが、ビデオストリームをダウンロードしながら、同時に、このストリームを他の複数のユーザに同じくアップロードしており、したがって、利用可能な帯域幅全体に寄与する。到着する複数のストリームは、典型的には元の複数のソースと比較して（例えば数分だけ）時間遅れがある。しかしながら、この場合も、このような複数の技術を使用して、帯域幅が消費され、消費される帯域幅を最小にしながら、複数のシーク動作を行う効率的な機構がない。
【００１４】
さらに、多くの従来技術の複数のシステムが、メディアコンテンツと共に、カスタマイズされた／管理された複数の広告（ｄｉｒｅｃｔｅｄ  ａｄｖｅｒｔｉｓｅｍｅｎｔｓ）を利用して、複数のユーザにストリーミングする。しかしながら、カスタマイズされたまたは管理された複数の広告を特定の複数のユーザにストリーミングする能力は、マルチキャストまたはＰ２Ｐの環境にある間、問題となる可能性がある。
【００１５】
ダウンロードおよびストリーミングに伴う上述の複数の問題は、従来技術のプログレッシブダウンロードおよびストリーミングの複数の技術の説明でよりよく理解されることがある。  
プログレッシブダウンロード（Progressive Downloading）
プログレッシブダウンロードでは、メディアプログラムを有するメディアファイルが、ダイヤルアップ、ＤＳＬ、ＡＤＳＬ、ケーブル、Ｔ１、または他の高速接続を使用してインターネットを介してダウンロードされる。このようなダウンロードは、典型的にはインターネットを介してウェブサーバにより行われる。
【００１６】
単純なダウンロードは、メディアファイルの複数のバイトを任意の好都合な順序でダウンロードするが、プログレッシブダウンロードは、ファイルの最初から複数のバイトをダウンロードし、最終バイトまで順次に、連続してファイルをダウンロードし続ける。プログレッシブダウンロード中の任意の特定の時間に、ファイルの複数の部分が再生のために即座に利用できないことがある。いくつかの状況では、ファイル全体がまずダウンロードされなければならず、この後、メディアプレーヤが再生を開始することができる。プログレッシブダウンロードの他の複数の状況では、複数のメディアプレーヤが、ファイルの最初の十分な量がダウンロードされると再生を開始することができるが、メディアプレーヤは、何らかの形態の再生をサポートするために、十分な情報をダウンロードしなければならず、この後再生を行うことができる。プログレッシブダウンロードされた複数のメディアファイルの再生は、しばしば遅い複数のインターネット接続により遅延し、また、しばしば途切れ途切れになり、および／またはほんの数秒後に停止する可能性が高い。プログレッシブダウンロードされたメディアプログラムが完全にダウンロードされると、後で使用するためにエンドユーザのコンピュータに格納されてもよい。
【００１７】
プログレッシブダウンロードの複数の不利な点の１つが、データを送信しているエンティティ（ウェブサーバ）が、単にデータをクライアントにできるだけ速くプッシュすることである。適切な量のデータがダウンロードされたとたんに、多くのメディアプレーヤのプログレッシブダウンロード性能が再生を可能にするので、プログレッシブダウンロードは、ビデオを「ストリーミングしている」ように見えることがある。しかしながら、ファイル全体がウェブサーバにより配送されるまで、ユーザはファイルの最後まで早送りすることができない。プログレッシブダウンロードの他の不利な点が、ウェブサーバはビデオファイルのデータ転送速度を考慮しないことである。したがって、ネットワークの帯域幅がビデオファイルに必要なデータ転送速度より低い場合、ユーザは、ある期間待たなければならず、この後、再生を開始することができる。再生速度がデータ転送速度を超えた場合、視聴体験が中断されながら追加データがダウンロードされる間、ある期間、再生が中断することがある。しかしながら、データ転送速度は潜在的により高いので、再生が行われたとき、ビデオ再生品質はより高くなることがある。例えば、１００ｋｂｐｓのビデオファイルが５６ｋｂｐｓのモデムにより配送することができる場合、ビデオは、１００ｋｂｐｓの速度で提示されるが、追加のビデオデータがダウンロードされる間、再生が中断する期間が存在することがある。ビデオデータは、典型的には、この全体が一時ファイルとしてダウンロードされ、格納される。
【００１８】
ウェブサーバは、典型的には、ＴＣＰ（ｔｒａｎｓｆｅｒ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ）の上位層でＨＴＴＰ（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｐｏｒｔ  ｐｒｏｔｏｃｏｌ）を使用して、複数のファイルをネットワーク上で転送する。ネットワーク上で複数のデータパケットの転送を制御するＴＣＰは、速度ではなく、データの配送保証のために最適化される。したがって、ブラウザが、データが欠けていることを検知した場合、再送要求が発行され、データは再送される。配送エラーが多い複数のネットワークでは、複数の再送要求が、大量の帯域幅を消費することがある。ＴＣＰは、適切なデータの効率的な配送または帯域幅制御のために設計されていないので（しかし、むしろすべてのデータの配送が保証される）、すべての用途でビデオデータを配送するのに好ましいわけではない。  
ストリーミング
ストリーミングはメディアコンテンツをメディアプレーヤに連続的に配送し、メディア再生が同時に行われる。エンドユーザは、コンテンツプロバイダにより配送されると、即座にメディアを再生することができる。従来の複数のストリーミング技術は、データのストリームを配送する単一のプロバイダから１組の複数のエンドユーザへと開始される。単一のストリームを多数の視聴者に配送するには、複数の高い帯域幅および中央処理装置（ＣＰＵ）のパワーが必要とされ、プロバイダが必要とする帯域幅は、エンドユーザの数が増すにつれて、増大する。
【００１９】
プログレッシブダウンロードと異なり、ストリーミングメディアはオンデマンドで、またはライブで配送することができる。この点で、プログレッシブダウンロードはファイル全体をダウンロードする、または最初に再生を開始するのに十分な量をファイル全体からダウンロードする必要があり、ストリーミングにより、ファイル内部の任意の地点で即座に再生が可能になる（「シーキング」と呼ばれる）。複数のエンドユーザが、メディアファイルの至る所にスキップ／シークして、再生を開始する、またはメディアファイル内の任意の地点に再生を変更してもよい。したがって、エンドユーザは、ファイルがプログレッシブダウンロードされるのを待つ必要がない。典型的には、ストリーミングメディアは、高い複数の帯域幅性能を有する少数の専用サーバから配送される。
【００２０】
ストリーミング・メディア・サーバが、複数のビデオファイル要求を受け入れ、かつフォーマット、帯域幅およびこれらのファイルの構造に関する情報を使って、ビデオを再生するのに必要なだけの量のデータを、ビデオを再生するのに必要な速度で配送する特化したサーバである。ストリーミング・メディア・サーバはまた、送信帯域幅、およびメディアプレーヤの複数の性能を考慮してもよい。ウェブサーバと異なり、ストリーミング・メディア・サーバは、複数の制御メッセージおよび複数のデータメッセージを使用してユーザコンピュータと通信して、ビデオが再生されるときに、変化する複数のネットワーク条件に適応する。これらの複数の制御メッセージは、早送り、早戻し、一時停止、またはファイルの特定部分へのシークなどの複数の特殊再生機能用の複数のコマンドを含むことができる。ストリーミング・メディア・サーバは、ビデオデータを必要とされたときだけ、必要とされる速度で送信するので、提供されるいくつかのストリーム対して正確な制御を維持することができる。プログレッシブダウンロードの場合と異なり、視聴者は、より低いデータ転送速度の送信媒体上で高いデータ転送速度の複数のビデオを見ることができない。しかしながら、ストリーミング・メディア・サーバは、（１）複数のユーザにビデオファイルへのランダムなアクセスを提供し、（２）誰がどの複数のビデオプログラムを見ているか、およびこれらのビデオプログラムがどれだけ長く視聴されているかをモニタすることができるようになる、（３）視聴体験をサポートするために必要な量のデータだけが送信されるので、送信帯域幅をより効率的に使用する、および（４）ビデオファイルを視聴者のコンピュータに恒久的に格納しない（ファイルは、最終的にメディアプレーヤにより廃棄され、したがって、コンテンツに対してより多くの制御が可能になる）。
【００２１】
ストリーミング・メディア・サーバは、ＨＴＴＰおよびＴＣＰを使用して、複数のビデオストリームを配送してもよいが、一般に、ＲＳＴＰ（ｒｅａｌ  ｔｉｍｅ  ｓｔｒｅａｍｉｎｇ  ｐｒｏｔｏｃｏｌ）およびＵＤＰ（ｕｓｅｒ  ｄａｔａｇｒａｍ  ｐｒｏｔｏｃｏｌ）を使用する。これらのプロトコルは複数の制御メッセージを可能にし、オーバヘッドを低減することにより帯域幅を節約する。ＴＣＰと異なり、送信中にデータが捨てられたとき、ＵＤＰは複数の再送要求を送信しない。代わりに、サーバはデータを送信し続ける。ストリーミング・メディア・サーバはまた、複数のライブウェブキャストを配送することができ、マルチキャストすることができ、これにより、２人以上のクライアントが単一のストリームに同調することができるようになり、したがって、帯域幅を節約する。
【００２２】
典型的には、プログレッシブダウンロードされたメディアは、再生より速い速度でユーザコンピュータに送信される。メディア・プログラム・プレーヤ３０４はこのデータをバッファに入れ、通常、「プログレスバー」の一部として、インジケータを提供することにより、メディアプログラムがどれだけバッファに入れられたかを示してもよい。ユーザが、制御手段を選択し、かつプログレスバーに沿って異なる位置に制御手段を移動させることにより、すでにバッファに入れられたプログラム内の任意の地点にアクセスすることができるようになる制御手段が提供される場合が多い。これにより、ユーザは、メディアプログラムのバッファに入れられた任意の部分にランダムにアクセスすることができるようになる。
【００２３】
複数のストリーミング・メディア・プレーヤは、メディアプログラム内の任意の地点にランダムにアクセスできるようにするために、バッファリングに依存しない。代わりに、これは、メディアプレーヤからストリーミング・メディア・サーバに送信される複数の制御メッセージを使用することにより実現される。
【発明の概要】
【００２４】
さらに、上述のように、コンテンツをストリーミングするためのさまざまな複数の技術が、複数のユーザ／複数の視聴者の数が増大するにつれ、帯域幅を消費する必要がある。複数のユーザ／複数の視聴者が同一コンテンツをストリーミングするために、マルチキャストアドレス指定を使用することにより、消費される帯域幅を制限することが望ましい。しかしながら、複数のユーザがストリーミングコンテンツを受信している間に、プログラムの中でシークするとき、ユーザ／視聴者により視聴されている新しい位置に基づき、メディアコンテンツが再送信されなければならないので、追加の帯域幅が消費される。
【００２５】
上記の複数の要件に対処するために、方法、装置、製造物（article of manufacture）、およびメディアコンテンツを複数のユーザにストリーミングするためのメモリ構造である。ユーザが、ストリーミングされたメディアコンテンツを受信しているとき、ユーザは、メディアコンテンツ内の異なる位置にシーク（例えば前方または後方に）してもよい。システムの複数の実施形態が、このようなシーク動作に基づき複数のユーザを同期させる能力を提供する。この点、システムは、他の複数のストリーム／要求された複数のストリームを検索して、要求された位置と適合するストリームを見つけ出す。このような適合するストリームは、要求されたものと異なるメディアコンテンツ内の位置からなることがある（例えば所定のシーン、ショット、フレームなど）。例えば、ユーザがメディアプログラムの１２：５１に位置するフレームにシークすることを要求することにより、１２：５０に、またはこのフレームで、もしくはこのフレームの近傍で、異なるユーザにより視聴されている他のストリームに、要求をリダイレクトしてもよい（またはすぐに応答するメディア・プログラム・ストリームをストリーミングする）。
【００２６】
適合するストリームが見つかると、適合するストリームは、要求しているユーザおよびすでに視聴しているユーザにストリーミングされる（例えばマルチキャスト）。この点、本発明の複数の実施形態は、同一コンテンツをストリーミングすることにより複数の視聴者を連携させることができる。このような複数のストリーミング性能は、ユーザにより制御される複数のシーク動作を可能にしながら、帯域幅の消費を低減する。
【００２７】
さらに、いくつかのメディアプログラムでは、視聴されているコンテンツに基づき、複数のコマーシャルまたは広告がユーザに示される必要がある。本発明の複数の実施形態は、コンテンツをストリーミングしているとき、このような複数の広告を考慮することがある。さらに、要求されたシーク位置と、適合する位置の間に遅延がある場合、システムは、該当する時間長の広告（複数）（カスタマイズされた広告でも、管理された広告でもよい）（または他のメディアコンテンツ）を選択し、マルチキャストする性能に到達するまで（すなわち、適合するストリームを視聴しているユーザが、要求しているユーザが視聴することを望むストリーム内の位置に／近傍に到達したとき）、要求しているユーザにこのような広告／メディアコンテンツをストリーミングしてもよい。
【図面の簡単な説明】
【００２８】
次に、全体を通して同様の複数の参照番号が、対応する複数の部分を表す図面を参照する。
【図１】図１は、例示的メディア・プログラム・システムを示す図である。
【図２】図２は、本発明を実現するために使用することができる例示的コンピュータシステムを示す。
【図３】図３は、コンテンツ配送サブシステム、およびユーザに提示するために複数のメディアプログラムおよび複数の広告を配送するために使用することができるトップレベルの複数の動作を示す図である。
【図４】図４は、ライブ・ストリーミング・プロトコルに従って複数のメディアプログラムを送信するために提供されるコンテンツ配送システム４００を示す図である。
【図５】図５は、本発明の１つまたは複数の実施形態に従って、同期した位置にユーザのシーク位置をリダイレクトすることを示すユーザインタフェースを示す。
【図６】図６は、本発明の１つまたは複数の実施形態に従って複数のユーザにメディアコンテンツをストリーミングするための論理的な流れを示す流れ図である。
【発明を実施するための形態】
【００２９】
以下の説明では、本発明のいくつかの実施形態の一部を形成し、かつ例示によって示される複数の添付図面が参照される。本発明の範囲を逸脱することなく、他の複数の実施形態を利用してもよく、複数の構造的変更を行ってもよいことが理解される。  
概要
本発明の複数の実施形態が、行われるシーク動作に基づき複数のユーザを同期させる能力を提供する。このような複数の性能を提供するために、複数の実施形態が、任意のランダムな複数の地点ではなく、メディアプログラム内の特定の複数の地点に複数のユーザを誘導する。特定の複数の地点は、シーンの最初、ショット、フレーム、Ｉフレームなどとすることができる。したがって、複数のユーザは、望むプログラム内の任意の地点までスキャンすることができない。代わりに、複数のユーザは、最も近い（または直前の）ショットまたはシーンまでスキャンすることができる。複数のユーザをこのような方法で誘導することにより、複数のユーザは同一信号ストリームを受信する可能性が高く、それにより、帯域幅が節約される。  
ハードウェアおよびソフトウェアの環境
図１は、例示的メディア・プログラム・システム１００を示す図である。図示される実施形態では、システム１００は、インターネットなどの通信ネットワーク１０４に通信可能に結合され、かつ１つまたは複数のソース・メディア・プログラム・データベース１２４Ａ、１２４Ｂに通信可能に結合された１つまたは複数のソース・ビデオ・サーバ１２２Ａ、１２２Ｂをそれぞれ有する１つまたは複数のメディア・プログラム・ソース１２０Ａ、１２０Ｂを備えてもよい。メディア・プログラム・システム１００は、通信ネットワーク１０４に通信可能に結合され、かつ１つまたは複数のプロバイダ・ビデオ・サーバ１１２および１つまたは複数のプロバイダデータベース１１４を有するメディア・プログラム・プロバイダ１１０をさらに備える。一実施形態では、メディア・プログラム・プロバイダ１１０は、ビデオ・オン・デマンドおよび／またはストリーミング・メディア・プログラム・プロバイダである。
【００３０】
メディア・プログラム・システム１００は、複数のメディアプログラムをコンピュータなどの第１のユーザデバイス１０２Ａ、または携帯電話などの第２のユーザデバイス１０２Ｂに送信する（以下、代わりにユーザデバイス（複数）１２０と呼ぶ）。この送信は、メディア・プログラム・プロバイダ１１０から直接であってもよい、またはメディア・プログラム・プロバイダ１１０はポータルとして動作して、メディアプログラム自体（代わりに、メディア・プログラム・ソース（複数）１２０により提供される）ではなく、複数のメディア・プログラム・ソース１２０Ａおよび１２０Ｂから利用可能である複数のメディアプログラムへのインタフェースを提供してもよい。
【００３１】
第１の事例では、メディア・プログラム・プロバイダ１１０は、複数のメディア・プログラム・ソース１２０（例えばｗｗｗ．ｆｏｘ．ｃｏｍまたはｗｗｗ．ｎｂｃ．ｃｏｍ）から複数のメディアプログラムのライセンス供与を受け、このような複数のプログラムに対するメタデータも、典型的には、同様にメディア・プログラム・ソース１２０からメディア・プログラム・プロバイダ１１０に提供される。このようなメタデータは、使用するためにメディア・プログラム・プロバイダのデータベース１１４により取り出すことができる。補足のメタデータが必要な場合、以下でさらに説明されるように、補足のメタデータは、メディア・プログラム・プロバイダ１１０およびメディア・プログラム・ソース１２０とは無関係のメタデータソース１３０から得ることができる。
【００３２】
第２の事例では、複数のメディアプログラムは、直接メディア・プログラム・ソース１２０の複数のサーバからユーザデバイス１０２にストリーミングされる。複数のメディアプログラムが、直接メディア・プログラム・ソース１２０からストリーミングされたとき、メディア・プログラム・ソース１２０により提供されるメタデータが不十分である場合がしばしばある。複数のこのような場合、補足のメタデータが、無関係のメタデータソース１３０（例えばｗｗｗ．ｔｖ．ｃｏｍまたはｗｗｗ．ｉｍｄｂ．ｃｏｍ）または他のサードパーティの複数のソースから得られてもよい。この状況では、メディア・プログラム・プロバイダ１１０の役割は、利用可能な複数のメディアプログラムのリスト、およびこのような複数のプログラムを見つけ出すために検索し、かつこのような複数のプログラムを視聴するインタフェースを複数のユーザ１３２に提供するポータルの役割である。
【００３３】
複数のメディアプログラムおよびメタデータは、インターネットなどの通信ネットワーク１０４を介して、または複数の補助（および／または専用）通信リンク１３４を通して得られてもよい。このような情報は、ウェブクローリングにより（例えば、ワールド・ワイド・ウェブを順序だった、自動化された方法でブラウズするプログラムまたは自動化スクリプトを使用して）得られてもよい。
【００３４】
複数のユーザデバイス１０２を使用して、複数の遠隔ユーザ１３２が、通信ネットワーク１０４を使用してメディア・プログラム・プロバイダ１１０と通信して、複数のメディアプログラム（複数のビデオ・オン・デマンドおよび／またはストリーミング・ビデオ・サービスを含む）を得て、プロバイダのメディア・プログラム・データベース１１４を検索して、関心のある複数のメディアプログラムを見つけ出すことができる。
【００３５】
メディア・プログラム・システム１００はまた、メディア・プログラム・プロバイダ１１０または複数のメディア・プログラム・ソース１２０により提供される複数のメディアプログラムと一緒に再生される複数の広告を供給する１つまたは複数の広告プロバイダ１４０を備えてもよい。図示される実施形態では、広告プロバイダ１４０は、関連づけられ、かつ通信可能に結合された広告プロバイダデータベース１４４に通信可能に結合された広告プロバイダサーバ１４２を含む。
【００３６】
複数の広告は、インターネット１０４、専用リンク１４６を介して、または広告を有するメモリ記憶デバイスの物理的交換により、広告プロバイダ１４０からメディア・プログラム・プロバイダ１１０に供給されてもよい。このような複数の広告は、メディア・プログラム・プロバイダ１１０により提供および格納され、該当する時間に、メディアプログラムと一緒にユーザデバイス（複数）１０２にストリーミングまたはダウンロードすることができる。
【００３７】
一実施形態では、複数の広告は、メディア・プログラム・プロバイダ１１０からストリーミングまたはダウンロードされたビデオと一体化される。別の実施形態では、複数の広告は、メディアプログラムと一体化されるのではなく、代わりに、メディアプログラムとは別個に複数のユーザデバイス１０２に送信され、各広告がいつ提示されるべきかを示す複数のインデックスを使用して、該当する時間に再生される。例えば、複数の広告は、インデックスをつけることができる、および複数のユーザデバイス１０２にストリーミングまたはダウンロードすることができ（メディア・プログラム・プロバイダ１１０または広告プロバイダ１４０から）、このような複数の広告は、メディアプログラム内の対応する複数のインデックスにより示される複数の時間に、ユーザ１３２に対して再生することができる。
【００３８】
図２は、複数のユーザデバイス１０２、複数のサーバ１１２、１２２および１４２、ならびにデータベース１１４、１２４および１４４を含む、本発明の複数の要素を実現するために使用することができる例示的コンピュータシステム２０２を示す。コンピュータ２０２は、汎用ハードウェアプロセッサ２０４Ａおよび／または専用ハードウェアプロセッサ２０４Ｂ（以下、代わりに集合的にプロセッサ２０４と呼ぶ）、ならびにランダム・アクセス・メモリ（ＲＡＭ）などのメモリ２０６を備える。コンピュータ２０２は、キーボード２１４、マウスデバイス２１６およびプリンタ２２８などの複数の入出力（Ｉ／Ｏ）デバイスを含む他の複数のデバイスに結合されてもよい。
【００３９】
一実施形態では、コンピュータ２０２は、オペレーティングシステム２０８の制御下でコンピュータプログラム２１０により規定される複数の命令を汎用プロセッサ２０４Ａが実行することにより動作する。コンピュータプログラム２１０および／またはオペレーティングシステム２０８は、メモリ２０６に格納されてもよく、ユーザ１３２および／または他の複数のデバイスとインタフェースで接続して、入力および複数のコマンドを受け入れて、このような入力および複数コマンド、ならびにコンピュータプログラム２１０およびオペレーティングシステム２０８により規定される複数のコマンドおよび複数の命令に基づき、出力および複数の結果を提供してもよい。
【００４０】
出力／複数の結果は、画面２２２上に示されても、提示する、またはさらに処理もしくは動作させるために、他のデバイスに提供されてもよい。典型的には、ディスプレイ２２２は、状態を変えて、ユーザ１３２に画像を集合的に提示する複数の画像要素（複数の画素）を備える。例えば、ディスプレイ２２２は、不透明な状態または半透明な状態に変化して、入力および複数のコマンドに対してコンピュータプログラム２１０および／またはオペレーティングシステム２０８の複数の命令を適用することにより、プロセッサ２０４により生成されたデータまたは情報に応答して、ディスプレイ上で画像の一部を形成する液晶をそれぞれ備える別個にアドレス可能な複数の画素を有する液晶ディスプレイ（ＬＣＤ）を備えてもよい。同様に、複数のプラズマディスプレイが、異なる色の蛍光体をそれぞれ備える３つの別個のサブピクセルからなるセルを有する画素を含む。複数の色が一緒に混ざり合って、画素内に提示される色を生成する。複数のセルを通って流れる複数の電流パルスが、入力および複数のコマンドに応答してコンピュータプログラムおよび／またはオペレーティングシステム２０８の複数の命令を適用することにより、プロセッサにより生成されたデータに従って変更され、画素により提供される光の強さが変化する。また、同様に、複数の陰極線管（ＣＲＴ）ディスプレイが複数の画素を含み、それぞれ、各画素が、典型的にはアパーチャグリルからの複数のドットまたは複数のラインで表現される複数のサブピクセルを有する複数の画素を有する。各ドットまたはラインは、電子銃からの複数の電子が衝突したときに光を放つ蛍光体コーティングを含む。コンピュータプログラムおよび／またはオペレーティングシステム２０８の複数の命令を適用することにより、プロセッサにより生成されたデータに応答して、および入力および／または複数のコマンドに応答して、電子銃により放出された複数の電子は、複数のドットまたは複数のラインに導かれ、したがって、このドットまたはラインの蛍光体コーティングに光を放たせることにより関連する画素の状態を変更する。
【００４１】
画像はグラフィカル・ユーザ・インタフェース（ＧＵＩ）・モジュール２１８Ａにより提供されてもよい。ＧＵＩモジュール２１８Ａは別個のモジュールとして描かれているが、複数のＧＵＩ機能を実行する複数の命令が、オペレーティングシステム２０８、コンピュータプログラム２１０内に常駐もしくは分散する、または専用のメモリおよび複数のプロセッサで実現することができる。
【００４２】
コンピュータプログラム１１０の複数の命令に従ってコンピュータ２０２により実行される複数の動作の一部またはすべてが、専用プロセッサ２０４Ｂで実現されてもよい。さらに、コンピュータプログラム２１０の複数の命令の一部またはすべては、読み出し専用メモリ（ＲＯＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、もしくは専用プロセッサ２０４Ｂ内部またはメモリ２０６内のフラッシュメモリに格納された複数のファームウェア命令により実現されてもよい。専用プロセッサ２０４Ｂはまた、複数の動作の一部またはすべてを実行して本発明を実現する回路設計により、ハードウェアに組み込まれてもよい。さらに、専用プロセッサ２０４Ｂは、複数の機能のサブセットを実行するための専用回路、および複数のコンピュータプログラム命令に応答するなどのより一般的な複数の機能を実行するための他の複数の回路を含むハイブリッドプロセッサでもよい。一実施形態では、専用プロセッサは、特定用途向け集積回路（ＡＳＩＣ）である。
【００４３】
コンピュータ２０２はまた、ＣＯＢＯＬ、Ｃ＋＋、ＦＯＲＴＲＡＮまたは他の言語などのプログラミング言語で書かれたアプリケーションプログラム２１０をプロセッサ２０４の可読コードに翻訳することができるようにするコンパイラ２１２を実装してもよい。コンパイル後、アプリケーションまたはコンピュータプログラム２１０は、コンパイラ２１２を使用して生成された複数の関係およびロジックを使用して、複数のＩ／Ｏデバイスから受け入れられ、コンピュータ２０６のメモリ２０６に格納されたデータにアクセスし、操作する。
【００４４】
コンピュータ２０２はまたモデム、衛星リンク、イーサネット（登録商標）カードまたは他の複数のコンピュータから入力を受け入れ他の複数のコンピュータに出力を提供する他のデバイスなどの外部通信デバイスを任意選択で備える。
【００４５】
一実施形態では、オペレーティングシステム２０８、コンピュータプログラム２１０およびコンパイラ２１２を実現する複数の命令は、コンピュータ可読媒体、例えば１つまたは複数の固定のまたは取り外し可能なデータ記憶デバイス、例えばジップドライブ、フロッピー（登録商標）・ディスク・ドライブ２２４、ハードドライブ、ＣＤ−ＲＯＭドライブ、テープドライブ、ＤＶＤなどを含むことができるデータ記憶デバイス２２０内に有形に具体化される。さらに、オペレーティングシステム２０８およびコンピュータプログラム２１０は、コンピュータ２０２によりアクセスされ、読み出され、実行されたとき、コンピュータ２０２に本発明を実現および／もしくは使用するのに必要な、または複数の命令からなるプログラムをメモリの中にロードするのに必要な複数のステップを実行させる複数のコンピュータプログラム命令からなり、したがって、コンピュータに本明細書で説明される複数の方法ステップを実行する専用にプログラムされたコンピュータとして動作させる専用データ構造を生成する。コンピュータプログラム２１０および／または動作させる複数の命令はまた、メモリ２０６および／または複数のデータ通信デバイス２３０内に有形に具体化されてもよく、それにより、本発明によるコンピュータプログラム製品または製造物を作成する。このため、用語「製造物」、「プログラム記憶デバイス」および「コンピュータプログラム製品」は、本明細書で使用されるとき、任意のコンピュータ可読デバイスまたは媒体からアクセス可能なコンピュータプログラムを包含するものとする。
【００４６】
当然のことながら、上記の複数の構成要素の任意の組み合わせ、または任意の数の異なる複数の構成要素、複数の周辺装置および他の複数のデバイスが、コンピュータ２０２と共に使用されてもよいことを当業者であれば理解されよう。
【００４７】
本明細書では用語「ユーザコンピュータ」と呼ばれるが、ユーザコンピュータ１０２は、複数の携帯デバイス、例えば複数の携帯電話、複数の携帯型ＭＰ３プレーヤ、複数のビデオゲーム機、複数のノートブックコンピュータ、複数のポケットコンピュータ、複数の携帯情報端末（複数のＰＤＡ）または適切な処理、通信および入出力の性能を備えた任意の他のデバイスを含んでもよいことが理解される。
【００４８】
図３は、コンテンツ配送サブシステム（ＣＤＳ）３００の第１の実施形態、およびＨＴＴＰ、ＴＣＰ、ＲＳＴＰまたは類似の複数のプロトコルに従ってユーザ１３２に提示するための複数のメディアプログラムおよび複数の広告を配送するために使用することができるトップレベルの複数の動作を示す図である。これらの複数のプロトコルを使用して、メディアプログラム配送中に、メディア・プログラム・プレーヤ１１０からの要求に従って、またはメディアサーバ１１４の主導権で、メディア・プログラム・プレーヤ１１０に送信されるデータのスループットを変更することができる。例えば、ＲＴＳＰは、メディアサーバが、メディアサーバの能力と整合する特定の速度でメディア・プログラム・プレーヤにデータを配送し、この速度でメディアを提供することを望むことを要求する速度要求ヘッダフィールドを定義する。
【００４９】
図示される実施形態では、コンテンツ配送サブシステム３００は、ユーザデバイス１０２、メディア・プログラム・プロバイダ１１０および広告プロバイダ１４０を含む。メディア・プログラム・プロバイダ１１０は、フィードサービス３０６、コンテンツセレクタ３０８およびコンテンツ管理サービス３１０を備える。ユーザ１３２が、ユーザデバイス１０２を使用してメディアプログラムを選択したとき、選択されたメディアプログラムのメディアプログラム識別子（ＰＩＤ）を要求するメッセージが、ユーザデバイス１０２からメディア・プログラム・プロバイダ１１０に送信される。フィードサービス３０６は要求を受信し、コンテンツ管理サービス３１０を介して安全な記憶装置３１２から得られた情報を使用して、フィードサービス３０６は、選択されたメディアプログラムに対するＰＩＤを決定し、ＰＩＤをユーザデバイス１０２に送信する。ユーザデバイスは、このＰＩＤおよびユーザＩＤをメディア・プログラム・プロバイダ１１０のコンテンツセレクタ３０８に送信する。コンテンツセレクタ３０８は、情報をコンテンツ管理サービス３１０に転送し、コンテンツ管理サービス３１０は、広告サービス３１８を使用して、安全な記憶装置３１２に格納された情報を使用して、ユーザおよび選択されたメディアプログラムに該当する複数の広告を選択する。これは、２０１０年５月２６日に出願された、Ｗｉｎｇ  Ｃｈｉｔ  Ｍａｋによる「迅速でスケーラブルな管理された広告サービスのための方法および装置（ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＲＡＰＩＤ  ＡＮＤ  ＳＣＡＬＥＡＢＬＥ  ＤＩＲＥＣＴＥＤ  ＡＤＶＥＲＴＩＳＩＮＧ  ＳＥＲＶＩＣＥ）」と題する同時係属中の特許出願第１２／７８７，６７９号明細書に説明されるように実現されてもよく、この出願は参照により本明細書に組み入れられる。コンテンツ管理サービス３１０は、この情報をコンテンツセレクタ３１８に転送し、コンテンツセレクタ３１８は、選択されたメディアプログラムをユーザデバイス１０２がメディアサーバ１１４から得ることができる情報だけでなく、広告プロバイダ１４０からの複数の広告も送信する。図示される実施形態では、この情報は、メディアサーバ１１４から所望のメディアプログラムを得ることができるアドレス（例えばＵＲＬ）を含む。ユーザデバイス１０２は、指定されたアドレスにあるメディアサーバ１１４にメディアプログラム要求を送信する。メディアサーバ１１４は、メディアプログラムを安全な記憶装置から取り出し、メディアプログラムをユーザデバイス１０２に送信する。ユーザデバイス１０２は、送信されたメディアプログラムを受信し、メディアプログラムをバッファ３０５に一時的に格納してもよい。バッファ３０５は、ハードウェアおよび／またはソフトウェアのバッファリングを含んでもよく、メディア・プログラム・プレーヤ３０５内、またはユーザデバイス１０２内の他のどこかに存在してもよい。
【００５０】
ユーザデバイス１０２はまた、広告プロバイダ１２０からの複数の広告を要求し、複数の広告を同様に受信してもよい。典型的には、メディアサーバ１１４は、異なるスループットまたは帯域幅の複数の通信チャネルにそれぞれ適した、複数のバージョンのメディアプログラムを有する。ユーザデバイス１０２または他の場所から受信された情報を使用して、メディアプレーヤ１１４は、ユーザデバイス１０２に送信するメディアプログラムの最も該当するバージョンを決定する。この決定は、例えば、メディアプログラムをユーザデバイス１０２に送信するために使用される通信チャネルの帯域幅または利用可能なビットレート、ユーザデバイスのスループット、ならびにユーザデバイス１０２で実現されるバッファ３０５のサイズおよび速度に基づくことができる。
【００５１】
次いで、ユーザデバイス１０２は、メディアプログラムを受信する。典型的には、メディア・プログラム・データは、ユーザデバイス内のハードウェアまたはソフトウェアのバッファ３０５に格納され、先入れ先出し（ＦＩＦＯ）法で取り出される。配送されるメディアプログラムのバージョンの平均ビットレートが、複数の通信のチャネルの帯域幅性能よりも低いので、メディアプログラムが再生されている間に、バッファ３０５は一杯になる。バッファリングされたデータは、通信チャネルの帯域幅またはメディアプログラムのビットレートが変化したときでさえ利用可能であり、したがって、バッファリングされたデータは、途切れ途切れの再生を低減するために使用することができる。
【００５２】
メディアプログラムが、必要とされるビットレートで配送されていないとユーザデバイス１０２が判断した場合（メディアプログラムを再生するためにデータが消費される速度が、データが受信される速度を、バッファ３０５が途切れ途切れの再生を適切に防止することができない程度まで超える）、ユーザデバイス１０２は、異なるバージョンのメディアプログラム（例えば、より低いビットレートでの送信に適したバージョン）を要求するメッセージをメディアサーバ１１４に送信してもよい。逆に、メディアプログラムが必要とされるビットレートよりも高く配送されているとユーザデバイス１０２が判断した場合、ユーザデバイス１０２は、より高いビットレートでの送信に適したバージョンのメディアプログラムを要求するメッセージをメディアサーバに送信してもよい。これにより、より高解像度バージョンのメディアプログラムがユーザ１３２に提供されることがある。
【００５３】
広告プロバイダ１４０およびメディアサーバ１１４は、メディア・プログラム・プロバイダ１１０とは別個のアーキテクチャエンティティとして図示されているが、広告プロバイダ１４０は、メディア・プログラム・プロバイダ１１０と一体化されてもよい（すなわち、メディア・プログラム・プロバイダはまた、複数の広告を提供してもよい）。ＣＤＳ３００は、ｗｗｗ．ｈｕｌｕ．ｃｏｍ、ｗｗｗ．ｉｍｄｂ．ｃｏｍ、ｗｗｗ．ａｏｌ．ｃｏｍまたはｗｗｗ．ｍｓｎ．ｃｏｍを含んでもよい複数の配送ネットワークを介して複数のメディアプログラムおよび複数の広告を提供する手段を提供する。
【００５４】
メディアプログラムおよび広告コンテンツに関するメタデータだけでなく、ストリーミング情報も、複数のメディアプログラムおよび複数の広告がＣＤＳ３００内部のどこで見つけ出すことができるかを記述するデータのように、コンテンツ配送システム３００内に、データベース３１２内に格納されてもよい。
【００５５】
ユーザデバイス１０２は、インタフェースモジュール３０２およびメディア・プログラム・プレーヤ３０４を含んでもよい。インタフェースモジュール３０２は、情報および複数のメディアプログラムをユーザ１３２に提示するため、および複数のコマンドを含むユーザ入力を受け入れるために使用される、ユーザデバイス１０２により実行される複数の命令を含む。複数の例示的ユーザデバイス１０２が、デスクトップコンピュータ、ラップトップコンピュータまたは携帯デバイス、例えばＩＰＯＤ、ＩＰＨＯＮＥ、ＩＰＡＤ、携帯電話もしくはＰＡＬＭデバイスである。
【００５６】
別の実施形態では、前述のことは、ユーザデバイス１０２が、ＰＩＤを受信し、ＰＩＤをコンテンツセレクタに送信する必要なしに実現され、代わりに、単にメディアプログラムの要求をユーザデバイスから受け入れ、ユーザデバイス１０２に送信され、かつメディアサーバ１１４からメディアプログラムを得るために使用されるＵＲＬおよびメタデータを生成する。
【００５７】
図４は、ライブ・ストリーミング・プロトコルに従って複数のメディアプログラムを送信するために提供されるコンテンツ配送システム４００を示す図である。このプロトコルは、複数の携帯デバイスおよび複数の無線デバイスに対して特に有用である。基本的に、このプロトコルは、ユーザデバイス１０２がメディアプログラムを要求したときに、メディアプログラムの小さな複数のセグメントまたは「複数のチャンク」の「プレイリスト」を提供されることを除いて、図３に示すプロトコルに類似している。ユーザデバイス１０２は、プレイリストを使用して、メディアプログラムの各チャンクを順序正しく送信することを要求し、各チャンクが受信されたとき、各チャンクは処理され、ユーザ１３２に提示されるメディアプログラムに組み立てられる。
【００５８】
図４に示すように、ユーザデバイス１０２は、メディアプログラムのＰＩＤの要求をフィードサービス３０６に送信する。要求は、典型的にはユーザＩＤ、またはこのプロキシだけでなく、メディアプログラムに対する何らかの識別も備える。フィードサービス３０６は要求を受信し、安全な記憶装置３１２およびコンテンツメタデータ／ストリーミング情報データベースから得られた情報を使用して、要求されたメディアプログラムのＰＩＤをＣＭＳ３１０から得る。次いで、ＰＩＤはユーザデバイス１０２に送信される。次いで、ユーザデバイスは、コンテンツセレクタ３０８にＰＩＤと共にメディアプログラム要求を送信する。
【００５９】
次いで、ＰＩＤを有するメディアプログラム要求が、コンテンツセレクタ３０８に送信され、コンテンツセレクタ３０８は、この情報をコンテンツ管理サービス３１０に転送する。コンテンツ管理システム３１８は、広告サービス３１８を使用して、安全な記憶装置３１２に格納された情報を使用して、ユーザおよび選択されたメディアプログラムに該当する複数の広告を選択する。この場合も、これは、上述の同時係属中の特許出願第１２／７８７，６７９号明細書で説明されるように達成されてもよい。コンテンツ管理サービス３１０は、この情報をコンテンツセレクタ３１８に転送する。次いで、コンテンツセレクタ３０８は、マスタプレイリストを生成してもよい。
【００６０】
マスタプレイリストが、同じくコンテンツを送信するために使用されてもよい。マスタプレイリストは、異なる複数のビットレートで表現されたメディアプログラムに対するセグメントプレイリストにそれぞれ関連づけられる複数のリンクを含んでもよい。例えば、１つのリンクが、１．５Ｍｂｐｓのビットレートバージョンのメディアプログラムに対するセグメントプレイリストに関連づけられてもよい。他のリンクが、３．２ＭＢＰＳのバージョンのメディアプログラムに対するセグメントリストに関連づけられてよく、一方で、第３のリンクが、６４Ｋｂｐｓのバージョンのメディアプログラムに関連づけられてもよい。
【００６１】
次いで、マスタプレイリストはユーザデバイス１０２に送信される。ユーザデバイス１０２は、受信および再生に最も適合するバージョンのメディアプログラムを選択する。この選択は、例えば、メディアサーバ１１４とユーザデバイス１０２の間の複数の通信のチャネルの帯域幅もしくはスループット、ならびに／またはユーザデバイス１０２内の任意のバッファ（複数）３０５のサイズおよびスピードに基づくことができる。ユーザデバイス１０２は、選択されたバージョンのメディアプログラムのメディア・プログラム・バージョン要求をコンテンツセレクタ３０８に送信する。コンテンツセレクタ３０８は、メディア・プログラム・バージョン要求を受信し、セグメントプレイリストを生成し、セグメントプレイリストをユーザデバイス１０２に送信する。ユーザデバイス１０２は、セグメントプレイリストを受信し、メディアサーバ１１４または広告プロバイダ１４０から示された順序でプレイリスト内の複数のセグメントを要求する。
【００６２】
上述のように、複数のデジタル・メディア・プログラムの配送および提示が困難になる可能性があるのは、（１）メディアプログラムをユーザデバイス１０２に配送するために使用される通信チャネルが、（ａ）典型的には帯域幅が制限されており、（ｂ）時間の経過と共に、および複数の移動体用途ではユーザの位置に対してかなり変化する可能性がある、（２）ユーザデバイス１０２により受信されたメディアプログラムの処理および提示には、（ａ）時間と共に変化する場合があるかなりのスループットおよび処理速度、ならびに（ｂ）ユーザデバイス１０２内で使用される任意のバッファリングのかなりの記憶容量および記憶／取出速度を必要とするためである。
【００６３】
上記でさらに説明されたように、複数のデジタル・メディア・プログラムを配送するための従来技術の複数の技法は、Ｐ２Ｐ、マルチキャスト／ブロードキャストのアドレス指定方式を使用することにより帯域幅を節約しようとする場合が多い。しかしながら、複数の視聴者が、視聴中にデジタル・メディア・プログラム内の新しい複数の位置に頻繁にシークすることは珍しいわけではない。例えば、視聴者が、（メディアプログラム内部の現在時間に基づく位置を示す）進行タイムラインバー（progress timeline bar）上のスライダ（slider）を新しい位置に移動させてもよい。従来技術の複数の技法では、複数のシーク性能を同じく可能にしながら、複数のデジタル・メディア・プログラムをマルチキャスト／ブロードキャストする能力を提供できない。さらに、従来技術の複数の技法はまた、マルチキャスト／Ｐ２Ｐ環境でシーク性能を提供しながら、カスタムの／管理された広告を提供することができない。
【００６４】
したがって、異なる複数のユーザへの複数のストリームを共有することができ、かつこれにより帯域幅コストが低減するので、異なる複数のユーザに対して同期した複数のストリームが、サービスの観点から望ましい。  
メディアコンテンツ配送の同期
本発明の複数の実施形態は、コンピュータ２０２内部で実行されるコンピュータプログラム２１０上で実現されてもよい。１つまたは複数の実施形態では、異なる／複数のユーザに配送される複数のストリームが、実行される複数のシーク動作に基づき同期／整列する。このような複数の性能を提供するために、複数のユーザは、ランダムな地点ではなく、メディアプログラム内の特定の複数の地点に誘導される。特定の複数の地点は、シーンの最初、ショット、フレーム、Ｉフレームなどとすることができる。
【００６５】
したがって、複数のユーザは、望むプログラムの任意の地点までスキャンすることができるわけではない。代わりに、複数のユーザは、最も近い（または直前の）ショットまたはシーンまでスキャンすることができる。複数のユーザをこのような方法で誘導することにより、複数のユーザは同一信号ストリームを受信する可能性が高く、それにより、帯域幅が節約される。
【００６６】
図５は、本発明の１つまたは複数の実施形態に従ってユーザのシーク位置を同期した位置にリダイレクトすることを示すユーザインタフェースを示す。ユーザが、再生バー／スライダを動かして、ビデオ内の前方または後方に移動するとき、ユーザが選択する正確な地点（すなわち、位置５０２）からビデオのストリーミングを開始するのではなく、メディアプログラムは、適度に近いが、ユーザが選択した正確な地点ではない地点（すなわち、位置５０４）から始まり、ストリーミングされる。ビデオストリーミングが開始する可能性がある地点５０４は、視聴者が選択した地点５０２の前であり、かつ少なくとも１人の他の視聴者がすでにこのビデオを視聴している地点５０４にある。この後、両方のユーザに、同一ビデオストリームが提供される（例えばマルチキャスト）。したがって、ユーザが特定の地点５０２までシークした場合、近似的な位置が、誰か他の人のシーク／視聴地点と一致する。したがって、複数のユーザが、所与のデジタルプログラム内の同一位置から視聴するように連係／同期する。
【００６７】
代わりにまたはさらに、シーンの最初、ショット、またはおそらく直前のＩフレームにさえ視聴者を誘導することができる。換言すれば、ストリームの同期は、単に他のユーザの位置に基づけばよいのではなく、代わりに（またはさらに）ショット、シーン、フレームなどに基づくことができる。すべての複数の視聴者がこれに支配されるので、ビデオプログラムを視聴する際に他の視聴者が地点５０４に存在する可能性が高い。
【００６８】
ユーザがスキャンする場所５０２に応じて、複数のユーザが複数の広告（例えば複数のコマーシャル）または他のメディアコンテンツを示されることがある、およびこのような複数の広告／コンテンツはメディアプログラムの再生が開始される前に再生されることがあるという事実も考慮されてもよい。例えば、第１のユーザが、ビデオをプログラムの中の１２：５１で再生を始めるように誘導するが、第２のユーザが１２：４５ですでにこのメディアをストリーミングしているとする。複数の広告を考慮しなければ、第１のユーザは、１２：４５で開始されるストリームに誘導される。しかしながら、第１のユーザが１２：５１以前に複数のコマーシャルを見ていなかった場合、選択されたストリームが、第１のユーザがストリームに加わる前に複数のコマーシャルを見るのに十分な時間を含むように、システムは、これらの複数のコマーシャルを考慮する必要がある。換言すれば、第１のユーザは、まず３０秒〜６０秒間、複数のコマーシャルを再生している間、１２：４５の直後の位置に誘導されてもよい。あるいは、第１のユーザは、必要とされるコマーシャル視聴に対応するために異なるユーザと同期してもよい。
【００６９】
あるいは、複数の広告または代替コンテンツの挿入により、ユーザが最初に意図した場所以外でビデオを開始することになることがあるので、ユーザが、何度も正確な場所に到達しないようにするように何らかのメッセージが示されてもよい。
【００７０】
一例として、ユーザ２がメディアプログラムの中間点を視聴しているが、ユーザ１が同一メディアプログラムの最初を視聴しているとする。ユーザ１は、中央近傍の何らかの場所、ユーザ２よりも少し先までシーク動作を実行する。ユーザ１の入力まで単にシークする場合、追加の帯域幅が消費され、ユーザ１およびユーザ２は、同一コンテンツであるがコンテンツ内の異なる複数の地点を視聴していても同期しない。複数のユーザは、ビデオ再生の短いセクションまたは部分をスキップしたいだけであるので、シーク動作の実際の位置にあまり敏感ではないことがわかった。
【００７１】
したがって、本発明の複数の実施形態は、ユーザ２がユーザ１に追いつくことができるように、ユーザ１をしばらく待たせる。ユーザ１は、何もすることがなく引き留められる場合、退屈することがある。したがって、視聴している際に、ユーザ２およびユーザ１の時間の空白に合う、異なる複数の長さで、異なるが依然として的を絞った複数の広告／コンテンツが再生されることがある。この特定の広告を再生することにより、ユーザ１およびユーザ２は、一緒に整列することができる。
【００７２】
この技法は、再生の最初にも同様に適用される。例えば、ユーザ１がユーザ２よりも３０秒早く到着するとする。ユーザ１は、ユーザ２を待つために広告に時間を費やすよう要求されることがある。さらに、このような視聴の遅延の一部として、通知がユーザ１に表示されてもよい（例えば、「視聴品質を改善するために、ビデオコンテンツがバッファされ／同期する間、お待ちください」）。このような遅延の間、本発明の複数の実施形態はまた、両方のユーザに対するネットワーク帯域幅を決定し、ビデオコンテンツのバッファリング、または第１または第２のユーザへのビデオコンテンツの一部の送信を開始してもよい（例えば、待っているユーザのネットワーク接続が、他方のユーザのネットワーク接続よりも遅い場合）。
【００７３】
上記に加えて、上述の複数の特徴のいずれも、サービス利用者以外に対して制限することができる。  
論理的な流れ
図６は、本発明の１つまたは複数の実施形態に従って複数のユーザにメディアコンテンツをストリーミングするための論理的な流れを示す流れ図である。
【００７４】
ステップ６０２では、メディアコンテンツの／に対する第１のストリームが、メディアコンテンツ内の第１の位置から第１のユーザにストリーミングされる。
【００７５】
ステップ６０４では、メディアコンテンツ内のシーク位置までシークする要求が第１のユーザから受信される。要求は、第１のメディアコンテンツに対する進行タイムラインバー上のスライダを移動させることにより、第１のユーザから受信されてもよい。
【００７６】
ステップ６０６では、メディアコンテンツ内の第２の位置が決定される。第２の位置はシーク位置と適合する。さらに、第２の位置は、１人または複数の第２のユーザにストリーミングされている第２のストリームに基づく。この点、第２のユーザは、同一メディアコンテンツ／ビデオを見ている複数のユーザの大きなプールから選択されてもよい。このような選択は、最適化手法に基づいてもよい。例えば、第２の位置は、メディアコンテンツのショットまたはシーンに基づいてもよい。さらに、第２の位置は、他の複数のユーザにストリーミングされている複数のメディア・コンテンツ・ストリームを解析することにより決定されてもよい。換言すれば、シーク要求を受信するサーバは、ユーザにより要求されたシーク位置と適合するストリームを見つけ出すために、他の複数のユーザに送信されている複数のストリームを探索する。
【００７７】
ステップ６０８では、第２のストリームが、第１のユーザおよび第２のユーザの両方にストリーミングされる。このようなストリーミングは、第１のユーザと第２のユーザの間でメディアコンテンツの視聴を同期させる。１つまたは複数の実施形態では、ストリーミングは、第１および第２のユーザに第２のストリームをマルチキャストすることにより行われてもよい。あるいは、Ｐ２Ｐネットワークが、両方のユーザに第２のストリームをストリーミングするために使用されてもよい。第２のストリームをストリーミングするのに加えて、第２の位置／シーク位置に基づき、第１のユーザに広告がストリーミングされてもよい。このような広告は、第１のユーザの複数の属性に基づき、第１のユーザに特に向けられた（directed）、有向広告（directed advertisement）でもよい。さらに、選択された広告は、シーク位置と、第２のユーザが受信している第２のストリーム内の第２の位置との間の時間差に基づいてもよい。  
結論
ここでは、本発明の好ましい複数の実施形態の説明が締めくくられる。本発明の好ましい実施形態の以上の説明は、例示および説明のために提示された。本発明の好ましい実施形態の以上の説明は、網羅的なものでも、開示した厳密な形態に本発明を限定するものでもない。以上の開示に照らして、多くの修正および変形が可能である。本発明の範囲は、この詳細な説明によって限定されるものではなく、むしろ本明細書に添付の特許請求の範囲によって限定されるものである。上記の説明、例およびデータは、本発明の製造、および組成物の用途の完全な説明を提供する。本発明の多くの実施形態は、本発明の精神および範囲を逸脱することなく作成することができるので、本発明は、以下に添付される特許請求の範囲にある。
【図１】
2013542633.tif 000003
【図２】
2013542633.tif 000004
【図３】
2013542633.tif 000005
【図４】
2013542633.tif 000006
【図５】
2013542633.tif 000007
【図６】
2013542633.tif 000008
【国際調査報告】
2013542633.tif 000009