(58)【調査した分野】(Int.Cl.,DB名)
前記第2の再生リストファイルが、前記クライアントデバイスのために、前記第2の再生リストファイルに対する前記要求に応答して動的に作成される、請求項1に記載の方法。
前記メディアプレゼンテーションがビデオオンデマンドプレゼンテーションであり、前記第1の再生リストファイルが前記メディアプレゼンテーションのためのすべてのメディアセグメントを特定し、前記第2の再生リストファイルが、前記第1の可変ストリームからの、前記クライアントデバイスによってダウンロードされた、最後のメディアセグメントのシーケンス番号よりも大きいシーケンス番号を有する、前記メディアプレゼンテーションの残りの部分のためのメディアセグメントのみを特定する、請求項3に記載の方法。
前記第2のセットのメディアセグメントが、前記第2のセットのメディアセグメントに対応する、ユニフォームリソースロケータのセット、または情報タグのセットのうちの少なくとも1つを使用して特定される、請求項1に記載の方法。
前記第2の再生リストファイルの中で特定され、前記クライアントデバイスによってすでにダウンロードされた、前記追跡される第1のセットのメディアセグメントに対応する前記複数の第2のメディアセグメントの数が、前記クライアントデバイスによってすでにダウンロードされたメディアセグメントの数よりも小さい、請求項1に記載の方法。
前記処理ユニットが、ハイパーテキスト転送プロトコルライブストリーミング標準に準拠するフォーマットを有する、前記クライアントデバイスに、前記可変再生リストファイルを提供し、ハイパーテキスト転送プロトコルを使用して前記クライアントデバイスにメディアセグメントを提供するようにさらに構成される、請求項10に記載の装置。
異なる符号化ビットレートに対応するメディアセグメント間でクライアントデバイスを切り替えるための方法を実行するようにコンピュータをプログラミングするために、コンピュータ可読コードが記憶された非一過性コンピュータ可読記憶素子であって、前記方法が、
クライアントデバイスに、第1の符号化ビットレートで符号化されたメディアプレゼンテーションに対応する第1の可変ストリームからの第1のセットのメディアセグメントを特定する第1の再生リストファイルと、第2の符号化ビットレートで符号化された前記メディアプレゼンテーションに対応する第2の可変ストリームからの第2のセットのメディアセグメントを特定する第2の再生リストファイルとを提供するステップであって、各メディアセグメントが、グループオブピクチャを備え、他のメディアセグメントを参照せずに独立して復号可能であり、各メディアセグメントが、前記メディアプレゼンテーションの部分に対応する、ステップと、
第1のセットのメディアセグメントから対応するメディアセグメントをクライアントデバイスがダウンロードした、メディアプレゼンテーションの一部を追跡するステップと、
前記クライアントデバイスから、前記第2の再生リストファイルに対する要求を受け取るステップと、
前記第2の符号化ビットレートが前記第1の符号化ビットレートよりも大きく、かつ、クライアントデバイスが利用可能なネットワーク帯域幅が閾値帯域幅よりも大きい場合に、
前記第2の再生リストファイルに対して、前記クライアントデバイスによってすでにダウンロードされた、前記追跡される第1のセットのメディアセグメントに対応する前記第2の可変ストリームから、複数の第2のメディアセグメントを特定するステップと、
前記クライアントデバイスに、前記クライアントデバイスによってすでにダウンロードされた前記第1のセットのメディアセグメントに対応する前記複数の第2のメディアセグメントを含む前記第2の可変ストリームから前記第2のセットのメディアセグメントを特定する前記第2の再生リストファイルを提供するステップと、
前記第2の符号化ビットレートが前記第1の符号化ビットレートよりも大きく、かつ、クライアントデバイスが利用可能なネットワーク帯域幅が閾値帯域幅よりも小さい場合、または、前記第2の符号化ビットレートが前記第1の符号化ビットレートよりも小さい場合に、
前記第2の再生リストファイルに対して、前記クライアントデバイスによってすでにダウンロードされた、前記追跡される第1のセットのメディアセグメント以外の前記メディアプレゼンテーションの1つまたは複数の部分に対応する前記第2の可変ストリームから、メディアセグメントのみを含む前記第2の可変ストリームからの複数のメディアセグメントを特定するステップと、
前記クライアントデバイスに、前記クライアントデバイスによってすでにダウンロードされた、前記追跡される第1のセットのメディアセグメント以外の前記メディアプレゼンテーションの前記1つまたは複数の部分に対応する前記第2の可変ストリームから、前記メディアセグメントのみを特定する前記第2の再生リストファイルを提供するステップとを含む、素子。
各メディアセグメントが、関連するシーケンス番号を有し、前記第2の符号化ビットレートからのメディアセグメントに対応する、前記第1の符号化ビットレートからのメディアセグメントが、同じシーケンス番号を有する、請求項1に記載の方法。
【発明を実施するための形態】
【0010】
当業者は、図中の要素が単純化と明確化とのために表示され、必ずしも正確な縮小率で描かれていないことを理解するであろう。たとえば、図中のいくつかの要素の寸法は、本発明の実施形態をより良く理解する助けとなるために、他の要素に対して大きくされ得る。加えて、説明および図面は、必ずしも例示された順番を必要とするものではない。特定の動作および/またはステップが特定の発生順序で説明または描かれてよいことがさらに理解される一方、当業者は、そのような順序に関する特異性が実際に必要でないことを理解するであろう。
【0011】
図面中、装置の構成要素および方法の構成要素は、適切な場合、慣習的な記号によって表わされており、本明細書の説明の恩恵を受ける当業者にとって容易に分かる詳細によって本開示を分かり難くしないために、本発明の実施形態の理解に関する具体的な詳細のみを示している。
【0012】
一般的に言えば、様々な実施形態に関して、本開示は、クライアントデバイスが、メディアプレゼンテーションをダウンロードしている間に可変ストリーム間で切り替えを行う際に、ネットワークの輻湊を軽減するための方法と装置とを提供する。メディアプレゼンテーションの同じ部分に対応する、異なる可変ストリームからのメディアセグメントのダウンロードを制限すると、ネットワークにかかる負荷を、それがメディアプレゼンテーションをストリーミングしている間、軽減することになる。メディアセグメントの境界と瞬時復号リフレッシュ(IDR)フレームとを、複数の可変ストリームにわたって揃えることによって、インテリジェントサーバは、デバイスに異なる符号化ビットストリーム間で途切れなく切り替えを行わせながら、クライアントデバイスの同時メディアセグメントに対する要求を無効にすることができる。
【0013】
本明細書の内容によると、サーバによって実行される、クライアントデバイスに複数の可変ストリームからのメディアセグメントを提供するための方法は、クライアントデバイスのために、同じメディアプレゼンテーションの異なる符号化にそれぞれが対応する複数の可変ストリームを特定する可変再生リストファイルを提供するステップと、クライアントデバイスによってダウンロードされた、第1のセットのメディアセグメントのシーケンス番号を追跡するステップであって、第1のセットのメディアセグメントのうちのメディアセグメントが、第1の符号化ビットレートで符号化され、可変再生リストファイルの中で特定される第1の可変ストリームのための、第1の再生リストファイルの中で特定される、追跡するステップと、を備える。方法は、また、クライアントデバイスから、可変再生リストファイルの中で特定される第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルに対する要求を受信するステップであって、第2のセットのメディアセグメントのうちのメディアセグメントが、第2の符号化ビットレートで符号化されている、受信するステップと、追跡するステップに基づいて、第2の再生リストファイルの中で、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントのうちのいずれかと同じシーケンス番号を有する、第2のセットのメディアセグメントの中の少なくとも1つのメディアセグメントを特定するかどうかを決定するステップと、を備える。方法は、さらに、クライアントデバイスに、第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルを提供するステップを備える。
【0014】
特定の実施形態では、サーバは、第1の可変ストリームからの、すでにクライアントデバイスによってダウンロードされた、メディアセグメントと同じシーケンス番号を有する、第2の再生リストファイルの中のメディアセグメントの数を特定する。第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントと同じシーケンス番号を有する、第2の再生リストファイルの中で特定されるメディアセグメントの数は、クライアントデバイスのために使用可能であるネットワーク帯域幅の容量、またはクライアントデバイスのバッファの中に記憶されているメディアコンテンツの量のうちの少なくとも1つに基づいて決定される。
【0015】
また、本明細書の内容によるものは、クライアントデバイスからの要求を受信し、メディアセグメントをクライアントデバイスに提供するように構成されたインターフェースであって、各メディアセグメントが瞬時復号リフレッシュフレームから始まるグループオブピクチャを備える、インターフェースと、クライアントデバイスに、同じメディアプレゼンテーションの異なる符号化にそれぞれが対応する複数の可変ストリームを特定する可変再生リストファイルを提供し、クライアントデバイスによってダウンロードされた、複数の可変ストリームからの、第1のビットレートで符号化された、第1の可変ストリームに対応する第1の再生リストファイルの中で特定される、第1のセットのメディアセグメントのシーケンス番号のセットを追跡するように構成された処理部と、を備える、ストリーミングされるメディアプレゼンテーションのための符号化ビットレート間でクライアントデバイスを切り替えるための装置である。処理ユニットは、また、クライアントデバイスから、複数の可変ストリームからの、第2のビットレートで符号化された、第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルに対する要求を受信するように構成され、クライアントデバイスから、複数の可変ストリームからの、第2のビットレートで符号化された第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルに対する要求を受信する。処理部は、さらに、クライアントデバイスに、第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルを提供するように構成されている。
【0016】
さらに、本明細書の内容によるものは、異なる符号化ビットレートに対応するメディアセグメント間でクライアントデバイスを切り替えるための方法を実行するようにコンピュータをプログラムするための、その上に記憶されたコンピュータ可読コードを有する非一時的なコンピュータ可読記憶要素である。方法は、クライアントデバイスに、第1の符号化ビットレートで符号化されたメディアプレゼンテーションに対応する、第1の可変ストリームからの、第1のセットのメディアセグメントを特定する第1の再生リストファイルと、第2の符号化ビットレートで符号化されたメディアプレゼンテーションに対応する、第2の可変ストリームからの、第2のセットのメディアセグメントを特定する第2の再生リストファイルとを提供するステップを備え、各メディアセグメントが、グループオブピクチャを備え、他のメディアセグメントを参照せずに独立して復号可能であり、各メディアセグメントがメディアプレゼンテーションの一部に対応している。方法は、また、第1のセットのメディアセグメントからクライアントデバイスが対応するメディアセグメントをダウンロードした、メディアプレゼンテーションの一部を追跡するステップと、クライアントデバイスから、第2の再生リストファイルに対する要求を受信するステップとを備える。方法は、さらに、第2の再生リストファイルの中で特定されるメディアセグメントから成る第2のセットの中に、第1の再生リストファイルの中で特定される、第1のセットのメディアセグメントからクライアントデバイスが対応するメディアセグメントをダウンロードした、メディアプレゼンテーションの追跡された部分に対応する、1つまたは複数のメディアセグメントを含めるかどうかを決定するステップを備える。
【0017】
図面を参照すると、特に
図1では、本内容による実施形態を実装したネットワークインフラストラクチャを備えるシステムが、100において大まかに示されている。100で示されているものは、メディアソース102と、(HLS処理部106とウェブサーバ108とを含む)HLSサーバ104と、HTTP対応ネットワーク128と、リンクまたは接続136〜144と、3つのクライアントデバイス、すなわち、ノートパソコン130と、携帯電話132と、タブレット134とである。HLS処理部106は、同様に、処理要素110とディスク記憶装置118とを備える。加えて、HLS処理部106(本明細書では単に「処理部」とも呼ばれる)は、メディアエンコーダ112と、ストリームセグメンタ114と、パッケージ生成部(packager)116とを備えるように示され、これらは、実施形態では、HLS処理部106によって実行される機能を論理的に示すものである。限定された数の、システム要素102〜118、システム要素128〜134のみが、説明を容易にするために100に示されているが、追加的なそのような要素をシステム中に含むことができる。さらに、システム100の商用実施形態のために必要な他の要素は、含まれる実施形態の説明を明確にするために、図面から省略されている。
【0018】
以下に、システム100内の要素の簡単な説明を開始する。一般に、HLSドラフト仕様に準拠して動作するように構成されているHLSサーバ104、およびその複数の構成要素は、残りの図面に関連して以下に詳細に説明する、本開示の実施形態による機能に適応されている。クライアントデバイス130〜134、メディアソース102、およびネットワーク128内のインフラストラクチャ要素もまた、それぞれの機能を実行するように構成されている。本明細書で使用される、「適応された」、「動作可能な」または「構成されている」は、示された要素が、動作可能に結合された、1つまたは複数のメモリデバイス、インターフェース、および/または処理デバイスを使用して実装されていることを意味する。メモリデバイス、インターフェース、および/または処理デバイスは、プログラムされると、これらのシステム要素のための、それらの所望の機能を実装する手段を形成する。
【0019】
(図示されていないが、システム要素間の図示されている接続136〜144を確立し、維持するために使用される)インターフェースは、システム100の要素間の制御情報、音声メディア、または非音声メディアを含み、本明細書ではメッセージング(たとえば、メッセージ、パッケージ、データグラム、フレーム、スーパーフレームなど)とも呼ぶ信号を伝達するために使用される。特定の要素におけるインターフェースの実装は、要素が接続されるネットワークの特定の種類、すなわち、ワイヤードおよび/またはワイヤレスに依存する。たとえば、クライアントデバイスは、HTTP対応ネットワーク128に繋がるための(ワイヤレス接続を確立するために使用される)ワイヤレスインターフェースを含み、HLSサーバ104は、ネットワーク128に含まれるインフラストラクチャデバイスに接続するための(ワイヤード接続を確立するために使用される)ワイヤードインターフェースを含むことができる。ワイヤードインターフェースの例は、イーサネット(登録商標)、TI、USBインターフェースなどを含む。ワイヤレスインターフェースの例は、ロングタームエボリューション(LTE)、CDMA、GSM(登録商標)、Wi-Fiなどを含むがこれらに限定されないテクノロジーをサポートする、ワイヤレスプロトコルと関連ハードウェアとを含む。
【0020】
システム100がワイヤレス通信をサポートする場合、インターフェースは、1つまたは複数の標準ワイヤレスインターフェースまたは独自ワイヤレスインターフェースに従って動作可能な、処理構成要素と、変調構成要素と、送受信構成要素とを含む構成要素を備え、処理要素と変調要素と送受信要素との機能のいくつかは、システム要素のメモリデバイス上に記憶されたソフトウェアアプリケーションまたはファームウェアなどのプログラム可能論理を通じて、またはハードウェアを通じて、1つまたは複数の処理デバイスを用いて実行することができる。特定の実施形態では、インターフェースによって維持される接続136〜144は、インターネットプロトコル(IP)接続である。
【0021】
システム100の要素によって活用される処理デバイス(たとえば、HLS処理部106および処理要素110)は、部分的にハードウェアで実装されてよく、したがって、たとえば、
図2から
図7を参照して説明するそれらの機能を実行するための、ソフトウェア、ファームウェア論理またはコードを用いてプログラムされてよく、および/または、処理デバイスは、たとえば、状態機械またはASIC(特定用途向け集積回路)として、ハードウェアで完全に実装されてよい。これらのシステム要素によって実装されるメモリ(たとえば、ディスク記憶装置118)は、各要素が機能するために必要な様々な情報の、短期記憶装置および/または長期記憶装置を含むことができる。メモリは、さらに、処理デバイスを、その機能を実行するために必要な論理またはコードを用いてプログラムするための、ソフトウェアまたはファームウェアを記憶することができる。
【0022】
システム100の要素の詳細説明に再び戻ると、本明細書では同じ意味で「サーバ」と呼ばれる、HLSサーバ104は、メディアコンテンツをクライアントデバイスにストリーミングし、ネットワーク性能を最適化するための、これらの内容を通して説明する方法を管理する。これを達成するために、HLSサーバ104は、本明細書では同じ意味で「コンピュータ」と呼ばれる処理要素110を備え、それは、たとえば、その上に記憶されたコンピュータ可読コードを有する非一時的なコンピュータ可読記憶装置を介してプログラムすることができる。
【0023】
HLSサーバ104へインターフェース接続しているものは、メディアソース102であり、それは、メディアコンテンツを、接続136を介してHLS処理ユニット106内のメディアエンコーダ112に流す。代替的な実施形態では、メディアエンコーダ112は、HLSサーバ104の外側に置くことができる。メディアソース102は、メディアを特定の形式で流し、その形式は、圧縮(たとえば、ロッシー)または非圧縮(たとえば、ロスレス)のいずれかである。流されたメディアは、それがストリーミングメディアソースによって配信されて(すなわち、ストリーミングされて)いる間に、クライアントデバイスにおいて継続的に受信され、クライアントデバイスによって表示されるメディアである。メディアコンテンツが圧縮されている場合、メディアエンコーダ112は、メディアをある圧縮形式から別の圧縮形式に変換する。メディアコンテンツが圧縮されていない場合、メディアエンコーダ112はメディアストリームを符号化する。特定の実施形態では、メディアソース102から受信するメディアストリームの形式に関係なく、メディアエンコーダ112からの出力ストリームは、MPEG-4メディア圧縮(たとえば、MPEG-4 part 10 Advanced Video Coding (AVC)/H.264 video compression with Advanced Audio Coding (AAC) audio compression)を使用して符号化され、MPEG-2トランスポートストリームコンテナ形式を使用して内包される。しかしながら、このような実施形態は限定するものでなく、他の形式の符号化および/または内包が、本明細書で説明する内容を実装するために使用されてよい。
【0024】
一実施形態では、メディアエンコーダ112は、それが受信するメディアストリームから、複数の可変ストリームをコード変換または符号化し、各可変ストリームは、異なる符号化ビットレートおよび/または解像度に対応する。本明細書で使用する符号化ビットレートとは、符号化されたメディアストリームまたはメディアファイルの情報密度、特に、再生時間単位当たりのビット数のことを言う。通常、より高い符号化ビットレートは再生品質の向上に対応し、また、ダウンロードするためのより大きな帯域幅および/またはより多くの時間を必要とする、より大きなファイルにも対応する。メディアストリームのための符号化ビットレートは、たとえば、1秒当たりより少ないフレームを符号化すること、フレームサイズを小さくすること、色の数を減らすこと、マルチチャネル音声よりもモノラルで符号化すること、または(復号のためにより大きなクライアント側での処理を必要とし得る)より効率的な圧縮を使用することによって下げることができる。
【0025】
本明細書で使用する「符号化」という用語は、メディアファイル内またはメディアストリーム内のデータが形式を設定される方法のことを言う。同じコンテンツを表示する2つの可変ストリームは、異なる符号化を有し、それらは異なる符号化ビットレートを有する。同じコンテンツを表示する2つの可変ストリームは、また、符号化ビットレートが同じである、異なる符号化に対応することもできる。これは、たとえば、1つの可変ストリームがより低いレートで表示されるより高い解像度のフレームのために形式設定される一方、他がより高いレートで表示されるより低い解像度のフレームのために形式設定される場合に当てはまり得る。
【0026】
様々な実施形態について、HLSサーバ、クライアントデバイス130〜134、およびメディアソース102はすべて、メディアエンコーダ112によって生成される可変ストリームの符号化ビットレートを様々な程度で制御する。一実施形態では、たとえば、標準画質のメディアコンテンツがメディアソース102から受信される場合、メディアエンコーダ112は、符号化ビットレートを2メガビット/秒(Mbps)以下に制限する。高画質のメディアコンテンツが受信された時、メディアエンコーダ112は、4Mbpsの符号化ビットレートを有する可変ストリームを生成することができる。別の実施形態では、処理要素110は、メディアエンコーダ112に、本明細書で説明するHLSサーバ104の機能をHLSサーバ104に実行可能にする、符号化ビットレートを有する可変ストリームを生成するように指示する。さらなる実施形態では、HLSサーバ104内のメディアエンコーダ112は、特定の符号化ビットレートを有する可変ストリームを、クライアントデバイス130〜134から受信する要求に応答して、または管理者またはプログラマによって入力されるパラメータに応答して生成する。
【0027】
ストリームセグメンタ114は、メディアエンコーダ112によって出力される、複数の可変MPEG-2トランスポートストリームを受信し、各可変MPEG-2トランスポートストリームをより短いデュレーション(通常、1秒から10秒の間であるが、この範囲に含まれないデュレーションも可能である)のメディアセグメントファイルから成るシーケンスに分割または区切る。時に当業で「チャンク」と呼ばれるメディアセグメントファイルは、また、本明細書では「メディアセグメント」とも言う。本明細書で使用する「デュレーション」という用語は、クライアントデバイスによって通常の速さ(すなわち、ストリーミングされているプレゼンテーションの意図された再生スピード)で再生される、メディアセグメントファイルまたはメディアストリーム部分の再生時間として定義される。メディアセグメントファイルは、次いで、ストリームセグメンタ114から、メディアセグメントファイルを特定の配信プロトコルのために整えるパッケージ生成部116に渡される。特定の実施形態では、たとえば、配信プロトコルはHTTPプル型の下のHTTP GET要求をサポートする。
【0028】
システム100は、パッケージ生成部116からのメディアセグメントファイルをディスク記憶装置118の中に、ウェブサーバ108がアクセスし配信するために記憶する。ディスク記憶装置118は、フラッシュメモリ、半導体デバイス、またはその上にデータがデジタル記録される表面層(たとえば、独立の磁気ハードドライブから成る配列)を有する、1つまたは複数の回転盤を備える記憶デバイスである。
図1に示す通り、ディスク記憶装置118は、HLSサーバ104のHLS処理部106の内部に位置する。しかしながら、代替的な実施形態は、HLS処理部106の外でのメディアセグメントファイルの記憶を可能にする。考えられる場所は、ウェブサーバ108内、HLSサーバ104の内側でウェブサーバ108の外側、またはHLSサーバ104の外側を含む。加えて、光学式ドライブおよび他の互換性のあるテクノロジーなどの代替デバイスも、メディアセグメントファイルの記憶のために使用することができる。
【0029】
ウェブサーバ108は、ディスク記憶装置118に記憶されたメディアセグメントファイルをクライアントデバイス130〜134に配信する(すなわち、出力する)。ウェブサーバ108の機能は、ハードウェア(すなわち、物理的サーバ)、ソフトウェア(すなわち、コンピュータプログラム)、またはその2つの組合せとして実装することができる。さらに、物理的ウェブサーバは、HLSサーバ104の内部(図示)または外部のいずれかに置くことができる。120で示す通り、ウェブサーバ108は可変再生リストファイル(本明細書では可変再生リストとも呼ぶ)を、1つまたは複数のクライアントデバイスにそれをアクセス可能にすることによって、発行(すなわち、ホスト)する。一実施形態では、HLSサーバ104の処理部106は、可変再生リストファイルをHLSに適合する形式を有するクライアントデバイスに提供し、メディアセグメントをクライアントデバイスにHTTPを使用して提供するように構成されている。
【0030】
可変再生リストファイル120は、個別の再生リスト122〜126(本明細書では再生リストファイルとも呼ばれる)を指し示す項目を含む要覧としての役割を果たし、再生リスト122〜126は、同様に、可変ストリームからの個別のメディアセグメントファイルを指し示す項目を含んでいる。本明細書で使用する「ポインタ」は、それによって指し示されているソースにウェブサーバ108を向かわせる手段のことを意味する。ポインタの例は、ユニフォームリソースロケータ(URL)である。ウェブサーバ108は、URLのパス構成要素を、静的要求についてはローカルなファイルシステムソースにマップし、または動的要求についてはプログラム名にマップすることができる。URLの最初の部分は、ドメイン名サーバによってウェブサーバ108のIPアドレスにマップされるドメイン名を備える。URLの残り(パス構成要素)は、クライアントデバイスのためのユーザエージェントによってHTTP GET要求に変換される、ウェブサーバ108のルートディレクトリに対するパスを備える。
【0031】
システム100は、ウェブサーバ108によって発行される各個別の再生リストを、特定の符号化ビットレートを有する可変ストリームに関連付ける。たとえば、再生リストA122は、60フレーム/秒で高画質テレビ(HDTV)形式(すなわち、1280x720画素)で符号化された可変ストリームからのメディアセグメントファイルを指し示すURLを含むことができる一方、再生リストB124中のURLは、30フレーム/秒でスーパービデオグラフィックスアレイ(SVGA)形式(すなわち、800x600画素)で符号化された可変ストリームからのメディアセグメントファイルを指し示すことができる。再生リストファイルおよび可変再生リストファイルは、また、情報タグを含むことができ、いくつかの実施形態では、情報タグは、記述されている可変ストリームとメディアセグメントファイルとについての情報を伝達するコメントラインをファイル内に備える。他の実施形態では、メタデータが、たとえば、(id3v2.4.0-structure.txtおよびid3v2.4.0-frames.txt(M. Nilsson、2000年11月1日、およびこれ以降の全バージョン)(非特許文献2、3)という非公式の標準文書によって述べる)ID3などのデータコンテナを使用して、メディアセグメントファイル内に埋め込まれる。メタデータコンテナは、ファイルについての情報をファイル自体の中に記憶することを可能にする。
【0032】
ライブストリーミングに加えて、本明細書で示す内容は、ビデオオンデマンド(VOD)にも適用することができる。VODでは、メディアプレゼンテーション(すなわち、ビデオ)について、完全なセットのメディアセグメントファイルが、クライアントデバイスがそのプレゼンテーションに対する要求(すなわち、デマンド)を行った時に存在する。この完全なセットのメディアセグメントは、プレゼンテーション全体を完全に符号化したものを表わし、個別のセグメントファイルをクライアントデバイスに流すために使用される再生リストの中で特定することができる。ライブストリーミングでは、それに反して、HLSサーバ104は、それがまだプレゼンテーションを受信し、そのためのメディアセグメントファイルを作成している間に、メディアプレゼンテーションに対するクライアントデバイスの要求を受信する。ライブストリーミング処理中の任意の所与の時間では、メディアセグメントファイルは、すでにHLSサーバ104に流されたメディアプレゼンテーションの部分についてのみ利用可能である。ライブで流されているプレゼンテーションのための再生リストファイルは、利用可能なメディアセグメントを指し示す項目のみを含んでいる。特定の実施形態では、HLSドラフト仕様と一致して、ライブストリームのための再生リストファイルは、固定数のメディアセグメント(たとえば、3つのメディアセグメント)についての項目を含んでいる。HLSサーバ104によって作成される、各新しいメディアセグメントのための項目が再生リストに追加されるにつれて、より古いメディアセグメントのための項目は削除される。このようにして、再生リストファイルは、再生リストがストリーミングされているライブメディアプレゼンテーションを追跡するにつれて、固定数の「現在の」メディアセグメントファイルをリアルタイムで「フレームに入れる」、「引き違い窓」を表わしている。
【0033】
128で示すHTTP対応ネットワークは、クライアントデバイス130〜134をHLSサーバ104に伝達的に結合する。それは、HTTPプロトコルスタックを使用して情報の交換を統制するコンピュータネットワークを表わしている。特定の実施形態では、HTTP対応ネットワーク128は、HTTPと、通信制御プロトコル(TCP)と、IPプロトコルとを、そのアプリケーション層と、トランスポート層と、インターネット層とについて、それぞれ使用する(たとえば、インターネット)。HLSサーバ104は、ネットワークパケット(すなわち、データグラム)を中継して伝える接続138を使用して、データとメッセージとを、クライアントデバイス130〜134に送信し、クライアントデバイス130〜134から受信する。136で示す接続は、HLSサーバ104が、ストリーミングメディアをメディアソース102から受信し、制御信号をメディアソース102へ中継して伝えることを可能にする。
【0034】
ノートパソコン130、携帯電話132、およびタブレット134は、すべてクライアントデバイスであり、音声ベースのメディアファイルおよび/または映像ベースのメディアファイルの再生をサポートする。クライアントデバイスは記憶機能を有する電子デバイスであり、HLSサーバ104と相互作用してメディアコンテンツをダウンロードし、バッファに格納する。これらの特定のデバイスに加えて、本明細書の内容は、また、メディアファイルをダウンロードし再生することができる、携帯型メディアプレーヤ(PMP)と、ゲーム機と、他の電子デバイスとに適用することができる。一実施形態では、各種類のクライアントデバイスは、機能の異なるセットを有し、それは、画面サイズ、バッファ容量、処理(たとえば、復号)能力、および再生を開始するためにそのバッファの中に記憶されるセグメントの最低数などであるがこれらに限定されない、各種類のクライアントデバイスの再生特性を定義する。
【0035】
ここで、本明細書の内容に従って、また残りの図面を参照して、システム100の要素の機能の詳細な説明にうつる。
図2は、システム100の個別の要素が一緒にどのように動作して、メディアコンテンツを、130〜134で示す1つまたは複数のクライアントデバイスにストリーミングするための方法を実行するのかということを示す論理フローチャートである。特に、
図2は、クライアントデバイスが、流されたメディアプレゼンテーションをダウンロードしている間に、符号化ビットレート間で切り替えを行う際に、HLSサーバ104が、ネットワーク128にかかる負荷を軽減するための方法200をどのように実行するかを示している。202では、HLSサーバ104は、複数の可変ストリームを特定する、クライアントデバイス(たとえば、ノートパソコン130)のための可変再生リスト(たとえば、可変再生リスト120)ファイルを提供する。特定の実施形態では、可変再生リスト120をクライアントデバイスに提供するHLSサーバ104は、可変再生リスト120を発行するウェブサーバ108を備える。可変再生リスト120は、特定のクライアントデバイス、クライアントデバイスから成るグループについて特別に発行することができ、またはHLSサーバ104に接続し、HLSサーバ104から流されるコンテンツを受信することができるすべてのクライアントデバイスにアクセス可能にすることができる。
【0036】
可変再生リスト120によって特定される複数の可変ストリームのうちの各可変ストリームは、同じメディアプレゼンテーションの異なる符号化に対応する。したがって、各可変ストリームは、同じ内容とデュレーション、すなわち、プレゼンテーションの内容とデュレーションとを有する。プレゼンテーションは、たとえば、それがテレビ局またはラジオ局に関連するライブ放送を表示する場合、オープンエンド(すなわち、未定の)デュレーションを有することができ、または、プレゼンテーションが保管されたフィルムやビデオクリップを表示する場合(すなわち、VOD)などでは、プレゼンテーションは既知の有限のデュレーションであることができる。
【0037】
一実施形態では、可変再生リスト120は、
図1の122〜126で示したものなどの、個別の再生リストを特定する。可変再生リスト120中で特定された各可変ストリームについて、クライアントデバイスを対応する再生リストに向かわせるポインタがリストアップされ、ポインタは、今度は、その可変ストリームに属するメディアセグメントのための識別子を備える。一実施形態では、識別子は、URLとユニフォームリソースネーム(URN)とを備えるユニフォームリソースアイデンティファイア(URI)である。URLは、上記で示した通り、メディアセグメントまたはURNによって特定されている他のファイルタイプの位置を指定するポインタとして機能する。
【0038】
可変再生リスト120の中で特定される可変ストリームから、望ましい符号化をダウンロードするためのクライアント側での選択が行われる。この選択は、たとえば、優先順位、特定の画面解像度に対する要求を指定するユーザ入力、またはクライアント内でのプログラミングからの結果に基づくことができる。本例の目的のために、クライアントデバイスは、第1の符号化ビットレートに対応する第1の可変ストリームを選択する。次いで、クライアントデバイスは、HTTP対応ネットワーク128を使用して、その選択をHLSサーバ104にHTTP GET要求として通信する。
【0039】
204で、HLSサーバ104は、クライアントデバイスから、第1の再生リストファイルに対する第1の要求としての要求を受信する。第1の再生リストファイルは、可変再生リストファイル120の中の複数の可変ストリームのうちの第1の可変ストリームからの、第1のセットのメディアセグメントに、第1のクライアントデバイスを向ける第1のセットの識別子を提供し、第1のセットのメディアセグメントは第1の符号化ビットレートに対応する。「セット」という用語は、本明細書では、1つまたは複数の要素を有しているとして定義される。
図1に示した実施形態では、要求は、HLSサーバ104内に置かれたウェブサーバ108によって受信される。したがって、要求に関連する情報は、処理要素110と、本明細書の内容に従って要求を処理する必要のある他の要素とに内部で通信される。
【0040】
再生リストファイルによって特定されるメディアセグメントをより詳細に説明するために少しの間
図7を見ると、3つの符号化ビットレートを表わすメディアセグメントの概略図が、700において一般的に図示されている。一実施形態では、コンテナと、符号化された映像および音声コンテンツと、場合により暗号化プロトコルとを備えるメディアセグメントは、別々にダウンロードされ、その後正しい順次的順番で再生される、ストリーミングされたメディアプレゼンテーションの一部を表わしている。クライアントデバイスは、メディアセグメントを、それが遠隔で保持されている(すなわち、クライアントデバイスから離れている)場所から、クライアントデバイスによって所有されている記憶装置またはメモリによってそれがローカルに保持される場所に、それをコピーまたは転送することによってダウンロードする。メディアセグメント内の映像情報はフレームから成るシリーズとして符号化され、各フレームは時間におけるスナップショットを表わしている。2つの基本的なフレームの種類がある。他のフレームを参照することなく復号することができる独立フレーム、および前のフレームおよび/または後のフレームを参照することによって復号される従属フレームである。独立フレームとそれに従属するすべてのフレームとを備える、フレームから成るシーケンスは、グループオブピクチャ(GOP)として定義される。各GOPは、それがそれを完全に復号するための全情報を含んでいるという点において自己完結型であり、したがって、他のGOPを参照することなく独立して復号可能である(すなわち、復号することができる)。
【0041】
より具体的には、
図7は、702、704、および706における、それぞれ、高ビットレートストリーム、低ビットレートストリーム、および中ビットレートストリームである、3つの可変ストリームについて、メディアセグメントの同じ部分を示している。各メディアセグメント内で表示されるピクシレーションの密度はその符号化ビットレートに比例し、可変ストリーム702のメディアセグメントで最も高く、可変ストリーム704のメディアセグメントで最も低い。示した各メディアセグメントのデュレーションはその長さに比例する。一実施形態では、各可変ストリームは、その可変ストリームを示し、その可変ストリーム内でのメディアセグメントの相対的順序を定義するシーケンス番号を含むファイル名によって特定される、個別のMPEG-2トランスポートストリーム(.ts)ファイルから成っている。たとえば、可変ストリーム702は、時間インデックスt=t
0でメディアセグメント「high-1.ts」(図示せず)から開始し、各連続するメディアセグメントについて、シーケンス番号が1ずつ増加する。シーケンス番号12〜15を有する示された4つのメディアセグメントは、時間インデックスt=t
11から時間インデックスt=t
15まで再生されるメディアプレゼンテーションの部分にわたっている。通常クライアントデバイスでバッファされているメディアセグメントの再生は連続しており、中断なしに発生する。
図7に示すセグメント間の隙間は、各メディアセグメントがIDRフレームから始まるグループオブピクチャを備えることを説明するためだけに含まれている。
【0042】
各メディアセグメントの先頭のIDRフレームの位置は「IDR」ラベルによって示されている。IDRフレームは、IDRフレームより後のフレームがIDRフレームより前のフレームを参照することができないということを指定する、特別な種類の独立フレームである。IDRフレームは、その受信によりクライアントデバイスが、前のGOPに関連するフレームの入ったその復号バッファをパージすることができるように、タグ付けされている。HLSサーバ104が、本内容に従って、示す通り、IDRフレームを各メディアセグメントの先頭に置き、それらを可変ストリームにわたって揃えることによって、クライアントデバイスは、ストリーミングされたメディアプレゼンテーションを再生している間、プレゼンテーションの同じ部分に対応する、各可変ストリームから1つまたは複数の、重複するメディアセグメントをダウンロードする必要なく、可変ストリーム間で切り替えを行うことができる。
【0043】
たとえば、高ビットレートの可変ストリーム702を受信しているクライアントデバイスは、ネットワークの輻湊のために、低ビットレートストリーム704に切り替える必要があるかもしれない。クライアントデバイスは、時間インデックスt=t
12、t=t
13、またはt=t
14で、すでにクライアントデバイスによってバッファされたメディアプレゼンテーションの部分に対応する、低ビットレートのメディアセグメントをダウンロードすることなしに、切り替えを行うことができる。その一方、2つの可変ストリーム間でメディアセグメントとIDRフレームとが揃っておらず、むしろ重なっている場合、2つのストリームの再生を同期させ、クライアントデバイスを新しいストリーム中の次のIDRフレームに行かせるために、メディアプレゼンテーションの部分について、重複するコンテンツを有する少なくとも1つのメディアセグメントをダウンロードすることが必要になる。前の例における低ビットレートのメディアセグメントを、たとえば、そのデュレーションの半分の時間前にずらすと、クライアントデバイスがメディアプレゼンテーション中で十分先に進んで、メディアセグメント「low-14.ts」を復号し、低ビットレートの可変ストリーム704を再生し始める前に、クライアントデバイスがメディアセグメント「high-14.ts」をダウンロードし再生することになる。
【0044】
中ビットレートの可変ストリーム706のメディアセグメントは、702と704とにおける他の2つの可変ストリームからのメディアセグメントの2倍のデュレーションを有するように示されている。クライアントデバイスとHLSサーバ104との間でメッセージをやり取りすることに関連して(平均と比較して)比較的大きな遅延がある場合、メディアセグメントをより長いデュレーションで符号化することの利点がある。HLSサーバ104から「より距離のある」クライアントデバイスでは、データグラムは、より多くの「ウェイポイント」を介して中継されるため、その目的地に到達するまでにより長い期間を費やす。HLSサーバ104は、クライアントデバイスについてのこの伝送遅延を、HLSサーバ104がデータグラムを送信し、返答として確認を受信する間の時間間隔を測定することによって決定する。
【0045】
メディアプレゼンテーションの一部をより短いデュレーションのメディアセグメントに分割すると、より多くのファイルができる。これにより、これらのファイルを取得するために、第1のクライアントデバイスによってHLSサーバ104に渡される要求がより多く必要になる。複数のファイルに関連する伝達遅延は累積的であるため、短いデュレーションのメディアセグメントをクライアントデバイスに提供することに関連する、より速いビットレートに移行するどのような利点も、より多くの要求を送信する必要性によって無効にされ得る。この理由により、いくつかの実施形態はより長いデュレーションのメディアセグメントを含む。700で示す特定の実施形態では、706における中ビットレートの可変ストリームのメディアセグメントおよびIDRフレームは、それでもやはり、時間インデックスt=t
13で可変ストリーム702と可変ストリーム704とのそれらに揃っている。これにより、クライアントデバイスが、揃っているこの時点と他の時点とで、重複するメディアセグメントをダウンロードすることなしに、中ビットレートの可変ストリーム706に切り替わり、またそれから切り替わることが可能になる。
【0046】
ここで
図2に戻ると、HLSサーバ104は、第1の要求に応答して、206でクライアントデバイスに第1の再生リストファイルを提供する。クライアントデバイスが、メディアプレゼンテーションの再生を開始(または継続)するために、第1の再生リストファイルの中で特定される第1の可変ストリームからメディアセグメントをダウンロードする時、HLSサーバ104は、208で、ダウンロードされたメディアセグメントのシーケンス番号を追跡する。本明細書で使用されるシーケンス番号は、可変ストリーム中のメディアセグメントに割り当てられる連番であり、それらの再生の相対的順序を定義する。メディアセグメントは、メディアプレゼンテーションを表わす1つの連続的なファイルの部分であるため、より小さいシーケンス番号を有するメディアセグメントは、プレゼンテーションの最初の方に対応し、プレゼンテーションの後の方に対応する、より大きなシーケンス番号を有するメディアセグメントの前に再生される。本明細書で使用する追跡とは、それによってHLSサーバ104が、クライアントデバイスによってダウンロードされたメディアセグメントのログを取るまたは記録する処理である。一実施形態では、HLSサーバ104は、クライアントデバイスによってダウンロードされた、可変ストリームからのすべてのメディアセグメントの記録を保持している。別の実施形態では、HLSサーバ104は、可変ストリームからの、直近に追跡されたメディアセグメントから成るサブセットのみを保持している。たとえば、HLSサーバ104は、クライアントデバイスのバッファに現在存在している、追跡されたメディアセグメントのシーケンス番号のみを保持している。
【0047】
いくつかの実施形態では、HLSサーバ104は、メディアセグメントを追跡することができるステートフルサーバである。ステートフルサーバは、クライアントデバイスとの通信相互作用から受信したクライアントデータ(すなわち、状態データ)を保持するサーバである。一実施形態では、HLSサーバ104は、接続されているクライアントデバイス130〜134に、それらのハードウェア構成および/またはソフトウェア構成を問い合わせる。別の実施形態では、HLSサーバ104は、クライアントデバイス130〜134によって送信された要求中に組み込まれた構成情報を受動的に受信する。このクライアントデータは、ある要求から次の要求まで累積的に記憶され、HLSサーバ104によってこれらの要求の処理で使用される。特定の実施形態では、HLSサーバ104は、クライアントデバイスによって保持されている、バッファされたメディアのデュレーション(すなわち、その記憶されている再生時間)を決定し、それは、クライアントデバイスによって受信されたメディアセグメントの合計デュレーションと、それらのメディアセグメントが受信されてから経過した時間との間の差に対応する。記憶されている再生時間を(各メディアセグメントが同じデュレーションを有する場合)ダウンロードされたメディアセグメントのデュレーションで割ることで、HLSサーバ104が、サーバ104によって追跡された直近n個のシーケンス番号に対応する、現在クライアントデバイスのバッファ中にあるメディアセグメントの数nを決定することが可能になる。
【0048】
210で、HLSサーバ104は、クライアントデバイスから、第2の符号化ビットレートで符号化された第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルに対する第2の要求を受信する。説明のための一実施形態では、第2の符号化ビットレートは第1の符号化ビットレートよりも低い。より低い符号化ビットレートに対する要求は、たとえば、クライアントデバイスが利用可能なネットワーク帯域幅の減少を検出したこと、またはユーザが特定のメディアプレゼンテーションをストリーミングするためにクライアントデバイスによって使用される資源の量を減らすことを望むことにより生じ得る。
【0049】
クライアントデバイスがより低い符号化ビットレートを要求していると決定した(212)後、HLSサーバ104は、第2の再生リストファイルの中で、第1のセットのメディアセグメントからクライアントデバイスが対応するメディアセグメントをダウンロードした、追跡された部分以外の、メディアプレゼンテーションの1つまたは複数の部分に対応するメディアセグメントのみを特定する(214)。特定の実施形態では、第2の再生リストファイルは、第2の再生リストファイルに対する要求に応答して、クライアントデバイスのために動的に作成される。これにより、HLSサーバ104が、第2の再生リスト中で、クライアントデバイスによってすでにダウンロードされたメディアプレゼンテーションの部分に対応する、メディアセグメントを特定しないことを確実にする。本明細書で使用する「動的な」という用語は、ある事象(たとえば、第2の再生リストに対する要求)に応答して動作(たとえば、第2の再生リストの作成)が発生することを示している。これにより、その動作が、その事象の時間に存在している条件に基づくこと(たとえば、すでにダウンロードされたメディアプレゼンテーションの部分に対応する、第2の再生リスト中のメディアセグメントを含まないこと)が可能になる。
【0050】
一実施形態では、第2の符号化ビットレートが第1の符号化ビットレートよりも低い場合、第2の再生リストファイルは、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントのシーケンス番号とは異なるシーケンス番号を有するメディアセグメントのみを特定する。さらなる実施形態では、第2の再生リストファイルは、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントのうちの最も大きいシーケンス番号を超えるシーケンス番号を有するメディアセグメントのみを特定する。たとえば、メディアプレゼンテーションがVODプレゼンテーションであり、第1の再生リストファイルがメディアプレゼンテーションのためのすべてのメディアセグメントを特定する実施形態では、第2の再生リストファイルは、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、最後のメディアセグメントのシーケンス番号よりも大きいシーケンス番号を有する、メディアプレゼンテーションの残りの部分のためのメディアセグメントのみを特定する。
【0051】
第2のセットのメディアセグメントは、第2のセットのメディアセグメントに対応する、ユニフォームリソースロケータから成るセット、または情報タグから成るセットのうちの少なくとも1つを使用して特定される。たとえば、メディアプレゼンテーションがVODプレゼンテーションである一実施形態では、第2の再生リストファイルは、その再生リストファイル内で特定される個別のメディアセグメントを指し示すURLを含む。メディアプレゼンテーションがライブでストリーミングされている別の実施形態では、HLSサーバ104は、第2の再生リストファイルの中で、まだ作成されていないメディアセグメントについて、URLを有さない情報タグを付ける。
【0052】
216で、HLSサーバ104は、クライアントデバイスに第2の再生リストファイルを提供して、クライアントデバイスが第2の可変ストリームに切り替え、メディアプレゼンテーションを再生し続けることを可能にする。クライアントデバイスが第1の再生リストファイルからのメディアセグメントをダウンロードしている間に、第2の再生リストファイルに対する第2の要求がHLSサーバ104によって受信される(210)、第1の実施形態では、サーバ104は、第2の再生リストファイルを発行する前に、クライアントデバイスがメディアセグメントをダウンロードし終えるまで待つ。第2の実施形態では、HLSサーバ104は、第2の再生リストファイルの中で、クライアントデバイスによってダウンロードされている、第1の再生リストファイルからのメディアセグメントと同じシーケンス番号を有するメディアセグメントを特定する。これは、第2の再生リストファイルの中に現れる最も小さいシーケンス番号である。クライアントデバイスが第2の再生リストファイルを受信すると、クライアントデバイスは、第1の再生リストファイルからのメディアセグメントのダウンロードを中断し、同じシーケンス番号を有する、第2の再生リストファイルからのメディアセグメントをダウンロードし始める。
【0053】
図3は、300において、本内容のいくつかの実施形態による、メディアプレゼンテーションを再生している間に可変ストリーム間で切り替えを行うクライアントデバイスを説明する概略図を示している。概略
図300は、「高」ビットレートで符号化された第1の可変ストリームから、「低」ビットレートで符号化された第2の可変ストリームに切り替えながら、メディアプレゼンテーションの一部を再生しているクライアントデバイス(図示せず)を表わしている。矢印は、302、304、308、310、314、および316でそれぞれ再生されている、メディアセグメントhigh-10.ts、high-11.ts、high-12.ts、high-13.ts、low-14.ts、およびlow-15.tsのための再生の順番を示している。再生されているセグメントの下に表わされているメディアセグメントは、その時間におけるクライアントデバイスのバッファされているコンテンツを表わし、「+」記号の下に表示されているメディアセグメントは、クライアントデバイスに能動的にストリーミングされている(すなわち、クライアントデバイスのバッファに追加されている途中の)ものである。説明の目的のために、2つのメディアセグメントがクライアントデバイスによってバッファされるように示されているが、
図2について、ならびに
図5および
図6についても、バッファされるメディアセグメントの実際の数は変化してよい。特定の実施形態では、バッファされるメディアセグメントの数はパラメータの数に依存し、パラメータには、メディアセグメントのデュレーションと、クライアントデバイスのバッファ容量と、クライアントデバイスへのネットワーク接続の帯域幅とが含まれる。
【0054】
3つの活動レベルが300に示されている。一番上のレベルは、クライアントデバイスが第1の可変ストリームからの高ビットレートのメディアセグメントを、同じストリームからのメディアセグメントを受信している間に再生していることを表わしている。中間のレベルでは、クライアントデバイスは、そのバッファから高ビットレートのメディアセグメントを再生している最中に、第2の可変ストリームからの低ビットレートのメディアセグメントを受信している。一番下のレベルでは、クライアントデバイスは、第2の可変ストリームからの低ビットレートのメディアセグメントを受信し、再生している。306および312に表示されている「X」記号は、インデントされたレベル間での移行時点を示している。
【0055】
302では、クライアントデバイスは、high-12.tsをダウンロードし、そのバッファに追加しながら、high-10.tsを再生する。
図3についてのこの詳細な説明では、ならびに
図5および
図6についても同様に、「メディアセグメント」という単語は、特定のメディアセグメントを名前で呼ぶ時には省かれる。これは、簡略化のために行われる。たとえば、メディアセグメントhigh-10.tsは、本明細書では単に「high-10.ts」と呼ばれる。304では、メディアセグメントhigh-10.tsの再生を終えた後、クライアントデバイスは、302ですでにバッファされた、シーケンス中の次のメディアセグメント、high-11.tsを再生し始める。クライアントデバイスが304でhigh-11.tsを再生している最中に、high-13.tsがクライアントデバイスのバッファにストリーミングされている。特定の実施形態では、各メディアセグメントはHTTPを使用してクライアントデバイスに配信される。
【0056】
移行時点306は、クライアントデバイスが、利用可能なネットワーク帯域幅の減少に応答して、第2の可変ストリームへのその移行を開始した瞬間を表わしている。それは、
図2の210において、クライアントデバイスが第2の再生リストファイルを要求する時に対応する。308および310では、クライアントデバイスは、移行時点306より前にそのバッファに記憶された最後の2つのメディアセグメントである、high-12.tsとhigh-13.tsとを再生し続ける。残りの高ビットレートのメディアセグメントを再生している間、クライアントデバイスは、
図2の216でHLSサーバ104によって提供された第2の再生リストファイルの中で特定される、低ビットレートのメディアセグメントlow-14.tsとlow-15.tsとをダウンロードし、そのバッファに追加する。第1の可変ストリームの第1の符号化ビットレートが、第2の可変ストリームの第2の符号化ビットレートを超える時、HLSサーバ104内の処理部106は、第2の再生リストファイルの中で、追跡されたシーケンス番号のセットの中の最も大きいシーケンス番号を超えるシーケンス番号を有する、第2の可変ストリームからのメディアセグメントのみを特定するように構成されている。この場合、第2の再生リストファイルの中で特定される最初のメディアセグメントであるlow-14.tsは、14というシーケンス番号を有し、それは、クライアントデバイスがダウンロードした最後の高ビットレートのメディアセグメントのシーケンス番号を1上回る。
【0057】
移行時点312では、クライアントデバイスは、第1の可変ストリームに対応するすべての高ビットレートのメディアセグメントの入ったバッファを使い尽くし、第2の可変ストリームからの低ビットレートのメディアセグメントを再生し始める。314および316では、クライアントデバイスは、308と310とでそれぞれダウンロードされたlow-14.tsとlow-15.tsとを再生する。314および316では、クライアントデバイスは、また、それぞれlow-16.tsとlow-17.tsとをダウンロードし、後の再生のためにそのバッファに追加する。一実施形態では、クライアントデバイスは、メディアプレゼンテーションの残りについて、第2の可変ストリームからのメディアセグメントをダウンロードし、再生し続ける。別の実施形態では、クライアントデバイスは、メディアプレゼンテーションを再生している間に、別の可変ストリームに再び移行する。特定の実施形態では、クライアントデバイスは、十分なネットワーク帯域幅が回復した後、低ビットレートの可変ストリームから高ビットレートの可変ストリームに移行して戻る。別の実施形態では、クライアントデバイスは、十分なネットワーク帯域幅が回復した後、低ビットレートの可変ストリームから中ビットレートの可変ストリームに移行する。
【0058】
図4(
図4a、4b)は、システム100の個別の要素が、メディアコンテンツを130〜134で示した1つまたは複数のクライアントデバイスにストリーミングするための方法を実行するために、どのように一緒に動作するのかということを示す別の論理フローチャートである。特に、
図4は、HLSサーバ104が、メディアプレゼンテーションを再生しているクライアントデバイスをより高い符号化ビットレートを有する可変ストリームに移行させるための方法400を、どのように実行するのかということを示している。402〜408では、HLSサーバ104は、
図2について202〜208でそれぞれ説明したのと同じ動作を実行する。すなわち、クライアントデバイスに、異なる符号化ビットレートを有する可変ストリームを特定する可変再生リストを提供するステップ(402)、クライアントデバイスから、第1のビットレートで符号化された第1の可変ストリームからの、第1のセットのメディアセグメントを特定する、第1の再生リストファイルに対する第1の要求を受信するステップ(404)、第1の再生リストをクライアントデバイスに提供するステップ(406)、およびクライアントデバイスによってダウンロードされた、第1の可変ストリームからのメディアセグメントのシーケンス番号を追跡するステップ(408)である。
【0059】
410では、HLSサーバ104は、クライアントデバイスから、第1の符号化ビットレートよりも高い第2の符号化ビットレートで符号化された、第2の可変ストリームからの、第2のセットのメディアセグメントを特定する、第2の再生リストファイルに対する第2の要求を受信する。より高い符号化ビットレートに対する要求は、たとえば、クライアントデバイスがネットワーク状態の改善を検出したこと、またはユーザが特定のメディアプレゼンテーションについて再生の品質を改善しようとしたことに起因し得る。
【0060】
クライアントデバイスがより高い符号化ビットレートを要求したと決定した(412)後、HLSサーバ104は、414で、クライアントデバイスに割り当てることができる利用可能なネットワーク帯域幅が閾値帯域幅よりも大きいかどうかを確認する。閾値帯域幅は、固定値、またはプログラムによって、410でクライアントデバイスによって要求された第2の再生リストファイルの中で特定された、メディアセグメントの特定のビットレートに基づいて決定される動的な値であってよい。一実施形態では、システム管理者が固定の閾値帯域幅を設定する。別の実施形態では、処理要素110が、やはりシステム管理者によって設定される特定のパラメータに基づいた、第2の要求されたビットレートの関数として動的な閾値帯域幅を決定する。たとえば、閾値帯域幅は、パラメータとして指定される傾きと基準線(すなわち、y軸の交点)とを有する、第2の要求されたビットレートに対する線形の依存性を有することができる。
【0061】
414で決定された利用可能なネットワーク帯域幅が閾値帯域幅よりも大きくない場合、HLSサーバ104は、(416で)第2の再生リストファイルの中で、第1のセットのメディアセグメントからクライアントデバイスが対応するメディアセグメントをダウンロードした、追跡された部分以外の、メディアプレゼンテーションの1つまたは複数の部分に対応するメディアセグメントのみを特定する。代替的には、利用可能なネットワーク帯域幅が閾値帯域幅よりも大きい場合、HLSサーバ104は、(418で)第2の再生リストファイルの中で、第1のセットのメディアセグメントからクライアントデバイスが対応するメディアセグメントをダウンロードした、メディアプレゼンテーションの1つまたは複数の追跡された部分に対応するメディアセグメントの数を特定する。一実施形態では、メディアプレゼンテーションの1つまたは複数の追跡された部分に対応する、第2の再生リストファイルの中で特定(418)されたメディアセグメントの数は、メディアプレゼンテーションの1つまたは複数の追跡された部分に対応する、クライアントデバイスによって要求されたメディアセグメントの数よりも小さい。
【0062】
いくつかの実施形態では、HLSサーバ104は、408で、第1の可変ストリームからダウンロードされたメディアセグメントについて追跡されたシーケンス番号を使用して、同じコンテンツを有する、第2の可変ストリームからのメディアセグメントを決定する。特定の実施形態では、たとえば、第1の可変ストリームと第2の可変ストリームとからのメディアセグメントは、それぞれ704と702とにおける低ビットレートの可変ストリームと高ビットレートの可変ストリームとについて、
図7で示した通り同じデュレーションを有し、お互いに揃っている。同じシーケンス番号を有する2つの可変ストリームからのメディアセグメントは、メディアプレゼンテーションの同じ部分に対応し、したがって、同じメディアコンテンツを有する。
【0063】
これらの実施形態では、利用可能なネットワーク帯域幅が閾値帯域幅よりも小さく、第2の符号化ビットレートが第1の符号化ビットレートよりも高い時、第2の再生リストファイルは、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントのシーケンス番号と異なるシーケンス番号を有するメディアセグメントのみを特定する(416)。利用可能なネットワーク帯域幅が閾値帯域幅よりも大きい場合、第2の再生リストファイルは、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントと同じシーケンス番号を有するメディアセグメントの数を特定する(418)。特定の実施形態では、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントと同じシーケンス番号を有する、第2の再生リストファイルの中で特定(418)されたメディアセグメントの数は、第1の可変ストリームからの、クライアントデバイスによってダウンロードされた、メディアセグメントと同じシーケンス番号を有するメディアセグメントについて要求された数よりも小さい。
【0064】
一旦HLSサーバ104が第2の再生リストファイルの中でメディアセグメントを特定すると、420で再生リストが発行される。その後、クライアントデバイスは、第2の再生リストファイルの中で特定されたメディアセグメントをダウンロードして、メディアプレゼンテーションの再生をより高い符号化ビットレートへ切り替える処理を継続する。
【0065】
図5および
図6は、それぞれ、本内容のいくつかの実施形態による、低ビットレートの可変ストリームから高ビットレートの可変ストリームへ切り替えを行うクライアントデバイスの概略
図500および概略
図600である。特に
図5は、第2の再生リストファイルの中で特定された第2のセットのメディアセグメントが、クライアントデバイスによってすでにダウンロードされたメディアプレゼンテーションのいかなる部分にも対応しない場合の実施形態を示している。これは、利用可能なネットワークの帯域幅が、
図4の414で閾値帯域幅よりも下になった時に当てはまる。
【0066】
502では、クライアントデバイスは、低ビットレートで符号化された第1の可変ストリームからメディアプレゼンテーションを再生している。クライアントデバイスは、low-12.tsをダウンロードし、すでにlow-11.tsを含んでいるクライアントデバイスのバッファにそれを追加しながら、low-10.tsを再生する。クライアントデバイスがlow-10.tsを再生し終えた時、クライアントデバイスは、504で、low-11.tsを再生し始める一方、low-13.tsをダウンロードし、それをそのバッファに追加する。移行時点506では、クライアントデバイスは高ビットレートの可変ストリームへの移行を開始する。時点506は、
図4の410における、クライアントデバイスが第2の再生リストファイルを要求するステップに対応する。508では、クライアントデバイスは、そのバッファの中に残っている低ビットレートのメディアセグメントをまだ再生している間に、高ビットレートの可変ストリームからのメディアセグメントをダウンロードするステップに移行している。クライアントデバイスは、508および510で、それぞれlow-12.tsとlow-13.tsとを再生する一方、high-14.tsとhigh-15.tsとをダウンロードしている。
【0067】
次の移行時点には512で到達する。ここでは、クライアントデバイスは、低ビットレートの可変ストリームからダウンロードしたメディアセグメントが入ったバッファを使い尽くしており、高ビットレートの可変ストリームからダウンロードしたメディアセグメントを再生し始める。514では、クライアントデバイスは、high-16.tsをダウンロードし、バッファしながら、508でダウンロードされ、バッファされたhigh-14.tsを再生する。514および516では、クライアントデバイスは高ビットレート再生に完全に移行している。
【0068】
図6に示されている概略図は、第2の可変ストリームの第2の符号化ビットレートが第1の可変ストリームの第1の符号化ビットレートを超えている時に、処理部106が、第2の再生リストファイルの中で、追跡されたシーケンス番号のセット中のシーケンス番号と同じシーケンス番号を有する、第2の可変ストリームからのメディアセグメントの数を特定するように構成されている実施形態に一致している。この実施形態は、クライアントデバイスのユーザにより楽しい再生体験を提供することと、その一方でネットワーク資源(たとえば、帯域幅)のより効率的な使用を促進することとの間の妥協としての役割を果たす。
【0069】
602では、クライアントデバイスは、low-14.tsをダウンロードし、それをそのバッファに追加しながらlow-10.tsを再生する。同様に、604では、クライアントデバイスは、low-15.tsをダウンロードし、それをそのバッファに追加しながらlow-11.tsを再生する。クライアントデバイスは、606で、第2の再生リストファイルを要求し、高ビットレートの可変ストリームへの移行を開始する。608では、そのバッファからlow-12.tsを再生しながら、クライアントデバイスは、そのバッファ中に記憶されているメディアセグメントlow-14.tsとメディアセグメントlow-15.tsとを、第2の再生リストファイルの中で特定されるメディアセグメントhigh-14.tsとメディアセグメントhigh-15.tsとで置き換える。ここで、第2の可変ストリームからの、追跡されたシーケンス番号のセットの中のシーケンス番号と同じシーケンス番号を有するメディアセグメントの数(すなわち、2)は、追跡されたシーケンス番号のセットの中のシーケンス番号と同じシーケンス番号を有する、第2の可変ストリームからのメディアセグメントについて要求された数(たとえば、3)よりも小さい。
【0070】
608では、low-12.ts、low-13.ts、low-14.ts、およびlow-15.tsという、4つのメディアセグメントがクライアントデバイスのバッファ中に示されている。low-12.tsが再生されている一方、他の3つの再生はまだ開始していない。クライアントデバイスがより高い符号化ビットレートという形式で再生の品質の改善を要求したことを認識して、HLSサーバ104は、多くの方法で進めることができる。第1の実施形態では、十分なネットワークの帯域幅が利用可能な場合、HLSサーバ104は、クライアントデバイスに、そのバッファ中のすべての低ビットレートのメディアセグメントを、高ビットレートのメディアセグメントに置き換えさせる。HLSサーバ104は、第2の再生リストファイルの中で、追跡されたシーケンス番号のセットの中のシーケンス番号(すなわち、クライアントデバイスのバッファ中の低ビットレートのメディアセグメントのシーケンス番号)と同じシーケンス番号を有する、第2の可変ストリームからのメディアセグメントを特定することによってこれを行う。クライアントデバイスに、そのバッファからすべての低ビットレートのメディアセグメントをパージさせ、置き換えさせることによって、HLSサーバ104は、クライアントデバイスに最高品質の再生体験を提供する。
【0071】
第2の正反対の実施形態では、利用可能なネットワーク帯域幅が限られており、HLSサーバ104は、ネットワーク資源のより効率的な使用を好む。ここでは、HLSサーバ104は、クライアントデバイスに、そのバッファ中の低ビットレートのメディアセグメントのうちの1つ、すなわちlow-15.tsのみを、その高ビットレートの同等物であるメディアセグメントhigh-15.tsを第2の再生リストファイルの中で特定することによって置き換えさせる。これにより、バッファされたメディアセグメントが置き換えられない、
図5に対応する実施形態に対してよりもいくらか早く、クライアントデバイスが高品質な(すなわち、より高ビットレートの)再生に移行することが可能になる。
【0072】
第3の実施形態は、クライアントデバイスのバッファ中の低ビットレートのメディアセグメントのうちの、すべてではないが1つより多くが、同じメディアコンテンツを含む高ビットレートのメディアセグメントで置き換えられて、以前の2つの間の妥協を提供する。これは、600で示す実施形態である。608では、low-14.tsおよびlow-15.tsが、下向きの矢印で示す通りクライアントデバイスのバッファから削除され、high-14.tsとhigh-15.tsとを第2の可変ストリームからバッファに追加することによって、置き換えられる。
【0073】
第3の実施形態の特定の変形形態では、処理部106は、第2の可変ストリームからの、追跡されたシーケンス番号のセットの中のシーケンス番号と同じシーケンス番号を有する置換メディアセグメントの数を、クライアントデバイスについて利用可能なネットワーク帯域幅の容量、またはクライアントデバイスのバッファ中に記憶されたメディアコンテンツの量のうちの少なくとも1つに基づいて決定するように構成されている。一変形形態では、クライアントデバイスのバッファから交換されるメディアセグメントの数は、利用可能なネットワーク帯域幅の単調増加関数であり、HLSサーバ104内の処理要素110によって値が求められる。別の変形形態では、交換されるメディアセグメントの数は、処理要素110によってバッファ容量の割合として決定される。たとえば、バッファの容量が60秒であり、各バッファされたメディアセグメントのデュレーションが10秒である場合、3つのメディアセグメントがバッファ容量の50パーセントで交換される。
【0074】
610では、クライアントデバイスは、612で高ビットレートのメディアセグメントの再生に移行する前に、バッファから置き換えられていない最後の低ビットレートのメディアセグメントlow-13.tsをバッファから再生する。614および616では、移行が完了し、クライアントデバイスは、メディアプレゼンテーションが終わるまで、またはクライアントデバイスが再び可変ストリームを切り替えるまでのいずれかまで、第2の可変ストリームからの高ビットレートのメディアセグメントのダウンロードと再生の両方を継続する。
【0075】
これらの内容によって開示した実施形態を実装することによって、現在の最先端のメディアストリーミングネットワークに対して大きな利益を実現することができる。クライアントデバイスによってダウンロードされる、メディアプレゼンテーションの同じ部分に対応する、異なる可変ストリームからのメディアセグメントの数を削減または削除することによって、ネットワーク資源に求められる要求を減少させる。これは、メディアセグメント内のIDRフレームを異なる可変ストリームにわたって揃えて、移行時点における再生を同期するために重複するセグメントをダウンロードする必要なしに、これらのストリーム間での途切れのない移行を可能にすることによって、達成することができる。
【0076】
前述の明細書では特定の実施形態を説明した。しかしながら、当業者は、以下の特許請求の範囲に明記する本発明の範囲から逸脱せずに、様々な修正および変更を行うことができるということを理解するであろう。したがって、明細書および図は、限定的意味というよりも説明的意味とみなされるものであり、すべてのそのような修正は、本内容の範囲内に含まれるよう意図されている。
【0077】
利益、利点、課題を解決するための手段、および、何らかの利益、利点、もしくは解決するための手段を生じ得るいかなる要素、またはより明白になり得るいかなる要素も、請求の範囲のいずれか一項または全項の、重要な、必須の、または本質的な特徴または要素とは解釈されない。本発明は、本特許出願の係属中になされる補正と、特許にされる特許請求の範囲のすべての均等物とを含んで、添付の特許請求の範囲によってのみ定められる。
【0078】
さらに、本明細書では、第1および第2、上および下、などの相対的な用語は、ある存在物または動作を別の存在物または動作と区別するためのみに使用され得、必ずしもそのような存在物または動作の間の、実際のそのような関係または順番を要求または暗示していない。「備える」、「備えている」、「有する」、「有している」、「含む」、「含んでいる」、「包含する」、「包含している」という用語、またはそれらの他の変形形態は、非排他的に含めることを意図し、要素の一覧を備え、有し、含み、包含する処理、方法、品物、または装置は、それらの要素のみを含むわけでなく、一覧に明示的に載っていない他の要素、またはそのような処理、方法、品物、または装置に固有の他の要素も含み得る。「…を備える」、「…を有する」、「…を含む」、または「…を包含する」が後に続く要素は、より多くの制約なしに、その要素を備え、有し、含み、包含する処理、方法、品物、または装置の中の追加的な同一の要素の存在を除外しない。「1つ」という用語は、本明細書で明示的に別のことが述べられない限り、1つまたは複数として定義される。「実質的に」、「本質的に」、「近似的に」、「約」という用語、またはそれらの他のバージョンは、当業者によって理解される通り、近いこととして定義され、ある非限定的な実施形態では、その用語は10%以内、別の実施形態では5%以内、別の実施形態では1%以内、および別の実施形態では0.5%以内であると定義される。本明細書で使用する「結合される」という用語は、必ずしも直接でなく、必ずしも機械的でないが、接続されているとして定義される。特定のやり方で「構成されている」デバイスまたは構造は、少なくともそのやり方で構成されているが、記載されていないやり方でも構成されてよい。
【0079】
いくつかの実施形態が、マイクロプロセッサ、デジタル信号プロセッサ、特注プロセッサおよびフィールドプログラマブルゲートアレイ(FPGA)などの、1つまたは複数の汎用プロセッサまたは専用プロセッサ(または「処理デバイス」)と、特定の非プロセッサ回路と連動して、本明細書で説明した方法および/または装置の機能のうちの一部、ほとんど、または全部を実装するために1つまたは複数のプロセッサを制御する、(ソフトウェアとファームウェアの両方を含む)固有の、記憶されたプログラム命令とから成り得ることが理解されるであろう。代替的に、一部のまたは全部の機能が、記憶されたプログラム命令を有さない状態機械によって、または各機能またはいくつかの機能のある組合せがカスタム論理として実装されている、1つまたは複数の特定用途向け集積回路(ASIC)で実装されてよい。もちろん、2つのやり方の組合せを使用することができる。
【0080】
さらに、(たとえば、プロセッサを備える)コンピュータを、本明細書で説明し、特許請求される方法を実行するようにプログラムするために、コンピュータ可読コードが記憶されたコンピュータ可読記憶媒体として、実施形態を実装することができる。そのようなコンピュータ可読記憶媒体の例は、ハードディスクと、CD-ROMと、光学式記憶デバイスと、磁気記憶デバイスと、ROM(リードオンリメモリ)と、PROM(プログラム可能リードオンリメモリ)と、EPROM(消去プログラム可能リードオンリメモリ)と、EEPROM(電気的消去プログラム可能リードオンリメモリ)と、フラッシュメモリとを含むが、これらに限定されない。さらに、できる限り大きな努力と、たとえば、利用可能な時間と、現在のテクノロジーと、経済的考慮とによって動機付けられる設計の選択肢の多さにも関わらず、本明細書で開示した概念と原理とによって導かれた時、当業者は、そのようなソフトウェア命令およびプログラムと、ICとを、最小限の実験を用いて容易に生み出すことができると予測される。
【0081】
読者が本技術的な開示の本質をすばやく確かめることを可能にするために、要約書を提供する。それは、それが特許請求の範囲またはその意味を解釈または限定するために使用されないという理解のもとに提出された。加えて、前述の発明を実施するための形態では、開示を簡素化する目的のために、様々な特徴が様々な実施形態の中でグループ化されていることを理解することができる。この開示の方法は、特許請求の範囲の実施形態が、各請求項の中で明示的に列挙されたものよりも多くの特徴を必要とするという意図を反映しているものとして解釈されない。むしろ、以下の特許請求の範囲が反映する通り、発明の主題は、1つの開示された実施形態のすべての特徴よりも少ないものの中にある。したがって、以下の特許請求の範囲は、本明細書によって、発明を実施するための形態に組み込まれ、各請求項は、別々に請求される主題として独自の働きをしている。