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