IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ フル・エルエルシーの特許一覧

特許7494265アダプティブビットレートアルゴリズムのための動的パラメータ調整
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-24
(45)【発行日】2024-06-03
(54)【発明の名称】アダプティブビットレートアルゴリズムのための動的パラメータ調整
(51)【国際特許分類】
   H04N 21/462 20110101AFI20240527BHJP
   H04N 21/442 20110101ALI20240527BHJP
【FI】
H04N21/462
H04N21/442
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2022152107
(22)【出願日】2022-09-26
(65)【公開番号】P2023063238
(43)【公開日】2023-05-09
【審査請求日】2022-11-11
(31)【優先権主張番号】17/508,780
(32)【優先日】2021-10-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】512333560
【氏名又は名称】フル・エルエルシー
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100179062
【弁理士】
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100199565
【弁理士】
【氏名又は名称】飯野 茂
(74)【代理人】
【識別番号】100212705
【弁理士】
【氏名又は名称】矢頭 尚之
(74)【代理人】
【識別番号】100219542
【弁理士】
【氏名又は名称】大宅 郁治
(74)【代理人】
【識別番号】100153051
【弁理士】
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【弁理士】
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】スー・チェン
(72)【発明者】
【氏名】トンギュ・ダイ
(72)【発明者】
【氏名】ラーメイ・フアン
(72)【発明者】
【氏名】ダーリャン・フー
(72)【発明者】
【氏名】ウェンハオ・ジャン
【審査官】富樫 明
(56)【参考文献】
【文献】特表2015-511782(JP,A)
【文献】米国特許出願公開第2015/0134847(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00-21/858
(57)【特許請求の範囲】
【請求項1】
ビデオの再生を分析するために、前記ビデオの再生中に、コンピューティングデバイスによって、アダプティブビットレートアルゴリズムのパラメータ値を使用することと、ここにおいて、前記アダプティブビットレートアルゴリズムは、前記ビデオのセグメントを要求するために使用すべきプロファイルを複数のプロファイルから選択するために前記パラメータ値を使用する、
第1の再生状態があるシナリオの特性値を満たすときに、前記コンピューティングデバイスによって複数のシナリオのうちの前記シナリオを選択することと、ここにおいて、前記複数のシナリオは、異なる特性値に関連付けられ、前記特性値は、第2の再生状態を異なる特性値に関連付けられた異なる分割部に分割するために前記第2の再生状態を分析することによって決定される、
調整されたパラメータ値を生成するために、前記コンピューティングデバイスによって、前記シナリオに基づいて前記アダプティブビットレートアルゴリズムの前記パラメータ値を調整することと、ここにおいて、前記複数のシナリオは、少なくとも1つの異なるパラメータ値を有する、
前記ビデオの前記再生を分析するために、前記コンピューティングデバイスによって前記アダプティブビットレートアルゴリズムの前記調整されたパラメータ値を使用することと
を備える、方法。
【請求項2】
前記ビデオの前記再生を分析することに基づいて、いつ変化点が発生するかを決定することをさらに備える方法であって、ここにおいて、前記変化点は、いつシナリオを選択すべきかを決定するために使用される、請求項1に記載の方法。
【請求項3】
前記変化点は、前記第1の再生状態の変化が起こったことを示す、請求項2に記載の方法。
【請求項4】
前記シナリオを選択することは、
各シナリオの前記特性値を前記第1の再生状態と比較することと、
前記第1の再生状態を満たすと決定された前記特性値を有する前記シナリオを選択することとを備える、請求項1に記載の方法。
【請求項5】
前記パラメータ値を調整することは、前記パラメータ値を第1のシナリオの第1の値から第2のシナリオの第2の値に変更することを備える、請求項1に記載の方法。
【請求項6】
前記調整されたパラメータ値を使用することは、
前記調整されたパラメータ値を使用して現在のプロファイルから前記ビデオを再生するために使用すべき新しいプロファイルを選択すること
を備える、請求項1に記載の方法。
【請求項7】
前記複数のシナリオの各々についての前記特性値を受信することをさらに備える、請求項1に記載の方法。
【請求項8】
前記第2の再生状態は、前記第2の再生状態に適合する分割パターンルールを決定するために複数の分割パターンルールを分析することによって分割される、請求項7に記載の方法。
【請求項9】
前記複数のシナリオの各々についての前記それぞれの特性値は、前記シナリオの前記分割部と前記分割部における前記再生状態とに基づいて選択される、請求項7に記載の方法。
【請求項10】
前記複数のシナリオの各々についてのそれぞれのパラメータ値を受信することをさらに備える、請求項1に記載の方法。
【請求項11】
前記複数のシナリオの各々についての前記それぞれのパラメータ値は、各それぞれのシナリオに関連付けられたそれぞれの第2の再生状態の分析に基づく、請求項1に記載の方法。
【請求項12】
前記それぞれのパラメータ値は、前記第2の再生状態の分析と、前記それぞれのパラメータ値を使用する前記アダプティブビットレートアルゴリズムの性能とに基づいて選択される、請求項11に記載の方法。
【請求項13】
非一時的コンピュータ可読記憶媒体であって、実行されると、
ビデオの再生を分析するために、前記ビデオの再生中に、アダプティブビットレートアルゴリズムのパラメータ値を使用することと、ここにおいて、前記アダプティブビットレートアルゴリズムは、前記ビデオのセグメントを要求するために使用すべきプロファイルを複数のプロファイルから選択するために前記パラメータ値を使用する、
第1の再生状態があるシナリオの特性値を満たすときに、複数のシナリオのうちの前記シナリオを選択することと、ここにおいて、前記複数のシナリオは、異なる特性値に関連付けられ、前記特性値は、第2の再生状態を異なる特性値に関連付けられた異なる分割部に分割するために前記第2の再生状態を分析することによって決定される、
調整されたパラメータ値を生成するために、前記シナリオに基づいて前記アダプティブビットレートアルゴリズムの前記パラメータ値を調整することと、ここにおいて、前記複数のシナリオは、少なくとも1つの異なるパラメータ値を有する、
前記ビデオの前記再生を分析するために、前記アダプティブビットレートアルゴリズムの前記調整されたパラメータ値を使用することと
を行うために動作可能であるようにコンピュータシステムを制御する命令を含む、非一時的コンピュータ可読記憶媒体。
【請求項14】
コンピューティングデバイスによって、1つまたは複数のビデオを再生するための再生状態を受信することと、
複数のシナリオを決定するために、前記コンピューティングデバイスによって、前記再生状態を異なる分割部に分割するために前記再生状態を分析することと、ここにおいて、前記複数のシナリオは、前記再生状態とは異なる特性値に関連付けられる、
アダプティブビットレートアルゴリズムのパラメータ値を選択するために、前記コンピューティングデバイスによって前記複数のシナリオの各シナリオについての前記特性値を分析することと、ここにおいて、前記アダプティブビットレートアルゴリズムは、複数のプロファイルのうちのあるプロファイルを選択するために前記パラメータ値を使用する、
ビデオを再生するときに前記アダプティブビットレートアルゴリズムによって使用されるために、前記コンピューティングデバイスによって、前記複数のシナリオについての前記特性値および前記パラメータ値をクライアントデバイスに提供することと
を備える、方法。
【請求項15】
前記複数のシナリオを決定するために前記再生状態を分析することは、
前記再生状態を異なる特性値に関連付けられた前記異なる分割部に分割するために前記再生状態を分析すること
を備える、請求項14に記載の方法。
【請求項16】
前記複数のシナリオを決定するために前記再生状態を分析することは、
前記再生状態を前記異なる分割部に分割する分割パターンルールを決定するために複数の分割パターンルールを分析すること
を備える、請求項15に記載の方法。
【請求項17】
前記複数のシナリオについての前記それぞれの特性値は、前記シナリオの分割部と前記分割部における前記再生状態とに基づいて選択される、請求項15に記載の方法。
【請求項18】
前記パラメータ値を選択するために前記複数のシナリオの各シナリオについての前記特性値を分析することは、
各シナリオについての前記パラメータ値を選択するために各それぞれのシナリオに関連付けられた前記それぞれの再生状態を分析すること
を備える、請求項14に記載の方法。
【請求項19】
前記パラメータ値を選択するために前記複数のシナリオの各シナリオについての前記特性値を分析することは、
前記再生状態の分析と、前記それぞれのパラメータ値を使用する前記アダプティブビットレートアルゴリズムの性能とに基づいて、前記それぞれのパラメータ値を選択することを備える、請求項14に記載の方法。
【請求項20】
前記再生状態を分析することに基づいて、いつ変化点が発生するかを決定するために前記再生状態を分析することをさらに備える方法であって、ここにおいて、前記変化点は、いつシナリオを選択すべきかを決定するために使用される、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
【背景技術】
【0002】
[0001]ビデオストリーミングでは、プロファイルラダーは、ビデオのセグメントをストリーミングするときにクライアントデバイスが使用するために利用可能である異なるプロファイルをリストアップする。各プロファイルは、ビットレートおよび/または品質の異なるレベルなどの異なるレベルに関連付けられ得る。したがって、再生状態が良好である(たとえば、大きい利用可能な帯域幅が存在する)とき、クライアントは、より高いレベル(たとえば、ビットレートおよび/または品質)を有するプロファイルを要求することができる。逆に、再生状態が悪化する(たとえば、小さい利用可能な帯域幅が存在する)とき、クライアントデバイスは、より低いレベル(たとえば、ビットレートおよび/または品質)を有するプロファイルを要求することができる。ビデオ配信システムは、良好な再生状態が体験されているとき、より高いレベルを有するビデオプロファイルをクライアントに提供することを望み、このことは、ストリーミングされているビデオの品質を改善する。悪い再生状態が体験されているとき、ビデオ配信システムは、クライアントデバイスが、リバッファまたはダウンロードの失敗などのいかなる再生問題もなくビデオを再生することができるように、より低いレベルを有するプロファイルをクライアントデバイスに提供することを望む。
【0003】
[0002]アダプティブビットレートアルゴリズムは、使用すべきプロファイルを選択するための再生状態を分析し得る。このアルゴリズムは、分析において、固定パラメータなどの固定構成を使用し得る。体験される再生状態は、様々なクライアントデバイスにわたって大きく変化し得る。しかしながら、パラメータは、すべてのクライアントについての一般的な動作のために調節され得る。場合によっては、パラメータは、様々な状態が体験されるときに最適でないことがある。したがって、アダプティブビットレートアルゴリズムが最適に動作しないときがあり得る。
【発明の概要】
【0004】
[0003]続く説明および図面に関して、示される事項は、例示的な説明の目的のための例を表し、本開示の原理および概念的態様の説明を与えるために提示されることが強調される。この点において、本開示の基本的な理解のために必要とされるものを超えて実装の詳細を示すようにはなされない。続く説明は、図面と併せて、本開示による実施形態がどのように実施され得るかを当業者に明らかにする。類似または同一の参照番号が、様々な図面および支持説明における類似または同一の要素を識別するか、または別途参照するために使用され得る。添付の図面は、以下の通りである。
【図面の簡単な説明】
【0005】
図1】[0004]いくつかの実施形態による、アダプティブビットレートアルゴリズムのパラメータを調整するためにシナリオを使用するための簡略化されたシステムを示す図。
図2】[0005]いくつかの実施形態によるシナリオ調節エンジンの例を示す。
図3A】[0006]いくつかの実施形態による、変化点検出を実行するための方法の簡略化されたフローチャート。
図3B】[0007]いくつかの実施形態による、再生状態から分析されている信号の例を示す図。
図3C】[0008]いくつかの実施形態による、信号および変化点の簡略化されたグラフ。
図4】[0009]いくつかの実施形態による、シナリオの再生状態を決定するための簡略化されたフローチャート。
図5】[0010]いくつかの実施形態に従って使用され得る様々な再生分割ルールの例を示す図。
図6A】[0011]いくつかの実施形態による、様々な分割パターンの分布への適用を示す図。
図6B】いくつかの実施形態による、様々な分割パターンの分布への適用を示す図。
図6C】いくつかの実施形態による、様々な分割パターンの分布への適用を示す図。
図7A】[0012]いくつかの実施形態による、各シナリオについてのパラメータを調節するための方法の簡略化されたフローチャート。
図7B】[0013]いくつかの実施形態による、各シナリオについてのリバッファ率のグラフ。
図8】[0014]いくつかの実施形態によるクライアントデバイスのより詳細な例を示す図。
図9】[0015]いくつかの実施形態による、アダプティブビットレートアルゴリズムについてのパラメータを調整するための方法の簡略化されたフローチャート。
図10】[0016]いくつかの実施形態による、シナリオについてのパラメータの調整およびプロファイルの選択の例を示す図。
図11】[0017]一実施形態による、1つまたは複数の通信ネットワークを介して複数のクライアントデバイスと通信しているビデオストリーミングシステムを示す図。
図12】[0018]ビデオコンテンツおよび広告を見るための装置の線図。
【発明を実施するための形態】
【0006】
[0019]本明細書では、ビデオ配信システムのための技法について説明される。以下の説明では、説明の目的で、いくつかの実施形態の完全な理解を提供するために、多くの例および具体的な詳細が記載される。特許請求の範囲によって定義されるいくつかの実施形態は、これらの例における特徴の一部またはすべてを単独で、または以下で説明される他の特徴と組み合わせて含むことがあり、本明細書で説明される特徴および概念の修正形態および均等物をさらに含み得る。
【0007】
[0020]ビデオ配信システムは、アダプティブビットレートアルゴリズムにおいて使用されるパラメータを適応させることによって再生プロセスを改善し得る。セッションの再生状態がリアルタイムで検出されることがあり、アダプティブビットレートアルゴリズムによって使用されるパラメータの動的な調整が実行され得る。再生状態は、帯域幅、帯域幅の標準偏差、リバッファ発生などの、再生中に取得されたサンプルに基づき得る。次いで、アダプティブビットレートアルゴリズムは、再生中にビデオのセグメントを要求するために使用すべきプロファイルを選択するために、調整されたパラメータを使用して再生状態を分析し得る。
【0008】
[0021]パラメータを適応させる際の課題は、再生セッション中に再生状態が変化しているときにパラメータをどのように適応させるかを決定することである。いくつかの実施形態では、再生セッションが開始する前に、ビデオ配信システムは、発生し得る再生状態の異なるセットを表す異なるシナリオを決定するために、再生状態履歴を分析し得る。次いで、ビデオ配信システムは、異なるシナリオについてのパラメータ設定を決定し得る。シナリオの再生状態とパラメータとを決定するプロセスは、以下でより詳細に説明される。シナリオと各シナリオについてのパラメータとを決定すると、パラメータは、ビデオの再生中にシナリオに遭遇するときにリアルタイムで調整され得る。
【0009】
[0022]クライアントデバイスは、ビデオの再生中に体験されている再生状態を検出し得る。次いで、クライアントデバイスは、新しいシナリオが使用されるべきかどうかを決定するための点である変化点がいつ発生するかを決定し得る。たとえば、クライアントデバイスは、現在の再生状態に対応する再生状態を含むシナリオを複数のシナリオから選択し得る。次いで、クライアントは、シナリオについて設定されたパラメータに基づいて、アダプティブビットレートアルゴリズムのパラメータを調整し得る。調整されたパラメータを使用して、アダプティブビットレートアルゴリズムは、セグメントを要求するために再生セッション中にプロファイルを選択し得る。調整されたパラメータを使用することは、再生セッションにおいて現在体験されている再生状態のためのアダプティブビットレートアルゴリズムの性能を最適化し得る。これは、良好な再生状態が体験されているときに使用されるプロファイルのレベル(たとえば、ビットレートおよび/または品質)を向上させるか、または悪い再生状態が体験されているときにプロファイルのレベルを低減させ得る。調整されたパラメータは、現在体験されている再生状態において最適に機能する(たとえば、再生状態についての最良のプロファイルを選択する)ように調節され得るので、調整されたパラメータは、再生状態が変化するとき、異なるプロファイルへの切替えをより速く実行することが可能であり得る。
【0010】
[0023]システムの概要
[0024]図1は、いくつかの実施形態による、アダプティブビットレートアルゴリズム110のパラメータを調整するためにシナリオを使用するための簡略化されたシステム100を示す。システム100は、ビデオ配信システム102と、クライアントデバイス104と、コンテンツ配信ネットワーク106とを含む。ビデオ配信システム102、コンテンツ配信ネットワーク106、およびクライアントデバイス104は、1つまたは複数のコンピューティングデバイスを使用して実装され得る。また、ビデオ配信システム102、コンテンツ配信ネットワーク106、およびクライアントデバイス104の単一の実例が示されているが、システム100は、2つ以上のビデオ配信システム102、コンテンツ配信ネットワーク106、および/またはクライアントデバイス104を含み得ることが理解されよう。例えば、ビデオ配信システム102は、複数のクライアントデバイス104と通信し得、コンテンツ配信ネットワーク106は、複数のサーバなどを介してクライアントデバイス104にビデオを送り得る。また、ビデオ配信システム102、コンテンツ配信ネットワーク106、およびクライアントデバイス104は別個のエンティティとして示されていても、それらによって実行される機能は、それらの間でまたは他のエンティティに分散されることがある。
【0011】
[0025]ビデオ配信システム102は、クライアントデバイス104が、ビデオオンデマンドまたはライブテレビからのライブビデオなどのビデオを要求することを可能にするビデオ配信サービスを提供し得る。ビデオ配信システム102は、クライアントデバイス104においてインターフェース112を表示することができるアプリケーションをクライアントデバイス104に提供し得る。ユーザアカウントは、ビデオ配信サービスにアクセスするためにアプリケーションにログオンし得る。次いで、ビデオ配信システム102は、クライアントデバイス104からビデオ要求を受信し、クライアントデバイス104がビデオをストリーミングすることを可能にするためのビデオ要求を処理し得る。
【0012】
[0026]クライアントデバイス104は、メディアプレーヤ(図示せず)などを介してインターフェース112内でビデオを再生することができるコンピューティングデバイスを含み得る。クライアントデバイス104は、モバイルフォン、スマートフォン、セットトップボックス、テレビ、リビングルームデバイス、タブレットデバイスなどを含み得る。クライアントデバイス104は、プラットフォーム上で動作することがあり、プラットフォーム上で動作するデバイスのタイプによって分類され得る。たとえば、プラットフォームは、モバイルデバイスプラットフォーム、リビングルームデバイスプラットフォームなどを含む。ユーザによって使用されるユーザアカウントは、ビデオ配信サービスにアクセスするためにクライアントデバイス104を使用し得る。たとえば、ユーザアカウントは、ユーザアカウントの情報を識別するためにビデオ配信サービスにログインし得る。クライアントデバイス104がユーザアカウントからビデオを求める要求を受信するとき、クライアントデバイス104は、そのビデオを求めるビデオ要求をビデオ配信システム102に送り得る。
【0013】
[0027]ビデオの再生を開始するプロセスでは、ビデオ配信システム102は、クライアントデバイス104からビデオを求める要求を受信し得る。ビデオ配信システム102は、コンテンツ配信ネットワーク106を選択し、コンテンツ配信ネットワーク106とクライアントデバイス104との間でビデオがストリーミングされることを可能にするために、コンテンツ配信ネットワーク106および/またはクライアントデバイス104に情報を提供し得る。ビデオ配信システム102はまた、再生構成およびメディアプレゼンテーション記述などの異なる情報を提供し得る。再生構成は、ストリーミングなどのための利用可能なプロファイルを含み得る。メディアプレゼンテーション記述は、利用可能であるプロファイルと、セグメント持続時間と、ビデオの他の特性とに関する情報を含み得る。
【0014】
[0028]コンテンツ配信ネットワーク106は、クライアントデバイス104にビデオを配信することができるサーバを含む。たとえば、コンテンツ配信サーバシステム116は、ビデオをクライアントデバイス104に配信することができる1つまたは複数のサーバを含み得る。いくつかの実施形態では、コンテンツ配信サーバシステム116は、ビデオのセグメントをクライアントデバイス104に配信する。セグメントは、6秒のビデオなどのビデオの一部であり得る。ビデオは、ビットレートおよび/または品質の異なるレベルであり得る異なるレベルに対応する複数のプロファイルにおいて符号化され得る。複数のプロファイルは、プロファイルラダー118と呼ばれ得る。各ビデオは、ビットレートおよび/または品質の異なるレベルを有するプロファイルの関連付けられたプロファイルラダー118を有し得る。プロファイルは、異なるレベルに分類されることがあり、各レベルは、異なる特性に関連付けられ得る。たとえば、各レベルは、400キロバイト毎秒(kbps)、650kbps、1000kbps、1500kbps、・・・12000kbpsなどの、異なるビットレートに関連付けられ得る。しかしながら、レベルは、品質特性(たとえば、解像度)などの別の特性に関連付けられ得る。たとえば、レベルは、ビットレートと解像度との組合せであってよい。いくつかの実施形態では、レベルは、ビデオが400kbpsに関連付けられたプロファイルについて400kbpsレベルで符号化されるなど、ビデオがそのレベルについてどのように符号化されるかに基づいて決定され得る。プロファイルレベルは、より高いまたはより低いと呼ばれることがあり、より高いビットレートおよび/または品質を有するプロファイルは、より低いビットレートおよび/または品質を有するプロファイルよりも高く評価される。クライアントデバイス104は、現在の再生状態に基づいて、プロファイルレベルのうちの1つにビデオのセグメントを要求し得る。再生状態は、利用可能な帯域幅、バッファ長などの、ビデオの再生に基づいて体験される任意の状態であり得る。たとえば、クライアントデバイス104は、現在の利用可能な帯域幅、バッファ長、および他の再生状態に基づいてビデオについてのプロファイルを選択するために、アダプティブビットレートアルゴリズム110を使用し得る。
【0015】
[0029]クライアントデバイス104は、再生セッション中にビデオを再生し得る。アダプティブビットレートアルゴリズム110は、ビデオに関連付けられるプロファイルラダー118からプロファイルを選択するために、ビデオの再生セッション中に現在の再生状態を分析し得る。アダプティブビットレートアルゴリズム110は、再生状態に基づいてプロファイルラダー118からプロファイルを選択するために、アルゴリズムによって使用されるパラメータ値を用いて構成され得る。従来、パラメータ値は、固定されていたことがある。しかしながら、アダプティブビットレートアルゴリズム110は、セッション内シナリオセレクタ114を使用してパラメータ値を動的に調整し得る。以下でより詳細に説明されるように、シナリオは、遭遇し得る様々な再生状態を表し得る。シナリオは、クライアントデバイス104が、現在体験されている再生状態を分類することを可能にし得る。シナリオに遭遇するとき、セッション内シナリオセレクタ114は、そのシナリオに基づいてアダプティブビットレートアルゴリズム110のパラメータ値を調整し得る。次いで、アダプティブビットレートアルゴリズム110は、再生されているビデオのセグメントを求める要求を送るために、使用すべきプロファイルを選択し得る。
【0016】
[0030]シナリオは、ビデオの再生前に構成され得る。たとえば、シナリオ調節エンジン108は、いくつかの再生セッション履歴などのいくつかのセッションについての再生状態を受信し得る。また、シナリオ調節は、リアルタイム再生状態および/または再生状態履歴を使用して、再生セッション中に実行され得る。次いで、シナリオ調節エンジン108は、各シナリオが再生状態の異なるセットに関連付けられ得るシナリオを生成するために、再生状態を分析し得る。たとえば、帯域幅が使用されている場合、異なるシナリオが、異なる利用可能な帯域幅値と、経時的な帯域幅の変動(たとえば、標準偏差または分散)とに関連付けられ得る。シナリオは、1つまたは複数の再生状態と、再生状態について少なくとも1つの異なる値を有する異なるシナリオとで構成され得る。たとえば、帯域幅は、400メガバイト毎秒(mbps)および800mbpsであってよい。また、異なるシナリオは、別のシナリオから再生状態を追加または除外し得る。たとえば、第1のシナリオは400mbpsに関連付けられ、第2のシナリオは帯域幅の0.50の標準偏差に関連付けられる。
【0017】
[0031]シナリオが決定されると、シナリオ調節エンジン108は、シナリオについてのパラメータ構成を生成する。調節は、シナリオに関連付けられた再生状態に応じて異なるパラメータ値を生成する。パラメータ値を生成するプロセスは、以下でより詳細に説明される。シナリオについてのパラメータ構成の調節が実行されると、シナリオ調節エンジン108は、これらの構成をセッション内シナリオセレクタ114に提供し得る。次いで、セッション内シナリオセレクタ114は、シナリオに遭遇するとき、ビデオの再生セッション中にアダプティブビットレートアルゴリズム110によって使用されるパラメータ値を調整するために、これらのパラメータ構成を使用し得る。
【0018】
[0032]次に、以下では、セッションについてのパラメータの調節について説明し、次いで再生中のパラメータの動的な調整について説明する。
【0019】
[0033]シナリオパラメータ調節
[0034]上記で説明されたように、シナリオに関連付けられた再生状態と、各シナリオについてのパラメータ値とが決定され得る。図2は、いくつかの実施形態によるシナリオ調節エンジン108の例を示す。シナリオ調節エンジン108は、変化点検出エンジン202と、再生状態モデリングエンジン204と、シナリオ分割エンジン206と、パラメータ選択チューナ208とを含む。
【0020】
[0035]変化点検出エンジン202は、再生履歴セッション、リアルタイム再生セッション、および/またはシミュレートされた再生状態からのものであり得る再生状態を受信する。シミュレートされた再生状態は、手動でまたは自動的に作成される状態であることがあり、再生状態履歴は、終了した以前の再生セッションからのものであり、リアルタイム再生セッションは、ビデオを現在再生しているセッションであり得る。変化点検出エンジン202は、再生状態を表す信号または時系列の基礎となるモデルにおける変化であり得る変化点を決定し得る。再生状態は、セッションのサービス品質(QoS)性能を表すことができる再生セッションからの信号(たとえば、ネットワークトレース)として表され得る。再生状態は、帯域幅、リバッファなどの、体験される様々な状態を測定し得る。帯域幅は、不安定で変動することがあり得、このことは、再生セッションにおいてパラメータをいつ調整すべきかを決定することを困難にする。変化点は、新しいシナリオを選択しパラメータ値を調整するために有利であり得る、定義された時間を提供し得る。パラメータ値を調整すべき変化点を提供するために、変化点検出エンジン202は、パラメータ値をいつ調整すべきかを決定するために使用され得る再生状態の様々な固定ウィンドウに再生状態を分割し得る。
【0021】
[0036]変化点検出エンジン202は、変化点を決定するために以下のプロセスを使用し得るが、他のプロセスが使用されることがある。図3Aは、いくつかの実施形態による、変化点検出を実行するための方法の簡略化されたフローチャート300を示す。302において、変化点検出エンジン202は、再生状態を受信する。再生状態は、1つまたは複数の再生セッションからの測定値であり得る信号または時系列によって表され得る。
【0022】
[0037]304において、変化点検出エンジン202は、変化点を検出するために再生状態を分析する。分析は、信号の変化を測定することがあり、変化がしきい値を満たすとき、変化点検出エンジン202は、変化点が発生したと決定し得る。信号の変化は、アダプティブビットレートアルゴリズム110のパラメータ値が調整され得る時間を表し得る。
【0023】
[0038]図3Bは、いくつかの実施形態による、再生状態から分析されている信号の例を示す。X軸は、ビデオの再生中の時間であることがあり、Y軸は、帯域幅(mbps)であることがある。信号が324で示されており、これは、帯域幅サンプルの平均などの、受信される再生状態のサンプルの表現であり得る。信号を分析するために、様々な方法が、いつ変化点が発生するかを決定するために使用され得る。たとえば、複数のサンプルy0、y1、・・・、yT-1(T個のサンプル)を含む離散信号について、変化点検出エンジン202は、時間t1、t2、・・・、tKなどにおけるすべての可能な変化点位置にわたる二乗誤差の和を決定し得る。いくつかの実施形態では、変化点は、信号の二乗誤差の和を最小化することができる変化点などのしきい値を満たす点を選択することによって決定され得る。二乗誤差の和は、サンプル点間の線に適合することがあり、その際、スライディングウィンドウが、誤差低減を通して最良の適合を見出すように、ウィンドウ内のサンプル点を比較するために使用される。誤差は、実際の値と予測値との間の差の和であり得る。二乗誤差の和を最小化することは、信号の一部分についての二乗誤差の和を最小化する点を見出す。離散信号y0、y1、・・・、yT-1(T個のサンプル)について、変化点検出エンジン202は、すべての可能な変化点位置t1、t2、・・・、tkにわたって以下の最適化問題を解き得る。
【0024】
【数1】
【0025】
ここにおいて、
【0026】
【数2】
【0027】
[0039]信号y0、y1、・・・、yT-1(T個のサンプル)について、各サンプルは変化点と見なされ得る。また、変化点間の距離を制御することにより、変化点は、t1、t2、・・・、tKと定義され得る。t1<t2<・・・<tK、t0=0、tk+1=Tであることに留意されたい。和、すなわち
【0028】
【数3】
【0029】
は、2つの隣接する変化点間の帯域幅サンプルの二乗誤差を表し、この期間中の帯域幅の変動を反映する。また、和、すなわち
【0030】
【数4】
【0031】
は、変化点のウィンドウまたはすべての変化点の間の二乗誤差の和を表す。図3Cは、いくつかの実施形態による、信号352および変化点の簡略化されたグラフ350を示す。変化点が時間t1およびt2において選択される場合、和は0に等しい。すなわち、
【0032】
【数5】
【0033】
【0034】
【数6】
【0035】
、よって、
【0036】
【数7】
【0037】
。変化点間の信号における帯域幅の変動が0であるので、変化点間の信号の各部分について、二乗誤差の和は0である。時間t1およびt2が変化点として選択されない場合、変化点間の信号の一部分に帯域幅の変動があるので、二乗誤差の和は0よりも大きくなるにちがいない。
【0038】
[0040]図3Bでは、変化点検出エンジン202は、322-1および322-2に変化点を決定する。変化点は、しきい値を満たす信号324における再生状態の変化に基づいて決定される。たとえば、322-1に変化点を選択することによって、326における信号の第1の部分は、しきい値(たとえば、ある値未満または0)を満たす二乗誤差の和を有し得る。これは、322-1における変化点の後の信号の値を含むことが、326における第1の部分において見出される信号の値からさらに離れている値による誤差を増加させ得るからである。322-2における他の変化点は、同様に決定され得る。
【0039】
[0041]再び図3Aを参照すると、306において、変化点検出エンジン202は、上記で説明されたように変化点を選択する。次いで、変化点検出エンジン202は、変化点322-1および322-2を決定した後、308において、変化点についての再生特性を記憶し得る。たとえば、変化点検出エンジン202は、変化点322-1および322-2を使用して、変化点322-1と322-2との間の平均帯域幅、帯域幅の標準偏差、およびリバッファの数を計算し得る。変化点検出エンジン202は、平均帯域幅、帯域幅の標準偏差、およびリバッファの指標を使用して、以下で説明されるように、任意のシナリオ分割ルールに従って、現在のネットワーク状態を特定のシナリオにマッピングすることができる。これらの再生特性は、アダプティブビットレートアルゴリズム110のためのパラメータの調整をいつ実行すべきかを決定するために、ビデオの再生中にクライアントデバイス104によって使用され得る。変化点が使用される1つの理由は、再生セッションの再生状態が不安定で変動する場合があることである。クライアントデバイス104は、変化点を使用することによって、再生を改善するためにパラメータ値の変更が実行され得る特徴的な時間を決定し得る。これは、分析をいつ実行すべきかを決定するために満たされ得る静的状態を提供する。変化点を使用することはまた、パラメータが調整される回数を最小化し得る。パラメータ値を変更することがコンピューティングリソースを使用することがあるなど、再生セッション中にパラメータ値を変更するためのコストが存在し得る。また、パラメータ値を変更することは、アダプティブビットレートアルゴリズム110を別様に動作させることがあり、このことは、再生状態が著しく変化していない場合、望ましくないことがある。再生状態が著しく変化していないときにパラメータ値を連続的に変更することは望ましくない場合がある。
【0040】
[0042]変化点は、場合によってはシナリオを変更するために分析をいつ実行すべきかを決定するが、シナリオを決定しない。しかしながら、変化点を決定した後、シナリオが選択される。シナリオを選択するために、再生セッションの現在の再生状態は、シナリオに関連付けられる再生状態と比較され得る。シナリオについてのこれらの再生状態も決定される。再び図2を参照すると、再生状態モデリングエンジン204は、変化点を決定した後、各シナリオの再生状態をモデリングし得る。再生状態のモデリングは、クライアントデバイス104が再生中にシナリオのうちの1つを選択することができるように、各シナリオに関連付けられ得る再生状態を定義し得る。また、再生状態のモデリングは、シナリオ調節エンジン108が各シナリオについてのパラメータ値を調節することを可能にすることがあり、これについては以下で説明される。
【0041】
[0043]図4は、いくつかの実施形態による、シナリオの再生状態を決定するための簡略化されたフローチャート400を示す。402において、再生状態モデリングエンジン204は、再生状態の表現を生成する。表現は、帯域幅、帯域幅変動、およびリバッファ発生の分布などの再生状態の分布であることがある。これらの再生状態が説明されるが、他の再生状態の分布が認められることがある。
【0042】
[0044]404において、再生状態モデリングエンジン204は、再生状態の分布に対する分割パターンルールの適合を分析する。分割パターンルールは、分布のエリアを複数のシナリオに分割し得る。また、異なる分割パターンルールは、分布を別様に分割し得る。たとえば、格子などの異なるパターンが使用されてよいが、自由形式の描画パターン、円形パターン、任意の他の形状のパターン、およびパターンの組み合わせなどの他のパターンが使用されてよい。
【0043】
[0045]406において、再生状態モデリングエンジン204は、分割パターンルールを選択する。分割パターンルールは、分布の特性に基づいて選択され得る。次に、以下は、分割パターンルールを選択する1つの方法について説明する。
【0044】
[0046]図5は、いくつかの実施形態に従って使用され得る様々な再生分割ルールの例を示す。各ルールの分割パターンは、データ点の密度などの特性に基づいて、分布を異なるサイズの分割部に分割し得る。分割は、データ点からクラスタを生成するクラスタリングアルゴリズムなどによって様々な方法で決定され得る。クラスタは、クラスタ内のデータ点の同様の特性に基づいて決定され得る。様々なクラスタリングアルゴリズムが、クラスタを決定するために使用され得る。使用される分割パターンは、決定されたクラスタに基づき得る。分割パターン502-1は、分布を4つの分割部に分割する4つの正方格子であることがあり、分割パターン502-2は、分布を9つの正方格子内の9つの分割部に分割し得る。分割パターン502-3は、四分木分割を使用することがあり、ここで、各分割部は、四分木分割を使用してさらに分割され得る。たとえば、分割部は、4つの追加の分割によって連続的に分割され得る。分割パターン502-4は、異なるタイプの分割パターンを使用し得る。たとえば、分割部S10およびS11は、矩形分割パターンを使用し、分割部S1~S9は、四分木分割パターンを使用する。上記の分割パターンが使用されるが、異なる分割パターンが認められることがある。
【0045】
[0047]パターンは、使用される再生状態に基づいて選択され得る。図6A図6Cは、いくつかの実施形態による、異なる分割パターンの分布への適用を示す。分布は、リバッファ発生を、リバッファ発生が生じた平均帯域幅および帯域幅の標準偏差にマッピングし得る。図6Aでは、グラフ602-1は、4つの正方形の分割パターンを有する分布を示す。分割部S1およびS3は、分布からの大量のデータ点を含み得る。しかしながら、分割部S2およびS4は、極めて少量のデータ点を含み得る。S1およびS3の大きい分割部を使用することは、それらの分割部内の多数のデータ点では理想的ではないことがある可能性がある。また、分割部S2およびS4内の少量のデータ点は、それらの分割部についての再生状態を決定するために使用され得るデータの欠如により、理想的ではない場合がある。
【0046】
[0048]図6Bでは、グラフ602-2は、いくつかの実施形態に従って使用される9つの分割格子を示す。上述のように、図6Aの分割部S2およびS4は、極めて少量のデータ点を有していた可能性がある。分布において、より低い帯域幅を有するより多くのデータ点が存在し得る。分割部内のデータ点の数を増加させるために、分割部S3、S6、およびS9は、比較的小さい帯域幅を有する、より多くのデータ点を捕捉するように、図6Aの分割部S2およびS4よりも大きい面積を水平に有し得る。ここで、より多数のデータ点がこれらの分割部に含まれ、これらのデータ点は、各それぞれの分割部における再生状態をより良く特徴付けるために使用され得る。また、図6Bの分割部S1、S2、S4、S5、S7、およびS8は、図6Aの分割部S1およびS3よりも小さい。これは、より小さい分割部がより粒度の細かいデータ点を表すことを可能にする。
【0047】
[0049]依然として、分割部S1内の分布の左下隅に大量のデータ点が存在し、分割部S7およびS8内により少量が存在し得る。図6Cは、いくつかの実施形態による、分布をさらに分割するために使用され得るグラフ602-3を示す。いくつかの例では、5メガバイト毎秒(mbps)未満の平均帯域幅および0.50未満の標準偏差を有する大量のデータ点が存在し得る。この場合、図6Bにおいて以前は分割部S1であった分割部S1、S2、S3、およびS4に、四分木分割パターンが使用され得る。分割部S8およびS10は、それらのエリアに見出されるデータ点の量が少ないために比較的大きく、図6BのS3、S6、およびS9の3つの分割部に置き換わる。また、分割部S9は、そのエリア内のデータ点の量がより少ないために、図6Bの分割部S7およびS8に置き換わり得る。加えて、分割部S5、S6、およびS7は、それらの分割部内のデータ点の量がより少ないため、分割部S1~S4よりも大きいことがある。
【0048】
[0050]したがって、分割パターンルールは、分布内に見出されるデータ点の特性に基づいて分布を分割する。パターン内の各分割部は、異なる再生状態を表すことがある。たとえば、図6Aでは、分割部S1は、小さい帯域幅、小さい変動、および多いリバッファエリアを表す。これは、大量のリバッファが体験されたので、多いリバッファエリアである。また、これは、リバッファが発生した帯域幅の間の小さい標準偏差(たとえば、いくつかのリバッファが同じ平均帯域幅の周りで発生したこと)による小さい変動エリアである。分割部S2は、大きい帯域幅、小さい変動、および少ないリバッファエリアを表す。この分割部は、分割部S1およびS3よりも大きい平均帯域幅と、分割部S3およびS4よりも小さい、平均帯域幅からの標準偏差と、分割部S1およびS3よりも少ない量のリバッファ発生とを有する。分割部S3は、小さい帯域幅、大きい変動、および多いリバッファエリアを表す。標準偏差は、より大きい変動を表す分割部S1よりも大きく、平均帯域幅は、分割部S2およびS4よりも小さく、分割部S3では、分割部S2およびS4と比較して大量のリバッファ発生がある。分割部S4は、大きい帯域幅、大きい変動、および少ないリバッファエリアを表す。分割部S4は、分割部S1およびS3よりも大きい平均帯域幅と、分割部S1およびS2よりも大きい帯域幅の標準偏差と、分割部S1およびS3よりも少ない量のリバッファ発生とを有する。図6Bおよび図6Cの他の分割部は、分割部内のデータ点の数、平均帯域幅、および帯域幅の標準偏差を調べる同じ分析を使用して特徴付けることがある。再び図4を参照すると、408において、再生状態モデリングエンジン204は、シナリオ特性を決定するために、分割パターンルールを再生状態に適用する。
【0049】
[0051]次いで、再び図2を参照すると、シナリオ分割エンジン206は、シナリオの特性を出力し得る。たとえば、どの分割ルールが選択されたかに応じて、シナリオは、図6A図6Cに関して上記で説明された特性を有し得る。シナリオ分割エンジン206は、分割パターンに基づいてシナリオを決定するための特性をセッション内シナリオセレクタ114に送り得る。セッション内シナリオセレクタ114は、シナリオ特性を使用して、遭遇する再生セッションのリアルタイム再生状態に基づいてシナリオを選択することができる。
【0050】
[0052]パラメータ選択チューナ208は、アダプティブビットレートアルゴリズム110についてのプロファイルを選択するときに各シナリオのために使用すべきパラメータ値を選択し得る。いくつかのパラメータは、帯域幅安全係数、低いバッファウォーターマーク、シミュレーション持続時間、リバッファペナルティ、スイッチペナルティなどを含み得る。しかしながら、異なるアダプティブビットレートアルゴリズム110は、プロファイルを選択するために異なるパラメータを使用し得る。帯域幅安全係数は、帯域幅の過大評価および将来の帯域幅の劣化を防止するために使用され得る。たとえば、適応帯域幅アルゴリズム110は、選択すべきプロファイルを決定するために、現在の再生セッションの推定帯域幅を使用し得る。帯域幅は、以前にダウンロードされたセグメントに基づいて計算されることがあり、ダウンロード時間で除算されたセグメントサイズに等しい。ときどき、その値は、直接使用されないことがあるが、帯域幅安全係数によって乗算され得る。これは、プロファイルを選択するために使用される推定帯域幅を変更する。帯域幅安全係数の値は、よりアグレッシブになるように、またはあまりアグレッシブにならないように変更され得る。たとえば、より低い帯域幅安全係数は、プロファイルを切り替えるときに適応帯域幅アルゴリズム110をより保守的にさせることがあるが、より高い帯域幅安全係数は、適応帯域幅アルゴリズム110をよりアグレッシブにさせることがある。リバッファペナルティおよびスイッチペナルティは、プロファイルを選択するために使用される報酬式中のパラメータであり得る。たとえば、新しいプロファイルに切り替えるための報酬が計算され得、最も高い報酬を有するプロファイルが選択され得る。報酬の一例は、次式を使用して計算され得る。報酬=ビットレート-rebufferPenalty×totalRebufferTime-switchPenalty×|現在のビットレート-以前のビットレート|である。リバッファペナルティrebufferPenaltyとスイッチペナルティswitchPenaltyとは、この式におけるパラメータであり得る。シミュレーション持続時間のパラメータは、アダプティブビットレートアルゴリズム110において次のN個のセグメントについてダウンロードプロセスがシミュレートされるときに使用され得る。Nの値は、シミュレーション持続時間のパラメータによって決定されることがあり、ここで、N=シミュレーション持続時間/セグメント持続時間である。アダプティブビットレートアルゴリズム110は、プロファイルごとに、推定帯域幅を使用してこれらのN個のセグメントについてのダウンロードプロセスをシミュレートし、リバッファが発生した場合、アダプティブビットレートアルゴリズム110は、総リバッファ時間を記録する。シミュレーション後、アダプティブビットレートアルゴリズム110は、各選択的プロファイルについての報酬を計算し、最も高い報酬に対応するプロファイルを選択し得る。低いバッファウォーターマークパラメータは、バッファ内のデータが、低いバッファウォーターマークパラメータによって決定されたある点を下回るときに、リバッファが発生し得るので、いつリバッファが発生するかを決定するために使用され得る。上記のパラメータが説明されるが、他のパラメータが認められることがある。
【0051】
[0053]パラメータ選択チューナ208は、各それぞれのシナリオのための最適なパラメータを生成するために、各シナリオについての再生状態を使用し得る。図7Aは、いくつかの実施形態による、各シナリオについてのパラメータを調節するための方法の簡略化されたフローチャート700を示す。702において、パラメータ選択チューナ208は、シナリオの特性を受信する。これらの特性は、平均帯域幅、帯域幅の標準偏差、およびリバッファ発生であり得る。次いで、704において、パラメータ選択チューナ208は、シナリオのそれぞれの特性および異なるアダプティブビットレートパラメータ構成に基づいて、各シナリオについてのダウンロードプロセスを決定する。たとえば、パラメータ選択チューナ208は、各シナリオの特性を有するネットワークトレースを決定し得る。各シナリオについて、再生は、異なるパラメータ値を使用してクライアントデバイス104へのビデオのストリーミングを表すようにシミュレートされ、パラメータ選択チューナ208は、様々なパラメータ値を使用して再生の性能を記録し得る。たとえば、サービス品質性能などの再生状態が記録され得る。一例では、性能は、リバッファ率によって定量化され得る。以下は、各シナリオについてのリバッファ率を使用したパラメータ調節について説明する。
【0052】
[0054]706において、パラメータ選択チューナ208は、様々なアダプティブビットレートパラメータを使用して各シナリオについての性能を出力する。次いで、708において、パラメータ選択チューナ208は、性能を分析し、各シナリオについてのパラメータを選択する。図7Bは、いくつかの実施形態による、各シナリオについてのリバッファ率のグラフ720を示す。上記で説明されたように、図6A図6Cの分布は、リバッファの発生の密度を表すことがある。図7Bは、各シナリオについてのネットワークトレースの性能に基づいて、各エリアにおけるリバッファ性能を反映する値としてリバッファ発生を定量化し得る。すなわち、各シナリオについて、そのシナリオを表すネットワークトレースが再生される。次いで、グラフ720の各シナリオに示される値は、各シナリオの性能を表し得る。図示されるように、各分割部S1~S10は、リバッファ率値を含む。より小さい値は、ネットワークトレースについてのより小さい数のリバッファを表し得る。より大きい数は、ネットワークトレースについて発生したより大きい数のリバッファを表し得る。シナリオがより高いリバッファ率を含むとき、アダプティブビットレートアルゴリズム110は、リバッファの発生を低減するために、これらのシナリオの間、より保守的であるべきである。しかしながら、リバッファ率がより低いシナリオでは、アダプティブビットレートアルゴリズム110は、リバッファが発生する可能性がより低いため、使用されるプロファイルを増加させるためによりアグレッシブであり得る。この場合、分割部S1(1%のリバッファ率)、S3(0.73%)、S6(0.472%)、およびS9(0.225%)は、他のシナリオと比較してより高いリバッファ率を有し得、これらの分割部についてのパラメータは、より保守的に設定され得る。しかしながら、分割部S2(0.0009%)、S4(0.002%)、S5(0.00005%)、S7(0.0005%)、S8(0.000005%)、およびS10(0.00045%)は、より低いリバッファ率を有し得、これらのシナリオについてのパラメータは、よりアグレッシブになるように設定され得る。
【0053】
[0055]シナリオについての正確なパラメータ値を決定するためのプロセスは異なり得る。たとえば、各ネットワークトレースは、アダプティブビットレートアルゴリズム110についての様々なパラメータを用いてシミュレートされ得る。各ネットワークトレースについての性能が分析され得る。パラメータ選択チューナ208は、各シナリオにおけるネットワークトレースについての最適な性能に対応するパラメータ値を選択し得る。他の例では、異なるリバッファ率が、異なるパラメータ値にマッピングされ得る。また、予測ネットワークは、各シナリオについての再生状態およびリバッファ率に基づいてパラメータを出力するために使用され得る。いくつかの例では、帯域幅安全係数の標準値は0.65であり得る。アダプティブビットレートアルゴリズム110が保守的であるべきとき、帯域幅安全係数は0から0.65の間の範囲に下げられることがあり、アダプティブビットレートアルゴリズム110がよりアグレッシブであるべきとき、帯域幅安全係数は0.65から1の間の範囲に上げられることがある。
【0054】
[0056]図7Aを再び参照すると、710において、パラメータ選択チューナ208は、シナリオについてのパラメータ値をクライアントデバイス104に提供する。たとえば、図2を参照すると、パラメータ選択チューナ208は、シナリオについてのパラメータ値をセッション内シナリオセレクタ114に送る。各シナリオについてのパラメータ値を選択した後、パラメータ値を調整するためのシナリオのセッション内選択が実行され得る。
【0055】
[0057]セッション内パラメータ調整
[0058]図8は、いくつかの実施形態によるクライアントデバイス104のより詳細な例を示す。セッション内シナリオセレクタ114は、再生セッション中に、シナリオを選択し、アダプティブビットレートアルゴリズム110のパラメータを調整し得る。リアルタイム変化点検出エンジン802は、現在再生されているビデオの再生セッションにおいて変化点にいつ到達したかを決定し得る。たとえば、ビデオを再生している間にセグメントがセグメントダウンローダ812によってダウンロードされるとき、使用されるプロファイル、ダウンロードサイズ、およびダウンロード時間などの再生状態が、再生状態履歴806に記憶され得る。現在の再生状態は、再生状態履歴を形成するために、以前にダウンロードされたセグメントについての再生状態とともに含まれ得る。リアルタイム変化点検出エンジン802は、再生状態履歴を受信し、以前に決定された変化点によって定義される特性に基づいて、変化点が発生するときを検出し得る。たとえば、リアルタイム変化点検出エンジン802は、過去100秒の帯域幅データをカバーする、スライディングウィンドウを使用することができる。新しい帯域幅サンプルが受信されるとき、リアルタイム変化点検出エンジン802は、最も古いサンプルを除去し最も新しいサンプルを含むように、スライディングウィンドウを移動させる。次いで、リアルタイム変化点検出エンジン802は、スライディングウィンドウ内に変化点が存在するかどうかを検出するために、図3Aで説明されたものと同じ方法を使用し得る。変化点が決定されない場合、リアルタイム変化点検出エンジン802は、現在のパラメータを使用し続ける。変化点が決定された場合、リアルタイム変化点検出エンジン802は、最後の2つの変化点の間の帯域幅サンプルから、平均帯域幅および標準偏差などの再生特性を計算する。次いで、再生特性が、シナリオを選択するために使用され得る。
【0056】
[0059]セッション内シナリオセレクタ114は、変化点が発生したときにシナリオを選択し得る。シナリオ選択は、変化点が発生するときに発生するものとして説明されるが、セッション内シナリオセレクタ114は、連続的に一定の時間周期で(たとえば、30秒ごとまたは1分ごとなど)、または他の時間などで、他の時点で説明されるプロセスを実行し得る。しかしながら、上記で説明されたように、変化点検出を使用することは、シナリオを変更するために使用されているリソースを最小化するために有用であり得る。
【0057】
[0060]セッション内シナリオセレクタ114は、シナリオを選択し、アダプティブビットレートアルゴリズム110にシナリオについてのパラメータを提供し得る。アダプティブビットレートアルゴリズム110は、次いで、パラメータ設定値808中のパラメータを調整し得る。プロファイル選択エンジン810は、セッションのために選択され得るプロファイルを定義するプロファイルラダー118を受信し得る。たとえば、プロファイルラダー118は、様々なビットレートおよび/または品質(たとえば、解像度)を有する様々なプロファイルを含み得る。説明の目的で、ビットレートのみが説明され得る。いくつかの実施形態では、ビットレートは、400mbps、650mbps、1000mbps、・・・、3800mbpsなどを含み得る。異なるレベルのプロファイルは、より高いビットレートがより高い品質に関連付けられ得るなど、異なるレベルの品質を示し得る。
【0058】
[0061]プロファイル選択エンジン810は、帯域幅予測804およびバッファサイズなどの再生状態に基づいてプロファイルを選択し得る。たとえば、帯域幅予測804は、再生状態履歴806を使用して、次のN個のセグメントについての帯域幅を予測し得る。プロファイル選択部810は、プロファイルを選択するためにパラメータを使用し得るアルゴリズムを実行し得る。上記で説明されたように、再生安全係数、リバッファペナルティ、スイッチペナルティなどのパラメータは、選択されるシナリオに基づいて調整され得る。しかしながら、アルゴリズムによって使用される様々なパラメータは、選択されるシナリオに基づいて調整されてよい。次いで、アダプティブビットレートアルゴリズム110は、帯域幅およびバッファサイズなどの現在の再生状態に基づいてプロファイルを選択するために、調整されたパラメータを使用してアルゴリズムを実行する。
【0059】
[0062]調整されたパラメータを使用してプロファイルが選択されると、セグメントダウンローダ810は、プロファイルのセグメントをダウンロードし得る。パラメータを調整することは、新しいプロファイルを選択することをもたらしても、もたらさなくてもよいことに留意されたい。再生状態は、調整されたパラメータを用いてもプロファイル変更を保証しないことがある可能性がある。しかしながら、再生状態が変化するとき、調整されたパラメータ値は、以前のパラメータ値が使用された場合と比較して異なるプロファイル変化を生じ得る。
【0060】
[0063]セグメントを要求した後、メディアプレーヤ814は、セグメントを受信し、セグメントを再生し得る。セグメントを再生した後、セグメントダウンローダ812は、再生状態履歴806に追加するために、使用されるプロファイル、ダウンロードサイズ、およびダウンロード時間を提供し得る。また、メディアプレーヤ814は、現在のバッファサイズをプロファイル選択エンジン810に提供し得る。次いで、このプロセスは、いつプロファイルを切り替えるべきかを決定し続ける。
【0061】
[0064]図9は、いくつかの実施形態による、アダプティブビットレートアルゴリズム110についてのパラメータを調整するための方法の簡略化されたフローチャート900を示す。902において、変化点検出802は、変化を検出するために、現在の再生セッションの再生状態を分析する。904において、変化点が検出されたかどうかが決定される。変化点が検出された場合、906において、セッション内シナリオセレクタ114は、再生状態およびそれぞれのシナリオ特性に基づいてシナリオを選択する。再生状態は、シナリオ特性にマッピングされることがあり、再生状態を満たす(たとえば、それに最も近い)シナリオが選択され得る。908において、アダプティブビットレートアルゴリズム110は、シナリオに基づいてパラメータ値を調整する。
【0062】
[0065]変化点が検出されない場合、アダプティブビットレートアルゴリズム110の既存のパラメータに基づいてプロファイルが選択され得る。しかしながら、パラメータ値が変更された場合、910において、アダプティブビットレートアルゴリズム110は、調整されたパラメータに基づいてプロファイルを選択する。次いで、912において、セグメントダウンローダ812は、選択されたプロファイルに基づいてセグメントをダウンロードする。次いで、このプロセスは902を繰返し、ここで、変化点が再び検出される。
【0063】
[0066]例
[0067]以下は、シナリオに基づくパラメータの調整を示す例について説明する。図10は、いくつかの実施形態による、シナリオについてのパラメータの調整およびプロファイルの選択の例を示す。図10は、選択されるプロファイルを示すグラフ1002と、選択されるシナリオを示すグラフ1004と、体験される帯域幅を示すグラフ1006とを含む。グラフ1002は、Y軸上のプロファイルインデックスと、X軸上のセグメントインデックスとを含み得る。加えて、バッファサイズがY軸上に示される。グラフ1002は、4本の線を含み得る。線1020は、デフォルトのアダプティブビットレートアルゴリズムについてのプロファイルインデックスを示し、線1022は、シナリオベースのアダプティブビットレートアルゴリズム110についてのプロファイルインデックスを示す。また、線1024は、デフォルトのアダプティブビットレートのバッファサイズを示し、線1026は、シナリオベースのアダプティブビットレートアルゴリズム110のバッファサイズを示す。デフォルトのアダプティブビットレートアルゴリズムは、パラメータ値の固定されたセットを使用することがあり、シナリオベースのアダプティブビットレートアルゴリズム110は、シナリオに基づいてパラメータを調整することがある。グラフ1004は、Y軸上にシナリオインデックスを示し、X軸上にセグメントインデックスを示す。グラフ1006は、Y軸上に帯域幅を示し、X軸上にセグメントインデックスを示す。
【0064】
[0068]いくつかの実施形態では、図6Cに示されるように、四分木シナリオ分割が使用される。各セグメントがダウンロードされる前に、再生状態が変化したかどうかを決定するために、変化点分析が実行される。ダウンロードプロセスは、4つの段階に分割され得る。1008における最初の10個のセグメントについて、アダプティブビットレートアルゴリズム110を使用してプロファイルを決定するためのデフォルト構成が使用されることがあり、ダウンロード帯域幅がこれらのセグメントについて記録される。最初の10個のセグメントがダウンロードされた後、シナリオが選択され得る。最初の10個のセグメントは、使用すべきいくつかのデータを確立するために使用され得るが、最初の10個のセグメントについてのデフォルトのパラメータを使用することは、必要とされないことがあることに留意されたい。たとえば、シナリオは、再生の開始時に最初に選択されることがあり、シナリオについてのパラメータが使用される。
【0065】
[0069]1010における第2の段階では、セッション内シナリオセレクタ114は、シナリオS1を選択する。シナリオS1は、小さい帯域幅、小さい変動、および低いリバッファ率の再生状態を表し得る。たとえば、最初の10個のセグメントの帯域幅は、グラフ1006に示されるように小さかった可能性がある。また、帯域幅の小さい変動および少数のリバッファがあった可能性がある。発生するリバッファは、バッファ長がしきい値を下回るときなど、バッファ長に基づき得る。
【0066】
[0070]44番目のセグメントをダウンロードした後、帯域幅などの再生状態が変化点しきい値を満たすのに十分に変化する変化点が検出される。この時点で、帯域幅は、約500bpsから5000bps超まで変化することがある。セッション内シナリオセレクタ114は、この時点で新しいシナリオを選択し得る。たとえば、再生状態は、帯域幅の変化により帯域幅が大量に変動し、帯域幅がより小さいことがあり得る。これらの再生状態に最もマッチングし得るシナリオは、図6CのシナリオS9であり得る。シナリオS9は、小さい帯域幅、大きい変動、および多いリバッファエリアである。この場合、プロファイルを選択する際のより保守的な決定が、大きい変動および多いリバッファ発生のために実行され得る。たとえば、1つの調整されたパラメータは、帯域幅を推定するためにより小さい帯域幅安全係数を使用するためのものであり得、これは、デフォルトのアダプティブビットレートアルゴリズムが通常選択するものよりも低いプロファイルを選択し得る。
【0067】
[0071]セグメント44から60までの1012における第3の段階では、帯域幅は、大きく、比較的安定している。この場合、帯域幅が現在安定しており、安定した帯域幅により関連するシナリオが選択されるという点で、変化点が検出され得る。これは、シナリオS9よりも小さい帯域幅の標準偏差を有する図6CのシナリオS2であることがあり、これは、シナリオが安定した帯域幅の再生状態により適していることを意味する。この場合、シナリオS2は、プロファイルを選択するために使用される。シナリオS2は、大きい帯域幅、小さい変動、および少ないリバッファ発生と関連付けられ、よりアグレッシブな決定が、アダプティブビットレートアルゴリズム110によって行われ得る。
【0068】
[0072]1014における第4の段階では、セグメント60から62まで、帯域幅が大幅に降下し、変化点をもたらし得る。この場合、シナリオS9などの、より大きい変動帯域幅を有するシナリオが選択され得る。これは、グラフ1004においてシナリオS2からS9への変更をもたらす。次いで、セグメント62の後の1016における第5の段階では、帯域幅は、再び安定し、より小さい帯域幅である。この場合、シナリオは、小さい帯域幅および小さい変動を有するシナリオを表すシナリオS1に再び変更される。これは、アダプティブビットレートアルゴリズム110についてより保守的な決定をもたらす。
【0069】
[0073]グラフ1002において、選択されるプロファイルおよびバッファサイズは、デフォルトのアダプティブビットレートアルゴリズムとシナリオベースのアダプティブビットレートアルゴリズム110との間で対比され得る。49番目~60番目のセグメントの間、シナリオベースのアダプティブビットレートアルゴリズム110は、デフォルトのアダプティブビットレートアルゴリズムよりも高いプロファイルを使用し得る。これは、ビットレートが安定して高い間に、ビデオがより高い品質でストリーミングされることを可能にする。シナリオベースのアダプティブビットレートアルゴリズム110は、シナリオS2が標準的なアダプティブビットレートアルゴリズムと比較してよりアグレッシブなパラメータを有し得るので、より高いプロファイルを使用し得る。次いで、シナリオベースのアダプティブビットレートアルゴリズム110は、セグメント60の後のプロファイルについて、標準的なアダプティブビットレートアルゴリズムと比較してより保守的な決定を行う。この場合、シナリオベースのアダプティブビットレートアルゴリズム110では、標準的なアダプティブビットレートアルゴリズムと比較して、より低いプロファイルがより早く要求される。シナリオベースのアダプティブビットレートアルゴリズム110におけるシナリオS9は、標準的なアダプティブビットレートアルゴリズムよりも保守的なパラメータを有し得る。帯域幅が降下しているので、より保守的なパラメータが良好であり得る。これは、デフォルトのアダプティブビットレートアルゴリズムが使用されるときのバッファサイズと比較して、シナリオベースのアダプティブビットレートアルゴリズム110が使用されるときのバッファサイズをより大きくする。より大きいバッファサイズは、リバッファの発生を回避し得る。たとえば、デフォルトのアダプティブビットレートアルゴリズムのバッファサイズが1028において0に達するとき、リバッファが発生し得る。しかしながら、シナリオベースのアダプティブビットレートアルゴリズム110のバッファサイズは、1028において0に達さず、リバッファは発生しない。したがって、シナリオベースのアダプティブビットレートアルゴリズム110を使用してプロファイルを選択する性能は、プロファイル選択が変化する再生状態に対してより速く調整することがあり、リバッファが回避され得るので、改善され得る。
【0070】
[0074]結論
[0075]アダプティブビットレートアルゴリズム110のパラメータを調整するためにシナリオを使用することは、再生セッションの性能を改善し得る。パラメータの変更は、現在の再生状態に基づいてプロファイルを変更することとは異なる。この場合、プロファイルを変更すべきときを決定するために使用されるパラメータは、現在の再生状態に基づいて最適なパラメータに調整される。これは、アダプティブビットレートアルゴリズム110がプロファイルの最適な選択を行うことを可能にし、これは、より良好な再生状態に遭遇したときにより高いプロファイルレベルが選択されることを可能にしながら、悪い再生状態に遭遇したときのリバッファ発生の数を低減し得る。
【0071】
[0076]システム
[0077]本明細書で開示される特徴および態様は、図11に示される1つまたは複数の通信ネットワークを介して複数のクライアントデバイスと通信しているビデオストリーミングシステム1100と併せて実装され得る。ビデオストリーミングシステム1100の態様は、本開示に従って準備されたコンテンツの配布および配信を可能にするための適用の例を与えるために説明されるにすぎない。本技術は、ストリーミングビデオアプリケーションに限定されず、他のアプリケーションおよび配信メカニズムに適合され得ることを諒解されたい。
【0072】
[0078]一実施形態では、メディアプログラムプロバイダは、メディアプログラムのライブラリを含み得る。たとえば、メディアプログラムは、集約され、サイト(たとえば、ウェブサイト)、アプリケーション、またはブラウザを通して提供され得る。ユーザは、メディアプログラムプロバイダのサイトまたはアプリケーションにアクセスし、メディアプログラムを要求することができる。ユーザは、メディアプログラムプロバイダによって提供されるメディアプログラムのみを要求することに限定され得る。
【0073】
[0079]システム1100において、ビデオデータは、ビデオコンテンツサーバ1102への入力として使用するために、1つまたは複数のソースから、たとえばビデオソース1110から取得され得る。入力されたビデオデータは、任意の適切なデジタルフォーマット、たとえば、Moving Pictures Experts Group(MPEG)-1、MPEG-2、MPEG-4、VC-1、H.264/Advanced Video Coding(AVC)、High Efficiency Video Coding(HEVC)、または他のフォーマットにおける生のまたは編集されたフレームベースのビデオデータを備え得る。代替として、ビデオは、非デジタル形式で提供され、スキャナおよび/またはトランスコーダを使用してデジタル形式に変換され得る。入力されるビデオデータは、様々なタイプのビデオクリップまたはプログラム、たとえば、テレビ番組、動画、および消費者の関心を引く1次コンテンツとして生成される他のコンテンツを備え得る。ビデオデータがオーディオも含み得るか、またはオーディオのみが使用され得る。
【0074】
[0080]ビデオストリーミングシステム1100は、1つまたは複数のコンピュータにわたって分散された1つもしくは複数のコンピュータサーバまたはモジュール1102、1104、および/または1107を含み得る。各サーバ1102、1104、1107は、1つまたは複数のデータストア1109、たとえば、データベース、インデックス、ファイル、または他のデータ構造を含むか、またはそれらに動作可能に結合され得る。ビデオコンテンツサーバ1102は、様々なビデオセグメントのデータストア(図示せず)にアクセスし得る。ビデオコンテンツサーバ1102は、クライアントデバイスと通信するユーザインターフェースコントローラによって指示されるように、ビデオセグメントを提供し得る。本明細書で使用されるビデオセグメントは、テレビ番組、動画、記録されたライブパフォーマンス、または他のビデオコンテンツを見るためにストリーミングビデオセッションにおいて使用され得る、フレームベースのビデオデータの所定の部分を指す。
【0075】
[0081]いくつかの実施形態では、ビデオ広告サーバ1104は、特定の広告主またはメッセージのための広告として構成された比較的短いビデオ(たとえば、10秒、30秒、または60秒のビデオ広告)のデータストアにアクセスし得る。広告は、何らかの種類の支払いと引き換えに広告主に提供され得るか、またはシステム1100の宣伝用メッセージ、公共サービスメッセージ、または何らかの他の情報を備え得る。ビデオ広告サーバ1104は、ユーザインターフェースコントローラ(図示せず)によって指示されるようにビデオ広告セグメントを提供し得る。
【0076】
[0082]ビデオストリーミングシステム1100はまた、シナリオ調節エンジン108を含み得る。
【0077】
[0083]ビデオストリーミングシステム1100は、ビデオコンテンツおよびビデオ広告をストリーミングビデオセグメントに統合する統合/ストリーミング構成要素1107をさらに含み得る。たとえば、ストリーミング構成要素1107は、コンテンツサーバまたはストリーミングメディアサーバであり得る。コントローラ(図示せず)は、任意の適切なアルゴリズムまたはプロセスに基づいて、ストリーミングビデオ内の広告の選択または構成を決定し得る。ビデオストリーミングシステム1100は、図11に示されていない他のモジュールまたはユニット、たとえば、管理サーバ、コマースサーバ、ネットワークインフラストラクチャ、広告選択エンジンなどを含み得る。
【0078】
[0084]ビデオストリーミングシステム1100は、データ通信ネットワーク1112に接続し得る。データ通信ネットワーク1112は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、たとえば、インターネット、電話ネットワーク、ワイヤレスセルラー電気通信ネットワーク(WCS)1114、またはこれらのネットワークもしくは同様のネットワークの何らかの組合せを備え得る。
【0079】
[0085]1つまたは複数のクライアントデバイス1120は、データ通信ネットワーク1112、ワイヤレスセルラー電気通信ネットワーク1114、および/または別のネットワークを介して、ビデオストリーミングシステム1100と通信していることがある。そのようなクライアントデバイスは、たとえば、LAN用のルータ1118を介して、ワイヤレスセルラー電気通信ネットワーク1114用の基地局1117を介して、または何らかの他の接続を介して、1つまたは複数のラップトップコンピュータ1120-1、デスクトップコンピュータ1120-2、「スマート」モバイルフォン1120-3、タブレットデバイス1120-4、ネットワーク対応テレビ1120-5、またはそれらの組合せを含み得る。動作の際に、そのようなクライアントデバイス1120は、ユーザ入力デバイスから受信されたユーザ入力または他の入力に応答して、システム1100との間でデータまたは命令を送信および受信し得る。それに応答して、システム1100は、メディアプログラムの選択に応じてデータストア1109からビデオセグメントおよびメタデータをクライアントデバイス1120に提供し得る。クライアントデバイス1120は、ディスプレイスクリーン、プロジェクタ、または他のビデオ出力デバイスを使用してメディアプレーヤ内のストリーミングビデオセグメントからビデオコンテンツを出力し、ビデオコンテンツとやり取りするためのユーザ入力を受信し得る。
【0080】
[0086]オーディオビデオデータの分布が、様々な方法、たとえばストリーミングを使用して、コンピュータネットワーク、電気通信ネットワーク、およびそのようなネットワークの組合せを介して、ストリーミング構成要素1107からリモートクライアントデバイスに実施され得る。ストリーミングの際に、コンテンツサーバは、クライアントデバイスの少なくとも一部で動作するメディアプレーヤ構成要素にオーディオビデオデータを連続的にストリーミングし、メディアプレーヤ構成要素は、サーバからストリーミングデータを受信するのと同時にオーディオビデオデータを再生し得る。ストリーミングについて説明されるが、他の配信方法が使用されてよい。メディアプレーヤ構成要素は、コンテンツプロバイダからデータの最初の部分を受信した直後にビデオデータの再生を開始し得る。従来のストリーミング技法は、データストリームを1組のエンドユーザに配信する単一のプロバイダを使用する。大きい帯域幅および高い処理能力が、単一のストリームを多くの視聴者に配信するのに必要とされることがあり、プロバイダの必要とされる帯域幅は、エンドユーザの数が増加するにつれて増加し得る。
【0081】
[0087]ストリーミングメディアは、オンデマンドまたは生で配信され得る。ストリーミングは、ファイル内の任意の点における即時再生を可能にする。エンドユーザは、再生を開始するか、またはメディアファイル内の任意の点に再生を変更するために、メディアファイルをスキップし得る。したがって、エンドユーザは、ファイルが徐々にダウンロードされるのを待つ必要がない。典型的には、ストリーミングメディアは、ビデオファイルを求める要求を受け入れる特別のデバイスを介して、高い帯域幅能力を有するいくつかの専用サーバから配信され、それらのファイルのフォーマット、帯域幅、および構造に関する情報とともに、ビデオを再生するために必要なデータ量のみを、それを再生するために必要とされるレートで配信する。ストリーミングメディアサーバはまた、宛先クライアント上のメディアプレーヤの送信帯域幅および能力を考慮し得る。ストリーミング構成要素1107は、ビデオが再生されるときに変化する再生状態に適応するために、制御メッセージおよびデータメッセージを使用してクライアントデバイス1120と通信し得る。これらの制御メッセージは、クライアントにおいてファイルの特定の部分への早送り、早戻し、一時停止、またはシークなどの制御機能を可能にするためのコマンドを含むことができる。
【0082】
[0088]ストリーミング構成要素1107は、必要なときにのみ必要とされるレートでビデオデータを送信するので、提供されるストリームの数に対する正確な制御が維持され得る。視聴者は、より低いデータレートの送信媒体を介して高いデータレートのビデオを見ることができない。しかしながら、ストリーミングメディアサーバは、(1)ユーザにビデオファイルへのランダムアクセスを提供し、(2)誰がどのビデオプログラムを視聴しているか、およびそれらがどれくらい長く鑑賞されているかを監視することを可能にし、(3)視聴体験をサポートするために必要とされるデータの量のみが送信されるので、送信帯域幅をより効率的に使用し、(4)ビデオファイルが視聴者のコンピュータに記憶されず、メディアプレーヤによって破棄され、したがってコンテンツに対するより多くの制御を可能にする。
【0083】
[0089]ストリーミング構成要素1107は、ハイパーテキスト転送プロトコル(HTTP)およびリアルタイムメッセージングプロトコル(RTMP)などのTCPベースのプロトコルを使用し得る。ストリーミング構成要素1107はまた、ライブウェブキャストを配信することができ、マルチキャストすることができ、これは、2つ以上のクライアントが単一のストリームにチューニングすることを可能にし、したがって、帯域幅を節約する。ストリーミングメディアプレーヤは、メディアプログラム内の任意の点へのランダムアクセスを提供するために、ビデオ全体をバッファリングすることに依拠しないことがある。代わりに、これは、メディアプレーヤからストリーミングメディアサーバに送信される制御メッセージを使用して達成される。ストリーミングのために使用される他のプロトコルは、HTTPライブストリーミング(HLS)またはダイナミックアダプティブストリーミングオーバーHTTP(DASH)である。HLSおよびDASHプロトコルは、典型的には1つまたは複数のコンテンツ配信ネットワーク(CDN)から様々なビットレートで利用可能にされる小さいセグメントのプレイリストを介して、HTTP上でビデオを配信する。これは、メディアプレーヤが、ビットレートとコンテンツソースの両方をセグメントごとに切り替えることを可能にする。切替えは、ビデオの再生中に発生し得るネットワーク帯域幅の変動およびインフラストラクチャ故障を補償するのに役立つ。
【0084】
[0090]ストリーミングによるビデオコンテンツの配信は、様々なモデルの下で達成され得る。1つのモデルでは、ユーザは、ビデオプログラムの視聴に対して支払い、たとえば、メディアプログラムのライブラリまたは制限されたメディアプログラムの一部へのアクセスに対して料金を支払うか、またはペイパービューサービスを使用する。開始直後に放送テレビによって広く採用される別のモデルでは、スポンサは、プログラムの提示の間またはそれに隣接して広告を提示する権利と引き換えに、メディアプログラムの提示に対して支払う。いくつかのモデルでは、広告は、ビデオプログラム内の所定の時間に挿入され、その時間は、「広告スロット」または「広告ブレーク」と呼ばれ得る。ストリーミングビデオの場合、メディアプレーヤは、クライアントデバイスが、指定された広告スロット中に所定の広告を再生することもなしにはビデオを再生することができないように構成され得る。
【0085】
[0091]図12を参照すると、ビデオコンテンツおよび広告を見るための装置1200の線図が示される。選択された実施形態では、装置1200は、プロセッサ(CPU)1202を含み得、プロセッサ1202は、プロセッサ1202による実行のためのバイナリコード化された機能モジュールを保持するプロセッサメモリ1204に動作可能に結合される。そのような機能モジュールは、入力/出力およびメモリアクセスなどのシステム機能を扱うためのオペレーティングシステム1206と、ウェブページを表示するためのブラウザ1208と、ビデオを再生するためのメディアプレーヤ1210とを含み得る。これらのモジュールは、セッション内シナリオセレクタ114をさらに含み得る。メモリ1204は、図12に示されていない追加のモジュール、たとえば、本明細書の他の場所で説明される他の動作を実行するためのモジュールを保持し得る。
【0086】
[0092]バス1214または他の通信構成要素は、装置1200内の情報の通信をサポートし得る。プロセッサ1202は、特定のタスクを定義する機械可読ソフトウェアコードを実行することによって、本明細書で開示される特徴および態様に従って特定のタスクを実行するように構成されたまたは動作可能である特別のまたは専用のマイクロプロセッサであり得る。プロセッサメモリ1204(たとえば、ランダムアクセスメモリ(RAM)または他の動的記憶デバイス)は、バス1214に接続されるか、またはプロセッサ1202に直接接続され、情報とプロセッサ1202によって実行される命令とを記憶し得る。メモリ1204はまた、そのような命令の実行中に一時的な変数または他の中間情報を記憶し得る。
【0087】
[0093]記憶デバイス1224内のコンピュータ可読媒体は、バス1214に接続され、プロセッサ1202のための静的情報および命令を記憶することがあり、たとえば、記憶デバイス(CRM)1224は、装置1200が電源オフされたときにモジュール1206、1208、1210、および1212を記憶することがあり、モジュールは、装置1200が電源投入されたときに、記憶デバイス(CRM)1224からプロセッサメモリ1204にロードされ得る。記憶デバイス1224は、情報、命令、またはそれらの何らかの組合せ、たとえば、プロセッサ1202によって実行されたとき、本明細書で説明する方法の1つまたは複数の動作を実行するように装置1200を構成するかまたは動作可能にさせる命令を保持する非一時的コンピュータ可読記憶媒体を含み得る。
【0088】
[0094]通信インターフェース1216も、バス1214に接続され得る。通信インターフェース1216は、任意選択でルータ/モデム1226および有線またはワイヤレスの接続を介して、装置1200と、1つまたは複数の外部デバイス、たとえばストリーミングシステム1100との間の双方向データ通信を提供またはサポートし得る。代替または追加として、装置1200は、アンテナ1229に接続されたトランシーバ1218を含むことがあり、トランシーバ1218を通して、装置1200は、ワイヤレス通信システムのための基地局またはルータ/モデム1226とワイヤレス通信し得る。代替形態では、装置1200は、ローカルエリアネットワーク、仮想プライベートネットワーク、または他のネットワークを介してビデオストリーミングシステム1100と通信し得る。別の代替形態では、装置1200は、システム1100のモジュールまたは構成要素として組み込まれ、バス1214を介して、または何らかの他のモダリティによって他の構成要素と通信し得る。
【0089】
[0095]装置1200は、ディスプレイユニット1228に(たとえば、バス1214およびグラフィックス処理ユニット1220を介して)接続され得る。ディスプレイ1228は、装置1200の操作者に情報を表示するための任意の適切な構成を含み得る。たとえば、ディスプレイ1228は、液晶ディスプレイ(LCD)、タッチスクリーンLCD(たとえば、容量性ディスプレイ)、発光ダイオード(LED)ディスプレイ、プロジェクタ、または装置1200のユーザに視覚表示で情報を提示するための他のディスプレイデバイスを含むかまたは利用することがある。
【0090】
[0096]1つまたは複数の入力デバイス1230(たとえば、英数字のキーボード、マイクロフォン、キーパッド、リモートコントローラ、ゲームコントローラ、カメラ、またはカメラアレイ)は、装置1200に情報およびコマンドを通信するために、ユーザ入力ポート1222を介してバス1214に接続され得る。選択された実施形態では、入力デバイス1230は、カーソルの位置決めに対する制御を提供またはサポートすることがある。ポインティングデバイスとも呼ばれるそのようなカーソル制御デバイスは、マウス、トラックボール、トラックパッド、タッチスクリーン、カーソル方向キー、または、物理的移動を受信もしくは追跡し、その移動を、カーソル移動を示す電気信号に変換するための他のデバイスとして構成され得る。カーソル制御デバイスは、たとえばタッチセンシティブスクリーンを使用するディスプレイユニット1228に組み込まれ得る。カーソル制御デバイスは、プロセッサ1202に方向情報およびコマンド選択を通信し、ディスプレイ1228上のカーソル移動を制御し得る。カーソル制御デバイスは、2つ以上の自由度を有することがあり、たとえば、デバイスが平面または3次元空間内のカーソル位置を指定することを可能にする。
【0091】
[0097]例示的な実施形態
[0098]いくつかの実施形態では、本方法は、ビデオの再生を分析するために、ビデオの再生中に、コンピューティングデバイスによって、アダプティブビットレートアルゴリズムのパラメータ値を使用することと、ここにおいて、アダプティブビットレートアルゴリズムは、ビデオのセグメントを要求するために使用すべきプロファイルを複数のプロファイルから選択するためにパラメータ値を使用する、再生状態がシナリオの特性値を満たすときに、コンピューティングデバイスによって複数のシナリオのうちのあるシナリオを選択することと、ここにおいて、複数のシナリオは異なる特性値に関連付けられる、調整されたパラメータ値を生成するために、コンピューティングデバイスによって、そのシナリオに基づいてアダプティブビットレートアルゴリズムのパラメータ値を調整することと、ここにおいて、複数のシナリオは少なくとも1つの異なるパラメータ値を有する、ビデオの再生を分析するために、コンピューティングデバイスによってアダプティブビットレートアルゴリズムの調整されたパラメータ値を使用することとを備える。
【0092】
[0099]いくつかの実施形態では、本方法は、ビデオの再生を分析することに基づいて、いつ変化点が発生するかを決定することをさらに備え、ここにおいて、変化点は、いつシナリオを選択すべきかを決定するために使用される。
【0093】
[00100]いくつかの実施形態では、変化点は、再生状態の変化が起こったことを示す。
【0094】
[00101]いくつかの実施形態では、シナリオを選択することは、各シナリオの特性値を再生状態と比較することと、再生状態を満たすと決定された特性値を有するシナリオを選択することとを備える。
【0095】
[00102]いくつかの実施形態では、パラメータ値を調整することは、パラメータ値を第1のシナリオの第1の値から第2のシナリオの第2の値に変更することを備える。
【0096】
[00103]いくつかの実施形態では、調整されたパラメータ値を使用することは、調整されたパラメータ値を使用して現在のプロファイルからビデオを再生するために使用すべき新しいプロファイルを選択することを備える。
【0097】
[00104]いくつかの実施形態では、本方法は、複数のシナリオの各々についての特性値を受信することをさらに備え、ここにおいて、特性値は、再生状態を異なる特性値に関連付けられた異なる分割部に分割するために再生状態履歴を分析することによって決定される。
【0098】
[00105]いくつかの実施形態では、再生状態履歴は、再生状態履歴に適合する分割パターンルールを決定するために複数の分割パターンルールを分析することによって分割される。
【0099】
[00106]いくつかの実施形態では、複数のシナリオの各々についてのそれぞれの特性値は、シナリオの分割部と分割部における再生状態とに基づいて選択される。
【0100】
[00107]いくつかの実施形態では、本方法は、複数のシナリオの各々についてのそれぞれのパラメータ値を受信することをさらに備える。
【0101】
[00108]いくつかの実施形態では、複数のシナリオの各々についてのそれぞれのパラメータ値は、各それぞれのシナリオに関連付けられたそれぞれの再生状態の分析に基づく。
【0102】
[00109]いくつかの実施形態では、それぞれのパラメータ値は、再生状態の分析と、それぞれのパラメータ値を使用するアダプティブビットレートアルゴリズムの性能とに基づいて選択される。
【0103】
[00110]いくつかの実施形態では、非一時的コンピュータ可読記憶媒体は、実行されると、ビデオの再生を分析するために、ビデオの再生中にアダプティブビットレートアルゴリズムのパラメータ値を使用することと、ここにおいて、アダプティブビットレートアルゴリズムは、ビデオのセグメントを要求するために使用すべきプロファイルを複数のプロファイルから選択するためにパラメータ値を使用する、再生状態がシナリオの特性値を満たすときに、複数のシナリオのうちのあるシナリオを選択することと、ここにおいて、複数のシナリオは異なる特性値に関連付けられる、調整されたパラメータ値を生成するために、そのシナリオに基づいてアダプティブビットレートアルゴリズムのパラメータ値を調整することと、ここにおいて、複数のシナリオは少なくとも1つの異なるパラメータ値を有する、ビデオの再生を分析するために、アダプティブビットレートアルゴリズムの調整されたパラメータ値を使用することとを行うために動作可能であるようにコンピュータシステムを制御する命令を含む。
【0104】
[00111]いくつかの実施形態では、本方法は、コンピューティングデバイスによって、1つまたは複数のビデオを再生するための再生状態を受信することと、複数のシナリオを決定するために、コンピューティングデバイスによって再生状態を分析することと、ここにおいて、複数のシナリオは、再生状態とは異なる特性値に関連付けられる、アダプティブビットレートアルゴリズムのパラメータ値を選択するために、コンピューティングデバイスによって複数のシナリオの各シナリオについての特性値を分析することと、ここにおいて、アダプティブビットレートアルゴリズムは、複数のプロファイルのうちのあるプロファイルを選択するためにパラメータ値を使用する、ビデオを再生するときにアダプティブビットレートアルゴリズムによって使用されるために、コンピューティングデバイスによって、複数のシナリオについての特性値およびパラメータ値をクライアントデバイスに提供することとを備える。
【0105】
[00112]いくつかの実施形態では、複数のシナリオを決定するために再生状態を分析することは、再生状態を異なる特性値に分割するために再生状態を分析することを備える。
【0106】
[00113]いくつかの実施形態では、複数のシナリオを決定するために再生状態を分析することは、再生状態を分割する分割パターンルールを決定するために複数の分割パターンルールを分析することを備える。
【0107】
[00114]いくつかの実施形態では、複数のシナリオについてのそれぞれの特性値は、シナリオの分割部と分割部における再生状態とに基づいて選択される。
【0108】
[00115]いくつかの実施形態では、パラメータ値を選択するために複数のシナリオの各シナリオについての特性値を分析することは、各シナリオについてのパラメータ値を選択するために各それぞれのシナリオに関連付けられたそれぞれの再生状態を分析することを備える。
【0109】
[00116]いくつかの実施形態では、パラメータ値を選択するために複数のシナリオの各シナリオの特性値を分析することは、再生状態の分析と、それぞれのパラメータ値を使用するアダプティブビットレートアルゴリズムの性能とに基づいて、それぞれのパラメータ値を選択することを備える。
【0110】
[00117]いくつかの実施形態では、本方法は、再生状態を分析することに基づいて、いつ変化点が発生するかを決定するために、再生状態を分析することをさらに備え、ここにおいて、変化点は、いつシナリオを選択すべきかを決定するために使用される。
【0111】
[00118]いくつかの実施形態は、命令実行システム、装置、システム、もしくは機械によって、またはそれらに関連して使用するための非一時的コンピュータ可読記憶媒体において実装され得る。コンピュータ可読記憶媒体は、いくつかの実施形態によって説明される方法を実行するようにコンピュータシステムを制御するための命令を含む。コンピュータシステムは、1つまたは複数のコンピューティングデバイスを含み得る。命令は、1つまたは複数のコンピュータプロセッサによって実行されると、いくつかの実施形態において説明されるものを実行するように構成されるか、または動作可能であり得る。
【0112】
[00119]本明細書の説明において、および続く特許請求の範囲を通して使用される「1つの(a)」、「1つの(an)」、および「その(the)」は、文脈が別途明確に指示しない限り、複数の参照を含む。また、本明細書の説明において、および続く特許請求の範囲を通して使用される「中(in)」の意味は、文脈が別途明確に指示しない限り、「中(in)」および「上(on)」を含む。
【0113】
[00120]上記の説明は、いくつかの実施形態の態様がどのように実装され得るかの例とともに、様々な実施形態を示す。上記の例および実施形態は、唯一の実施形態であると見なされるべきではなく、以下の特許請求の範囲によって定義されるいくつかの実施形態のフレキシビリティおよび利点を例示するために提示される。上記の開示および以下の特許請求の範囲に基づいて、他の構成、実施形態、実装形態、および均等物が、特許請求の範囲によって定義される本発明の範囲から逸脱することなく採用され得る。
以下に、出願当初の特許請求の範囲に記載の事項を、そのまま、付記しておく。
[C1]
ビデオの再生を分析するために、前記ビデオの再生中に、コンピューティングデバイスによって、アダプティブビットレートアルゴリズムのパラメータ値を使用することと、ここにおいて、前記アダプティブビットレートアルゴリズムは、前記ビデオのセグメントを要求するために使用すべきプロファイルを複数のプロファイルから選択するために前記パラメータ値を使用する、
再生状態があるシナリオの特性値を満たすときに、前記コンピューティングデバイスによって複数のシナリオのうちの前記シナリオを選択することと、ここにおいて、前記複数のシナリオは、異なる特性値に関連付けられる、
調整されたパラメータ値を生成するために、前記コンピューティングデバイスによって、前記シナリオに基づいて前記アダプティブビットレートアルゴリズムの前記パラメータ値を調整することと、ここにおいて、前記複数のシナリオは、少なくとも1つの異なるパラメータ値を有する、
前記ビデオの前記再生を分析するために、前記コンピューティングデバイスによって前記アダプティブビットレートアルゴリズムの前記調整されたパラメータ値を使用することと
を備える、方法。
[C2]
前記ビデオの前記再生を分析することに基づいて、いつ変化点が発生するかを決定することをさらに備える方法であって、ここにおいて、前記変化点は、いつシナリオを選択すべきかを決定するために使用される、C1に記載の方法。
[C3]
前記変化点は、前記再生状態の変化が起こったことを示す、C2に記載の方法。
[C4]
前記シナリオを選択することは、
各シナリオの前記特性値を前記再生状態と比較することと、
前記再生状態を満たすと決定された前記特性値を有する前記シナリオを選択することとを備える、C1に記載の方法。
[C5]
前記パラメータ値を調整することは、前記パラメータ値を第1のシナリオの第1の値から第2のシナリオの第2の値に変更することを備える、C1に記載の方法。
[C6]
前記調整されたパラメータ値を使用することは、
前記調整されたパラメータ値を使用して現在のプロファイルから前記ビデオを再生するために使用すべき新しいプロファイルを選択すること
を備える、C1に記載の方法。
[C7]
前記複数のシナリオの各々についての前記特性値を受信することをさらに備える方法であって、ここにおいて、前記特性値は、前記再生状態を異なる特性値に関連付けられた異なる分割部に分割するために再生状態履歴を分析することによって決定される、C1に記載の方法。
[C8]
前記再生状態履歴は、前記再生状態履歴に適合する分割パターンルールを決定するために複数の分割パターンルールを分析することによって分割される、C7に記載の方法。
[C9]
前記複数のシナリオの各々についての前記それぞれの特性値は、前記シナリオの前記分割部と前記分割部における前記再生状態とに基づいて選択される、C7に記載の方法。
[C10]
前記複数のシナリオの各々についてのそれぞれのパラメータ値を受信することをさらに備える、C1に記載の方法。
[C11]
前記複数のシナリオの各々についての前記それぞれのパラメータ値は、各それぞれのシナリオに関連付けられたそれぞれの再生状態の分析に基づく、C1に記載の方法。
[C12]
前記それぞれのパラメータ値は、前記再生状態の分析と、前記それぞれのパラメータ値を使用する前記アダプティブビットレートアルゴリズムの性能とに基づいて選択される、C11に記載の方法。
[C13]
非一時的コンピュータ可読記憶媒体であって、実行されると、
ビデオの再生を分析するために、前記ビデオの再生中に、アダプティブビットレートアルゴリズムのパラメータ値を使用することと、ここにおいて、前記アダプティブビットレートアルゴリズムは、前記ビデオのセグメントを要求するために使用すべきプロファイルを複数のプロファイルから選択するために前記パラメータ値を使用する、
再生状態があるシナリオの特性値を満たすときに、複数のシナリオのうちの前記シナリオを選択することと、ここにおいて、前記複数のシナリオは、異なる特性値に関連付けられる、
調整されたパラメータ値を生成するために、前記シナリオに基づいて前記アダプティブビットレートアルゴリズムの前記パラメータ値を調整することと、ここにおいて、前記複数のシナリオは、少なくとも1つの異なるパラメータ値を有する、
前記ビデオの前記再生を分析するために、前記アダプティブビットレートアルゴリズムの前記調整されたパラメータ値を使用することと
を行うために動作可能であるようにコンピュータシステムを制御する命令を含む、非一時的コンピュータ可読記憶媒体。
[C14]
コンピューティングデバイスによって、1つまたは複数のビデオを再生するための再生状態を受信することと、
複数のシナリオを決定するために、前記コンピューティングデバイスによって前記再生状態を分析することと、ここにおいて、前記複数のシナリオは、前記再生状態とは異なる特性値に関連付けられる、
アダプティブビットレートアルゴリズムのパラメータ値を選択するために、前記コンピューティングデバイスによって前記複数のシナリオの各シナリオについての前記特性値を分析することと、ここにおいて、前記アダプティブビットレートアルゴリズムは、複数のプロファイルのうちのあるプロファイルを選択するために前記パラメータ値を使用する、 ビデオを再生するときに前記アダプティブビットレートアルゴリズムによって使用されるために、前記コンピューティングデバイスによって、前記複数のシナリオについての前記特性値および前記パラメータ値をクライアントデバイスに提供することと
を備える、方法。
[C15]
前記複数のシナリオを決定するために前記再生状態を分析することは、
前記再生状態を異なる特性値に分割するために前記再生状態を分析すること
を備える、C14に記載の方法。
[C16]
前記複数のシナリオを決定するために前記再生状態を分析することは、
前記再生状態を分割する分割パターンルールを決定するために複数の分割パターンルールを分析すること
を備える、C15に記載の方法。
[C17]
前記複数のシナリオについての前記それぞれの特性値は、前記シナリオの分割部と前記分割部における前記再生状態とに基づいて選択される、C15に記載の方法。
[C18]
前記パラメータ値を選択するために前記複数のシナリオの各シナリオについての前記特性値を分析することは、
各シナリオについての前記パラメータ値を選択するために各それぞれのシナリオに関連付けられた前記それぞれの再生状態を分析すること
を備える、C14に記載の方法。
[C19]
前記パラメータ値を選択するために前記複数のシナリオの各シナリオについての前記特性値を分析することは、
前記再生状態の分析と、前記それぞれのパラメータ値を使用する前記アダプティブビットレートアルゴリズムの性能とに基づいて、前記それぞれのパラメータ値を選択することを備える、C14に記載の方法。
[C20]
前記再生状態を分析することに基づいて、いつ変化点が発生するかを決定するために前記再生状態を分析することをさらに備える方法であって、ここにおいて、前記変化点は、いつシナリオを選択すべきかを決定するために使用される、C14に記載の方法。
図1
図2
図3A
図3B
図3C
図4
図5
図6A
図6B
図6C
図7A
図7B
図8
図9
図10
図11
図12