(58)【調査した分野】(Int.Cl.,DB名)
前記インデックスが時間経過に伴う前記メディアコンテンツのVBRバージョンのビットレートを表すデータを含み、前記予測することが前記メディアコンテンツの複数のVBRバージョンにおける近づきつつある一部分のビットレートを予測する、請求項1に記載の方法。
前記インデックスが時間経過に伴う前記メディアコンテンツのVBRバージョンのビットレートを表すデータを含み、前記予測することが前記メディアコンテンツの複数のVBRバージョンにおける近づきつつある一部分のビットレートを予測する、請求項7に記載のコンピューティングデバイス。
前記インデックスが時間経過に伴う前記メディアコンテンツのVBRバージョンのビットレートを表すデータを含み、前記予測することが前記メディアコンテンツの複数のVBRバージョンにおける近づきつつある一部分のビットレートを予測する、請求項13に記載の非一時的コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0010】
以下の詳細な説明においては、添付図面を参照するが、これは本書の一部を形成する。詳細な説明、図面、および請求項で説明した例証のための実施形態は、限定的なものではない。ここで提示された主題の精神または範囲を逸脱することなく、その他の実施形態を利用することもでき、またその他の変更を行うこともできる。本発明の開示の態様は、本書で概略的に説明したとおり、また図面に図示されているとおり、多種多様な異なる構成で配置、置換、組合せ、分離、および設計ができることが簡単に理解され、その全てが本書で明示的に意図される。
【0011】
一般に、オーディオまたはビデオなどのリアルタイムメディアの符号化には、未加工のデジタル化されたバージョンのメディアを伝送や格納に適した圧縮形態に変換する過程が関与しうる。エンコーダ・デコーダ(コーデック)は、メディアを表現する未加工のビットストリームを受信して、未加工のビットストリームにあるビットよりも少ないビットを持つ各時間間隔を表現するようにビットストリームのそれぞれの連続的な時間間隔を圧縮するアルゴリズムを適用するように演算しうる。この圧縮プロセスは、限定的な伝送速度または「帯域幅」に対応するネットワークを介して十分に高速にメディアが転送され受信されるようにすることで、リアルタイムでのメディアストリーミングおよびプレイアウトの促進に役立つことができる。特に、少なめのビットを持つメディアの連続的な時間間隔を表現することで、要求するデバイスへのリアルタイムでのメディアの伝送に対応するのに必要な帯域幅はより少ないものとなる。
【0012】
実際には、リアルタイムメディアを符号化するために使用されるコーデックは、固定ビットレート(CBR)符号化または可変ビットレート(VBR)符号化を適用することができる。CBR符号化は、メディアの連続的なそれぞれの時間間隔を所定数のデータに変換し、その数量はメディアの持続時間全体においてほぼ同じである。こうして、CBR符号化されたメディアのストリーミングのためのネットワーク帯域幅の要件は、時間経過に伴ってもほぼ同じとなる。
【0013】
一方で、VBR符号化には、メディアのある一部の時間間隔を符号化するのに、メディアの他の時間間隔を符号化するためのものよりも高いビットレートを使用する。VBR符号化では、それによって利益を受けうる(例えば、より詳細な細部のビデオ、または高速の動画など)メディアの一定セクションを表現するためにより多くのデータが使用されるため、結果的にCBR符号化と比較して高い品質が得られうる。さらに、VBR符号化では、メディアの高めのビットレートセクションのストリーミングにより多くの帯域幅を使用できる一方で、メディアの低めのビットレートセクションのストリーミングにより少ない帯域幅を使用できるため、より適切にネットワーク帯域幅が使用されうる。
【0014】
サーバーからクライアントデバイスへのメディアの伝送に効果的に利用可能なネットワーク帯域幅は、サーバーでの負荷の変化、クライアントでの負荷の変化、およびサーバーとクライアントとの間の通信路での負荷の変化を含むがこれに限定されない数多くの要因によって、時間経過とともに変化しうる。
【0015】
ネットワーク帯域幅のこうした変動に順応するために、ストリーミングメディアサーバーは、メディアコンテンツの様々な異なるビットレートバージョン(すなわち、異なる符号化)を持つ(またはその場で生成する)ことができ、また要求されているクライアントデバイスに現在のネットワーク帯域幅で対応が可能な最高ビットレートバージョンをストリーム配信しうる。実際には、例えば、クライアントデバイスは、ストリーミング用にアクセス可能な様々なバージョンのビットレートを指定するインデックスを持つことができ、またクライアントは、ネットワーク帯域幅を決定して、決定されたネットワーク帯域幅が対応すべき最高ビットレートバージョンを選択しうる(例えば、決定されたネットワーク帯域幅より小さいかまたは等しいビットレートを持つバージョン)。次に、クライアントは、サーバーが要求されたバージョンをストリーム配信するよう要求をサーバーに送信することができ、またサーバーは、それに応答してその要求されたバージョンをクライアントにストリーム配信しうる。代替的に、クライアントは、ネットワーク帯域幅を決定して、サーバーに決定されたネットワーク帯域幅の指示を送信することができ、またサーバーは、決定されたネットワーク帯域幅が対応すべき最高ビットレートバージョンを選択してクライアントにストリーム配信しうる。
【0016】
ネットワーク帯域幅に基づきビットレートバージョンを選択するこのプロセスは、ストリーミングメディアセッション(静的アダプティブストリーミングプロセスとして)の開始時に一回、またはストリーミング中に変化するネットワーク状態を調節するために(動的アダプティブストリーミングプロセスとして)動的に実行できる。さらに、このプロセスは、CBR符号化メディア用、およびVBR符号化メディア用に実行できる。
【0017】
CBR符号化メディアに関連してこのプロセスを理解するために、
図1のグラフを考慮するが、これは5分の間隔に対して2000kbps(T1)、3500kbps(T2)、および5000kbps(T3)といった異なる3つのビットレートで符号化された一片のビデオメディアについてのビットレートを示す。メディアコンテンツのこれらのかなり固定的なビットレート符号化バージョンを仮定すると、開始時の利用可能なネットワーク帯域幅が4000kbpsである場合に、クライアントは、サーバーにバージョンT2のストリーム配信を要求しうるが、それは、利用可能な4000kbps帯域幅でのストリーム配信が可能な最高ビットレートバージョンであるため、またそのためシームレスなプレイアウトのためにクライアントに十分に早く到達できるためである。ある時点で、ネットワーク帯域幅が3000kbpsに減少した場合、クライアントはサーバーにストリーミングバージョンT1への移行を要求しうるが、これは、それが利用可能な3000kbps帯域幅でストリーム配信可能な最高ビットレートバージョンとなるためであり、またシームレスなプレイアウトのために十分に早くクライアントに到達できるためである。こうして、メディアコンテンツの低めのビットレートバージョンにもかかわらず、ネットワーク帯域幅が減少した時でもストリーミングは継続できる。同様に、ネットワーク帯域幅が増大した場合、ストリーミングは元のメディアコンテンツの高めのビットレートバージョンに移行する。
【0018】
この同一のプロセスは、VBR符号化メディアに関連して実行できる。例えば、
図2は、5分の間隔を示す異なる3つのビットレートレベルで符号化された1片のメディアコンテンツの異なるビットレートを描写するものである。この例に示すとおり、各バージョンの実際のビットレートは、時間経過に伴い著しく変化する。その時点で、各バージョンを通して描写されている点線は、各バージョン(ここでも2000kbps(T1)、3500kbps(T2)、および5000kbps(T3))について何が「ターゲット」ビットレート(例えば、平均ビットレート)と考えられうるかを表す。これらのターゲットビットレートを変化するネットワーク帯域幅と比較する点として使用した時、開始時の利用可能なネットワーク帯域幅が4000kbpsである場合、クライアントはバージョンT2をストリーム配信するようサーバーに要求しうるが、これは、利用可能な4000kbps帯域幅において、それが少なくともそのターゲットビットレート(3500kbps)でストリーム配信可能な最高ビットレートバージョンであるためである。また繰り返しになるが、ネットワーク帯域幅がある時点で3000kbpsに減少した場合、クライアントはストリーミングバージョンT1に移行するようサーバーに要求しうるが、それは利用可能な3000kbps帯域幅においてそのバージョンがその時点で少なくともそのターゲットビットレート(2000kbps)でストリーム配信可能な最高ビットレートバージョンであるためである。
【0019】
ところが、VBR符号化メディアのストリーミングについてのこのプロセスの適用は、実際上にはさらに複雑なものとなる場合があるが、これは、変化するメディアビットレートおよびネットワーク帯域幅が、クライアントの再生バッファ(アダプティブストリーミング バッファ)の枯渇の原因となり、そのために再生が停止されるというリスクが高まるためである。特に、クライアントが比較ポイントとして平均ビットレートを使用している場合、ネットワーク帯域幅よりも高い実際のビットレートを持つメディアコンテンツの任意のセクションは、要求されるビットレートでのプレイアウトに十分なだけ早くクライアントに到達しない可能性がある。その結果、クライアントが追加的なデータの到達を待機する間、再生が中断されることになる。例えば、
図2に示すVBRバージョンでは、現在のネットワーク帯域幅が4000kbpsであり、そのためクライアントはバージョンT2(ターゲットビットレート3500kbpsを持つ)を選択する場合、メディアビットレートがネットワーク帯域幅4000kbpsを上回りクライアントの再生バッファを危うい状態に枯渇させる可能性がある約100秒から170秒までの間で、問題が発生しうる。
【0020】
この問題に対処する一つの方法は、メディアコンテンツの各VBRバージョンのための比較ポイントとして、平均ビットレートの倍数、または最大ビットレートなどの「伝統的要因」を適用することである。例えば、
図3を参照するが、各VBRバージョンの点線はそのバージョンの最大ビットレートを表す。ネットワーク帯域幅との比較ポイントとしてこの最大ビットレートを使用することで、選択されたVBRバージョンは決定された最新のネットワーク帯域幅よりも常に小さいかまたは等しくなるため、クライアントがその再生バッファの枯渇を避ける上で役立つ。一方、この伝統的なアプローチのマイナス面は、このプロセスでは利用可能な帯域幅が最適に使用されないことである。
【0021】
本発明の方法は、バッファの枯渇のリスクを低減しつつネットワーク帯域幅の使用をより最適なものとするのに役立ちうる先進的なプロセスを提供する。予測アダプティブメディアストリーミングと呼ぶことのできるこの方法には、メディアの近づきつつある一連のセクションのそれぞれ(例えば、時間間隔(「時間限界」)またはデータ量間隔(「データ限界」))について、各VBRバージョンのどのビットレートがそのセクションにあるかを予測する過程と、およびそれらの予測ビットレートをネットワーク帯域幅との比較ポイントとして使用して、クライアントにストリーム配信されるVBRバージョンが選択されるようにする過程とが関与しうる。このプロセスは、メディア全体にわたり連続的なビットレート予測が提供されるように、また近づきつつあるビットレートの最新の予測をストリーム配信されるVBRバージョンの選択の基準として使用するように、スライディングウィンドウベースで(または代替的には、非重複(すなわち、相互排他的な)ウィンドウで)有利に反復されうる。
【0022】
図4は、各VBRバージョンの近づきつつあるビットレートが、30秒または5メガバイトのスライディングウィンドウ全体について、スライディングウィンドウに基づき近づきつつある平均ビットレートとして毎秒1回予測される、このプロセスの例の説明に役立つ。
図4のグラフで、予測ビットレートは、各VBRバージョンを通して点線でプロットされており、バージョン毎のビットレート曲線を効果的に円滑なものとしている。任意の一時点において、VBRバージョン毎のこの予測ビットレートは、そのVBRバージョンでのメディアの近づきつつあるウィンドウについての平均ビットレートを表すものであり、よって、メディアコンテンツ全体にわたり近づきつつある平均ビットレートの変化に伴い、予測ビットレートはメディアコンテンツ全体で変化する。
【0023】
図4に示す予測ビットレートで、簡単にするために、全体にわたりネットワーク帯域幅が4000 kbpsであると仮定した場合、約20秒の時点でVBRバージョンT2が選択されることになるが、これは、3つのVBRバージョンのうちバージョンT2の予測ビットレートがネットワーク帯域幅より少ないかまたは等しくなる最高予測ビットレートを持つことになるためである。ところが、約90秒の時点からバージョンT2の予測ビットレートはネットワーク帯域幅を上回ることになり、代わりにバージョンT1が選択されるが、これは、その時点でバージョンT1がネットワーク帯域幅より少ないかまたは等しくなる最高予測ビットレートを持つためである。次に、約140秒の時点で、バージョンT2の予測ビットレートが再び減少してネットワーク帯域幅を下回ると、バージョンT2がネットワーク帯域幅より少ないかまたは等しくなる最高予測ビットレートを持つようになるため、再び選択されるようになる。また、約180秒の時点からバージョンT3が減少してネットワーク帯域幅を下回るようになるが、そのため、バージョンT3がネットワーク帯域幅より少ないかまたは等しくなる最高予測ビットレートを持つようになるため、選択されることになる。
【0024】
この例で明らかなとおり、約180秒の時点で始まるバージョンT3の選択は、(メディアのより高いビットレートバージョンのストリーミングにより)その時点での再生品質を最大化するのに役立ちうる。この点は、考察したアダプティブストリーミング他のアプローチでは未だに発生していない。これは、一例として、本発明の方法がメディアストリーミングを改善するために使用できることを示す。
【0025】
また、上記の例から数多くの変形物が可能であることが注目される。例えば、メディアコンテンツの近づきつつある各ウィンドウについてのビットレートの予測は、平均値以外の測定基準でもよい。例えば、近づきつつある各ウィンドウについて、予測は、メディアコンテンツの最大ビットレートでもよく、また平均、最大、またはその他の特性に基づくより複雑な統計的予測でもよい。
【0026】
別の例として、予測間隔やウィンドウサイズのパラメータの変動も同様に考えられる。例えば、各予測を行う間隔は定数と変数のどちらでもよく、1秒以外でもよく、また時間間隔とデータ間隔のどちらでもよい。最適には、間隔は、最も適切な近づきつつあるビットレートの予測が提供されるように、処理能力およびその他のリソースが許容しうる程度に小さくしうる。さらに、近づきつつあるビットレートの予測がなされるウィンドウのサイズは、固定サイズと変動サイズのどちらでもよく、また30秒または5メガバイト以外でもよい。例えば、ウィンドウサイズは、バッファの枯渇を避けるのに役立つように、近づきつつあるビットレートを現実的に測定するのに十分小さいものとしうる。
【0027】
実際には、VBRバージョン毎の予測ビットレートの生成は、各VBRバージョンの可変ビットレートを定義するインデックスに応じて、クライアント、サーバー、またはその他の任意のコンピューティングエンティティによって実行されうる。
【0028】
例えば、クライアントは、サーバーがメディアコンテンツをクライアントにストリーム配信している間にこのプロセスを実施でき、予測の各ウィンドウは、例えばそれまでに受け取ったメディアコンテンツの最新ポイント(またはそのポイントからのある程度のオフセット)からでありうる。例えば、上記のパラメータ例を使用して、クライアントは毎秒、各VBRバージョンについて、クライアントによって受信された最新のメディアファイル位置を開始点としメディアファイルの前方に30秒または5メガバイトだけ伸びる、近づきつつあるセクションについてのメディアの代表的なビットレートを予測しうる。(その結果、予測ウィンドウには、サーバーをすでに離れているがクライアントに未だ到着していない1片のメディアコンテンツが含まれることがある。)また、クライアントは、ネットワーク帯域幅の最新の測定基準より小さいかかまたは等しい最高予測ビットレートを持つVBRバージョンを選択することができ、またその選択されたVBRバージョンをクライアントにストリーム配信するよう、サーバーに要求しうる。
【0029】
別の方法として、クライアントは、ストリーミングメディアセッションが開始される前などのある一定の時点で、メディアコンテンツの一連の各ウィンドウについてこの予測を(VBRバージョン別に)実施することができ、それによって各VBRバージョンについて
図4で点線で表したものなどのデータが確立される。ストリーミングの進行に伴い、クライアントは、連続的に(例えば、同一または別の予測間隔で)、それまでに確立された予測を、ネットワーク帯域幅の最新の測定基準より小さいかまたは等しい最高予測ビットレートを持つVBRを選択するための基準として使用し、またサーバーにその選択されたVBRバージョンをクライアントにストリーム配信するよう要求しうる。
【0030】
なおも別の方法として、サーバーは、サーバーがメディアコンテンツをクライアントにストリーム配信している間にこのプロセスを実施でき、予測の各ウィンドウは、例えばそれまでにサーバーからストリーム配信されたメディアコンテンツでの最新ポイント(またはそのポイントからのある程度のオフセット)からでありうる。それぞれの予測間隔で、サーバーは各VBRバージョンの近づきつつあるビットレートを予測することができ、また、ネットワーク帯域幅の最新の測定基準より小さいかかまたは等しい最高予測ビットレートを持つVBRバージョンを選択することができ、また選択されたVBRバージョンをクライアントにストリーム配信しうる。
【0031】
さらに別の方法として、サーバーまたは別の実体は、ストリーミングメディアセッションが開始される前などのある一定の時点で、メディアコンテンツの一連の各ウィンドウについてこの予測を(VBRバージョン別に)実施することができ、それによって各VBRバージョンについて
図4で点線で表したものなどのデータが確立される。その予測ビットレートデータは、ストリーミングの進行に伴いVBRバージョンを選択し要求する基準としてクライアントで使用するために、クライアント(例えば、メディアファイルインデックスの一部として、またはその他の何らかの方法で)に供給されてもよく、また、ストリーミングの進行に伴いクライアントにストリーム配信するVBRバージョンを選択するための基準としてサーバーで使用するために、サーバーに供給されてもよい。その他の方式も同様に可能である。
【0032】
実際には、メディアコンテンツの所定のVBRバージョンについての近づきつつあるビットレートの予測には、時間経過に伴うVBRバージョンの近づきつつあるビットレートを示す(例えば、指定またはその他の方法で定義または確立する)データが考慮される。上述のとおり、例えば、問題のメディアコンテンツは関連するインデックスを持つことができ、またそのインデックスは、予測ビットレートを確立するために使用できるデータを供給しうる。
【0033】
例えば、各VBRバージョンのメディアコンテンツは、セグメントまたはチャンクと呼ばれる連続的な部分に分割でき、また各部分についてインデックスは、その部分のデータサイズおよびその部分の持続時間を指定しうる。インデックスを参照することにより、コンピューティングデバイスは、VBRバージョンの部分当たりのビットレートを、示されたデータサイズを持続時間で割ったものとして計算しうる。さらに、コンピューティングデバイスは、適用される時間またはデータウィンドウを定義する多数のこうした部分全体にわたり、ビットレートの平均またはその他の統計的測定基準を計算しうる。こうして、ビットレート予測は、複数の近づきつつあるチャンクのVBRバージョンの長さにわたるウィンドウを含みうる。
【0034】
別の例として、各VBRバージョンについて、メディアファイルインデックスは、ファイル内でメディアコンテンツのそれぞれの時間位置がどの程度離れて位置するかを示すファイルオフセットなど、メディアコンテンツファイル内のファイル位置に対して、メディアコンテンツの時間位置をマッピングしうる。こうしたインデックスを参照することで、コンピューティングデバイスは、表示されたセッションの開始ファイル位置および終了ファイル位置の間の差としてセクションのデータサイズを計算し、そのデータサイズをその部分の対応する時間で割ることによって、メディアファイルの任意のセクションについてビットレートを計算しうる。より特定的には、セクションの開始時間がxの場合、開始ファイルの位置はfp(x)、時間はn、および終了ファイル位置はfp(x+n)、セクションのビットレートは(fp(x+n)− fp(x))/nである。さらに、ファイル位置がビット数ではなくバイト数で測定される場合、この値は8を掛けることによってビット数に変換できる。(ただし、本書で使用するとき、「ビットレート」という用語は、必ずしもビットに限定されず、また同様に、ビット数、バイト数、あるいはその他のデータ量のどれであるか、また毎秒またはその他の時間単位毎のどれであるかによらず、「データ転送速度」として広範囲に特性付けられる。)
【0035】
次に、
図5は、本発明の方法の例を実施できるネットワーク配置の簡略化したブロック図である。
図5に示すとおり、ネットワーク配置は、クライアントデバイス12、ネットワーク(例えば、インターネットまたはその他のネットワーク)14、およびサーバー16を含み、サーバーは、特定のメディアコンテンツの複数のVBRバージョン18へのアクセスを持ち、またクライアントは、各VBRバージョンについて様々なビットレートを定義するメディアインデックス20へのアクセスを持つ。
【0036】
この配置により、クライアント12は、それを通してサーバー16がネットワーク14を介してメディアコンテンツをクライアントにストリーム配信する、ストリーミングメディアセッションをセットアップしうる。例えば、クライアントは、RTSP DESCRIBE要求をサーバーに送信し、それに応答して、サーバーがクライアントにストリーム配信できる一つ以上のストリーム(例えば、オーディオおよびビデオなど)を指定するRTSP DESCRIBE返答をサーバーから受信することができ、例えばこうしたストリームの一つは問題のメディアコンテンツを定義する。さらに、クライアントは、メディアコンテンツ用のインデックス20を要求し、それをサーバーまたは別の実体から受信しうる。
【0037】
インデックスを参照することにより、次にクライアントは、メディアコンテンツの各VBRバージョンについて、メディアコンテンツの第一の部分(例えば、第一のウィンドウ)のビットレートを予測しうる。さらに、クライアントは、ネットワーク帯域幅の現在の測定基準を決定しうる。次に、クライアントは、各VBRバージョンの近づきつつある部分についての予測ビットレートをネットワーク帯域幅と比較し、決定されたネットワーク帯域幅より少ないかまたは等しいその近づきつつある部分の予測ビットレートを持つ一つ以上のVBRバージョンを決定するようにしうる。さらに、一つ以上の決定されたVBRバージョンについて、クライアントは次に、近づきつつある部分で最高予測ビットレートを持つそのVBRバージョンを選択しうる。次に、クライアントは、要求のパラメータ中でのVBRバージョンの指定などによって、サーバーが選択されたVBRバージョンのストリーム配信をするよう、サーバーにRTSP PLAY要求を送信しうる。次に、サーバーは、クライアントに対してメディアコンテンツの要求されたVBRバージョンのストリーミングを開始することができ、クライアントは、ストリーム配信されたメディアコンテンツの受信、バッファリング、および再生を開始しうる。
【0038】
インデックスを継続的に参照することにより、クライアントは次に、メディアコンテンツの近づきつつある次の部分についてVBRバージョンのビットレートを同様に予測することができ、クライアントは再び、ネットワーク帯域幅の現在の測定基準を決定でき、またクライアントは再び、その近づきつつある次の部分について最高予測ビットレートを持つ、決定されたネットワーク帯域幅よりも小さいかまたは等しいVBRバージョンを選択しうる。
【0039】
選択されたVBRバージョンが、サーバーが現在クライアントに対してストリーミングをしているバージョンである場合には、クライアントは何の動作もとる必要がない。ところが、選択されたVBRバージョンが、サーバーが現時点でクライアントにストリーミングしているバージョンと異なる場合には、クライアントは、選択されたVBRバージョンのストリーミングへのサーバーの移行をもたらす制御信号をサーバーに送信しうる。例えば、クライアントは、現在のVBRバージョンを指定しサーバーに新しい選択されたVBRバージョンに移行するよう要求するスイッチストリームヘッダーを含むRTSP PLAYを、サーバーに送信できる。別の方法として、クライアントは、別のRTSP要求、RTMP要求、RTCP要求、HTTP要求、またはサーバーが新しいVBRバージョンのストリーミングに移行するための要求として解釈するよう取り決められたその他の任意のコマンドをサーバーに送信することもできる。次に、サーバーは、それに応じて新しいVBRバージョンのストリーミングに移行しうるが、(新しく選択されたVBRバージョンを古いVBRバージョンに効果的に重ね継ぐことで)時間経過に伴いシームレスに移行することが最も望ましい。
【0040】
クライアントデバイス12は、ストリーミングメディアの要求および受信を行い、メディアが受信されている時にメディアをプレイアウトするように配置された任意のコンピューティングデバイスでよい。例えば、クライアントデバイスは、パーソナルコンピュータ、タブレットコンピュータ、携帯電話またはその他の通信デバイス、統合型のオーディオまたはビデオプレーヤー、ゲーム用デバイス、または既知のあるいは今後開発されるその他の任意のデバイスとしうる。
図6は、実際的な本方法の態様の実行を促進するためにこうしたデバイスに含めることができるコンポーネントを示す、簡略化したブロック図である。
【0041】
図6に示すとおり、クライアントデバイスの例には、ネットワーク通信インターフェース22、ユーザーインターフェース24、プロセッサ26、およびデータストレージ28が含まれ、その全ては、システムバスまたはその他の接続機構30により一つに結合しうる。
【0042】
ネットワーク通信インターフェース22は、クライアント12が、ネットワーク14上で、またネットワーク14を介して実体(例えばサーバー16)と通信するよう配置された、有線または無線のインターフェースを備えうる。例えば、ネットワーク通信インターフェース22は、ローカルエリアネットワークで、さらには、ルーターおよび/または一つ以上のその他のネットワーク要素を介してネットワーク14上の実体との通信用に、有線または無線のイーサネット(登録商標)インターフェースを備えうる。別の例として、ネットワーク通信インターフェースは、LTE、WiMAX、CDMA、GSM(登録商標)、または同種のものなどのプロトコルに従った無線アクセスネットワークとエアインターフェース通信に従事する、またネットワーク14上の実体との無線アクセスネットワークを介した、セル方式無線インターフェースを備えうる。その他の例も同様に考えられる。
【0043】
ユーザーインターフェース24は、クライアント12がクライアントのユーザーと相互作用できるようにしうるが、従って、ディスプレイスクリーン、音声スピーカー、およびこれに類するものなどの出力コンポーネント、ならびにキーボード、カメラ、タッチパッドまたはタッチスクリーン、およびこれに類するものなどの入力コンポーネントを備えうる。さらに、ユーザーインターフェース24には、ユーザーへのデジタル形式のメディアのプレイアウトを促進するための、メディアをデジタル形式からアナログ形式に変換する回路を含みうる。
【0044】
プロセッサ26は、一つ以上の汎用プロセッサ(例えば、INTELマイクロプロセッサ)および/または一つ以上の特殊目的プロセッサ(例えば、アプリケーション固有の集積回路、デジタル形式の信号プロセッサなど)を備えうる。プロセッサ26に複数のプロセッサが含まれる場合、プロセッサは、組み合わせで(例えば、並列)または別個に作動するよう配置しうる。さらに、プロセッサ26は、ネットワーク通信インターフェース22または一つ以上のその他のコンポーネントと全部または一部を統合しうる。
【0045】
データストレージ28は次に、磁気、光、有機、フラッシュ、または現時点で既知の、または今後開発されるその他のタイプの記憶装置など、一つ以上の揮発性および/または不揮発性の記憶装置コンポーネントを備えうるが、全部または一部をプロセッサ26と統合することもでき、および/またはクライアント12から取り外し可能とすることも、クライアント12と外部的に接続する(有線または無線の手段によって)こともできる。図示のとおり、データストレージ28は、プログラム命令32およびプログラムデータ34を含む。一般に、プログラム命令32は、本書に記載した様々なクライアント機能を実行するためにプロセッサ26によって実行可能としうる。代替的に、一部または全てのこうした機能は、様々なその他のマシンの実装により実行することもできる。次に、プログラムデータ34は、プレイアウト用にバッファされた受信済みメディアコンテンツ、メディアファイルインデックス、およびユーザーによるストリーミングメディアまたはこれに類するものの要求を促進するためにクライアントがユーザーインターフェース24上に提示可能なグラフィカルユーザーインターフェースを定義するデータなどの、データを含みうる。
【0046】
サーバー16は、メディアのストリーミングを求める要求を受信し、プレイアウトのために要求したメディアをストリーム配信するように配置される、任意のコンピューティングデバイスとしうる。そのため、サーバーは、サーバークラスのコンピュータであることが適当である。ところが、サーバーは、上述のデバイスの一つなど、サーバーとして動作する論理回路とともに配置されたより単純なものでもよい。
図7は、実際的な本方法の態様の実行を促進するために、こうしたサーバーに含めることができるコンポーネントを示す、簡略化したブロック図である。
【0047】
図7に示すとおり、サーバーの例には、ネットワーク通信インターフェース40、プロセッサ42、およびデータストレージ44が含まれ、その全ては、システムバスまたはその他の接続機構46により一つに結合しうる。
【0048】
ネットワーク通信インターフェース40は、サーバー16がネットワーク14上またネットワーク14を介して実体(例えばクライアント12)と通信するように配置された、有線または無線のインターフェースを備えうる。そのため、ネットワーク通信インターフェース40は、有線または無線のイーサネット(登録商標)インターフェース、セル方式無線インターフェース、またはその他の任意のタイプのネットワークインターフェースを備えうる。
【0049】
プロセッサ42は、一つ以上の汎用プロセッサおよび/または一つ以上の特殊目的プロセッサを備えうるが、ネットワーク通信インターフェースと全部または一部を統合しうる。また、データストレージ44は、一つ以上の揮発性および/または不揮発性の記憶装置コンポーネントを備えうるが、全部または一部をプロセッサ42と統合しうる。図示のとおり、データストレージ44は、本書に記載した様々なサーバー機能を実行するための実行可能なプログラム命令48や、またプレイアウトのためにクライアント12に対してストリーム配信するためのメディアコンテンツの様々なVBRバージョンなどのプログラムデータ50を含む。
【0050】
次に、
図8は、本発明の方法の実施例に従い、サーバーからクライアントへのメディアコンテンツのストリーミングを制御するために実行できる機能を描写した流れ図であり、ここで、サーバーはメディアコンテンツ複数のVBRバージョンへのアクセス権を持つ。
【0051】
図8に示すとおり、ブロック60で、方法例には帯域幅閾値を決定する過程が関与する。帯域幅閾値は、ネットワーク帯域幅のリアルタイム(すなわち、現時点または実質的に現時点)での尺度、または例えばこうした尺度の何らかの派生物としうる。そうであるため、帯域幅の閾値は、随時変化しうるかまたは一定で、おそらくは所定の値に設定することさえもできる。
【0052】
クライアントにより実行される場合、帯域幅閾値を決定するというこの機能には、クライアントがその再生バッファを枯渇させた後でバッファがサーバーから入ってくるデータで満たされるようにし、バッファが満たされるレートを測定する手順、またはサーバーからクライアントへのデータの到着率を他の方法で測定する手順が関与しうる。次にクライアントは、測定したレートまたは測定したレートの何倍かまたはオフセットバージョンが、帯域幅閾値であるとみなしうる。別の方法として、クライアントは、帯域幅閾値をその他の何らかの方法で決定でき、および/または別の実体により帯域幅閾値についての情報を受けることができる。一方、機能がサーバーにより実行される場合、サーバーは、ネットワーク帯域幅または帯域幅閾値についてのレポートをクライアントからまたはサーバーとクライアントの間の通信経路内の一つ以上のその他の実体から受信しうるか、またはサーバーはその他の任意の方法で帯域幅を決定できる。
【0053】
ブロック62(これはブロック60の前に来ることもある)で、方法の例にはメディアコンテンツの各VBRバージョンについて、メディアコンテンツの近づきつつある部分のビットレートを予測する過程がさらに関与する。上述のとおり、例えば、これにはメディアファイルインデックスを参照してVBRバージョン別に近づきつつある部分のビットレートを予測する過程も含まれうる。さらに、予測ビットレートが、各VBRバージョンの一連の部分(例えば、スライディングウィンドウ)のそれぞれについてすでに確立されている場合、この機能には、既に確立された予測ビットレートデータを参照して、VBRバージョン別に近づきつつある部分について予測ビットレートを決定する過程が関与しうる。
【0054】
次に、ブロック64で、方法の例には、帯域幅閾値よりも小さい予測ビットレートを持つこうしたそれぞれのVBRバージョンでメディアコンテンツの近づきつつある部分に基づき、メディアコンテンツの一つ以上のVBRバージョンを特定する過程が関与する。(ここで「より小さい」の検定は、帯域幅閾値を望ましいレベルに、またはそれよりもわずかに高く設定できることから、「より小さいかまたは等しい」も同様に含みうることに注意。) 特に、方法には、各VBRバージョンについての予測ビットレートをそれぞれ帯域幅閾値と比較して、近づきつつある部分が帯域幅閾値よりも小さい予測ビットレートを持つ、一つ以上のVBRバージョンを特定する過程が関与しうる。
【0055】
一つ以上のVBRバージョンを特定する機能では、VBRバージョンの近づきつつある部分が帯域幅閾値を満足するかどうか以外に一つ以上のその他の要因を考慮しうる。例えば、特定は、少なくとも部分的にクライアントの再生バッファが現時点でどの程度占有されているかの判断に基づきうる。これに関連して、クライアントの再生バッファが閾値エンプティである(例えば、危険なまでに枯渇状態に近い)場合、別の形で選択されるよりも低めのビットレートバージョンを選択することが有利である場合があるが、これは、低めのビットレートバージョンはよりゆっくりと再生され、そのためバッファの占有に役立ちうるためである。こうして、特定の機能がクライアントによって実行される場合、クライアントはその再生バッファが閾値エンプティであるかを判断し、そうである場合には、可能性としてより低めのビットレートのVBRバージョンが強制的に選択されるように、何らかの要因によって帯域幅閾値を下げて調節しうる。同様に、特定の機能がサーバーによって実行される場合、クライアントはそのバッファ占有量をサーバーに報告し、サーバーは、バッファ占有量が考慮されるよう、同様の調節を適用しうる。その他の要因も同様に考慮されうる。
【0056】
ブロック66で、次に方法の例には、一つ以上の特定されたVBRバージョンについて最高ビットレートのVBRバージョンを選択する過程が関与する。一つのVBRバージョンのみが特定された場合には、この機能はそのVBRバージョンを選択することになる。これに対して、複数のVBRバージョンが特定された場合には、この機能は一つ以上の特定されたVBRバージョンのうち最高ビットレートを持つVBRバージョンを選択する過程が関与することになる。
【0057】
ブロック66のこの機能は、異なる方法でブロック64の機能と組み合わせることができることが注目される。例えば、この機能には、まずVBRバージョンをランク付けしてから、最高ビットレートのVBRバージョンから最低ビットレートのVBRバージョンまでのランク順で、VBRバージョンの近づきつつある部分が帯域幅閾値より小さな予測ビットレートを持つかどうかをチェックする過程が関与しうる。順番に進んで、その近づきつつある部分についてのこの帯域幅閾値の検定を満たすVBRバージョンが見つかると、次に機能にはそのVBRバージョンをバージョンとして選択する過程が関与することになる。このプロセスで、ブロック64の機能には、帯域幅閾値よりも小さい予測ビットレートを持つVBRバージョンのうち最高ランクのものを特定する過程が、またブロック66の機能には、その特定されたVBRバージョンを選択する過程が関与しうる。
【0058】
ブロック68では、方法の例にはさらに、サーバーに選択されたVBRバージョンをクライアントにストリーム配信させる手順が含まれうる。例えば、この機能がクライアントにより実行される場合、この機能は、選択されたVBRバージョンをクライアントにストリーム配信するようサーバーに指図する制御コマンドをサーバーに送信する過程が関与しうる(またはVBRバージョンが現時点でクライアントにストリーム配信されているものと同じ場合には何も動作しない)。一方で、この機能がサーバーにより実行される場合、この機能には、選択されたVBRバージョンをクライアントにストリーム配信するよう移行する過程が関与しうる(またはそのバージョンが現時点でクライアントへのストリーム配信に使用されている場合は、VBRバージョンのストリーム配信を続ける)。
【0059】
ブロック70では、次に方法の例には、メディアコンテンツファイルの最後に達するまで、メディアコンテンツの近づきつつある次の部分に進む過程が関与しうる。次に、方法には、ブロック60で開始されるプロセスを反復する過程が関与しうる。上述のとおり、メディアコンテンツの各部分は時間またはデータ量に対して定義でき、また部分は分離することも重ねることもできる(スライディングウィンドウとして)。
【0060】
次に、
図9は、サーバーからデバイスへのメディアコンテンツのストリーミングを制御するために、本発明の方法の実装例に従い実行されうる機能を描写した別の流れ図である。この方法は、例えば、クライアント12のプロセッサ26などのプロセッサにより様々な機能を実行できる、例えば、クライアント12のデータストレージなど非一時的コンピュータ可読媒体上に符号化された命令により定義することができる。
【0061】
図9に示すとおり、ブロック72では、方法の例には、サーバーからデバイスへの通信のためのネットワーク帯域幅を決定する機能が関与する。ブロック74では、次に、方法の例には、デバイスにより受信されるメディアコンテンツの部分よりも前に、メディアコンテンツの一つ以上の複数のVBRバージョンを特定する過程が関与し、その特定は、少なくとも部分的に、確認済みのネットワーク帯域幅より小さいかまたは等しいビットレートを持つ、一つ以上のVBRバージョンのそれぞれにあるメディアコンテンツの部分に基づく。ブロック76では、特定された一つ以上のメディアコンテンツのVBRバージョンから、最高ビットレートのメディアコンテンツのVBRバージョンを選択する過程が関与する。またブロック78では、方法の例には、サーバーに選択したメディアコンテンツのVBRバージョンをデバイスにストリーム配信するよう要求する制御信号をサーバーに転送する機能が関与する。ブロック80では、次に、方法の例には、メディアファイルの終わりに達するまで、メディアコンテンツの連続的に発生する次の部分に進み(例えば、スライディングウィンドウベースで、または次の分離した相互排他的な部分として)、ブロック72で方法を反復する過程が関与する。
【0062】
図8の流れ図に関連して上述した類似した機能の定義および考察は、
図9の機能に関しても同様に適用でき、またその逆もありうる。例えば、上記のとおり、一つ以上のVBRバージョンを特定する動作は、再生バッファ占有量に基づくものでありうる。また別の例として、ネットワーク帯域幅を決定する動作には、クライアントデバイスでのサーバーからのデータの到着レートを決定し、ネットワーク帯域幅をその測定された到着レートに基づく値として見なす過程が関与しうる。
【0063】
さらに、この方法の例および上述の例には、さらにその他の機能または考察した機能に対する変形物が含まれうる。例えば、上述のとおり、方法には、メディアコンテンツのインデックスを受信して格納する過程が関与することがあり、インデックスには、時間経過に伴い各VBRバージョンのビットレートを表すデータが含まれる。その場合、メディアコンテンツの一つ以上のVBRバージョンを特定する機能には、インデックスを参照して、VBRバージョン別にメディアコンテンツの近づきつつある部分のビットレートを予測するなど、特定のための基準としてインデックスを使用する過程や、それらの予測ビットレートを一つ以上のVBRバージョンを特定するための基準として使用する過程が関与しうる。
【0064】
上述のとおり、例えば、インデックス内のデータは、各VBRバージョンについて、連続的なチャンクのVBRバージョンのサイズおよび持続時間を指定でき、また一つ以上のVBRバージョンを特定する基準としてインデックスを使用する機能には、(i)インデックスから、メディアコンテンツのその部分について時間当たりのチャンクのサイズの測定基準(平均値または最大値など)を決定する過程と、(ii)決定された測定基準をメディアコンテンツの部分のビットレートの表現として使用する過程と、(iii)メディアコンテンツの部分のビットレートの表現が決定されたネットワーク帯域幅よりも小さいか等しい場合に、VBRバージョンが、メディアコンテンツのその部分が確認済みのネットワーク帯域幅より小さいかまたは等しいビットレートを持つものであることを確認する過程とが関与しうる。
【0065】
別の方法として、または追加的に、インデックス内のデータは、各VBRバージョンについて、メディアコンテンツの時間位置とメディアコンテンツのデータ位置との間のマッピングを指定でき、またインデックスを一つ以上のVBRバージョンを特定するための基準として使用する機能には、(i)インデックスから、メディアコンテンツの部分について時間範囲当たりのメディアコンテンツのデータサイズの測定基準(平均値または最大値など)を決定する過程と、(ii)測定基準をメディアコンテンツの部分のビットレートの表現として使用する過程と、(iii)メディアコンテンツの部分のビットレートの表現が決定されたネットワーク帯域幅よりも小さいか等しい場合に、VBRバージョンが、メディアコンテンツのその部分が確認済みのネットワーク帯域幅より小さいかまたは等しいビットレートを持つものであることを確認する過程とが関与しうる。
【0066】
最後に、
図10は本発明の方法の実施例に従い実行できる機能のさらに別の描写である。これらの機能は同様に、例えば、クライアント12など、コンピューティングデバイスにより実行することもできる。特に、こうしたデバイスのデータストレージは、方法の機能を実行するために、デバイスのプロセッサにより実行可能なプログラム命令を保存しうる。
【0067】
図10に示すとおり、ブロック82では、方法の例には、ネットワーク通信インターフェースによる、コンピューティングデバイスにサーバーからストリーム配信されているメディアコンテンツを受信する機能が関与する。それまでに受信されたメディアコンテンツについてのブロック82と並列に発生しうるブロック84では、方法の例にはさらに、ユーザーインターフェースで受信中のメディアコンテンツを再生する過程が関与する。また、ブロック85では、方法の例には、コンピューティングデバイスにサーバーからストリーム配信されているメディアコンテンツを受信しながら、周期的に(i)サーバーからコンピューティングデバイスへの通信のためのネットワーク帯域幅の測定基準を決定する機能と、(ii)メディアコンテンツの複数のVBRバージョンを特定し、その複数のVBRバージョンから、確認したネットワーク帯域幅よりも小さいかまたは等しいメディアコンテンツの次のスライディングウィンドウを越えるビットレートを持つ最高ビットレートVBRバージョンを選択する過程と、および(iii)ネットワーク通信インターフェースによって、サーバーが選択したVBRバージョンをコンピューティングデバイスにストリーム配信する要求をサーバーに転送する過程とが関与する。
【0068】
上記の考察と同様、上述の類似した機能の定義および考察は
図9の機能に関しても同様に適用でき、またその逆もありうる。例えば、上記のとおり、メディアコンテンツのプレイアウト中、コンピューティングデバイスのデータストレージは、メディアコンテンツ用の再生バッファを定義でき、また方法の例の機能はさらに、再生バッファの占有レベルに基づき、最高ビットレートのVBRバージョンを選択する過程を含みうる。別の例として、コンピューティングデバイスのデータストレージは、メディアコンテンツのインデックスを保持することができ、またコンピューティングデバイスは、メディアコンテンツの次のスライディングウィンドウに対して確認したネットワーク帯域幅よりも小さいかまたは等しいメディアコンテンツのビットレートを持つ最高ビットレートのVBRバージョンを選択する過程が促進されるように、メディアコンテンツの次のスライディングウィンドウに対してメディアコンテンツの各VBRバージョンのビットレートを決定するための基準としてそのインデックスを使用しうる。
【0069】
本書でさまざまな様相および実施形態を開示してきたが、当業者にとってはその他の態様および実施形態が明白である。本書で開示したさまざまな態様および実施形態は例証を目的とするものであり、限定的なものとする意図はなく、真の範囲および精神は下記の請求項によって示されている。