(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-04-12
(54)【発明の名称】ネットワークでストリーミングされたコンテンツをクライアントデバイスのプレーヤで再生する方法
(51)【国際特許分類】
H04N 21/462 20110101AFI20230405BHJP
H04N 21/438 20110101ALI20230405BHJP
【FI】
H04N21/462
H04N21/438
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022549062
(86)(22)【出願日】2021-02-23
(85)【翻訳文提出日】2022-10-07
(86)【国際出願番号】 EP2021054477
(87)【国際公開番号】W WO2021170594
(87)【国際公開日】2021-09-02
(32)【優先日】2020-02-28
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
(71)【出願人】
【識別番号】521420004
【氏名又は名称】ストリームルート
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ユーセフ、ヒバ
(72)【発明者】
【氏名】ストレッリ、アレクサンドル
【テーマコード(参考)】
5C164
【Fターム(参考)】
5C164GA03
5C164UB21P
5C164UB41S
5C164UC21P
5C164UD63S
5C164YA21
5C164YA24
(57)【要約】
本発明は、ネットワーク(1)でストリーミングされたコンテンツをクライアントデバイス(11)のプレーヤで再生する方法に関し、コンテンツが、複数の品質レベルで利用可能な一連のセグメントからなり、プレーヤは、プレーヤのアダプティブビットレート(ABR)ロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じてセグメントの品質レベルを選択するように構成され、クライアントデバイス(11)は、ネットワーク(1)内での転送に適合した形式でセグメントを記憶するための第1のバッファ(M1)を含み、方法は、クライアントデバイス(11)の処理ユニット(110)によって、(a)第1の品質レベルで現在のセグメントの要求をプレーヤから受信する段階と、(b)第2の品質レベルの場合、要求された現在のセグメントを上記最適な応答遅延の満了時に提供することで、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースからトレーニングされたモデルに応じて、プレーヤにそのABRロジックに従って上記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する段階と、
(c)上記推定された最適な応答遅延の満了時に、要求された現在のセグメントを第1のバッファメモリ(M1)から提供する段階とを実行することを備えることを特徴とする。
【特許請求の範囲】
【請求項1】
ネットワークでストリーミングされたコンテンツをクライアントデバイスのプレーヤで再生する方法であって、前記コンテンツが、複数の品質レベルで利用可能な一連のセグメントからなり、前記プレーヤは、前記プレーヤのアダプティブビットレート(ABR)ロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じて前記セグメントの前記品質レベルを選択するように構成され、前記クライアントデバイスは、前記ネットワーク内での転送に適合した形式でセグメントを記憶するための第1のバッファメモリを含み、前記方法は、前記クライアントデバイスの処理ユニットによって、
(a)第1の品質レベルで現在のセグメントの要求を前記プレーヤから受信する手順と、
(b)第2の品質レベルの場合、前記要求された現在のセグメントを最適な応答遅延の満了時に提供することで、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従って前記プレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースからトレーニングされたモデルに応じて、前記プレーヤにそのABRロジックに従って前記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する手順と、
(c)前記推定された最適な応答遅延の前記満了時に、前記要求された現在のセグメントを前記第1のバッファメモリから提供する手順とを実行する段階を備える、方法。
【請求項2】
前記ABRロジックが、セグメント受信率を表す前記少なくとも1つのパラメータの第1の関数によって定義され、前記モデルが、前記第1の関数を近似する、請求項1に記載の方法。
【請求項3】
前記クライアントデバイスが、前記プレーヤによって再生されるように適合された形式でセグメントを記憶するための第2のバッファメモリをさらに備え、前記現在のセグメントはステップ(c)で前記第2のバッファメモリに提供される、請求項1および2のうちの1項に記載の方法。
【請求項4】
セグメント受信率を表す前記パラメータが、前記第2のバッファメモリのバッファレベルおよび/または帯域幅である、請求項3に記載の方法。
【請求項5】
所与のセグメントについて、セグメント受信率を表す測定されたパラメータの前記ベクトルは、少なくとも、
- 前記所与のセグメントが前記プレーヤによって要求された前記第2のバッファメモリの前記バッファレベルと、
- セグメントのサイズおよび/またはセグメントのダウンロード時間および/または前記セグメントのビットレートと、
- 前記所与のセグメントについて測定された前記帯域幅とを有する、請求項4に記載の方法。
【請求項6】
それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従って前記プレーヤによってその後選択される前記対応する品質レベルに関連付けるトレーニング例の前記データベースから前記モデルをトレーニングする、前のステップ(a0)を備える、請求項1から5のいずれか1項に記載の方法。
【請求項7】
前記モデルが、モデルパラメータのベクトルによってパラメータ化された前記第1の関数の線形回帰であり、ステップ(a0)は、最小二乗法技術を使用して前記モデルパラメータのベクトルを決定する段階を含む、請求項2に従属する請求項6に記載の方法。
【請求項8】
ステップ(a0)は、セグメント受信率を表す測定されたパラメータのすべての前記ベクトルからトレーニング行列と、そのABRロジックに従って前記プレーヤによってその後選択されるすべての前記対応する品質レベルからトレーニングベクトルを構築する段階と、好ましくは、式θ=(X
TX)
-1X
TYに従って、前記トレーニング行列および前記トレーニングベクトルに関する正規方程式を使用することにより、トレーニングパラメータを決定する段階とを含み、Xは前記トレーニング行列、Yは前記トレーニングベクトル、θは前記モデルパラメータのベクトルである、請求項7に記載の方法。
【請求項9】
ステップ(a0)は、ABRロジックの複数のクラスごとに、前記クラスに関連付けられたモデルをトレーニングする段階を備える、請求項6から8のいずれか1項に記載の方法。
【請求項10】
ステップ(a0)は、複数のトレーニングされた前記モデルを検証する段階と、前記プレーヤの前記ABRロジックを適切に予測する前記モデルとしてそれらのうちの1つを選択する段階とを備える、請求項9に記載の方法。
【請求項11】
前記第2の品質レベルで前記次のセグメントに対する要求を前記プレーヤから受信したことを検証するさらなるステップ(d)を備える、請求項1から10のいずれか1項に記載の方法。
【請求項12】
ステップ(d)は、前記第2の品質レベルで前記次のセグメントの要求を前記プレーヤから受信したことが所与の回数検証されない場合、トレーニング例の前記データベースから前記モデルの新しいトレーニングをトリガする段階を備える、請求項11に記載の方法。
【請求項13】
ネットワークでストリーミングされたコンテンツをプレーヤで再生するためのデバイスであって、前記コンテンツが、複数の品質レベルで利用可能な一連のセグメントからなり、前記プレーヤが、前記プレーヤのアダプティブビットレート(ABR)ロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じて前記セグメントの前記品質レベルを選択するように構成され、クライアントデバイスが、前記ネットワーク内での転送に適合した形式でセグメントを記憶するための第1のバッファメモリを有し、前記クライアントデバイスが、
(a)第1の品質レベルで現在のセグメントの要求を前記プレーヤから受信する手順と、
(b)第2の品質レベルの場合、前記要求された現在のセグメントを最適な応答遅延の満了時に提供することで、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従って前記プレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースからトレーニングされたモデルに応じて、前記プレーヤにそのABRロジックに従って前記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する手順と、
(c)前記推定された最適な応答遅延の前記満了時に、前記要求された現在のセグメントを前記第1のバッファメモリから提供する手順とを実施する処理ユニットを備える、デバイス。
【請求項14】
プログラムがコンピュータ上で実行されるときに、ネットワーク(1)でストリーミングされたコンテンツをクライアントデバイス(11)のプレーヤで再生するための請求項1から12のいずれか1項に記載の方法を実行するためのコード命令を備えるコンピュータプログラム。
【請求項15】
ネットワーク(1)でストリーミングされたコンテンツをクライアントデバイス(11)のプレーヤで再生するための請求項1から12のいずれか1項に記載の方法を実行するためのコード命令を備えるコンピュータプログラムを記憶するコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、ピアツーピアネットワークでストリーミングされたコンテンツを再生する方法に関する。
【背景技術】
【0002】
「ストリーミング」は、クライアントデバイスでインターネットから復元しながら、「直接」オーディオまたはビデオストリームを再生する技術を指す。したがって、オーディオまたはビデオコンテンツを再生できるようにする前に、すべてのデータを復元する必要があるダウンロードとは対照的である。
ストリーミングの場合、データはクライアント(通常はランダムアクセスメモリ)のバッファに継続的にダウンロードされ、クライアントのプロセッサによってオンザフライで分析され、迅速に出力インターフェース(画面および/またはスピーカ)に転送され、次いで、新しいデータに置き換えられるため、コンテンツの記憶は一時的かつ部分的である。
【0003】
従来、コンテンツはストリーミングサーバによって提供されていた。アクセスを所望するクライアントは、クライアントから第1のセグメントを復元する要求を送信する(セグメントとは、一般に数秒間の再生に対応するコンテンツのデータブロックを意味する)。バッファに十分なデータがあり、コンテンツの先頭が再生可能になると、再生が開始される。バックグラウンドでは、コンテンツの残りの部分がバッファに引き続き供給されるために、ストリームのダウンロードは続行される。
【0004】
しかし、この手法では、多数のクライアントが同じコンテンツを同時に再生したい場合、サーバが飽和していることが見出され、滑らかに再生するのに十分なレートでコンテンツを提供できず、滑らかではない再生が発生するという限界があることに留意されたい。
【0005】
最近、「ピアツーピア」(P2P)に基づく代替戦略が提案され、この戦略では、各クライアントが他のクライアントのサーバとして機能し、これらはピアと呼ばれる。コンテンツの再生を開始したピアは、既に受信した他のセグメントに転送するなどによって、関心のあるクライアントの数に関係なく、より簡単にブロードキャストできる。この戦略は、国際出願WO2012/154287に記載されている。
【0006】
しかし、ほとんどのプレーヤはアダプティブビットレート(ABR)と呼ばれるものを実装しており、これはP2Pと組み合わせると問題になることが判明している。
【0007】
ABRの一般的な考え方は、ピアの「能力」に従って、復元されたセグメントの品質を自動的に変化させることを可能にすることである。より正確には、各セグメントは、いくつかのビットレート、すなわち、データレートに対応するいくつかの品質レベルで利用可能である。より良い品質のセグメントは、より高い解像度、より低い圧縮率、より多くの1秒あたりのフレームなどを有し、その結果、品質が低い同じセグメントよりも大きくなり、したがって、より高いデータレートをサポートする必要があることが実際に理解されよう。
【0008】
ABRストリーミング中、セグメントごとに、所与のロジック(「ABRロジック」と呼ばれる)に従って、通常、観測された帯域幅および/またはバッファ充填率という2つの基準を考慮して、選択できる最高の品質がアルゴリズムによって自動的に決定される。
【0009】
第1のケースでは、推定される帯域幅がより高い品質をサポートするのに十分であるとアルゴリズムが判断した場合、アルゴリズムはクライアントにこれに切り替えるように(または、帯域幅が低すぎる場合は、逆に品質を下げるように)指示する。第2のケースでは、原理は、バッファメモリを異なる間隔に分割することであり、各間隔は、バッファメモリの充填が増加するにつれてますます高い(または、減少する場合はより低い)品質に対応する。
【0010】
どちらのケースでも、問題は、ABRアルゴリズムにP2Pストリーミングコンテキストで使用するための基本的な非互換性がない場合であっても、ABRアルゴリズムが単純なストリーミングシナリオ、すなわち、コンテンツサーバからの要求に応じてすべてのセグメントを取得することで動作するように設計されていることである。
【0011】
しかし、実際には、P2Pストリーミングは、リーダが実際にP2Pセグメントを要求する前にそれらを専用のP2Pキャッシュにダウンロードすることにより、「事前バッファリング」を有利に実行する。実際、P2Pストリーミングの目的は、できるだけ少なく(および最後の手段として)元のコンテンツサーバに要求することであり、セグメントからこのサーバへの直接要求は、ビデオバッファにセグメントがなくなり、再生が中断(「再バッファリング」)されるリスクがある場合にのみ行われ、それ以外の場合は、P2Pネットワーク上は最大数となる。
【0012】
したがって、セグメントが要求されてから数分の1秒にP2Pキャッシュからバッファメモリにロードできるため、プレーヤの観点からは、現状通りに見かけの帯域幅は非常に高いままである。さらに、ビデオバッファの充填率が人為的に高くなる。
【0013】
これにより、現在の品質が最高品質でない場合、ABRの制御されていない決定により、実際のネットワーク容量に関係なく、品質が向上し、その品質は必ずしもサポート可能とは限らないことがある。
【0014】
ストリームの品質の不安定な揺れ、または、さらに再生の繰り返しの中断、およびコンテンツサーバへの多数の不必要な要求を回避するために、出願FR1903195では、ABRアルゴリズムを制御するために、プレーヤにセグメントを配信する前に人為的な応答遅延を導入することが鋭く提案されている。
【0015】
この方法は非常に満足できるものであるが、適切な応答遅延を選択するのは難しい場合がある。一方では、長すぎると、プレーヤバッファが不足し、望ましくない再バッファリングイベントを引き起こす可能性がある。また、ABRは、利用可能な帯域幅が低いと誤認し、より低いコンテンツ品質に切り替える。一方で、短すぎると、ABRは利用可能な帯域幅が維持できない過剰な品質に切り替わることになり、再バッファリングイベントが発生する。
【0016】
最適な遅延は、実装されたABRロジックに強く依存するため、最初にこのロジックを理解し(すなわち、ABRがどのように「動作」するかを知り)、次いで、それに応じて応答遅延を修正することが非常に重要である。問題は、残念なことに、ABRロジックがプレーヤに固有であることが多く、アクセスしにくく、さらに変更しにくいことである。
【0017】
したがって、P2Pストリーミングコンテキストで任意のABRアルゴリズムを制御する、より普遍的で信頼性が高く、不可知論的な方法を有することが望ましい。
【0018】
本発明はこの状況を改善する。
【発明の概要】
【0019】
これらの目的のために、本発明は、第1の態様に従って、ネットワークでストリーミングされたコンテンツをクライアントデバイスのプレーヤで再生する方法を提供し、上記コンテンツは、複数の品質レベルで利用可能な一連のセグメントからなり、プレーヤは、プレーヤのアダプティブビットレート(ABR)ロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じてセグメントの品質レベルを選択するように構成され、クライアントデバイスは、ネットワーク内での転送に適合した形式でセグメントを記憶するための第1のバッファを含み、方法は、クライアントデバイスの処理ユニットによって、
(a)第1の品質レベルで現在のセグメントの要求をプレーヤから受信する手順と、
(b)第2の品質レベルの場合、要求された現在のセグメントを上記最適な応答遅延の満了時に提供することで、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースからトレーニングされたモデルに応じて、プレーヤにそのABRロジックに従って上記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する手順と、
(c)上記推定された最適な応答遅延の満了時に、要求された現在のセグメントを第1のバッファメモリ(M1)から提供する段階とを実行することを含むことを特徴とする。
【0020】
本発明の好ましいが非限定的な特徴は、以下の通りである。
【0021】
上記ABRロジックは、セグメント受信率を表す上記少なくとも1つのパラメータの第1の関数によって定義され、上記モデルは第1の関数を近似する。
【0022】
クライアントデバイスは、プレーヤによって再生されるように適合された形式でセグメントを記憶するための第2のバッファをさらに備え、上記現在のセグメントはステップ(c)で上記第2のバッファに提供される。
【0023】
セグメント受信率を表す上記パラメータは、第2のバッファのバッファレベルおよび/または帯域幅である。
【0024】
所与のセグメントについて、セグメント受信率を表す測定されたパラメータのベクトルは、少なくとも、
- 上記所与のセグメントがプレーヤによって要求された第2のバッファのバッファレベルと、
- セグメントのサイズおよび/またはセグメントのダウンロード時間および/またはセグメントのビットレートと、
- 上記所与のセグメントについて測定された帯域幅とを有する。
【0025】
方法は、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースから上記モデルをトレーニングする、前のステップ(a0)を備える。
【0026】
上記モデルは、モデルパラメータのベクトルによってパラメータ化された第1の関数の線形回帰であり、ステップ(a0)は、最小二乗法技術を使用してモデルパラメータのベクトルを決定することを含む。
【0027】
ステップ(a0)は、セグメント受信率を表す測定されたパラメータのすべてのベクトルからトレーニング行列と、そのABRロジックに従ってプレーヤによってその後選択されるすべての対応する品質レベルからトレーニングベクトルとを構築することと、好ましくは、式θ=(XTX)-1XTYに従って、トレーニング行列およびトレーニングベクトルに関する正規方程式を使用することにより、上記トレーニングパラメータを決定することとを含み、Xはトレーニング行列、Yはトレーニングベクトルで、θはモデルパラメータのベクトルである。
【0028】
ステップ(a0)は、ABRロジックの複数のクラスごとに、そのクラスに関連付けられたモデルをトレーニングすることを含む。
【0029】
ステップ(a0)は、複数のトレーニングされたモデルを検証することと、プレーヤのABRロジックを適切に予測するモデルとしてそれらのうちの1つを選択することとを含む。
【0030】
方法は、第2の品質レベルで次のセグメントに対する要求をプレーヤから受信したことを検証するさらなるステップ(d)を含む。
【0031】
ステップ(d)は、第2の品質レベルで次のセグメントの要求をプレーヤから受信したことが所与の回数検証されない場合、トレーニング例の上記データベースからモデルの新しいトレーニングをトリガすることを含む。
【0032】
第2の態様によれば、本発明は、ネットワークでストリーミングされたコンテンツをプレーヤで再生するためのデバイスを提供し、上記コンテンツは、複数の品質レベルで利用可能な一連のセグメントからなり、プレーヤは、プレーヤのアダプティブビットレート(ABR)ロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じてセグメントの品質レベルを選択するように構成され、クライアントデバイスは、ネットワーク内での転送に適合した形式でセグメントを記憶するための第1のバッファを含み、方法は、クライアントデバイスの処理ユニットによって、クライアントデバイスは、
(a)第1の品質レベルで現在のセグメントの要求をプレーヤから受信する手順と、
(b)第2の品質レベルの場合、要求された現在のセグメントを上記最適な応答遅延の満了時に提供することで、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースからトレーニングされたモデルに応じて、プレーヤにそのABRロジックに従って上記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する手順と、
(c)上記推定された最適な応答遅延の満了時に、要求された現在のセグメントを第1のバッファメモリから提供する手順とを実施する処理ユニットを備えることを特徴とする。
【0033】
第3および第4の態様によれば、本発明は、ネットワークでストリーミングされたコンテンツをクライアントデバイスのプレーヤで再生するための第1の態様による方法を実行するためのコード命令を含むコンピュータプログラム製品、およびネットワークでストリーミングされたコンテンツをクライアントデバイスのプレーヤで再生するための第1の態様による方法を実行するためのコード命令を含むコンピュータプログラム製品が記憶されるコンピュータ可読媒体を提供する。
【図面の簡単な説明】
【0034】
本発明の上記および他の目的、特徴および利点は、添付の図面に関連して読まれる、その例示的な実施形態の以下の詳細な説明において明らかになるであろう。
【0035】
【
図1】本発明による方法を実施するためのアーキテクチャを表す。
【0036】
【
図2】本発明による方法の好ましい実施形態を示す。
【発明を実施するための形態】
【0037】
アーキテクチャ
図1および
図2を参照すると、本発明は、専用のトレーニング方法に従って有利にトレーニングされた、クライアントデバイス11のプレーヤのABRロジックを予測するためのトレーニングされたモデルを使用して、ネットワーク1内(有利には、クライアントデバイス11、12のピアツーピアネットワーク10内)でストリーミングされるコンテンツを再生する方法に関する。
【0038】
ネットワーク1は、本明細書では大規模通信ネットワークであり、特にインターネットである。このネットワーク1は、クライアントデバイス11、12のピアツーピアネットワーク10を含む。各クライアントデバイス11、12は、典型的には、ネットワーク1に接続されたスマートフォン、PC、タブレットなどのパーソナルコンピューティングデバイスであり、プロセッサなどのデータ処理ユニット110、コンテンツを再生するためのインターフェース、およびランダムアクセスメモリおよび/または大容量メモリなどの記憶ユニットを有する。
【0039】
再生は、プレーヤ、すなわち、データ処理ユニット110によって実行されるアプリケーションによって実装され、このアプリケーションは、例えば、専用アプリケーション、特にHTML5互換のインターネットブラウザ、オペレーティングシステムモジュールなど、様々な性質のものである可能性がある。プレーヤは、名前およびバージョンによって定義され得ることに留意されたい。
【0040】
以下の説明では、プレーヤは「現状のまま」、すなわち、この処理の実装のために、さらにP2Pストリーミングのために修正されていないことを前提としている。特に、プレーヤは、アダプティブビットレート(ABR)ロジックを実装しており、言い換えれば、再生される上記コンテンツは、複数の品質レベルで利用可能な一連のセグメントからなり、プレーヤは、このABRロジックに従って、どの品質レベルを要求するかを自律的に決定できる。様々な品質レベルは、異なるビットレートに対応しており、すなわち、単位時間あたり(したがって、セグメントあたり)の可変量のデータである。より高い品質のコンテンツには、より高いビットレートが必要であることは当然理解している。
【0041】
ABRロジックの概念に関しては、後で詳しく説明するが、本方法の文脈において、ABRロジックが制御可能であること、さらには、本方法が完全に普遍的であり、任意の基準に基づいて任意のABRロジックを実装する任意のプレーヤに適合され得ることを知っている必要もないことだけは理解されるべきである。ABRロジックは事前に定義されており、クライアントソフトウェア(以下を参照)はそれを実行するだけであると想定される。
【0042】
さらに、クライアントデバイス11(より正確には、その記憶ユニット)は、2つのバッファM1およびM2、典型的には、ランダムアクセスメモリの2つのゾーンを有し、それぞれがコンテンツの全部または一部を一時的に(見られるように様々な方法で)記憶することができる(一時的とは、セグメントが再生された直後に、そのセグメントがこのメモリから削除されることを意味する。セグメントは直接ダウンロードの場合のように、長期間記憶されない)。後で説明するように、ブラウザ経由で再生することが好ましいケースでは、すべてのセグメントは通常、遅くともビデオを再生するブラウザまたはタブを閉じたときに削除される(すなわち、バッファが再初期化される)。
【0043】
第1のバッファM1は「ピアツーピアキャッシュ」と呼ばれる。それは、いわゆる「生」の形式でセグメントを記憶する。生のセグメントとは、ネットワーク1内、特にピアツーピアネットワーク10内での転送に適合しているが、デバイス11での再生には適合していない形式を意味する。
【0044】
第2のバッファM2は「ビデオバッファ」と呼ばれる。それは、いわゆる「変換された」形式でセグメントを記憶する。変換されたセグメントとは、デバイス11で再生するのに適合しているが、ピアツーピアネットワーク10内で転送するのには適合していない形式で生のセグメントから変換されたことを意味する。
【0045】
導入部で説明したように、これらのデバイス11、12は、ピアツーピアネットワーク10の「ピア」(「ノード」とも呼ばれる)である。
【0046】
「ピアツーピアネットワーク10のクライアントデバイス11、12」とは、ピアツーピアネットワークプロトコルによってネットワーク1に接続されたデバイスを意味する。言い換えると、各ピアのデータ処理ユニットは、ピアツーピアを使用するための特定のプログラム(「ピアエージェント」(PA)と呼ばれるクライアントソフトウェア)を実装し、このプログラムは、プレーヤと統合すること(例えば、ウェブブラウザの拡張機能)も、専用アプリケーションにすることも、さらに他のソフトウェアに埋め込むこと(例えば、インターネットアクセスボックスのオペレーティングシステム、またはマルチメディアボックス、すなわち、「セットトップボックス」)もできる。本方法は、主にこのクライアントソフトウェアを介して実装される。以下の説明では、クライアントソフトウェアは、独立して動作しながら、プレーヤにセグメントを提供するためにプレーヤと通信していると仮定する。より正確には、プレーヤの役割は再生そのもの、すなわち、セグメントのレンダリングであり、クライアントソフトウェアの役割は単にリーダ用のセグメントを取得することであり、クライアントソフトウェアはプレーヤの操作、特にそのABRロジックを実行することだと理解している。
【0047】
説明したように、ピアツーピアネットワーク、またはP2Pは、ネットワーク1内の分散型サブネットワークであり、中央サーバを通過することなく、ピアツーピアネットワーク10の2つのクライアントデバイス11、12間でデータを直接転送できる。したがって、すべてのクライアントデバイス11、12が、クライアントおよびサーバの両方の役割を果たすことが可能になる。したがって、ピア11、12は、「シーダ」(またはデータ供給者)および/または「リーチャ」(またはデータ受信者)として定義される。
【0048】
特にオーディオまたはビデオコンテンツであり、ある程度の長さのメディアである上記コンテンツは、ピアツーピアネットワーク10に接続されたサーバ2のデータ記憶手段に記憶された一連のセグメント(「プレイリスト」と呼ばれる)からなる。セグメントは所定の長さを有し、通常はコンテンツの1秒または2秒であるが、数分の1秒から約10秒までの範囲とすることができる。通常、所与のコンテンツのすべてのセグメントの長さは同じである。
【0049】
サーバ2は、有利にはネットワーク1に存在し、ピアツーピアネットワーク10に接続される、コンテンツサーバである。言い換えれば、これは、所与のストリーミングプロトコルに従って様々なコンテンツのセグメントを提供するインターネットネットワーク1の1つ(または複数)のサーバである。例えば、セグメントが「ts」ファイルであり、「m3u8」プレイリストファイルにリストされているHLS(「HTTPライブストリーミング」)について述べる。HLSには、コンテンツのMPEG2またはフラグメント化されたMP4形式が含まれる。DASH、滑らかなストリーミング、またはHDSストリーミングプロトコルについても述べる。生のセグメントは、WebRTCタイプのプロトコルを介してピア間で共有され得る。
【0050】
サーバ2は、最初にコンテンツを有しているピアがない限り(サーバ2がこのピア11、12に最初に転送される前に)、セグメントの主要なソースである。コンテンツは、最初からサーバ2に一体的に記憶される(前述のVODの場合)か、リアルタイムで生成(ライブストリーミングの場合)され、後者の場合、コンテンツを構成するセグメントのリストは、経時的に動的に変化する。
【0051】
ライブストリーミングは、同時進行する、例えば、コンサート、会議、スポーツイベント、ビデオゲームなどの「ライブ」イベントに関連付けられたコンテンツをリアルタイムでブロードキャストすることを提案している。映画として既に一体的に存在するコンテンツのストリーミングに関しては、実際には、関連付けられたイベントが進行するにつれて、ライブストリーミングブロードキャストコンテンツが徐々に生成される。技術的には、テレビでのライブイベントの場合と同様に、そのようなコンテンツは、ユーザができる限り小さくしたい、ある程度の遅延を伴うだけでブロードキャストできる。通常、この遅延は1分程度であるが、約20秒まで短くなる可能性もある。それによって、各瞬間にほんのわずか数セグメント(多くても数十セグメント)のプレイリストが利用可能になり、このリストのセグメントは、イベントが発生すると、新しいセグメントが作成され、「世代」が(予想される遅延の終わりに)クライアントによって受信および再生され、最終的にリストを終了するターンオーバに従って動的に更新される。
【0052】
後者の場合(ライブストリーミング)では、コンテンツはむしろ連続したストリームとして見られなければならない。それによって、セグメントのシーケンスは動的に、すなわち、定期的に更新される。新しいセグメントが生成されるたびに、それがシーケンスの終わりに追加され、シーケンスの第1のセグメント(最も古い)が削除される。他のすべては、FIFOリストに関連付けられ得るターンオーバ機構に従ってずらされる。リストの第1のセグメント(最も古いもの)は、「ライブ」セグメントまたは「過去」セグメントのいずれかであり得る。「ライブ」セグメントは再生端のセグメントであり、したがって、そのセグメントは再生されるとすぐにプレイリストから削除される。「過去」セグメントは、コンテンツサーバ2が、例えば、DVR(デジタルビデオレコーダ)および最大2時間の遅延のライブストリーミングを許可する他のプラットフォームで、コンテンツがある程度の遅延を伴って再生されることを受け入れる場合に存在する。
【0053】
本方法は、任意の文脈で実施し得る。
【0054】
ピアツーピアネットワーク10には、「トラッカ」と呼ばれるピア管理サーバ3も接続されている。トラッカ3は、データ処理手段および記憶手段を有する。トラッカは、ピア11、12間の交換を(クライアントデバイス11、12のそれぞれによって実装されるクライアントソフトウェアを制御することによって)調整するが、データ転送には直接関与せず、ファイルのコピーを有しない。
【0055】
説明したように、プレーヤのABRロジックを予測するためのモデルをトレーニングするための専用の方法は、クライアントデバイス11の(または別のクライアントデバイス12の)処理ユニット110によって実装され得るか、またはピア管理サーバ3によって直接実装され得る。
【0056】
後で説明するように、トレーニングを実行する機器は、プレーヤに既に提供されている複数のトレーニングセグメント(上記トレーニングセグメントがプレーヤに要求されたときに測定されたセグメント受信率を表すパラメータのベクトルおよび、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルの対)に関連付けられたデータで作成されたトレーニングデータベースを記憶する必要がある。
【0057】
プレーヤのタイプおよびバージョンと同数のモデル(およびデータベース)が存在し得、所与のプレーヤのモデルは、クライアントデバイス11、12またはサーバ3によって学習され、各クライアントデバイス11、12でこの特定のプレーヤのABRロジックを予測するために、(サーバ3から直接、またはP2Pメッセージとして伝播して)すべてのクライアントデバイス11、12に提供され得ることに留意されたい。各クライアントデバイス11、12は、それが実装するプレーヤに対応するモデルのみを受信することを選択し(例えば、所与のプレーヤの新しいバージョンがある場合、以前のモデルを削除し)得ることに留意されたい。
【0058】
ABRロジック
既に説明したように、クライアントデバイス11のプレーヤは、プレーヤのABRロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じてセグメントの品質レベルを選択するように構成される。
【0059】
いずれの場合も、ABRロジックは、セグメントの受信率を表す上記少なくとも1つのパラメータに応じて、選択される品質レベル(ビットレート)を計算することを可能にする第1の関数によって定義できる。より正確には、上記第1の関数は、一般に、受信された各セグメントでプレーヤによって呼び出され、出力は、次のセグメントが要求される品質レベルである。上記出力は、特に整数のレベル番号(例えば、1とLの間で、1が最低の品質で、Lが最高の品質、またはその逆である)として、または直接ビットレート値(可能なビットレート値の中から選択された離散値、または連続ビットレート値のいずれか)として表すことができることに留意されたい。上記第1の関数は、「ブラックボックス」であると想定されている。
【0060】
セグメント受信率を表す上記パラメータは、セグメントを「十分に速く」受信するためのデバイス11および/またはネットワーク10の能力を示す任意のパラメータであり得る監視対象パラメータであることが理解されよう。前述のように、既知のABRロジックは、一般に、第2のバッファメモリM2のバッファレベル(値、すなわち、秒またはセグメントの数、またはレートのいずれか)および/または帯域幅(すなわち、観察されたデータ受信率)をパラメータとして使用する。
【0061】
言い換えると、プレーヤは帯域幅および/またはバッファレベルを監視し、その結果、必要なセグメントの品質レベルを修正するかどうかを決定する。
【0062】
デバイス能力(CPU/GPUの負荷およびデコード能力、利用可能なメモリ、画面サイズなどを含む)および/またはユーザの地理的位置など、他のパラメータが考慮される場合があることに留意されたい。
【0063】
したがって、ABRロジックには次の3つの主要なクラスがある。
- バッファベースのABRロジック用の「BB」クラス。
- レートベースのABRロジック用の「RB」クラス。
- ハイブリッド(バッファレートベース)ABRロジック用の「H」クラス。
【0064】
さらにクラスがある可能性に留意されたい。以下の明細書では、これらの3つのクラスの例を取り上げるが、本方法が可能なABRロジッククラスの任意のセットに限定されないことを当業者ならば理解するであろう。
【0065】
モデルのトレーニング
本方法は、機械学習(ML)アルゴリズムを使用して、ABRロジックを予測するモデルをトレーニングすること、すなわち、ABRロジックの実際のクラスに関係なく、ABRロジックを定義する上記の第1の関数を近似することを提案する。
【0066】
数学的には、(プレーヤによって要求され受信されると)任意の所与のセグメントに対して、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベル(すなわち、「スカラ出力」)に関連付けられたプレーヤによって上記所与のセグメントが要求されたときに測定されたセグメント受信率を表すパラメータのベクトル(すなわち、「入力ベクトル」)を構築できる。
【0067】
これは、任意の可能なABRクラスおよびロジックをすべて含めるために、入力ベクトルにセグメント受信率を表す可能なパラメータを含めるという考え方である。
【0068】
言い換えると、M個のセグメント、有利には1つまたは複数のコンテンツの連続するセグメントを考慮すると、各セグメント
【数1】
について、n個の特徴の入力ベクトルx
mおよびスカラ出力y
mがあり、例えば、
-
【数2】
セグメントmが要求されるバッファレベル
-
【数3】
セグメントのサイズ
-
【数4】
セグメントのダウンロード時間
-
【数5】
セグメントmの測定された帯域幅
-
【数6】
前のセグメントで測定された帯域幅
-
【数7】
最後のセグメント(存在する場合)の測定された帯域幅
- y
m=[br
m]:セグメントmのビットレート決定
【0069】
入力ベクトルxmと対応するスカラ出力ymとの対はトレーニング例と呼ばれ、モデルをトレーニングするために機械学習アルゴリズムを実行するためにトレーニング例のデータベースを構築され得る。説明したように、各トレーニング例は、プレーヤによる所与のセグメント(トレーニングセグメントと呼ばれ得る)の実際の受信に対応することを理解されたい。言い換えると、各トレーニング例は、トレーニングセグメントがプレーヤによって受信されたときに測定されたセグメント受信率を表すパラメータのベクトルと、次のセグメントを要求するために、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルとを関連付ける。
【0070】
上記モデルは、入力と出力の間の関係として、特に、各入力ベクトルxmに対して値hθ(xm)がymにできるだけ近くなるように、モデルパラメータのベクトルθでパラメータ化された「仮説」hθとして定義できる。
【0071】
したがって、セグメント受信率を表す現在のパラメータをリアルタイムで測定し、現在の入力ベクトルx
iを生成することにより、仮説h
θ(x
i)を使用して、プレーヤによって次のセグメントが要求されるビットレートである出力
【数8】
を予測できる。
【0072】
したがって、本方法は、セグメント受信率(すなわち、プレーヤによって要求されるときに、所与のセグメントに対して測定される)を表す測定されたパラメータのベクトルを、(次のセグメントを要求するとき)そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルにそれぞれ関連付けるトレーニング例の上記データベースからモデルをトレーニングする最初のステップ(a0)を有利に備える。
【0073】
任意のタイプのモデルおよび任意の種類の機械学習アルゴリズムを使用し得ることに留意されたい。
【0074】
好ましくは、モデルは、上記第1の関数を近似する線形関数(線形回帰)であり、線形最小二乗法(LLS)技術、特に、最小二乗法(OLS)技術によって学習されるが、他のモデル(特に多項式、非線形など)およびその他の機械学習技術(ベイジアン、k最近傍、サポートベクタマシンなど)を当業者ならば使用可能である。
【0075】
線形回帰の場合、
【数9】
となり、
【数10】
である。
【0076】
OLS技術を適用するために、トレーニングデータベースは次の対(X,Y)として表し得る。
-次元(n+1)*Mのトレーニング行列Xは、セグメント受信率を表す測定されたパラメータのすべてのベクトルから構築される。好ましくは、次のようになる。
【数11】
- 次元MのトレーニングベクトルYは、そのABRロジックに従ってプレーヤによってその後選択されるすべての対応する品質レベルから構築される。好ましくは、次のようになる。
【数12】
各ベクトルx
mの前の行列の「1」により、h
θの式に第1のオフセット項θ
0を持たせることが可能であることに留意されたい。
【0077】
そこから、θの値は正規方程式θ=(XTX)-1XTYを使用して簡単に推定できる。(XTX)-1XTはXのMoore-Penrose擬似逆行列である。
【0078】
説明したように、ステップ(a0)は、クライアント11によってローカルで実行され得るか、またはサーバ3で集中的に実行され得る。いずれの場合も、トレーニング例は、トレーニングデータベースを構成するために、ネットワーク1内で送信され得る。例えば、生データは、サーバ3で様々なクライアント11、12から収集され得、処理されたトレーニングデータ(トレーニング行列XおよびトレーニングベクトルYなど)が構築され、場合によっては送り返される。
【0079】
ABRクラス
前述のモデルは不可知論的で普遍的なものであり、任意のクラスに適用できることを意味する。
【0080】
しかし、BB、RB、およびHクラスのABRロジックは、異なる入力変数を使用する。したがって、トレーニングセットにさらに変数(特に未使用または冗長な変数)を追加すると、モデルがトレーニング対象のデータに強く依存するようになる過剰適合になり、したがって、正確に学習する能力が失われる可能性がある。
【0081】
ABRのクラスを知ることで、冗長な特徴を安全に削除し、プレーヤによって実装されたABRロジックの実際の入力のみを保持することで、この問題を処理することが可能である。
【0082】
この目的のために、ステップ(a0)は、ABRロジックのクラスごとに1つずつ、複数のモデルを(並行して)トレーニングすることを優先的に含む。この例では、K=3クラス(BB、RB、およびH)が存在するため、以下の3つのモデルがトレーニングされる。
- BBモデルは、バッファベースのABRロジック用である。
これは、
【数13】
のみを入力(トレーニング例のバッファレベル)として使用してトレーニングされ、すなわち、
【数14】
を「単純化された」トレーニング行列として使用する。
- RBモデルは、レートベースのABRロジック用である。
これは、
【数15】
,
【数16】
,…,
【数17】
のみを入力(測定された帯域幅)として使用してトレーニングされ、すなわち、
【数18】
を「単純化された」トレーニング行列として使用する。
- Hモデルは、バッファレートベースのABRアルゴリズム用である。これは、バッファレベルおよび帯域幅の測定の両方を入力として(すなわち、Xの少なくとも列1および列4から列nまでをトレーニング行列として、場合によっては行列X全体を)使用してトレーニングされる。列2および列3には、以下で説明する特殊用途があり得ることに留意されたい。
【0083】
OLSを使用する線形回帰の好ましい実施形態では、各モデルk⊆Kは、異なる仮説
【数19】
を示唆するために正規方程式
【数20】
(X
kはクラスに対応する単純化されたトレーニング行列である、上記参照)を使用し得る。
【0084】
所与のプレーヤについて、K個のモデルの1個だけが実際に真である(すなわち、プレーヤのABRロジックを適切に予測する)ことに留意されたい。したがって、ステップ(a0)は、上記テストセットのカテゴリ精度をチェックするために、特にテストセットを構築する(すなわち、いくつかの対(xm,ym)を保持する)ことによって適切なモデルを選択する(他のモデルは破棄される)ためにK個のモデルを検証することを有利にさらに含む。
【0085】
最終的に、選択されたモデルは、大規模に使用するために、任意のデバイス11、12と共有される可能性がある。ピア間でのこのモデルの伝播は、サーバ3から直接、またはP2Pによって直接行われ得る。モデルを受信したピアは、新しいトレーニングステップ(a0)を再開することで、モデルをテストおよび/または改良し得ることに留意されたい。
【0086】
ABRの制御
以下の説明では、他のデバイス12および/またはサーバ2からコンテンツを取得しようとしているクライアントデバイス11に焦点を当てており、すなわち、第1のバッファメモリM1が、少なくとも1つの生のセグメントを、少なくとも1つの品質レベルで、可能であればコンテンツを構成するシーケンスのサブシーケンスを既に記憶していることに焦点を当てている。
【0087】
プレーヤに適した(すなわち、上記プレーヤのABRロジックを予測する)モデルは、既にトレーニングされ、選択され、デバイス11で利用可能であると想定される。
【0088】
次いで、方法は、デバイス11の処理手段110による、セグメント(「現在のセグメント」と呼ばれる)、実際には第2のバッファメモリM2に入れられる次のセグメント(必ずしも、次のセグメントが再生されるとは限らず、通常、バッファリングされた事前セグメントがある)に対する要求を受信するステップ(a)の実施から始まる。上記要求はプレーヤから受信され、要求されたセグメントに必要な品質レベル、すなわち、「第1の品質レベル」と呼ばれる、ビットレート(ABRロジックを適用することによる)を定義する。
【0089】
上記セグメントは、この段階で、プレーヤが要求する第1の品質で、第1のバッファM1内で少なくとも部分的に利用可能(すなわち、少なくともフラグメント)であると仮定される。このセグメント/セグメントフラグメントが別の品質であった場合、時間が切迫しているため、通常は再びコンテンツサーバ2から直接取得する必要がある。
【0090】
ステップ(a)は、必要に応じて、セグメント受信率を表す上記少なくとも1つのパラメータの「測定」を含む。
【0091】
次のステップ(b)では、トレーニングされたモデルを使用して、第2の品質レベル(第1の品質レベルと同じであり得る)について、要求された現在のセグメントを上記最適な応答遅延の満了時に提供することで、プレーヤにそのABRロジックに従って、上記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する。
【0092】
言い換えれば、ABRロジックを制御する目的は、第2の品質レベルで次のセグメントを要求するように「強制」するためである。最適な応答遅延とは、ABRロジックに第2の品質レベルを要求させるのに適した応答遅延を意味する(したがって、最適な応答遅延は必ずしも一意ではなく、一般に最適な応答遅延の「範囲」がある)。
数学的には、次のセグメントm+1に対して、
【数21】
=h
θ(x
m+1)が要求されると予想される第2の品質レベルになるように、入力ベクトルx
m+1をトリガする必要がある。
【0093】
この目的のために、応答遅延とモデルの入力変数との関係を理解することが最初に重要であり、pがセグメント期間(通常は固定)であり、d
mが現在のセグメントmに適用される応答遅延である場合、次のようになる。
- b
m+1=b
m+p-d
m、言い換えると
【数22】
、これは、再生によってバッファが徐々に空になるためである(BBモデルおよびHモデルに有用)
-
【数23】
、言い換えると
【数24】
、遅延はダウンロード時間(セグメントは既に第1のバッファM1にダウンロードされているため、実際の転送時間はほぼゼロである)として変換されれ得、
【数25】
は多くの場合、一定であるためである(RBモデルおよびHモデルに有用)。
【0094】
入力ベクトルx
m+1の他のパラメータは、現在のベクトルx
mの測定値とパラメータから推定され得、例えば、
【数26】
は多くの場合、一定であり、単純な変換
【数27】
によって推定される。その結果、x
m+1はf(x
m,d
m)と表され得る。
【0095】
x
mを計算するために推定された一部のパラメータには、x
m-1から推定して、それらの値を修正したものがある可能性に留意されたい(
【数28】
は測定できる)。
【0096】
ym+1=hθ(xm+1)となるように入力ベクトルxm+1を決定するには、理論的にモデルを「反転」する必要がある。
【0097】
第1の単純な方法は、適切な入力ベクトルxm+1に到達するまでdmの可能な値を繰り返し試行することである。複数の適切なdmの値が見つかった場合は、最大のものを最適な応答遅延として選択することが好ましい。
【0098】
そのような最適化問題を解決することは、当業者の理解の範囲内であることを理解されたい。
【0099】
線形回帰の好ましいケースでは、入力は通常、特徴のベクトルであり、予測される出力はスカラである。逆線形回帰を使用すると、次の2つの異なることを意味する可能性がある。
- 式
【数29】
を使用して、1つの出力につながるすべての特徴の組み合わせを1つだけ予測する。θ
T+はθ
Tの擬似逆行列(すなわち、θ
T+=(θθ
T)
-1θ)である。
- または、次の系
【数30】
で1つの方程式を選択することにより、モデル、出力、および残りの特徴を使用して、1つの特徴のみが予測される。
【0100】
第2の手法は、残りの特徴が既に知られているか、または測定されており、応答遅延を使用してそれらを制御することはできないため、一般に2つの特徴、所望のバッファレベル(bm+1)および帯域幅(bwm+1)を予測するだけなので、非常に実効的であることに留意されたい。
【0101】
上記の連立方程式では、残りのすべての特徴が事前に知られていると仮定されていることを示す1つの特徴のみを予測することが可能であることに留意されたい。これは、複数の特徴を同時に予測する必要があるハイブリッドモデルには必ずしも当てはまらない。この特定のケースの場合、問題は次の最適化問題として定式化できる。
【数31】
【0102】
この問題を解決するには、ニュートン法、線形計画法(LP)、逆強化学習の特徴構築など、様々な手法を使用できる。
【0103】
ステップ(b)の終わりに、最適な応答遅延が推定されると想定される。
【0104】
P2Pネットワークから取得されたのが要求されたセグメントのフラグメントのみであるケース(セグメントは不完全な形で利用可能であると言われている)では、最適な応答遅延のフラグメントのみが実際に適用されるべきであるという事実を反映させるために、推定された最適な応答遅延は、フラグメントの長さに従って修正されることが好ましい。実際、第2のバッファM2には完全なセグメントのみを提供でき、フラグメントは提供できない。これは、第1のバッファM1でこのセグメントを完了する(取得を終了する)ための時間に対応する暗黙の待機遅延が既に存在するという事実を反映して、より短い応答遅延の後に完全なセグメントを提供するという考え方である。したがって、ステップ(b)は、推定された最適な応答遅延を、セグメントの取得を完了するのに必要な推定された継続時間に応じて修正することを含み得る。
【0105】
例えば、式d'm=dm-tdwの適用が可能であり、d'mは修正された最適な応答遅延であり、tdwはセグメントの取得を完了するのに必要な推定された時間である。したがって、完全なセグメントを配信する前に、時間tdwを待ってからd'mを適用することは、dmを適用することと同じであるため、全体の遅延は同じままである。
【0106】
ステップ(c)では、要求に応答して、第1のバッファM1から、推定された最適な応答遅延の満了時に、要求されたセグメントが提供される。「上記応答時間の満了時に提供される」とは、プレーヤが最適な応答遅延の満了前(せいぜい満了時、または場合によっては、満了直後、以下を参照)にセグメントを有しないようにすることを意味する。ほとんどの場合、応答遅延が満了すると、セグメントは突然送信されるが、デバイス11内でセグメントを「ストリーミング」すること、すなわち、最適な応答遅延が満了になる(次いで、最適な応答遅延は、「セグメントの最後のビットの送信時間」である)と、最後のピースが(最も早く)送信されるように、第1のバッファM1から徐々に(次々とピースを)送信することも十分に可能であることを理解されたい。実際、完全なセグメントのみが読み取り可能であるが、一部のプレーヤはセグメントのサブセグメントを受け入れることができる。そのようなプログレッシブ送信は、セグメントが完全に受信されない限り、プレーヤによって利用可能ではなく、したがって、提供されているとは見なされないが、帯域幅の測定を容易にできるため、何も変更しないように留意されたい。
【0107】
セグメントのフラグメントのみが第1のバッファM1で利用可能であり、セグメントの復元を完了するのに必要な推定された継続時間に従って応答時間が修正されたケースでは、通常、セグメントは、変更された応答時間の終わりにステップ(b)にも供給される。説明したように、供給はフラグメント化できるが、完全なセグメント(完全にダウンロードされたセグメントから取得されたセグメントの連続ピースに対応する)と、不完全なセグメント(ほとんどの場合、異なるピースに対応するデータの特定の部分のみがダウンロードされている)のサブセグメントを混同すべきではない。ダウンロードに予想よりも時間がかかる場合、修正された応答遅延が満了するまでセグメントを完全に利用可能にし得ないように、第1のバッファM1で完全に利用可能なセグメントのみ(フラグメントではない)が、要求に応答して(必要に応じて徐々に)提供され得る。したがって、完全なセグメントは、修正された最適な応答遅延の満了時に最も早く(すなわち、前ではなく)提供されるが、場合によっては後に提供される。実際には、セグメントが完全に利用可能(そのダウンロードが完了している)であり、修正された最適な応答遅延が満了しているという2つの条件が満たされると、完全なセグメントが提供される。
【0108】
すべてのケースで、セグメントは、好ましくは、第2のバッファM2に提供され、したがって、ステップ(c)は、上記セグメントを再生するのに適した形式への変換を含み得る。これは、生のセグメントとは異なり、デバイス11のプレーヤが読み取ることができる変換されたセグメントに生のセグメントを変換することにある。
【0109】
例えば、プレーヤがHTML5互換ブラウザの内蔵プレーヤである場合、変換は、ブラウザのメディアソース拡張APIを使用してセグメントのビデオデータを挿入することからなる
当然ながら、ステップ(c)は、セグメントを更新する必要があるように、第2のバッファメモリM2に記憶された前のセグメントを同時に再生することを有利に含む。ステップ(c)で取得されたセグメントは、すぐに順番に読み込まれる。
【0110】
再生が続く限り、ステップ(a)から(c)を繰り返すことができ、次のセグメントが新しい現在のセグメントになり、第2の品質レベルが新しい第1の品質レベルになる(最適な応答遅延が適用さえ、予測通りに上記第2の品質レベルが強制されるため)。
言い換えれば、ステップ(a)の新たな発生は、第2の品質レベルでの次のセグメントに対する要求をプレーヤから受信することにある。再び、(要求された次のセグメントを上記新しい最適な応答遅延の満了時に提供することで、プレーヤにそのABRロジックに従って、所与の第3の品質レベルで次のセグメントを要求させるような)新しい最適な応答遅延が推定され、次いで、適用される、などが行われる。
【0111】
第2の品質レベルが第1の品質レベルと異なる場合、ユーザが違和感を覚えないように、ここでセグメントは要求される新しい品質レベルに従ってP2Pネットワーク10からロードされることに留意されたい。
【0112】
方法は、ステップ(c)の終わりに、予測を検証するためのステップ(d)を含み得ることに留意されたい。言い換えれば、第2の品質レベルでの次のセグメントに対する要求がプレーヤから受信されたことが検証される。このステップ(d)は通常、次のステップ(a)の発生に含まれ、次のセグメントに対する要求が実際に受信される。検証は、予測された第2の品質レベルと、(ABRロジックによって)次のセグメントに実際に要求された品質レベルを比較することを単に含む。
【0113】
検証が失敗した場合(すなわち、次のセグメントが第2の品質とは異なる品質で要求された場合)、例えば、プレーヤのABRロジックが知らないうちに更新されたために、モデルを再トレーニングする、すなわち、ステップ(a0)を再び実行することが決定される可能性がある。上記再トレーニングは、例えば、(単一のエラーではなく)所与の数の(好ましくは連続した)誤予測の場合にのみトリガされ得ることに留意されたい。上記再トレーニングをトリガするためのさらなる条件を設定できることを除外しないことに留意されたい。
【0114】
モデルが現在のクライアントデバイス11によってトレーニングされていない(または受信されたばかりの)場合、新しいトレーニングはクライアントデバイス11自体によって行われ得る(および、説明したように、新しいモデルは他のピアに伝播される)か、または情報が他のピアおよび/またはサーバ3に送信され、それらのうちの1つによってモデルの新しいトレーニングがトリガされ、次いで、クライアントデバイス11に戻る新しいモデルへの伝播がトリガされ得る。
【0115】
デバイスおよびコンピュータプログラム製品
第2の態様によれば、本発明は、プレーヤのABRロジックに従って、セグメント受信率を表す少なくとも1つのパラメータに応じてセグメントの品質レベルを選択するように構成されるデバイス11のプレーヤ上で(クライアントデバイス11、12のピアツーピアネットワーク10でストリーミングされる)コンテンツを再生するための前述の方法を実行するためのデバイス11に関する。
【0116】
このデバイス11は、説明したように、
- ピアツーピアネットワーク10内での転送に適合した形式でセグメントを記憶するための第1のバッファM1(P2Pキャッシュ)と、
- 好ましくは、プレーヤによって再生されるように適合された形式でセグメントを記憶するための第2のバッファM2(ビデオバッファ)と、
- 処理ユニット110とを備える。
【0117】
典型的には、プロセッサである処理ユニット110は、次のステップ、
(a)第1の品質レベルで現在のセグメントの要求をプレーヤから受信する手順と、
(b)第2の品質レベルの場合、要求された現在のセグメントを上記最適な応答遅延の満了時に提供することで、それぞれがセグメント受信率を表す測定されたパラメータのベクトルを、そのABRロジックに従ってプレーヤによってその後選択される対応する品質レベルに関連付けるトレーニング例のデータベースからトレーニングされたモデルに応じて、プレーヤにそのABRロジックに従って上記第2の品質レベルで次のセグメントを要求させるような最適な応答遅延を推定する手順と、
(c)上記推定された最適な応答遅延の満了時に、要求された現在のセグメントを第1のバッファメモリM1から(特に、第2のメモリM2に記憶することによって)プレーヤに提供する手順を実施する。
【0118】
第3および第4の態様では、本発明は、クライアントデバイス11、12のピアツーピアネットワーク10でストリーミングされるコンテンツを、クライアントデバイス11のプレーヤで再生するための本発明の第1の態様による方法を(特にデバイス11のデータ処理ユニット110で)実行するためのコード命令を有するコンピュータプログラム製品、およびこのコンピュータプログラム製品を備えたコンピュータ機器(デバイス11のメモリ)によって読み取り可能な記憶手段に関する。
【国際調査報告】