(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024125994
(43)【公開日】2024-09-19
(54)【発明の名称】ビデオエンコーディングのための候補ビットレートの動的選択
(51)【国際特許分類】
H04N 21/2662 20110101AFI20240911BHJP
H04N 21/235 20110101ALI20240911BHJP
H04N 19/115 20140101ALI20240911BHJP
H04N 19/167 20140101ALI20240911BHJP
H04N 19/179 20140101ALI20240911BHJP
【FI】
H04N21/2662
H04N21/235
H04N19/115
H04N19/167
H04N19/179
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023199246
(22)【出願日】2023-11-24
(31)【優先権主張番号】18/179,281
(32)【優先日】2023-03-06
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】523380346
【氏名又は名称】ベイジン・フル・ソフトウェア・テクノロジー・デベロップメント、カンパニー・リミテッド
【氏名又は名称原語表記】BEIJING HULU SOFTWARE TECHNOLOGY DEVELOPMENT CO., LTD.
【住所又は居所原語表記】Room 2101-2108 21/F, 2201-2208 22/F, Building B, No.13 Building, Wangjing East Park, 4th Block, POSCO, Chaoyang District, Beijing 100102, PRC
(71)【出願人】
【識別番号】500324510
【氏名又は名称】ディズニー エンタープライジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】チェン・リュー
(72)【発明者】
【氏名】ウェンハオ・ジャン
(72)【発明者】
【氏名】スコット・ラブロッツィ
(72)【発明者】
【氏名】ユエンイー・シュエ
(72)【発明者】
【氏名】シーチャン・フアンフー
(72)【発明者】
【氏名】シャオボー・リュー
【テーマコード(参考)】
5C159
5C164
【Fターム(参考)】
5C159PP04
5C159SS09
5C159TA30
5C159TA60
5C159TB02
5C159TC10
5C159TC34
5C159TC43
5C159TD15
5C159UA02
5C159UA05
5C164FA06
5C164MA02S
5C164SB08P
5C164SC03P
5C164TA08S
(57)【要約】 (修正有)
【課題】ビデオエンコーディングのための候補ビットレートの動的選択方法を提供する。
【解決手段】方法は、ビデオの第1の部分の第1の特徴に基づいてビットレートと品質との間の第1の関連性の第1の表現を生成し、ビデオの第2の部分の第2の特徴に基づいてビットレートと品質との間の第2の関連性の第2の表現を生成する。第1の表現は、ビデオの第1の部分のためのビットレートの第1のリストを決定するために分析され、第2の表現は、ビデオの第2の部分のためのビットレートの第2のリストを決定するために分析される。ビットレートの第1のリストは、ビットレートの第2のリストとは異なる。ビデオの第1の部分の符号化に使用するためのビットレートの第1のリストと、ビデオの第2の部分の符号化に使用するためのビットレートの第2のリストとを出力する。
【選択図】
図15
【特許請求の範囲】
【請求項1】
コンピューティングデバイスによって、ビデオの第1の部分の第1の特徴に基づいてビットレートと品質との間の第1の関連性の第1の表現を生成することと、
前記コンピューティングデバイスによって、ビデオの第2の部分の第2の特徴に基づいてビットレートと品質との間の第2の関連性の第2の表現を生成ことと、
前記コンピューティングデバイスによって、ビデオの前記第1の部分のためのビットレートの第1のリストを決定するために前記第1の表現を分析すること、およびビデオの前記第2の部分のためのビットレートの第2のリストを決定するために前記第2の表現を分析することと、ここにおいて、ビットレートの前記第1のリストは、ビットレートの前記第2のリストとは異なり、
前記コンピューティングデバイスによって、ビデオの前記第1の部分の符号化に使用するためのビットレートの前記第1のリスト、およびビデオの前記第2の部分の符号化に使用するためのビットレートの前記第2のリストを出力することと、
を備える、方法。
【請求項2】
前記第1の表現を生成することは、ビットレートおよび品質についての前記第1の関連性の第1の予測を生成することを備え、
前記第2の表現を生成することは、ビットレートおよび品質についての前記第2の関連性の第2の予測を生成することを備える、
請求項1に記載の方法。
【請求項3】
前記第1の表現を生成することは、
前記第1の特徴を予測ネットワークに入力することと、
前記第1の特徴に基づいて前記第1の表現の第1の予測を生成することと、を備え、
前記第2の表現を生成することは、
前記第2の特徴を前記予測ネットワークに入力することと、
前記第2の特徴に基づいて前記第2の表現の第2の予測を生成することと、を備える、
請求項1に記載の方法。
【請求項4】
前記第1の表現を分析すること、または前記第2の表現を分析することは、
前記第1の表現または前記第2の表現に基づいて潜在的なビットレートのリストを生成することと、
ビットレートの前記第1のリストまたはビットレートの前記第2のリストを決定するために前記潜在的なビットレートに関連する品質に基づいて潜在的なビットレートの前記リストを改良することと、
を備える、請求項1に記載の方法。
【請求項5】
潜在的なビットレートの前記リストを改良することは、
潜在的なビットレートの前記リストから第1の潜在的なビットレートを除去すること
を備える、請求項4に記載の方法。
【請求項6】
前記潜在的なビットレートを除去することは、
第2の潜在的なビットレートを決定することと、
前記第1の潜在的なビットレートの第1の品質を前記第2の潜在的なビットレートの第2の品質と比較することと、
前記比較することに基づいて前記第1の潜在的なビットレートを除去するかどうかを決定することと、
を備える、請求項5に記載の方法。
【請求項7】
前記第1の品質と前記第2の品質との間の差が閾値を満たすとき、前記第1の潜在的なビットレートは、潜在的なビットレートの前記リストから除去される、請求項6に記載の方法。
【請求項8】
潜在的なビットレートの前記リストを改良することは、
第1の潜在的なビットレートを潜在的なビットレートの前記リストに追加すること
を備える、請求項4に記載の方法。
【請求項9】
前記潜在的なビットレートを追加することは、
潜在的なビットレートの前記リスト内にある第2の潜在的なビットレートおよび第3の潜在的なビットレートを決定することと、
前記第2の潜在的なビットレートの第1の品質を前記第3の潜在的なビットレートの第2の品質と比較することと、
前記比較することに基づいて前記第1の潜在的なビットレートを追加するかどうかを決定することと、
を備える、請求項8に記載の方法。
【請求項10】
前記第1の品質と前記第2の品質との間の差が閾値を満たすとき、前記第1の潜在的なビットレートが追加される、請求項9に記載の方法。
【請求項11】
前記第1の表現を分析すること、または前記第2の表現を分析することは、
ビデオの前記第1の部分またはビデオの前記第2の部分における複数のセグメントについての複数の第1の表現を分析することと、
前記複数の第1の表現ごとに第1の最小ビットレートおよび第1の最大ビットレートを決定することと、
前記複数の第1の表現ごとに前記第1の最小ビットレートおよび前記第1の最大ビットレート基づいてビデオの前記第1の部分またはビデオの前記第2の部分についての第2の最小ビットレートおよび第2の最大ビットレートを決定することと、
を備える、請求項1に記載の方法。
【請求項12】
前記第1の表現を分析すること、または前記第2の表現を分析することは、
前記第2の最小ビットレートおよび前記第2の最大ビットレートに基づいて潜在的なビットレートのリストを生成することを備え、ここにおいて、潜在的なビットレートの前記リスト内の潜在的なビットレートは、ビットレートの前記第1のリストまたはビットレートの前記第2のリストを決定するために分析される、請求項11に記載の方法。
【請求項13】
前記第1の表現を分析すること、または前記第2の表現を分析することは、
前記複数の第1の表現ごとに潜在的な除去候補ビットレートを決定することと、ここにおいて、潜在的な除去候補ビットレートは、潜在的なビットレートの前記リストからの潜在的な除去であり、
前記複数の第1の表現の各々のうちの1つまたは複数の中に潜在的な除去候補として含まれる前記潜在的な除去候補ビットレートに基づいて潜在的な除去候補ビットレートを除去するかどうかを決定することと、
を備える、請求項12に記載の方法。
【請求項14】
前記第1の表現を分析すること、または前記第2の表現を分析することは、
前記複数の第1の表現ごとに潜在的な追加候補ビットレートを決定することと、ここにおいて、潜在的な追加候補は、潜在的なビットレートの前記リストへの潜在的な追加であり、
前記複数の第1の表現の各々のうちの1つまたは複数の中に潜在的な追加候補として含まれる前記潜在的な追加候補ビットレートに基づいて潜在的なビットレートを追加するかどうかを決定することと、
を備える、請求項12に記載の方法。
【請求項15】
ビットレートの前記第1のリストは、ビットレートの前記第2のリストに含まれていないビットレートを含む、
請求項1に記載の方法。
【請求項16】
ビデオの前記第1の部分についての複数の第1の符号化された部分を生成するためにビットレートの前記第1のリストを使用してビデオの前記第1の部分を符号化することと、
ビデオの前記第2の部分についての複数の第2の符号化された部分を生成するためにビットレートの前記第2のリストを使用してビデオの前記第2の部分を符号化することと、
をさらに備える、請求項1に記載の方法。
【請求項17】
プロファイルラダーにおける第1のプロファイルについての前記複数の第1の符号化された部分から、符号化されたセグメントを選択することと、
前記プロファイルラダーにおける前記第1のプロファイルについての前記複数の第2の符号化された部分から、符号化されたセグメントを選択することと、
をさらに備える、請求項16に記載の方法。
【請求項18】
コンピュータ実行可能命令を記憶している非一時的なコンピュータ可読記憶媒体であって、コンピューティングデバイスによって実行されるときに、
ビデオの第1の部分の第1の特徴に基づいてビットレートと品質との間の第1の関連性の第1の表現を生成することと、
ビデオの第2の部分の第2の特徴に基づいてビットレートと品質との間の第2の関連性の第2の表現を生成することと、
ビデオの前記第1の部分のためのビットレートの第1のリストを決定するために前記第1の表現を分析すること、およびビデオの前記第2の部分のためのビットレートの第2のリストを決定するために前記第2の表現を分析することと、ここにおいて、ビットレートの前記第1のリストは、ビットレートの前記第2のリストとは異なり、
ビデオの前記第1の部分の符号化に使用するためのビットレートの前記第1のリスト、およびビデオの前記第2の部分の符号化に使用するためのビットレートの前記第2のリストを出力することと、
について前記コンピューティングデバイスを動作可能にさせている、非一時的なコンピュータ可読記憶媒体。
【請求項19】
前記第1の表現を生成することは、ビットレートおよび品質についての前記第1の関連性の第1の予測を生成することを備え、
前記第2の表現を生成することは、ビットレートおよび品質についての前記第2の関連性の第2の予測を生成することを備える、
請求項18に記載の非一時的なコンピュータ可読記憶媒体。
【請求項20】
1つまたは複数のコンピュータプロセッサと、
ビデオの第1の部分の第1の特徴に基づいてビットレートと品質との間の第1の関連性の第1の表現を生成すること、
ビデオの第2の部分の第2の特徴に基づいてビットレートと品質との間の第2の関連性の第2の表現を生成すること、
ビデオの前記第1の部分のためのビットレートの第1のリストを決定するために前記第1の表現を分析すること、およびビデオの前記第2の部分のためのビットレートの第2のリストを決定するために前記第2の表現を分析すること、ここにおいて、ビットレートの前記第1のリストは、ビットレートの前記第2のリストとは異なり、ならびに
ビデオの前記第1の部分の符号化に使用するためのビットレートの前記第1のリスト、およびビデオの前記第2の部分の符号化に使用するためのビットレートの前記第2のリストを出力すること
のために動作可能であるように前記1つまたは複数のコンピュータプロセッサを制御するための命令を備えるコンピュータ可読記憶媒体と、
を備える、装置。
【発明の詳細な説明】
【背景技術】
【0001】
[0001]ビデオをクライアントデバイスに配信する一方法は、アダプティブビットレートストリーミング(ABR)を使用する。アダプティブビットレートストリーミングは、異なるレベルのビットレートおよび/または品質などの異なるレベルのビデオ属性で符号化された(しばしば、バリアントまたはプロファイルと呼ばれる)複数のストリームを提供することに根拠が置かれる。プロファイルラダーは、ビデオのセグメントをストリーミングするときにクライアントが使用するために利用可能な異なるプロファイルをリストする。クライアントは、ネットワーク状態および他の要因に基づいて、プロファイルを動的に選択することができる。ビデオはセグメント化され(例えば、通常は数秒の長さごとに個別のセグメントに分割され)、クライアントは、ネットワーク状態が変化するときにセグメント境界であるプロファイルから別のプロファイルに切り替えることができる。例えば、ビデオ配信システムは、より高い利用可能な帯域幅を有するネットワーク状態が経験されているときに、ストリーミングされているビデオの品質を改善するより高いビットレートを有するプロファイルをクライアントに与えることを望む。より低い利用可能な帯域幅を有するネットワーク状態が経験されているときに、ビデオ配信システムは、クライアントが、再バッファリングまたはダウンロードの失敗などの何らかの再生問題を有することなしにビデオを再生することができるように、より低いビットレートを有するプロファイルをクライアントに与えることを望む。
【発明の概要】
【0002】
[0002]含まれる図面は、例示的な目的のためであり、開示される発明のシステム、装置、方法、およびコンピュータプログラム製品についての可能な構造および動作の例を与える役割を果たすものに過ぎない。これらの図面は、開示された実施の精神および範囲から逸脱することなく、当業者によってなされ得る形態および細部のいかなる変更も決して限定しない。
【図面の簡単な説明】
【0003】
【
図1】[0003]いくつかの実施形態による候補平均ビットレートのリストを動的に選択するためのシステムを示す図。
【
図2】[0004]いくつかの実施形態によるビデオの部分の一例を示す図。
【
図3A】[0005]いくつかの実施形態による候補平均ビットレートのリストの生成の一例を示す図。
【
図3B】[0006]いくつかの実施形態による符号化されたセグメントの生成の一例を示す図。
【
図4】[0007]いくつかの実施形態による符号化されたセグメントを複数のプールにクラスタリングする一例を示す図。
【
図5】[0008]いくつかの実施形態による選択プロセスの一例を示す図。
【
図6】[0009]いくつかの実施形態によるプールのために符号化されたセグメントを選択するために使用され得るレート歪み曲線のグラフの一例を示す図。
【
図7】[0010]いくつかの実施形態によるセグメントごとにプロファイルについての選択された符号化されたセグメントの一例を示す図。
【
図8】[0011]いくつかの実施形態によるビデオコンテンツのための異なるレート歪み曲線の一例を示す図。
【
図9】[0012]いくつかの実施形態による異なる符号化構成を使用する異なる特性を示す図。
【
図10】[0013]いくつかの実施形態による異なるレート歪み曲線について静的候補平均ビットレートを使用する一例を示す図。
【
図11】[0014]いくつかの実施形態による最適化された候補平均ビットレートリストを示す図。
【
図12】[0015]いくつかの実施形態によるセグメント品質駆動型適応処理システム(SQA)システムおよび事前分析最適化プロセスのより詳細な例を示す図。
【
図13】[0016]いくつかの実施形態によるレート歪み(RD)予測システムのより詳細な例を示す図。
【
図14】[0017]いくつかの実施形態による予測ネットワークの出力を示す図。
【
図15】[0018]いくつかの実施形態による候補平均ビットレートのリストを選択するための最適化プロセスを実行するための方法の簡略化されたフローチャートを示す図。
【
図16】[0019]いくつかの実施形態による候補平均ビットレートのリストについての境界を決定する一例を示す図。
【
図17】[0020]いくつかの実施形態による品質に基づいて候補平均ビットレートを除去する一例を示す図。
【
図18】[0021]いくつかの実施形態による候補平均ビットレートを除去するために最小ギャップが使用される一例を示す図。
【
図19】[0022]いくつかの実施形態による候補平均ビットレートを追加することが有利であり得る場合を示すグラフ。
【
図20】[0023]いくつかの実施形態による候補平均ビットレートを追加することの決定を示す図。
【
図21】[0024]一実施形態による1つまたは複数の通信ネットワークを介して複数のクライアントデバイスと通信するビデオストリーミングシステムを示す図。
【
図22】[0025]ビデオコンテンツおよび広告を見るための装置の概略図を示す図。
【発明を実施するための形態】
【0004】
[0026]本明細書では、ビデオ配信システムについての技法が説明される。以下の説明では、説明のために、いくつかの実施形態の徹底的な理解を与えるために、多数の例および具体的な詳細が記載される。特許請求の範囲によって定められるいくつかの実施形態は、これらの例における特徴の一部または全部を、単独で、または以下で説明される他の特徴と組み合わせて含み得、本明細書で説明される特徴および概念の修正形態および均等物をさらに含み得る。
【0005】
[0027]システムは、ビデオを符号化するために使用されるビットレートのリストを適応的に生成することができる。ビットレートのリストは、候補平均ビットレート(CAB)と呼ばれ得る。符号器は、候補平均ビットレートのリスト内のそれぞれのビットレートを使用してビデオのセグメントをトランスコードする。いくつかの実施形態では、システムは、ビデオの異なるチャンクについてなど、ビデオの異なる部分について候補平均ビットレートのリストを動的に選択することができる。チャンクは、符号器が同じ設定を用いて符号化する独立した符号化単位であり得る。ビデオは、1つまたは複数のチャンクを含むことができ、各チャンクは、複数のセグメントを含むことができる。いくつかの実施形態では、候補平均ビットレートのリストはチャンクレベルで設定され得る。候補平均ビットレートのリストは、チャンクレベルで設定されていると説明されるが、候補平均ビットレートのリストは、ビデオの異なる部分に対して設定され得る。
【0006】
[0028]符号器は、複数の候補セグメントを生成するために、候補平均ビットレートのリスト内のビットレートを使用して、ビデオのセグメントを符号化することができる。セグメント品質駆動型適応(SQA)プロセスは、プロファイルラダーにおけるプロファイルに使用するために、候補セグメントからセグメントを選択することができる。プロセスのターゲットは、同様の品質を維持しつつビデオに部分の記憶または配信フットプリントを最適化する(例えば、最小化する)ことである。
【0007】
[0029]各ビデオは、異なる特性を有し得る。同様に、同じビデオ内の異なる部分も、異なる特性を有し得る。ビデオのすべての部分についてまたは複数のビデオについて候補平均ビットレートの静的リストを使用することは、最適な結果を与えない場合がある。例えば、候補平均ビットレートの静的リストは、必要とされるよりも多くのビットレートを有する単純なビデオコンテンツを有するビデオを符号化し得る。また、複雑なビデオコンテンツを有するビデオは、不十分なビットレートに起因して、低品質で符号化され得る。さらに、候補平均ビットレートの静的リストは、符号化の観点から不規則な品質ギャップを有するセグメントを生成し得る。例えば、隣接するプロファイルは、互いに冗長である同様のビデオ品質を有し得る、または許容できない大きい品質ギャップを有し得る。隣接するプロファイルについて同様のビデオ品質を有することは、不必要である場合があり、視聴品質において多くの利点を与えないことがある。例えば、候補平均ビットレートのリスト内の2つのビットレートが、同様の品質を有する符号化セグメントもたらす場合、それらの2つのビットレートを用いてセグメントをトランスコードすることは、冗長であり得、リソースを浪費し得る。また、大きな品質ギャップを有することは、再生が1つのプロファイルから別のプロファイルに切り替わるときに品質が急激に変化し得るので、再生中に悪い視聴体験をもたらし得る。
【0008】
[0030]上記の欠点を克服するために、事前分析最適化プロセスは、ビデオについての候補平均ビットレートのリスト内のビットレートを動的に選択することができる。候補平均ビットレートのリストを選択するために、事前分析最適化プロセスは、ビデオの一部分を分析し、その部分についての候補平均ビットレートの最適化されたリストを出力することができる。例えば、事前分析最適化プロセスは、各部分の特性を分析し、各部分についての候補平均ビットレートのリストを出力することができる。いくつかの実施形態では、事前分析最適化プロセスは、その部分についての品質対ビットレートを記述するレート歪み曲線など、その部分の特性を予測することができる。事前分析最適化プロセスは、各部分のビットレートの最適なリストを決定するために、それぞれのレート歪み曲線を使用する。
【0009】
[0031]最適化プロセスは、多くの利点を与える。例えば、このプロセスは、プロファイルラダー内のプロファイルについてのセグメントを選択するときに選択すべきトランスコードされたセグメントの最適な選択を与える。候補平均ビットレートのリストが、ビデオ全体について静的な値で設定され、および/または複数の異なるビデオについて同じである場合、準最適なトランスコーディングが生じ得る。異なるビデオは、および同じビデオの異なる部分も、多様な特性を有することができる。したがって、候補平均ビットレートの静的リストは、いくつかのビデオまたはビデオの部分について準最適であり得る。セグメント品質駆動型適応プロセスは、プロファイルラダーについてのプロファイルを形成するために選択すべき符号化セグメントのより良い選択を有し得るので、ビデオの部分の特性に基づく候補平均ビットレートの動的リストの使用は、より高品質のビデオおよび視聴体験をもたらし得る。
【0010】
[0032]システム
[0033]
図1は、いくつかの実施形態による、候補平均ビットレートのリストを動的に選択するためのシステム100を示す。システム100は、コンテンツ配信ネットワーク102と、クライアント104と、ビデオ配信システム106とを含む。ソースファイルは、ビデオ、音声、または他のタイプのコンテンツ情報などの異なるタイプのコンテンツを含み得る。ビデオは、説明のために使用され得るが、他のタイプのコンテンツも理解され得る。いくつかの実施形態では、ソースファイルは、以下で説明する別のフォーマットへの符号化を必要とするフォーマットで受信され得る。例えば、ソースファイルは、圧縮されたビデオを含むメザニンファイルであってもよい。メザニンファイルは、ビデオの異なるプロファイルなどの他のファイルを生成するために符号化され得る。
【0011】
[0034]コンテンツプロバイダは、エンティティがメディアコンテンツを要求し、受信することを可能にするコンテンツ配信サービスを提供するためにビデオ配信システム106を動作させることができる。コンテンツプロバイダは、クライアント104へのメディアコンテンツの配給を調整するために、ビデオ配信システム106を使用することができる。単一のクライアント104が説明されているが、複数のクライアント104がサービスを使用していてもよい。メディアコンテンツは、ビデオのライブラリからのオンデマンドビデオ、およびライブビデオなどの異なるタイプのコンテンツであってもよい。いくつかの実施形態では、ライブビデオは、線形スケジュールに基づいてビデオが利用可能である場所であり得る。ビデオは、オンデマンドで提供されることも可能である。オンデマンドビデオは、いつでも要求されることが可能であり、線形スケジュールで見ることに限定されないコンテンツであり得る。ビデオは、映画、ショー、広告などのプログラムであり得る。
【0012】
[0035]クライアント104は、スマートフォン、リビングルームデバイス、テレビ、セットトップボックス、タブレットデバイス等などの異なるコンピューティングデバイスを含むことができる。クライアント104は、ビデオなどのコンテンツを再生することができるメディアプレーヤ112を含む。いくつかの実施形態では、メディアプレーヤ112は、ビデオのセグメントを受信し、これらのセグメントを再生することができる。クライアント104は、コンテンツ配信ネットワーク102のうちの1つにセグメントの要求を送信し、次いで、メディアプレーヤ112における再生のために要求されたセグメントを受信し得る。セグメントは、ビデオの6秒など、ビデオの一部分であり得る。
【0013】
[0036]ビデオは、複数のプロファイルを含むプロファイルラダーに符号化され得る。各プロファイルは、異なるレベルのビットレートおよび/または品質であり得る異なる構成に対応し得るが、コーデックタイプ、コンピューティングリソースタイプ(例えば、コンピュータ処理ユニット)等などの他の特性を含むこともできる。各ビデオは、異なる構成を有する関連付けられたプロファイルを有し得る。プロファイルは、異なるレベルで分類されてもよく、各レベルは、異なる構成に関連付けられてもよい。例えば、レベルは、ビットレート、解像度、コーデックなどの組合せであってもよく、例えば、各レベルは、400キロバイト毎秒(kbps)、650kbps、1000kbps、1500kbps、...12000kbpsなどの異なるビットレートに関連付けられ得る。また、各レベルは、品質特性(例えば、解像度)などの別の特性に関連付けられてもよい。プロファイルレベルは、より高いビットレートまたは品質を有するプロファイルが、より低いビットレートまたは品質を有するプロファイルよりも高く格付けされ得るなど、より高いまたはより低いと呼ばれ得る。符号器は、ソースビデオを符号化するために特性を使用し得る。例えば、符号器は、1500kbpsのターゲットビットレートでソースビデオをエンコードし得る。
【0014】
[0037]コンテンツ配信ネットワーク102は、ビデオをクライアント104に配信することができるサーバを含む。コンテンツ配信ネットワーク102は、クライアント104からビデオのセグメントの要求を受信し、ビデオのセグメントをクライアント104に配信する。クライアント104は、現在の再生状態に基づいて、プロファイルレベルのうちの1つからビデオのセグメントを要求し得る。再生状態は、利用可能な帯域幅、バッファ長等などのビデオの再生に基づいて経験される任意の状態であり得る。例えば、クライアント104は、現在の利用可能な帯域幅、バッファ長、または他の再生状態に基づいてビデオについてのプロファイルを選択するために、適応ビットレートアルゴリズムを使用してもよい。クライアント104は、現在の再生状態を継続的に評価し、ビデオのセグメントの再生中にプロファイルの間で切り替えることができる。例えば、再生中に、メディアプレーヤ112は、ビデオアセットの異なるプロファイルを要求することができる。例えば、低帯域幅再生状態が経験されている場合、メディアプレーヤ112は、ビデオの今度のセグメントについてのより低いビットレートに関連するより低いプロファイルを要求することができる。しかしながら、より高い利用可能な帯域幅の再生状態が経験されている場合、メディアプレーヤ112は、ビデオの今度のセグメントについてのより高い帯域幅に関連するより高いレベルのプロファイルを要求してもよい。
【0015】
[0038]セグメント品質駆動型適応処理システム(SQAシステム)108は、候補平均ビットレートのリストを使用してセグメントを符号化することができる。次いで、SQAシステム108は、最適化プロセスを使用してプロファイルごとにセグメントを選択する。例えば、SQAシステム108は、同様の品質レベルを維持しつつ、プロファイルラダーのプロファイルごとに最適なビットレートを有するセグメントを適応的に選択することができる。SQAシステム108は、コンテンツを記憶または配信するために必要とされるビット数を最小化しつつ、システムがターゲットビットレートと同様の品質またはターゲットビットレートに一致する品質を維持することを可能にする。
【0016】
[0039]事前分析最適化プロセス110は、ビデオの部分についての候補平均ビットレートのリストを動的に生成することができる。いくつかの実施形態では、事前分析最適化プロセス110は、レート歪み曲線などのビデオの一部分のそれぞれの特性を予測することができる。次いで、事前分析最適化プロセス110は、ビデオの部分のそれぞれの特性を分析することに基づいて、その部分についての候補平均ビットレートを選択する。
【0017】
[0040]以下は、まず、セグメント品質駆動型適応処理プロセスを説明し、次いで、候補平均ビットレートのリストの動的選択をより詳細に説明する。
【0018】
[0041]セグメント品質駆動型適応プロセス
[0042]上述のように、最適化プロセス110は、ビデオの部分についての候補平均ビットレートのリストを動的に選択することができる。ビデオの部分は、異なるサイズであってもよい。
図2は、いくつかの実施形態によるビデオの部分の一例を示す。ビデオ200は、セグメントレベルおよびチャンクレベルで異なる部分に分割され得る。いくつかの実施形態では、202において、ビデオ200は、チャンクレベル部分に分割され得る。例えば、チャンク_0、チャンク_1、・・・、チャンク_mの複数のチャンクが、ビデオ200に含まれてもよい。各それぞれのチャンクは、セグメントと呼ばれ得るより小さな部分に分割され得る。例えば、204において、チャンク_0は、セグメント_0、セグメント_1、・・・、セグメント_nのセグメントに分割される。同様に、図示されていないが、チャンク_1は、セグメント_0、セグメント_1、・・・、セグメント_nのそれ自体のそれぞれのセグメントに分割され得る。セグメントは、チャンクよりも長さが短くてもよい。例えば、チャンクは、2分のビデオであってもよく、セグメントは5秒のビデオであってもよい。
【0019】
[0043]セグメント品質駆動型適応プロセスでは、SQAシステム108は、候補平均ビットレートのリストに基づいて、各それぞれのセグメントの複数の符号化を生成するために、ビデオ200の各セグメントを処理することができる。説明のために、最適化プロセス110は、チャンクごとに候補平均ビットレートのリストを選択するが、候補平均ビットレートのリストは、セグメントごと、複数のチャンクについて等など、異なる部分サイズについて選択されてもよい。候補平均ビットレートの各それぞれのリストに含まれるビットレートは、候補平均ビットレートのリストを使用するビデオのそれぞれの部分(例えば、チャンクおよび/またはセグメント)に関連する特性に基づいて最適化され得る。異なるチャンクについて異なる特性が与えられると、候補平均ビットレートのそれぞれのリストは異なり得る。しかしながら、候補平均ビットレートのそれぞれのリスト内の複数のチャンクについてのビットレートが同じであることが可能であり得る。
【0020】
[0044]
図3Aは、いくつかの実施形態による候補平均ビットレートのリストの生成の例を示す。202において、チャンク_0、チャンク_1、チャンク_2、・・・、チャンク_nのチャンクが示されている。302において、最適化システム110は、各それぞれのチャンクの特性に基づいて、チャンクごとに選択された候補平均ビットレートのリストを有する。例えば、チャンク_0について、候補平均ビットレートのリスト#0は、チャンク_0についての特性に基づく。また、候補平均ビットレートのリスト#1は、チャンク_1についての特性に基づくなどである。いくつかの例では、チャンク_0について、候補平均ビットレートのリスト#0は、8500、7750、7000、6250、5500、4750、4000、3250キロバイト毎秒(Kbps)のビットレートを含み得る。チャンク_1について、候補平均ビットレートのリスト#1は、7000、6250、4750、4000、3250、2000、1250Kbpsのビットレートを含み得る。
【0021】
[0045]候補平均ビットレートのリストは、それぞれのセグメントを符号化するために符号器によって使用されるビットレートを含み得る。従来から、候補平均ビットレートは、同じビットレートを静的に含んできた可能性がある。時には、2つのタイプのビットレートがすべてのチャンクについて使用された。第1のタイプはターゲット平均ビットレートであり得、第2のタイプは中間平均ビットレートであり得る。ターゲット平均ビットレートは、適応ビットレート符号化のためのプロファイルラダーにおけるプロファイルに関連付けられた基本ビットレートであり得る。中間平均ビットレートは、ターゲット平均ビットレートへの補足であってもよい。例えば、ターゲット平均ビットレートの間の追加のビットレートが追加されてもよい。中間平均ビットレートの使用は、品質など、ターゲット平均ビットレートからの符号化されたセグメントとは異なる特性を有し得る追加の符号化セグメントを符号化するための追加のビットレートを与えることができる。場合によっては、最適化プロセス110は、候補平均ビットレートのリスト内にターゲット平均ビットレートおよび/または中間平均ビットレートからのビットレートを含め得る。例えば、最適化プロセス110は、候補平均ビットレートのリスト内にターゲット平均ビットレートを含み得るが、他のビットレートを動的に選択してもよい。他の例では、最適化プロセスは、チャンクの特性のみに基づいて、候補平均ビットレートのリスト内のビットレートを動的に選択することができる。
【0022】
[0046]上述のように、符号器は、チャンクについての符号化されたセグメントを生成する。
図3Bは、いくつかの実施形態による符号化されたセグメントの生成の一例を示す。204において、チャンク_0のチャンクについてのセグメントが、セグメント_0、セグメント_1、セグメント_2、・・・、セグメント_nで示されている。304において、チャンク_0についての候補平均ビットレートのリスト(CABのリスト)が使用される。いくつかの実施形態では、チャンク_0についての候補平均ビットレートの同じリストが、チャンクのすべてのセグメントについて使用される。しかしながら、候補平均ビットレートの複数の異なるリストが、チャンクの異なるセグメントについて使用され得る。次いで、符号器は、候補平均ビットレートのリストを使用してチャンク_0のセグメントを符号化する。
【0023】
[0047]306において、各セグメントについての符号化されたセグメントがリストされる。それぞれのセグメントについて、符号器は、候補平均ビットレートのリスト内の平均ビットレートを使用してセグメントを符号化する。符号器は、セグメントを符号化するときにそれぞれの平均ビットレートをターゲットにすることができる。これは、ENC_S0_CAB_0、ENC_S0_CAB_1、ENC_S0_CAB_2、・・・、ENC_S0_CAB_nのセグメント_0についての符号化されたセグメントなど、チャンクのセグメントごとに符号化されたセグメントのセットをもたらす。表記において、ENC_S0は、セグメント_0の符号化されたセグメントを表し、CAB_0、CAB_1、CAB_2などは、候補平均ビットレートを表す。例えば、CAB_0は8500Kbpsであってもよく、CAB_1は7750Kbpsであってもよく、CAB_2は7000Kbpsであってもよい。各符号化セグメントは、1080pなどの同じ品質レベルで符号化され得る。プロセスは、候補平均ビットレートのリストを使用して別の品質レベルについて繰り返されてもよい。
【0024】
[0048]セグメントごとに、最適化プロセス110は、符号化されたセグメントを複数のプールにクラスタリングする。各プールは、1つのプロファイルに対応し得る。
図4は、いくつかの実施形態による符号化されたセグメントを複数のプールにクラスタリングする一例を示す。402において、複数の符号化セグメントが、候補平均ビットレートについて示されている。各セグメントは、品質指標のための関連する値を有し得る。例えば、符号化されたセグメントENC_S0_CAB_0は、quality_S0_c0の品質を有し得、符号化されたセグメントENC_S0_CAB_1は、quality_S0_c1の品質を有し得るなどである。表記において、quality_S0は、セグメント_0の符号化されたセグメントを表し、c0、c1、c2などは、この符号化されたセグメントについての品質を表す。
【0025】
[0049]符号化されたセグメントをプール401-1、404-2、404-pに含めるために、異なる方法が使用され得る。例えば、各プールは、プロファイルを有してもよく、またはそれに関連付けられてもよい。それぞれのプロファイルは、関連付けられたプロファイルにセグメントを符号化するために使用され得る最大ビットレートであり得るターゲットビットレートに関連付けられ得る。SQAシステム108は、プールについての関連付けられたプロファイルに使用され得る最高平均ビットレートから始まる符号化されたセグメントを含んでもよい。次いで、SQAシステム108は、最大ビットレートよりも小さい他のビットレートで他の符号化されたセグメントを追加してもよい。これは、それぞれのプールに含まれる異なる符号化されたセグメントをもたらし得る。例えば、プールS0_Pool_0は、セグメントENC_S0_CAB_0、ENC_S0_CAB_1、ENC_S0_CAB_2などを含むことができる。また、プールS0_Pool_1は、符号化されたセグメントENC_S0_CAB_2、ENC_S0_CAB_3、ENC_S0_CAB_4などを含み得る。したがって、プールS0_Pool_1は、プールS0_Pool_0内の最大ビットレートよりも小さいビットレートから始まる符号化されたセグメントを含むことができる。符号化されたセグメントが、8500、7750、7000、6250、5500、4750、4000、3250Kbpsのビットレートで符号化される場合、プールS0_pool_0は、8500、7750、7000などの平均ビットレートの符号化セグメントで開始することができ、プールS0_pool_1は、7000、6250、5500などの平均ビットレートで符号化されたセグメントから開始することができる。いくつかの例では、プールについての例示的なビットレートは、pool_0:8500、7700、7000、6250、5500、4750、pool_1:7000、6250、5500、4750、4000、およびpool_p:5500、4750、4000、3250であり得る。
【0026】
[0050]各プールから、SQAシステム108は、選択プロセスを用いることに基づいて、1つの符号化されたセグメントを選択してよい。
図5は、いくつかの実施形態による選択プロセスの一例を示す。以下のプロセスは、プールごとに実行され得る。404-1において、
図4からのプールS0_pool_0が、そのそれぞれの符号化されたセグメントとともに示されている。SQAシステム108は、それぞれのプールごとに符号化されたセグメントを選択するために、1つまたは複数の規則を使用することができる。502において、SQAシステム108は、プールS0_pool_0についての符号化セグメントENC_S0_CAB_1を選択する。いくつかの実施形態では、SQAシステム108は、基準を満たす品質値を有する最小ビットレートを有する符号化されたセグメントを選択しようと試みることができる。いくつかの例では、SQAシステム108は、最高ビットレートを有するセグメントなど、プール内の第1の符号化されたセグメントから開始することができる。次に、SQAシステム108は、次に高いビットレートを有する符号化セグメントなど、プール内の隣接する符号化セグメントを選択する。第1の符号化されたセグメントと第2の符号化されたセグメントが(例えば、閾値内の)同様の品質を有する場合、SQAシステム108は、最低ビットレートを有する符号化セグメントを選択する。SQAシステム108は、第2の符号化セグメントと第3の符号化セグメントのようなプール内の隣接する符号化セグメントとを使用して、比較を継続することができる。隣接する符号化セグメントが同様の品質を有しないとき、プロセスは終了することができる。最低ビットレートを有する符号化されたセグメントから開始するなど、他の方法も使用され得る。また、プロセスは、最高ビットレートを有するセグメントなど、別のセグメントの閾値内の品質を有する最低ビットレートを有するセグメントを選択してもよい。以下は、レート歪み曲線を使用したプロセスの一例を説明する。
【0027】
[0051]
図6は、いくつかの実施形態によるプールのための符号化セグメントを選択するために使用され得るレート歪み曲線のグラフ600の一例を示す。グラフ600において、Y軸は品質であり、X軸はビットレートである。曲線602は、品質とビットレートの間の関係を定義する。例えば、曲線は、セグメントまたはチャンクのレートおよび歪みをプロットし得るが、曲線は、品質およびビットレートの他の特性をプロットしてもよい。
【0028】
[0052]符号化セグメントは、符号化セグメントのそれぞれのレートおよび歪みに基づいて、曲線602上のA、B、C、D、E、Fとしてリストされ得る。604において、同様の品質を有する符号化されたセグメントの一例が示されている。この場合、符号化セグメントCおよび符号化セグメントDは、同様のビットレートおよび同様の品質を有する。例えば、符号化されたセグメントCと符号化されたセグメントDとの間の品質差は、閾値値min_gap(例えば、等しいおよび/またはより小さい)を満たし得る。この場合、この符号化セグメントは、符号化セグメントCと比較して低いビットレートを有するが、セグメントDは、セグメントCと比較して同様の品質を提供するので、品質差が最小であるので、SQAシステム108は、符号化セグメントDを選択することができる。
【0029】
[0053]SQAシステム108は、品質が上限境界を超える符号化されたセグメントを潰すこともできる。例えば、606における上限境界は、符号化されたセグメントを、潰すべき候補として決定するために使用される境界であり得る。この場合、SQAシステム108は、1つのセグメント(例えば、セグメントB)のみを選択するように、または上限閾値を上回ると見出されたセグメントをより少なく選択する(例えば、4つのセグメントのうちの2つを選択する)ように、上限閾値を上回るセグメントのうちの1つまたは複数を選択することができる。他の例では、符号化されたセグメントAおよびBは除去され得る。また、SQAシステム108は、品質が下限境界を下回る符号化されたセグメントを除去してもよい。例えば、608において、下限閾値が示される。SQAシステム108は、たった1つのセグメント(例えば、セグメントF)を選択するように、または下限閾値を下回ると見出されたセグメントをより少なく選択するように、下限閾値を下回るセグメントのうちの1つまたは複数を選択してもよい。他の例では、符号化されたセグメントEおよびFは除去され得る。上限閾値および下限閾値は、所望のビットレートまたは品質を超える、または所望のビットレートまたは品質よりも低いプロファイルについてのセグメントを制限するために使用され得る。上限が使用される理由の1つは、セグメントを符号化するために使用されるビットレートを制限するためであり、下限が使用される理由の1つは、使用されるビットレートが低すぎることを制限するためである。符号化されたセグメントを除去するために符号化されたセグメントを処理した後、SQAシステム108は、プロファイルについてのセグメントを選択してもよい。例えば、SQAシステム108は、最高品質セグメントとのギャップ以内のように閾値を満たす品質レベルを有する最低ビットレートを有する符号化されたセグメントを選択してもよい。この場合、SQAシステム108は、符号化されたセグメントDを選択してもよい。
【0030】
[0054]上記の規則はセグメントを選択するために使用され得るが、他のプロセスが使用されてもよい。例えば、符号化されたセグメントの選択は、他のプロファイルについてどの符号化されたセグメントが選択されたかに基づいてもよい。いくつかの例では、選択されるセグメントは、プロファイルが他のプロファイルからのセグメントを再使用し得る符号化されたセグメントの記憶を減少させることに基づき得る。したがって、SQAシステム108は、品質を最適化するとともに、下限とシーリングとの間に見出される符号化されたセグメントに使用されるビットレートを最小化することができる。
【0031】
[0055]
図7は、いくつかの実施形態による、各セグメントのプロファイルの選択された符号化されたセグメントの例を示す。702、704、706、および708において、符号化されたセグメントが、それぞれ、プロファイル_0、プロファイル_1、プロファイル_2、およびプロファイル_Pについて示されている。プロファイル内で、SQAシステム108は、異なるセグメントについて異なる候補平均ビットレートを有する異なる符号化されたセグメントを選択することができる。例えば、プロファイル_0について、セグメント_0は候補平均ビットレートCAB_1を使用して符号化され、セグメント_1は候補平均ビットレートCAB_0を使用して符号化され、セグメント_2は候補平均ビットレートCAB_0を使用して符号化されたなどであった。いくつかの例では、プロファイル_0において、セグメント_0はビットレート7750Kbpsを使用して符号化され、セグメント_1はビットレート8500を使用して符号化され、セグメント_2はビットレート8500Kbpsを使用して符号化された。プロファイル_1については、セグメント_0はCAB_4を使用して符号化され、セグメント_1はCAB_2を使用して符号化され、セグメント_2はCAB_3を使用して符号化された。例えば、プロファイル1では、セグメント_0はビットレート5500Kbpsを使用して符号化され、セグメント_1はビットレート7000Kbpsを使用して符号化され、セグメント_2はビットレート6250Kbpsを使用して符号化された。
【0032】
[0056]次に、以下は、候補平均ビットレートのリストを動的に生成するための最適化プロセスについて説明する。
【0033】
[0057]最適化プロセス
[0058]上述のように、ビデオコンテンツは、異なるビデオ内のコンテンツが異なる特性を有し得るとともに、同じビデオ内のコンテンツも異なる特性を有し得るなど、多様な特性を有し得る。例えば、漫画やニュースなどの一部のコンテンツは、符号化するのが簡単であり得る。しかしながら、ライブアクション映画またはスポーツなどのいくつかのコンテンツは、符号化するのが難しい場合がある。符号化の特性は、異なってもよい。以下は、コンテンツについての異なる特性を説明する。
【0034】
[0059]
図8は、いくつかの実施形態によるビデオコンテンツのための異なるレート歪み曲線の一例を示す。レート歪み曲線は、品質とビットレートとの間の関連性を示すために使用されるが、他の指標が、ビデオコンテンツについての品質とビットレートとの間の関連性を示すために使用されてもよい。異なるレート歪み曲線は、ビデオの異なるチャンクについて示され得るが、レート歪み曲線は、セグメント、チャンク、複数のチャンク、または異なるビデオなど、ビデオの異なる部分について異なっていてもよい。
【0035】
[0060]チャンク_A、チャンク_B、およびチャンク_Cの3つのチャンクが、それぞれ、チャンクについてのレート歪み曲線のグラフ802、804、および806とともに示されている。グラフ802では、品質は、より低いビットレートでは急勾配を伴って変化するが、より高いビットレートでは、品質はあまり変化しない。グラフ804では、品質は、ビットレートが一定の関連性で増加するにつれて変化する。グラフ806では、より低いビットレートでの品質は、最小限にしか変化しない場合があり、一方、品質は、より高いビットレートで急勾配で増加する。
【0036】
[0061]異なるコンテンツが異なるレート歪み曲線を生成することに加えて、異なる符号化構成もまた、異なる符号化の結果を生成し得る。異なる符号化構成は、異なる符号器(例えば、x264、x265など)、または異なる符号化パラメータ(レート歪み最適化(RDO)レベル、Bフレーム、参照数など)を使用することを含み得る。
図9は、いくつかの実施形態による異なる符号化構成を使用する異なる特性を示す。同じセグメントまたはチャンクについて、902における第1の符号化構成は、904に示された第2の符号化構成と比較して異なる特性をもたらす。符号化構成Aは、上記のチャンク_Aと同様のレート歪み曲線をもたらし、符号化構成Bは、これらのレート歪み曲線が同じコンテンツについてのものであっても、上記のチャンク_Bと同様のレート歪み曲線をもたらす。
【0037】
[0062]上記のレート歪み曲線が異なり得ることを考慮すると、候補平均ビットレートの静的リストを使用することは、最適でない場合がある。例えば、異なるレート歪み曲線について候補平均ビットレートの同じリストを使用することは、最適な結果を与えない場合がある。
図10は、いくつかの実施形態による異なるレート歪み曲線について静的候補平均ビットレートを使用する一例を示す。グラフ802、804、および806は、
図8に示された異なるチャンクについての異なるレート歪み曲線を示す。各グラフにおける点線は、候補平均ビットレートのリストの異なるビットレートを示す。候補平均ビットレートの固定されたリストを使用するときに、いくつかの問題が生じ得る。例えば、グラフ802では、1008において、2つの最高候補平均ビットレートは、1010における第3の候補平均ビットレートと同様の品質を有するので、冗長であり得る。すなわち、同様の品質を有する符号化されたセグメントを与えるために、1010に列挙されたビットレートなどで、たった1つのビットレートが符号化される必要があり得る。
【0038】
[0063]グラフ804では、1012において、2つの候補平均ビットレートは、これらの2つの符号化されたセグメントが1014に示された次に低いビットレートを有する符号化されたセグメントと比較して同様の品質を有するので、冗長であり得る。上記と同様に、同様の品質を有する符号化されたセグメントを与えるために、1014における最低ビットレートなど、たった1つのビットレートが符号化される必要があり得る。
【0039】
[0064]グラフ806では、1016において、最低の3つの候補平均ビットレートが、同様の品質を有する符号化されたセグメントを生成し得る。また、1018において、符号化されたセグメント間で品質の差が大きすぎることがあるので、候補平均ビットレートは、遠く離れすぎている場合がある。すなわち、候補平均ビットレート間の品質の差を最小化するために、より少ない品質差を有するより多くの候補平均ビットレートを有することがより望ましいことがある。
【0040】
[0065]
図11は、いくつかの実施形態による最適化された候補平均ビットレートリストを示す。グラフ802において、SQAシステム108は、符号化されたセグメントにおいて見出される品質を最適化するために、候補平均ビットレートを動的に選択することができる。例えば、1102において、SQAシステム108は、曲線が急であるビットレートにおいて、候補平均ビットレートの数を増加させることができる。また、1103において、SQAシステム108は、曲線が品質をあまり変化させない候補平均ビットレートの数を減少させることができる。
【0041】
[0066]グラフ804において、1104において、SQAシステム108は、品質が冗長であり得る最低ビットレートから候補平均ビットレートを除去してもよい。また、1106において、SQAシステム108は、より高いビットレートで変化する品質を獲得するために、追加のビットレートを追加してもよい。
【0042】
[0067]グラフ806において、1108で、SQAシステム108は、曲線の下端でビットレートを除去してよい。また、1110において、SQAシステム108は、より均等な増分で異なる品質レベルを捕獲するために、候補平均ビットレートをより均等に区切ることができる。
【0043】
[0068]事前分析最適化プロセス設計
[0069]
図12は、いくつかの実施形態によるSQAシステム108および事前分析最適化プロセス110のより詳細な例を示す。符号化されるチャンクが受信される。また、チャンクを符号化するための設定を定義する符号化構成が受信され得る。符号化構成は、符号器タイプ、品質レベルなどを含み得る。
【0044】
[0070]事前分析最適化プロセス110は、チャンクおよび符号化構成を受信し、候補平均ビットレートの最適化されたリストを出力することができる。RD予測システム1202は、チャンク内のセグメントおよび/またはチャンクについてのレート歪み曲線を予測することができる。セグメントまたはチャンクについてのレート歪み曲線を予測することが説明され得るが、レート歪み曲線は、複数のチャンクおよび/または複数のセグメントについてなど、ビデオの異なる部分について生成され得る。以下でより詳細に説明されるように、RD予測システム1202は、セグメントのレート歪み曲線の予測を生成するために機械学習論理を使用することができる。
【0045】
[0071]予測されたレート歪み曲線は、CABリスト最適化システム1204に出力される。CABリスト最適化システム1204は、チャンク内のセグメントについての予測されたレート歪み曲線などに基づいて、チャンクについての候補平均ビットレートのリストを最適化することができる。候補平均ビットレートの最適化されたリストは、それぞれのチャンクの特性に基づいてもよく、異なる特性を有するコンテンツを有するチャンクについて異なってもよい。このプロセスは、以下により詳細に説明される。
【0046】
[0072]CABリスト最適化システム1204は、候補平均ビットレートの最適化されたリストをSQAシステム108に出力する。SQAシステム108は、符号化構成、チャンク、および候補平均ビットレートの最適化されたリストを受信する符号化システム1206を含む。次いで、符号化システム1206は、チャンクの各セグメントを符号化するために、リスト内の各候補平均ビットレートを使用する。候補平均ビットレートのリストを使用して各セグメントを符号化した後、選択システム1208は、上述したような選択プロセスを使用して、プロファイルラダーにおける各プロファイルについて符号化されたセグメントを選択する。選択システム1208は、プロファイルラダーにおけるプロファイルについて選択された符号化されたセグメントを出力する。
【0047】
[0073]以下は、セグメントの特性の予測、次いで候補平均ビットレートのリストを選択するための最適化を説明する。
【0048】
[0074]RD予測システム
[0075]
図13は、いくつかの実施形態によるRD予測システム1202のより詳細な一例を示す。特徴抽出システム1302は、ビデオのチャンクを受信する。次いで、特徴抽出システム1302は、ビデオトランスコーディングに関連した情報を伝達し得る特徴についての値を抽出し得る。特徴のいくつかの例は、ビデオコンテンツ、符号化設定などについてのものであり得る。抽出される特徴は、チャンクのセグメントの特性のより良い予測を与えることができる。特徴についての値は、予測ネットワーク1304に出力される。
【0049】
[0076]予測ネットワーク1304は、予測されたレート歪み曲線などのチャンクのセグメントについての特性を生成するために、トレーニングされたモデルを使用することができる。予測ネットワーク1304は、サポートベクターマシン(SVM)回帰、畳み込みニューラルネットワーク(CNN)、ブースティング等などの異なる機械学習アルゴリズムを使用してもよい。訓練されたモデルは、特定の機械学習アルゴリズムに基づいてトレーニングされ得る。
【0050】
[0077]予測ネットワーク1304は、セグメント位置、符号化構成、およびターゲットビットレートなどの他の入力に加えて特徴についての値を受信することができる。セグメント位置は、レート歪み曲線を生成するセグメント位置(例えば、ビデオ内のそのセグメント)であり得、符号化構成は、セグメントを符号化するために使用される構成を含み得、ターゲットビットレートは、セグメントについての出力ビットレート範囲を含み得る。予測ネットワーク1304は、特徴に基づいて、出力ビットレート範囲間のセグメントについてのレート歪み曲線を出力することができる。
【0051】
[0078]
図14は、いくつかの実施形態による予測ネットワーク1304の出力を示す。204において、チャンクについてのセグメントは、セグメント_0、セグメント_1、セグメント_2、・・・、セグメント_nを含む。レート歪み曲線は、ビデオの各チャンク内のセグメントごとに生成され得る。例えば、1402において、レート歪み曲線が、それぞれのセグメントごとに出力される。セグメント_0のレート歪み曲線、セグメント_1のレート歪み曲線などが示されている。各レート歪み曲線は、それぞれのセグメントについての特性に基づく。チャンクについての候補平均ビットレートのリストは、レート歪み曲線に基づいて生成され得る。また、チャンクレベルレート歪み曲線が出力されてもよい。
【0052】
[0079]候補平均ビットレート最適化のリスト
[0080]
図15は、いくつかの実施形態による候補平均ビットレートのリストを選択するための最適化プロセスを実行するための方法の簡略化されたフローチャート1500を示す。1502において、CABリスト最適化システム1204は、候補平均ビットレートのリストについての境界を決定する。例えば、境界は、候補平均ビットレートのリストに使用され得る最大ビットレートおよび最小ビットレートであり得る。異なる方法が、境界を決定するために使用されてもよく、
図16により詳細に説明される。
【0053】
[0081]1504において、CABリスト最適化システム1204は、最適なビットレート割り振りを有する潜在的な候補平均ビットレートのリストを生成する。いくつかの実施形態では、潜在的な候補平均ビットレートの1つのリストは、502で決定された最大ビットレートおよび最小ビットレートに基づいてチャンクについて生成される。潜在的な候補平均ビットレートのリストは、異なる方法を使用して生成され得る。1つの方法は、最小ビットレートと最大ビットレートとの間に入る予め定められたリストを使用することであり得る。例えば、予め定められたリストは、ターゲット平均ビットレートおよび中間平均ビットレートからのビットレートを含むことができる。例えば、最小と最大の範囲内の予め定められたリストからのビットレートが使用されてもよい。別の方法は、潜在的な候補平均ビットレートの総数を決定し、最小ビットレートと最大ビットレートとの間のビットレート範囲を間隔に分割することができる。以下のような異なる例が、使用されてもよい。
【0054】
【0055】
【0056】
【0057】
【0058】
ただし、interval_iはiの間隔値であり、interval_(i+1)は間隔値+1であり、interval_(i+2)は間隔値+2であり、deltaは予め定められた値である。
【0059】
[0082]間隔の総数は、10などの数に設定され得る。interval_iの間隔は、範囲を総数に分割することによって上記の方法に基づいて設定され得る。次いで、CABリスト最適化システム1204は、最小ビットレートと最大ビットレートとの間のビットレートの範囲をビットレートのリストに分割するために間隔値に基づいてビットレートを選択する。例えば、1500の間隔および5のビットレートの総数を有する2000の最小ビットレートおよび10,000の最大ビットレートは、等分割を使用するとき、10,000、7500、5000、3500、および2000のビットレートのリストをもたらし得る。
【0060】
[0083]1506において、CABリスト最適化システム1204は、候補平均ビットレートの最適化されたリストを生成するために、最適な品質割り振りを用いて潜在的な候補平均ビットレートのリストを改良する。品質割り振りは、セグメントごとに品質を検査し、品質が1つまたは複数の規則を満たすかどうかを決定することができる。例えば、同様の品質を有する候補平均ビットレートなどの冗長な候補平均ビットレートが除去され得る。また、隣接する候補平均ビットレートが、大きすぎる差など、閾値を上回る品質ギャップを有するときなど、必要に応じて、追加の候補平均ビットレートが追加され得る。プロセスは、
図17、
図18、および
図19により詳細に説明される。
【0061】
[0084]
図15の1502に説明されるように、CABリスト最適化システム1204は、候補平均ビットレートのリストについての境界を決定する。
図16は、いくつかの実施形態による候補平均ビットレートのリストの境界を決定する一例を示す。以下のプロセスが説明されるが、他のプロセスも理解され得る。例えば、設定は、最小ビットレートおよび最大ビットレートを決定するために使用され得る。この例では、CABリスト最適化システム1204は、チャンク内のそれぞれのセグメントについてのレート歪み曲線についての最小ビットレートと最大ビットレートとを分析し、最小ビットレートおよび最大ビットレートがチャンクレベルにおいてあるべきことを決定することができる。
【0062】
[0085]1602において、それぞれのセグメントについてのレート歪み曲線が受信され、分析される。次いで、CABリスト最適化システム1204は、セグメントについてそれぞれのレート歪み曲線に基づいてセグメントごとに最小ビットレートと最大ビットレートとを選択し得る。例えば、セグメント_0について、最小ビットレートおよび最大ビットレートが、セグメント_0についてのレート歪み曲線の特性に基づいて選択される。例えば、CABリスト最適化システム1204は、最小品質閾値に対応する最小ビットレートと最大品質閾値に対応する最大ビットレートとを決定するために、最大品質閾値と最小品質閾値とを設定し、レート歪み曲線を使用し得る。セグメント_1について、CABリスト最適化システム1204は、セグメント_1についてのレート歪み曲線の特性に基づいて最小ビットレートと最大ビットレートとを選択する、などである。
【0063】
[0086]上記の分析は、セグメントレベルで実施した。次いで、CABリスト最適化システム1204は、チャンクレベルにおける最小値と最大値とを決定するためにセグメントレベルの結果を分析する。1606において、CABリスト最適化システム1204は、max_bitrate_0、max_bitrate_1、max_bitrate_2、・・・、max_bitrate_nなどから、セグメントについての最大ビットレートについての値から最大値を決定する。また、CABリスト最適化システム1204は、min_bitrate_0、min_bitrate_1、min_bitrate_2、・・・、min_bitrate_nなどから、セグメントについての最小ビットレートについての値から最小値を決定する。
【0064】
[0087]1608において、CABリスト最適化システム1204は、チャンクについての最小ビットレートと最大ビットレートとを出力する。この場合には、セグメントについての最小ビットレートから最も低い最小ビットレートが選択され、セグメントについての最大ビットレートから最も高い最大ビットレートが選択される。選択プロセスは、セグメントについてのレート歪み曲線の個々の特性を考慮に入れ、セグメントレベルで決定された最小ビットレートおよび最大ビットレートのすべてを含み得る最小ビットレートと最大ビットレートとを選択し得る。例えば、最小ビットレートが2000、3000、および3500である場合、選択される最小ビットレートは2000になる。同様に、最大ビットレートが10000、9000、および8500である場合、選択される最大ビットレートは10000になる。上記のプロセスが使用され得るが、値の平均を取ることなど、最小ビットレートと最大ビットレートとを選択する他の方法が理解され得る。
【0065】
[0088]
図15の1506に説明されるように、CABリスト最適化システム1204は、最適な品質割り振りを有する候補平均ビットレートのリストを定義する。割り振りの一部は、同様の品質に基づいて候補平均ビットレートを除去することを含む。品質の類似性は、異なるやり方で定義されてもよい。例えば、CABリスト最適化システム1204は、いくつかの候補平均ビットレートが除去されるべきかどうかを決定するために、品質の値間の距離を決定する。
図17は、いくつかの実施形態による品質に基づいて候補平均ビットレートを除去する一例を示す。この例では、CABリスト最適化システム1204は、2つの隣接する候補平均ビットレートの品質レベルが閾値内にあるなど、閾値を満たすかを決定し得る。次いで、より高いビットレートを有する候補が除去され得る。
【0066】
[0089]1702において、各セグメントは、潜在的に除去され得る符号化されたセグメントの関連付けられた潜在的な除去リストを有し得る。図示されるように、セグメント_0について、CABリスト最適化システム1204は、S0_CAB_0、S0_CAB_3、およびS0_CAB_4の候補平均ビットレートが除去され得ると決定している。これらの候補平均ビットレートは、符号化されたセグメントが隣接する符号化されたセグメントに関して閾値を満たす同様の品質レベルを有し得るので、除去され得る。同様に、セグメント_1について、CABリスト最適化システム1204は、S1_CAB_0およびS1_CAB_2の候補平均ビットレートが除去され得ると決定しており、セグメント_nについて、CABリスト最適化システム1204は、Sn_CAB_0およびSn_CAB_3についての候補平均ビットレートが除去され得ると決定している。セグメントは閾値内で同様の品質を有すると決定されないので、セグメントは、セグメント_2について除去されない。
【0067】
[0090]上記の分析は、セグメントレベルであった。次いで、1704において、CABリスト最適化システム1204は、チャンクレベルで除去すべき候補平均ビットレートを決定するために、セグメントレベル候補平均ビットレートを使用することができる。例えば、潜在的な除去リストの異なるセグメントにおける候補平均ビットレートの発生に基づいて、CABリスト最適化システム1204は、チャンクレベルについての候補平均ビットレートを選択し得る。いくつかの実施形態では、CABリスト最適化システム1204は、候補平均ビットレートを選択し、潜在的な除去された候補プール内の発生の総数を計算することができる。この候補平均ビットレートの総数が、閾値にあるかまたはそれを上回るなど、閾値を満たす場合、CABリスト最適化システム1204は、チャンクレベルにおいて、この候補平均ビットレートを除去候補リストに入れる。例えば、候補平均ビットレートCAB_0は、上述のセグメントのうちの3つ(例えば、セグメント_0、セグメント_1、およびセグメント_n)に見出され、「3」の閾値を満たす。次いで、CABリスト最適化システム1204は、CAB_0の候補平均ビットレートを除去候補リストに入れる。候補平均ビットレートCAB_2、CAB_3、およびCAB_4は、ビットレートが潜在的除去リスト中の2つ以下のセグメント中で発生するので、閾値を満たさない場合がある。したがって、CABリスト最適化システム1204は、これらの候補平均ビットレートを除去候補リストに入れない。どの候補平均ビットレートを除去するかを選択する他の方法が理解され得る。
【0068】
[0091]上記の分析は、セグメントレベルで実行され、チャンクレベルにマージされた。しかしながら、プロセスは、異なるレベルで実行されてもよい。例えば、分析は、複数のチャンクから複数のチャンクレベルをカバーするビデオの部分へ、または複数のチャンクからビデオレベルへ、候補平均ビットレートをマージするために使用され得る。
【0069】
[0092]以下は、候補平均ビットレートを除去する一例について説明する。
図18は、いくつかの実施形態による候補平均ビットレートを除去するために最小ギャップが使用される一例を示す。例えば、1802において、候補平均ビットレートCおよびDは、閾値min_gapなどの閾値を満たす同様の品質レベルを有する。この場合、この候補平均ビットレートは候補平均ビットレートDに隣接し、候補平均ビットレートCは候補平均ビットレートDよりも大きいビットレートを有するが、最小の品質の利点を有するので、CABリスト最適化システム1204は、候補平均ビットレートCなど、候補平均ビットレートのうちの1つが除去されるべきであると決定する。この場合、CABリスト最適化システム1204は、隣接する候補平均ビットレートについての品質の値との間の差を閾値min_gapと比較し、閾値が満たされたとき、候補平均ビットレートのうちの1つを除去し得る。
【0070】
[0093]品質割り振りの別の部分は、品質のギャップに基づいて候補平均ビットレートを追加することを含む。
図19は、いくつかの実施形態による候補平均ビットレートを追加することが有利であり得る場合を示すグラフ1900を示す。CABリスト最適化システム1204は、候補平均ビットレートを追加するときを決定するために、1902における最大ギャップmax_gapなどの閾値を使用し得る。例えば、グラフ1900における候補平均ビットレートCとDとの間など、閾値max_gapよりも大きい品質値のギャップが隣接する候補平均ビットレート間にある場合、CABリスト最適化システム1204は、レート歪み曲線上の候補平均ビットレートCとDとの間に候補平均ビットレートを追加し得る。
【0071】
[0094]異なる方法が、新しい候補平均ビットレートがいくつ追加されるべきかを決定するために使用されてもよい。CABリスト最適化システム1204は、2つの候補が比に基づく閾値によって分離されるとき、「i」個の新しい候補を追加し得る。例えば、各ギャップが等しいことを意味する1:1、各ギャップが1.5であることを意味する1:1.5、または他の比など、異なる比が、追加された候補間のギャップを構成し得る。
【0072】
[0095]ある可能なプロセスでは、変数iはi=1に設定され、CABリスト最適化システム1204は、比に基づいてi個の新しい候補平均ビットレートを追加する。例えば、「F」と名付けられた1つの候補平均ビットレートは、点Cと点Dとの間に追加され得る。次いで、新しい隣接する候補平均ビットレート間のすべてのギャップが閾値max_gapよりも小さい場合、プロセスは終了する。しかしながら、そうでない場合、変数iの値は、「2」などで増分され、2つの新しい候補が、比に基づいて候補平均ビットレート間に追加される。例えば、2つ以上の候補平均ビットレートが、点CとFとの間、および点FとDとの間に追加され得る。次いで、プロセスは、上記で説明されたように継続する。候補平均ビットレートDとCとの間に閾値よりも大きいギャップがないように候補平均ビットレートが追加されると、候補平均ビットレートが出力される。
【0073】
[0096]上記のプロセスは、セグメントごとに決定される。次いで、CABリスト最適化システム1204は、セグメントレベルにおいて潜在的な追加された候補平均ビットレートを取り、チャンクレベルにおいて候補平均ビットレートをマージし得る。
図20は、いくつかの実施形態による候補平均ビットレートを追加することの決定を示す。2002において、各セグメントは、潜在的に追加され得る候補平均ビットレートを有し得る。セグメント_0について、2つの候補平均ビットレートが、候補平均ビットレートCAB_0とCAB_1との中間に追加され得る。また、CAB_4とCAB_5との間に1つの候補平均ビットレートが追加され得る。セグメント_1については、2つの候補平均ビットレートが、候補平均ビットレートCAB_0とCAB_1との間に追加され得る。セグメント_nについては、2つの候補平均ビットレートが、候補平均ビットレートCAB_0とCAB_1との間に追加され得る。したがって、3つのセグメントは、候補平均ビットレートCAB_0とCAB_1との間に2つの候補平均ビットレートを追加しており、1つのセグメントは、CAB_4とCAB_5との間に1つの候補平均ビットレートを追加している。
【0074】
[0097]CABリスト最適化システム1204は、チャンクについての追加候補リストを決定するために、セグメントレベル候補を使用し得る。例えば、チャンクレベルで追加候補リストに追加されるために、CABリスト最適化システム1204は、セグメントレベルでの潜在的な追加された候補平均ビットレートが、セグメントの数などの閾値内で見出されるかどうかを決定し得る。閾値がセグメントの70%である場合、CABリスト最適化システム1204は、候補平均ビットレートCAB_0とCAB_1との間の2つの候補を追加する。というのも、これらの候補は、セグメントの70%よりも多く(4つのうち3つのセグメント)で見出されるからである。CABリスト最適化システム1204は、CAB_4とCAB_5との間に候補を追加しない。というのも、この追加は、セグメント_0においてのみ見出され、セグメントの70%未満であるからである。この場合、たった1つのセグメントが追加を必要とするので、追加の候補平均ビットレートを追加することは必要とされないことがあり、たった1つのセグメントが影響を受ける場合、チャンクの他のすべてのセグメントのための候補平均ビットレートを追加することは有用でないことがある。しかしながら、候補平均ビットレートCAB_0とCAB_1との間の2つの候補平均ビットレートの加算は、セグメントの70%超が潜在的な追加を有していたので、有益であり得る。
【0075】
[0098]CABリスト最適化システム1204の出力は、チャンクごとの候補平均ビットレートリストである。例えば、
図3Aに記載されたようなチャンクごとの候補平均ビットレートのリストは、いくつかの実施形態によるCABリスト最適化システム1204によって出力される。
【0076】
[0099]結論
[00100]したがって、候補平均ビットレートのリストは、各セグメントにおいて見出される特性に基づいて最適化され得る。これは、チャンクのそれぞれの特性について最適化されたチャンクごとの改善された候補平均ビットレートリストを生成する。候補平均ビットレートは、各チャンクのプロファイルの選択に利用可能な符号化されたセグメントの選択の品質を改善することができる。これは、再生経験を改善することに加えて、ビデオの品質を改善することができる。
【0077】
[00101]システム
[00102]本明細書に開示される特徴および態様は、
図21に示されるように、1つまたは複数の通信ネットワークを介して複数のクライアントデバイスと通信するビデオストリーミングシステム2100と併せて実施され得る。ビデオストリーミングシステム2100の態様は、本開示に従って準備されたコンテンツの配給および配信を可能にするためのアプリケーションの一例を与えるように説明されるのに過ぎない。本技術は、ストリーミングビデオアプリケーションに限定されず、他のアプリケーションおよび配信機構に適合され得ることを理解されたい。
【0078】
[00103]一実施形態では、メディアプログラムプロバイダは、メディアプログラムのライブラリを含んでもよい。例えば、メディアプログラムは、サイト(例えば、ウェブサイト)、アプリケーション、またはブラウザを通じて集約および提供されてもよい。ユーザは、メディアプログラムプロバイダのサイトまたはアプリケーションにアクセスし、メディアプログラムを要求することができる。ユーザは、メディアプログラムプロバイダによって提供されるメディアプログラムのみを要求することに限定され得る。
【0079】
[00104]システム2100において、ビデオデータは、ビデオコンテンツサーバ2102への入力として使用するために、1つまたは複数のソース、例えば、ビデオソース2110から取得され得る。入力ビデオデータは、任意の適切なデジタルフォーマット、例えば、ムービングピクチャーエクスパーツグループ(MPEG)-1、MPEG-2、MPEG-4、VC-1、H.264/高度ビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)、または他のフォーマットの生または編集されたフレームベースのビデオデータを備え得る。代替として、ビデオは、非デジタルフォーマットで提供され、スキャナまたはトランスコーダを使用してデジタルフォーマットに変換され得る。入力ビデオデータは、例えば、テレビエピソード、動画、および消費者に関心のある主要コンテンツとして生成される他のコンテンツなどの様々なタイプのビデオクリップまたは番組を含むことができる。ビデオデータは、音声も含んでもよく、または音声のみが使用されてもよい。
【0080】
[00105]ビデオストリーミングシステム2100は、1つまたは複数のコンピュータにわたって分散された1つまたは複数のコンピュータサーバまたはモジュール2102、2104、および2107を含み得る。各サーバ2102、2104、2107は、1つまたは複数のデータストア2109、例えば、データベース、インデックス、ファイル、または他のデータ構造を含んでもよく、またはそれらに動作可能に結合されてもよい。ビデオコンテンツサーバ2102は、様々なビデオセグメントのデータストア(図示せず)にアクセスし得る。ビデオコンテンツサーバ2102は、クライアントデバイスと通信するユーザインターフェースコントローラによって指示されるようにビデオセグメントを供給することができる。本明細書で使用されるとき、ビデオセグメントは、テレビエピソード、動画、記録されたライブパフォーマンス、または他のビデオコンテンツを見るためにストリーミングビデオセッションにおいて使用され得るようなフレームベースのビデオデータの明確な部分を指す。
【0081】
[00106]いくつかの実施形態では、ビデオ広告サーバ2104は、特定の広告主またはメッセージのための広告として構成された比較的短いビデオ(例えば、10秒、30秒、または60秒のビデオ広告)のデータストアにアクセスし得る。広告は、何らかの種類の支払いと引き換えに広告主に提供されてもよく、またはシステム2100のための宣伝メッセージ、公共サービスメッセージ、もしくは何らかの他の情報を含んでもよい。ビデオ広告サーバ2104は、ユーザインターフェースコントローラ(図示せず)によって指示されるようにビデオ広告セグメントを供給してもよい。
【0082】
[00107]ビデオストリーミングシステム2100は、事前分析最適化プロセス110を含むこともできる。
【0083】
[00108]ビデオストリーミングシステム2100は、ビデオコンテンツおよびビデオ広告をストリーミングビデオセグメントに統合する統合およびストリーミングコンポーネント2107をさらに含んでもよい。例えば、ストリーミングコンポーネント2107は、コンテンツサーバまたはストリーミングメディアサーバであってもよい。コントローラ(図示せず)は、任意の適切なアルゴリズムまたはプロセスに基づいて、ストリーミングビデオ内の広告の選択または構成を決定することができる。ビデオストリーミングシステム2100は、
図21に示されていない他のモジュールまたはユニット、例えば、管理サーバ、コマースサーバ、ネットワークインフラストラクチャ、広告選択エンジンなどを含み得る。
【0084】
[00109]ビデオストリーミングシステム2100は、データ通信ネットワーク2112に接続してもよい。データ通信ネットワーク2112は、ローカルエリアネットワーク(LAN)、広域通信網(WAN)、例えば、インターネット、電話ネットワーク、ワイヤレスネットワーク2114(例えば、ワイヤレスセルラー電気通信ネットワーク(WCS))、あるいはこれらのネットワークまたは類似のネットワークのいくつかの組合せを含み得る。
【0085】
[00110]1つまたは複数のクライアントデバイス2120は、データ通信ネットワーク2112、ワイヤレスネットワーク2114、または別のネットワークを介して、ビデオストリーミングシステム2100と通信することができる。そのようなクライアントデバイスは、例えば、LANのためのルータ2118を介して、ワイヤレスネットワーク2114のための基地局2117を介して、または何らかの他の接続を介して、1つまたは複数のラップトップコンピュータ2120-1、デスクトップコンピュータ2120-2、「スマート」モバイルフォン2120-3、タブレットデバイス2120-4、ネットワーク対応テレビ2120-5、またはそれらの組合せを含み得る。動作中、そのようなクライアントデバイス2120は、ユーザ入力デバイスから受信されたユーザ入力または他の入力に応答して、システム2100にデータまたは命令を送信および受信し得る。これに応答して、システム2100は、メディア番組の選択に応答して、データストア2109からのビデオセグメントおよびメタデータをクライアントデバイス2120に供給することができる。クライアントデバイス2120は、表示画面、プロジェクタ、または他のビデオ出力デバイスを使用して、メディアプレーヤ内のストリーミングビデオセグメントからビデオコンテンツを出力し、ビデオコンテンツと対話するためのユーザ入力を受信することができる。
【0086】
[00111]オーディオビデオデータの配信は、ストリーミングコンポーネント2107からリモートクライアントデバイスへ、コンピュータネットワーク、電気通信ネットワーク、およびそのようなネットワークの組合せを介して、様々な方法、例えばストリーミングを使用して実施され得る。ストリーミングでは、コンテンツサーバは、クライアントデバイス上で少なくとも部分的に動作するメディアプレーヤコンポーネントにオーディオビデオデータを連続的にストリーミングし、メディアプレーヤコンポーネントは、サーバからストリーミングデータを受信するのと同時にオーディオビデオデータを再生することができる。ストリーミングについて説明するが、他の配信方法を使用することもできる。メディアプレーヤコンポーネントは、コンテンツプロバイダからデータの最初の部分を受信した直後にビデオデータの再生を開始することができる。従来のストリーミング技術は、データのストリームをエンドユーザのセットに配信する単一のプロバイダを使用する。単一のストリームを多数の視聴者に配信するためには、高い帯域幅および処理能力が必要とされる場合があり、プロバイダの必要な帯域幅は、エンドユーザの数が増加するにつれて増加する場合がある。
【0087】
[00112]ストリーミングメディアは、オンデマンドまたはライブで配信され得る。ストリーミングは、ファイル内の任意の点での即時再生を可能にする。エンドユーザは、メディアファイルをスキップして、再生を開始するか、またはメディアファイル内の任意の点に再生を変更することができる。したがって、エンドユーザは、ファイルが徐々にダウンロードされるのを待つ必要がない。通常、ストリーミングメディアは、高帯域幅能力を有する少数の専用サーバから、ビデオファイルの要求を受け入れる専用デバイスを介して配信され、それらのファイルのフォーマット、帯域幅、および構造に関する情報を用いて、ビデオを再生するのに必要なデータ量だけを、ビデオを再生するのに必要な速度で配信する。ストリーミングメディアサーバは、宛先クライアント上のメディアプレーヤの伝送帯域幅および能力を考慮することもできる。ストリーミングコンポーネント2107は、ビデオが再生されるときに変化するネットワーク状態に適応するために、制御メッセージおよびデータメッセージを使用してクライアントデバイス2120と通信し得る。これらの制御メッセージは、クライアントにおいてファイルの特定の部分への早送り、早戻し、一時停止、またはシークなどの制御機能を可能にするためのコマンドを含むことができる。
【0088】
[00113]ストリーミングコンポーネント2107は、必要なときにのみ、必要とされるレートでビデオデータを送信するので、サービスされるストリームの数に対する正確な制御が維持され得る。視聴者は、より低いデータレートの伝送媒体を介して高いデータレートのビデオを視聴することができない。しかしながら、ストリーミングメディアサーバは、(1)ユーザにビデオファイルへのランダムアクセスを提供し、(2)誰がどのビデオ番組を視聴しているか、およびどれくらい長く視聴されているかの監視を可能にし、(3)視聴体験をサポートするために必要とされるデータ量のみが伝送されるため、伝送帯域幅をより効率的に使用し、(4)ビデオファイルは、視聴者のコンピュータに記憶されず、メディアプレーヤによって破棄され、したがって、コンテンツに対するさらなる制御を可能にする。
【0089】
[00114]ストリーミングコンポーネント2107は、ハイパーテキスト転送プロトコル(HTTP)およびリアルタイムメッセージングプロトコル(RTMP)などのTCPベースのプロトコルを使用し得る。ストリーミングコンポーネント2107は、ライブウェブキャストを配信することもでき、マルチキャストすることができ、これにより、2つ以上のクライアントが単一のストリームに同調することが可能になり、したがって、帯域幅が節約される。ストリーミングメディアプレーヤは、メディアプログラムの任意の点へのランダムアクセスを提供するために、ビデオ全体をバッファリングすることに依存しない場合がある。その代わりに、これは、メディアプレーヤからストリーミングメディアサーバに送信される制御メッセージを使用して達成される。ストリーミングに使用される他のプロトコルは、HTTPライブストリーミング(HLS)またはHTTP上の動的適応ストリーミング(DASH)である。HLSおよびDASHプロトコルは、通常は1つまたは複数のコンテンツ配信ネットワーク(CDN)から様々なビットレートで利用可能にされる小さいセグメントのプレイリストを介してHTTPを介してビデオを配信する。これにより、メディアプレーヤは、セグメントごとにビットレートとコンテンツソースの両方を切り替えることができる。この切り替えは、ビデオの再生中に発生する可能性のあるネットワーク帯域幅の変動およびインフラストラクチャの障害を補償するのに役立つ。
【0090】
[00115]ストリーミングによるビデオコンテンツの配信は、様々なモデルの下で達成され得る。1つのモデルでは、ユーザは、ビデオ番組の視聴に対して支払いを行い、例えば、メディア番組のライブラリまたは制限されたメディア番組の一部へのアクセスに対して料金を支払い、またはペイパービューサービスを使用する。放送テレビによってその開始直後に広く採用されている別のモデルでは、スポンサーは、番組の提示中またはそれに隣接して広告を提示する権利と引き換えに、メディア番組の提示に対して支払いを行う。いくつかのモデルでは、広告はビデオ番組内の「広告スロット」「広告ブレイク」と呼ばれることがある所定の時間に挿入される。ストリーミングビデオでは、メディアプレーヤは、クライアントデバイスが、指定された広告スロット中に所定の広告を再生することもなくビデオを再生することができないように構成され得る。
【0091】
[00116]
図22を参照すると、ビデオコンテンツおよび広告を視聴するための装置2200の概略図が示されている。選択された実施形態では、装置2200は、プロセッサメモリ2204に動作可能に結合されたプロセッサ(CPU)2202を含むことができ、プロセッサメモリは、プロセッサ2202による実行のためのバイナリコード化された機能モジュールを保持する。そのような機能モジュールは、入力/出力およびメモリアクセスなどのシステム機能を処理するためのオペレーティングシステム2206、ウェブページを表示するためのブラウザ2208、およびビデオを再生するためのメディアプレーヤ2210を含み得る。メモリ2204は、
図22に示されていない追加のモジュール、例えば、本明細書の他の箇所で説明される他の動作を実行するためのモジュールを保持し得る。
【0092】
[00117]バス2214または他の通信構成要素は、装置2200内の情報の通信をサポートし得る。プロセッサ2202は、特定のタスクを定義する機械可読ソフトウェアコードを実行することによって、本明細書に開示される特徴および態様に従って特定のタスクを実行するように構成された、または動作可能な、専用または専用マイクロプロセッサであり得る。プロセッサメモリ2204(例えば、ランダムアクセスメモリ(RAM)または他の動的記憶デバイス)は、バス2214に、またはプロセッサ2202に直接接続され、プロセッサ2202によって実行される情報および命令を記憶し得る。メモリ2204は、そのような命令の実行中に一時変数または他の中間情報を記憶することもできる。
【0093】
[00118]記憶装置2224内のコンピュータ可読媒体は、バス2214に接続され、プロセッサ2202のための静的情報および命令を記憶することができ、例えば、記憶装置(CRM)2224は、装置2200の電源がオフにされたときにオペレーティングシステム2206、ブラウザ2208、およびメディアプレーヤ2210のためのモジュールを記憶することができ、装置2200の電源がオンにされたときに、そこからモジュールをプロセッサメモリ2204にロードすることができる。記憶デバイス2224は、情報、命令、またはそれらの何らかの組合せ、例えば、プロセッサ2202によって実行されたとき、本明細書で説明する方法の1つまたは複数の動作を実行するように装置2200を構成させるかまたは動作可能にさせる命令を保持する非一時的コンピュータ可読記憶媒体を含み得る。
【0094】
[00119]ネットワーク通信(comm.)インターフェース2216も、バス2214に接続され得る。ネットワーク通信インターフェース2216は、任意選択でルータ/モデム2226および有線またはワイヤレス接続2225を介して、装置2200と1つまたは複数の外部デバイス、例えばストリーミングシステム2100との間の双方向データ通信を提供またはサポートすることができる。代替として、または追加的に、装置2200は、アンテナ2229に接続された送受信機2218を含み得、それを通して、装置2200は、ワイヤレス通信システムのためのベースステーションと、またはルータ/モデム2226とワイヤレスに通信し得る。代替として、装置2200は、ローカルエリアネットワーク、バーチャル・プライベート・ネットワーク、または他のネットワークを介してビデオストリーミングシステム2100と通信し得る。別の代替形態では、装置2200は、システム2100のモジュールまたは構成要素として組み込まれ、バス2214を介して、または何らかの他のモダリティによって他の構成要素と通信し得る。
【0095】
[00120]装置2200は、(例えば、バス2214およびグラフィック処理ユニット2220を介して)ディスプレイユニット2228に接続されてもよい。ディスプレイ2228は、装置2200のオペレータに情報を表示するための任意の適切な構成を含み得る。例えば、ディスプレイ2228は、液晶ディスプレイ(LCD)、タッチスクリーンLCD(例えば、容量性ディスプレイ)、発光ダイオード(LED)ディスプレイ、プロジェクタ、または他のディスプレイ装置を含むかまたは利用して、視覚ディスプレイにおいて装置2200のユーザに情報を提示することができる。
【0096】
[00121]1つまたは複数の入力デバイス2230(例えば、英数字キーボード、マイクロフォン、キーパッド、リモートコントローラ、ゲームコントローラ、カメラ、またはカメラアレイ)が、装置2200に情報およびコマンドを通信するために、ユーザ入力ポート2222を介してバス2214に接続され得る。選択された実施形態では、入力装置2230は、カーソルの位置決めに対する制御を提供またはサポートすることができる。ポインティングデバイスとも呼ばれるそのようなカーソル制御デバイスは、マウス、トラックボール、トラックパッド、タッチスクリーン、カーソル方向キー、または物理的な動きを受信または追跡し、その動きをカーソルの動きを示す電気信号に変換するための他のデバイスとして構成され得る。カーソル制御装置は、例えばタッチセンシティブスクリーンを用いて、ディスプレイユニット2228に組み込まれてもよい。カーソル制御装置は、方向情報およびコマンド選択をプロセッサ2202に通信し、ディスプレイ2228上のカーソル移動を制御することができる。カーソル制御装置は、例えば、装置が平面または3次元空間におけるカーソル位置を指定することを可能にする2以上の自由度を有してもよい。
【0097】
[00122]いくつかの実施形態は、命令実行システム、装置、システム、または機械によって、またはそれらと関連して使用するための非一時的コンピュータ可読記憶媒体において実施され得る。コンピュータ可読記憶媒体は、いくつかの実施形態によって説明される方法を実行するようにコンピュータシステムを制御するための命令を含む。コンピュータシステムは、1つまたは複数のコンピューティングデバイスを含み得る。命令は、1つまたは複数のコンピュータプロセッサによって実行されるとき、いくつかの実施形態で説明されるものを実行するように構成され得、または動作可能であり得る。
【0098】
[00123]本明細書の説明においておよび以下の特許請求の範囲全体を通して使用されるとき、「a」、「an」、および「the」は、文脈上が明らかに別段指示しない限り、複数の言及を含む。また、本明細書の説明においておよび以下の特許請求の範囲全体を通して使用されるとき、「in」の意味は、文脈上別段明確に指示しない限り、「in」および「on」を含む。
【0099】
[00124]上記の説明は、いくつかの実施形態の態様がどのように実施され得るかの例とともに、様々な実施を示す。上記の例および実施形態は、唯一の実施形態であると見なされるべきではなく、以下の特許請求の範囲によって定められるようないくつかの実施形態の柔軟性および利点を例示するために提示される。上記の開示および以下の特許請求の範囲に基づいて、特許請求の範囲によって定められる本発明の範囲から逸脱することなく、他の構成、実施形態、実施、および均等物が採用されてもよい。
【外国語明細書】