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

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

▶ ベイジン・フル・ソフトウェア・テクノロジー・デベロップメント、カンパニー・リミテッドの特許一覧

特開2024-125995ビデオ符号化のためのレート歪み曲線の予測
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024125995
(43)【公開日】2024-09-19
(54)【発明の名称】ビデオ符号化のためのレート歪み曲線の予測
(51)【国際特許分類】
   H04N 21/24 20110101AFI20240911BHJP
   H04N 21/266 20110101ALI20240911BHJP
   H04N 19/40 20140101ALI20240911BHJP
【FI】
H04N21/24
H04N21/266
H04N19/40
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023199277
(22)【出願日】2023-11-24
(31)【優先権主張番号】18/179,281
(32)【優先日】2023-03-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】18/295,184
(32)【優先日】2023-04-03
(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
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】チェン・リュー
(72)【発明者】
【氏名】ウェンハオ・ジャン
(72)【発明者】
【氏名】シーチャン・フアンフー
(72)【発明者】
【氏名】シャオボー・リュー
(72)【発明者】
【氏名】シューメイ・モン
【テーマコード(参考)】
5C159
5C164
【Fターム(参考)】
5C159KK53
5C159KK54
5C159UA02
5C159UA05
5C164MA06S
5C164SA32S
5C164SB01S
5C164SB41P
5C164SC01P
5C164YA21
5C164YA24
(57)【要約】      (修正有)
【課題】ビデオ符号化のためのレート歪み曲線を予測できる方法及びプログラムを提供する。
【解決手段】予測方法は、ビデオの一部および符号器のパラメータに関連付けられ、ビットレートのセットおよび解像度を含むターゲット構成についての特徴値を決定することと、決定した特徴値に基づいて、ビットレートのセットおよび解像度についての複数の品質値を生成することと、ビットレートと解像度についての複数の品質値との関連性の表現を生成することと、生成した表現を分析し、解像度を使用してビデオの一部の符号化を使用するためのビットレートのリストを出力することと、を含む。
【選択図】図24
【特許請求の範囲】
【請求項1】
コンピューティングデバイスによって、ビデオの一部およびターゲット構成についての特徴値を決定することと、ここにおいて、前記ターゲット構成は、符号器のパラメータに関連付けられ、ビットレートのセットおよび解像度を含み、
前記コンピューティングデバイスによって、前記特徴値に基づいてビットレートの前記セットおよび前記解像度についての複数の品質値を生成することと、
前記コンピューティングデバイスによって、ビットレートと前記解像度についての前記複数の品質値との間の関連性の表現を生成することと、
前記コンピューティングデバイスによって、前記ビデオの前記一部についてのビットレートのリストを決定するために前記表現を分析することと、
前記コンピューティングデバイスによって、前記解像度を使用して前記ビデオの前記一部の符号化を使用するための前記ビットレートのリストを出力することと
を備える方法。
【請求項2】
前記符号器の前記パラメータは、ビデオの前記一部を符号化するための設定を備える、請求項1に記載の方法。
【請求項3】
前記複数の品質値を生成することは、
ビットレートの前記セット中のビットレートごとに、前記解像度についての品質値を生成することを備える、請求項1に記載の方法。
【請求項4】
前記解像度は、複数の解像度を備え、ここにおいて、前記複数の品質値を生成することは、
前記複数の解像度のうちの解像度を選択することと、
前記ビットレートのセット中のビットレートごとに、前記解像度についての品質値を生成することと、
前記複数の解像度のうちのすべての解像度が処理されるまで、前記複数の解像度の中で新たな解像度を選択し続け、前記新たな解像度について、ビットレートの前記セットのうちの各ビットレートについての前記品質値を生成することと
を備える、請求項1に記載の方法。
【請求項5】
ビットレートと前記複数の品質値との間の前記関連性の前記表現は、レート歪み曲線を備える、請求項1に記載の方法。
【請求項6】
複数の解像度についてビットレートの前記セットについての複数の品質値を生成することと、
ビットレートと前記複数の解像度についての前記複数の品質値との間の前記関連性の複数の表現を生成することと
をさらに備える、請求項1に記載の方法。
【請求項7】
前記複数の解像度についての前記複数の表現を含むマップを生成することと、
ビットレートの前記リストを決定するために前記マップを使用すること
をさらに備える、請求項6に記載の方法。
【請求項8】
前記複数の品質値を生成することは、
前記複数の品質値を生成するために前記特徴値を予測ネットワークに入力することを備える、請求項1に記載の方法。
【請求項9】
前記特徴値は、コンピュータビジョン特徴、空間領域特徴、時間領域特徴、周波数領域特徴、およびプロキシ符号化特徴のうちのうちの1つまたは複数を備える、請求項8に記載の方法。
【請求項10】
前記プロキシ符号化特徴は、前記ビデオの実際の符号化に基づき、ここにおいて、前記実際の符号化における設定は、前記ターゲット構成における前記パラメータとは異なる、請求項9に記載の方法。
【請求項11】
前記複数の品質値を生成することは、
前記ビデオの実際の符号化からプロキシ符号化特徴値を決定することと、
複数のプロキシ品質値を生成するために前記プロキシ符号化特徴値を予測ネットワークに入力することと
を備える、請求項1に記載の方法。
【請求項12】
前記複数の品質値を生成することは、
前記複数のプロキシ品質値に基づいて前記複数の品質値を生成することを備える、請求項11に記載の方法。
【請求項13】
前記複数のプロキシ品質値に基づいて前記複数の品質値を生成することは、
予測ネットワークを使用して複数のオフセット値を生成することと、ここにおいて、前記複数のオフセット値は、前記ターゲット構成における前記パラメータからの前記実際の符号化における設定間の差に基づき、
前記複数の品質値を生成するために前記複数のオフセット値と前記複数のプロキシ品質値とを使用することと
を備える、請求項12に記載の方法。
【請求項14】
前記複数の品質値を生成することは、
第1の予測方法を使用して第1の複数の品質値を決定することと、
第2の予測方法を使用して第2の複数の品質値を決定することと、ここにおいて、前記第2の予測方法は、ターゲット構成における前記パラメータからの実際の符号化における設定間の差に基づいて決定されるプロキシ品質値に対してのオフセットを予測し、
前記複数の品質値を決定するために前記第1の複数の品質値と前記第2の複数の品質値とを比較することと
を備える、請求項1に記載の方法。
【請求項15】
前記複数の品質値を生成することは、
前記ビデオの前記一部の特性を分析することと、
前記特性に基づいて第1の予測方法および第2の予測方法のうちの1つを選択することと、ここにおいて、前記第2の予測方法は、前記ターゲット構成における前記パラメータからの実際の符号化における設定間の差に基づいて決定されるプロキシ品質値に対してのオフセットを予測し、
前記複数の品質値を決定するために前記第1の予測方法および前記第2の予測のうちの前記選択された1つを使用することと
を備える、請求項1に記載の方法。
【請求項16】
コンピュータ実行可能命令を記憶している非一時的なコンピュータ可読記憶媒体であって、コンピューティングデバイスによって実行されるときに、
ビデオの一部およびターゲット構成についての特徴値を決定することと、ここにおいて、前記ターゲット構成は、符号器のパラメータに関連付けられ、ビットレートのセットおよび解像度を含み、
前記特徴値に基づいてビットレートの前記セットおよび前記解像度についての複数の品質値を生成することと、
ビットレートと前記解像度についての前記複数の品質値との間の関連性の表現を生成することと、
前記ビデオの前記一部についてのビットレートのリストを決定するために前記表現を分析することと、
前記解像度を使用して前記ビデオの前記一部の符号化を使用するための前記ビットレートのリストを出力することと
について前記コンピューティングデバイスを動作可能にさせる、非一時的なコンピュータ可読記憶媒体。
【請求項17】
コンピューティングデバイスによって、符号器の第1のパラメータに関連付けられ、ビットレートのセットと解像度とを含むプロキシ符号化構成を使用してビデオの一部の実際の符号化からプロキシ符号化特徴値を決定することと、
前記コンピューティングデバイスによって、第1の予測方法を使用して前記プロキシ符号化特徴値に基づいてビットレートのセットおよび解像度についての複数のプロキシ品質値を生成することと、
前記コンピューティングデバイスによって、前記ビデオの前記一部についてのターゲット特徴値を決定することと、ここにおいて、前記ターゲット特徴値は、前記符号器の第2のパラメータに関連付けられたターゲット構成に基づき、
前記コンピューティングデバイスによって、第2の予測方法を使用して前記ターゲット特徴値に基づいてビットレートの前記セットおよび前記解像度についての複数のオフセット品質値を生成することと、ここにおいて、前記第2の予測方法は、前記第1のパラメータと前記第2のパラメータとの間の差に基づいて決定されるプロキシ品質値に対してのオフセットを予測し、
前記コンピューティングデバイスによって、前記複数のプロキシ品質値と前記複数の品質オフセット値とを使用して複数の品質値を生成することと
を備える、方法。
【請求項18】
前記複数の品質値は、第1の複数の品質値を備え、
前記ターゲット構成に基づいて品質値を予測する第3の予測方法を使用して第2の複数の品質値を決定すること、
ビットレートの前記セットおよび前記解像度について出力するための品質値を決定するために前記第1の複数の品質値と前記第2の複数の品質値とを比較することと
をさらに備える、請求項17に記載の方法。
【請求項19】
出力するための品質値を決定するために前記第1の複数の品質値と前記第2の複数の品質値とを比較することは、
ビデオの前記一部の特性を分析することと、
前記特性に基づいて前記第1の複数の品質値および前記第2の複数の品質値のうちの1つを選択することと、
を備える、請求項18に記載の方法。
【請求項20】
出力するための品質値を決定するために前記第1の複数の品質値と前記第2の複数の品質値とを比較することは、
特性に基づいて前記第1の複数の品質値および前記第2の複数の品質値を組み合わせることを備える、請求項18に記載の方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001]本出願は、一部継続出願であり、米国特許法第120条に従って、2023年3月6日に出願された「DYNAMIC SELECTION OF CANDIDATE BITRATES FOR VIDEO ENCODING(ビデオ符号化のための候補ビットレートの動的選択)」という名称のより先に提出された出願である米国出願第18/179,281号に対して権利が付与されており、その利益を主張するものであり、その内容は、すべての目的について全体として参照により本明細書に組み込まれる。
【背景技術】
【0002】
[0002]ビデオをクライアントデバイスに配信する一方法は、アダプティブビットレートストリーミング(ABR)を使用する。アダプティブビットレートストリーミングは、異なるレベルのビットレートおよび/または品質などの異なるレベルのビデオ属性で符号化された(しばしば、バリアントまたはプロファイルと呼ばれる)複数のストリームを提供することに根拠が置かれる。プロファイルラダーは、ビデオのセグメントをストリーミングするときにクライアントが使用するために利用可能な異なるプロファイルをリストする。クライアントは、ネットワーク状態および他の要因に基づいて、プロファイルを動的に選択することができる。ビデオはセグメント化され(例えば、通常は数秒の長さごとに個別のセグメントに分割され)、クライアントは、ネットワーク状態が変化するときにセグメント境界であるプロファイルから別のプロファイルに切り替えることができる。例えば、ビデオ配信システムは、より高い利用可能な帯域幅を有するネットワーク状態が経験されているときに、ストリーミングされているビデオの品質を改善するより高いビットレートを有するプロファイルをクライアントに与えることを望む。より低い利用可能な帯域幅を有するネットワーク状態が経験されているときに、ビデオ配信システムは、クライアントが、再バッファリングまたはダウンロードの失敗などの何らかの再生問題を有することなしにビデオを再生することができるように、より低いビットレートを有するプロファイルをクライアントに与えることを望む。
【図面の簡単な説明】
【0003】
[0003]含まれる図面は、例示的な目的のためであり、開示される発明のシステム、装置、方法、およびコンピュータプログラム製品についての可能な構造および動作の例を与える役割を果たすものに過ぎない。これらの図面は、開示された実施の精神および範囲から逸脱することなく、当業者によってなされ得る形態および細部のいかなる変更も決して限定しない。
図1】[0004]いくつかの実施形態による候補平均ビットレートのリストを動的に選択するためのシステムを示す図。
図2】[0005]いくつかの実施形態によるビデオの部分の一例を示す図。
図3A】[0006]いくつかの実施形態による候補平均ビットレートのリストの生成の一例を示す図。
図3B】[0007]いくつかの実施形態による符号化されたセグメントの生成の一例を示す図。
図4】[0008]いくつかの実施形態による符号化されたセグメントを複数のプールにクラスタリングする一例を示す図。
図5】[0009]いくつかの実施形態による選択プロセスの一例を示す図。
図6】[0010]いくつかの実施形態によるプールのために符号化されたセグメントを選択するために使用され得るレート歪み曲線のグラフの一例を示す図。
図7】[0011]いくつかの実施形態によるセグメントごとにプロファイルについての選択された符号化されたセグメントの一例を示す図。
図8】[0012]いくつかの実施形態によるビデオコンテンツのための異なるレート歪み曲線の一例を示す図。
図9】[0013]いくつかの実施形態による異なる符号化構成を使用する異なる特性を示す図。
図10】[0014]いくつかの実施形態による異なるレート歪み曲線について静的候補平均ビットレートを使用する一例を示す図。
図11】[0015]いくつかの実施形態による最適化された候補平均ビットレートリストを示す図。
図12】[0016]いくつかの実施形態によるセグメント品質駆動型適応処理システム(SQA)システムおよび事前分析最適化プロセスのより詳細な例を示す図。
図13】[0017]いくつかの実施形態によるレート歪み(RD)予測システムのより詳細な例を示す図。
図14】[0018]いくつかの実施形態による予測ネットワークの出力を示す図。
図15】[0019]いくつかの実施形態による候補平均ビットレートのリストを選択するための最適化プロセスを実行するための方法の簡略化されたフローチャートを示す図。
図16】[0020]いくつかの実施形態による候補平均ビットレートのリストについての境界を決定する一例を示す図。
図17】[0021]いくつかの実施形態による品質に基づいて候補平均ビットレートを除去する一例を示す図。
図18】[0022]いくつかの実施形態による候補平均ビットレートを除去するために最小ギャップが使用される一例を示す図。
図19】[0023]いくつかの実施形態による候補平均ビットレートを追加することが有利であり得る場合を示すグラフ。
図20】[0024]いくつかの実施形態による候補平均ビットレートを追加することの決定を示す図。
図21】[0025]いくつかの実施形態によるRD予測システムの一例を示す図。
図22】[0026]いくつかの実施形態による抽出され得る特徴の一例を示す図。
図23】[0027]いくつかの実施形態によるビデオのフレームの一例を示す図。
図24】[0028]いくつかの実施形態による予測方法の簡略化されたフローチャートを示す図。
図25】[0029]いくつかの実施形態による1つのターゲット解像度についてのビットレートの品質値を列挙するグラフ。
図26】[0030]いくつかの実施形態による直接予測モードの一例を示す図。
図27】[0031]いくつかの実施形態による間接予測モードシステムの一例を示す図。
図28】[0032]いくつかの実施形態によるプロキシ符号化結果およびターゲット符号化結果の一例を示す図。
図29】[0033]いくつかの実施形態による、直接品質値および間接品質値を使用する一例を示す図。
図30A】[0034]いくつかの実施形態による単一の解像度についてのレート歪み曲線のグラフ。
図30B】[0035]いくつかの実施形態によるRDマップを示すグラフ。
図31】[0036]一実施形態による1つまたは複数の通信ネットワークを介して複数のクライアントデバイスと通信するビデオストリーミングシステムを示す図。
図32】[0037]ビデオコンテンツおよび広告を見るための装置の概略図。
【発明を実施するための形態】
【0004】
[0038]本明細書では、ビデオ配信システムについての技法が説明される。以下の説明では、説明のために、いくつかの実施形態の徹底的な理解を与えるために、多数の例および具体的な詳細が記載される。特許請求の範囲によって定められるいくつかの実施形態は、これらの例における特徴の一部または全部を、単独で、または以下で説明される他の特徴と組み合わせて含み得、本明細書で説明される特徴および概念の修正形態および均等物をさらに含み得る。
【0005】
[0039]システムは、ビデオを符号化するために使用されるビットレートのリストを適応的に生成することができる。ビットレートのリストは、候補平均ビットレート(CAB)と呼ばれ得る。符号器は、候補平均ビットレートのリスト内のそれぞれのビットレートを使用してビデオのセグメントをトランスコードする。いくつかの実施形態では、システムは、ビデオの異なるチャンクについてなど、ビデオの異なる部分について候補平均ビットレートのリストを動的に選択することができる。チャンクは、符号器が同じ設定を用いて符号化する独立した符号化単位であり得る。ビデオは、1つまたは複数のチャンクを含むことができ、各チャンクは、複数のセグメントを含むことができる。いくつかの実施形態では、候補平均ビットレートのリストはチャンクレベルで設定され得る。候補平均ビットレートのリストは、チャンクレベルで設定されていると説明されるが、候補平均ビットレートのリストは、ビデオの異なる部分に対して設定され得る。
【0006】
[0040]符号器は、複数の候補セグメントを生成するために、候補平均ビットレートのリスト内のビットレートを使用して、ビデオのセグメントを符号化することができる。セグメント品質駆動型適応(SQA)プロセスは、プロファイルラダーにおけるプロファイルに使用するために、候補セグメントからセグメントを選択することができる。プロセスのターゲットは、同様の品質を維持しつつビデオに部分の記憶または配信フットプリントを最適化する(例えば、最小化する)ことである。
【0007】
[0041]各ビデオは、異なる特性を有し得る。同様に、同じビデオ内の異なる部分も、異なる特性を有し得る。ビデオのすべての部分についてまたは複数のビデオについて候補平均ビットレートの静的リストを使用することは、最適な結果を与えない場合がある。例えば、候補平均ビットレートの静的リストは、必要とされるよりも多くのビットレートを有する単純なビデオコンテンツを有するビデオを符号化し得る。また、複雑なビデオコンテンツを有するビデオは、不十分なビットレートに起因して、低品質で符号化され得る。さらに、候補平均ビットレートの静的リストは、符号化の観点から不規則な品質ギャップを有するセグメントを生成し得る。例えば、隣接するプロファイルは、互いに冗長である同様のビデオ品質を有し得る、または許容できない大きい品質ギャップを有し得る。隣接するプロファイルについて同様のビデオ品質を有することは、不必要である場合があり、視聴品質において多くの利点を与えないことがある。例えば、候補平均ビットレートのリスト内の2つのビットレートが、同様の品質を有する符号化セグメントもたらす場合、それらの2つのビットレートを用いてセグメントをトランスコードすることは、冗長であり得、リソースを浪費し得る。また、大きな品質ギャップを有することは、再生が1つのプロファイルから別のプロファイルに切り替わるときに品質が急激に変化し得るので、再生中に悪い視聴体験をもたらし得る。
【0008】
[0042]上記の欠点を克服するために、事前分析最適化プロセスは、ビデオについての候補平均ビットレートのリスト内のビットレートを動的に選択することができる。候補平均ビットレートのリストを選択するために、事前分析最適化プロセスは、ビデオの一部分を分析し、その部分についての候補平均ビットレートの最適化されたリストを出力することができる。例えば、事前分析最適化プロセスは、各部分の特性を分析し、各部分についての候補平均ビットレートのリストを出力することができる。いくつかの実施形態では、事前分析最適化プロセスは、その部分についての品質対ビットレートを記述するレート歪み曲線など、その部分の特性を予測することができる。事前分析最適化プロセスは、各部分のビットレートの最適なリストを決定するために、それぞれのレート歪み曲線を使用する。
【0009】
[0043]最適化プロセスは、多くの利点を与える。例えば、このプロセスは、プロファイルラダー内のプロファイルについてのセグメントを選択するときに選択すべきトランスコードされたセグメントの最適な選択を与える。候補平均ビットレートのリストが、ビデオ全体について静的な値で設定され、および/または複数の異なるビデオについて同じである場合、準最適なトランスコーディングが生じ得る。異なるビデオは、および同じビデオの異なる部分も、多様な特性を有することができる。したがって、候補平均ビットレートの静的リストは、いくつかのビデオまたはビデオの部分について準最適であり得る。セグメント品質駆動型適応プロセスは、プロファイルラダーについてのプロファイルを形成するために選択すべき符号化セグメントのより良い選択を有し得るので、ビデオの部分の特性に基づく候補平均ビットレートの動的リストの使用は、より高品質のビデオおよび視聴体験をもたらし得る。
【0010】
[0044]システム
[0045]図1は、いくつかの実施形態による、候補平均ビットレートのリストを動的に選択するためのシステム100を示す。システム100は、コンテンツ配信ネットワーク102と、クライアント104と、ビデオ配信システム106とを含む。ソースファイルは、ビデオ、音声、または他のタイプのコンテンツ情報などの異なるタイプのコンテンツを含み得る。ビデオは、説明のために使用され得るが、他のタイプのコンテンツも理解され得る。いくつかの実施形態では、ソースファイルは、以下で説明する別のフォーマットへの符号化を必要とするフォーマットで受信され得る。例えば、ソースファイルは、圧縮されたビデオを含むメザニンファイルであってもよい。メザニンファイルは、ビデオの異なるプロファイルなどの他のファイルを生成するために符号化され得る。
【0011】
[0046]コンテンツプロバイダは、エンティティがメディアコンテンツを要求し、受信することを可能にするコンテンツ配信サービスを提供するためにビデオ配信システム106を動作させることができる。コンテンツプロバイダは、クライアント104へのメディアコンテンツの配給を調整するために、ビデオ配信システム106を使用することができる。単一のクライアント104が説明されているが、複数のクライアント104がサービスを使用していてもよい。メディアコンテンツは、ビデオのライブラリからのオンデマンドビデオ、およびライブビデオなどの異なるタイプのコンテンツであってもよい。いくつかの実施形態では、ライブビデオは、線形スケジュールに基づいてビデオが利用可能である場所であり得る。ビデオは、オンデマンドで提供されることも可能である。オンデマンドビデオは、いつでも要求されることが可能であり、線形スケジュールで見ることに限定されないコンテンツであり得る。ビデオは、映画、ショー、広告などのプログラムであり得る。
【0012】
[0047]クライアント104は、スマートフォン、リビングルームデバイス、テレビ、セットトップボックス、タブレットデバイス等などの異なるコンピューティングデバイスを含むことができる。クライアント104は、ビデオなどのコンテンツを再生することができるメディアプレーヤ112を含む。いくつかの実施形態では、メディアプレーヤ112は、ビデオのセグメントを受信し、これらのセグメントを再生することができる。クライアント104は、コンテンツ配信ネットワーク102のうちの1つにセグメントの要求を送信し、次いで、メディアプレーヤ112における再生のために要求されたセグメントを受信し得る。セグメントは、ビデオの6秒など、ビデオの一部分であり得る。
【0013】
[0048]ビデオは、複数のプロファイルを含むプロファイルラダーに符号化され得る。各プロファイルは、異なるレベルのビットレートおよび/または品質であり得る異なる構成に対応し得るが、コーデックタイプ、コンピューティングリソースタイプ(例えば、コンピュータ処理ユニット)等などの他の特性を含むこともできる。各ビデオは、異なる構成を有する関連付けられたプロファイルを有し得る。プロファイルは、異なるレベルで分類されてもよく、各レベルは、異なる構成に関連付けられてもよい。例えば、レベルは、ビットレート、解像度、コーデックなどの組合せであってもよく、例えば、各レベルは、400キロバイト毎秒(kbps)、650kbps、1000kbps、1500kbps、...12000kbpsなどの異なるビットレートに関連付けられ得る。また、各レベルは、品質特性(例えば、解像度)などの別の特性に関連付けられてもよい。プロファイルレベルは、より高いビットレートまたは品質を有するプロファイルが、より低いビットレートまたは品質を有するプロファイルよりも高く格付けされ得るなど、より高いまたはより低いと呼ばれ得る。符号器は、ソースビデオを符号化するために特性を使用し得る。例えば、符号器は、1500kbpsのターゲットビットレートでソースビデオをエンコードし得る。
【0014】
[0049]コンテンツ配信ネットワーク102は、ビデオをクライアント104に配信することができるサーバを含む。コンテンツ配信ネットワーク102は、クライアント104からビデオのセグメントの要求を受信し、ビデオのセグメントをクライアント104に配信する。クライアント104は、現在の再生状態に基づいて、プロファイルレベルのうちの1つからビデオのセグメントを要求し得る。再生状態は、利用可能な帯域幅、バッファ長等などのビデオの再生に基づいて経験される任意の状態であり得る。例えば、クライアント104は、現在の利用可能な帯域幅、バッファ長、または他の再生状態に基づいてビデオについてのプロファイルを選択するために、適応ビットレートアルゴリズムを使用してもよい。クライアント104は、現在の再生状態を継続的に評価し、ビデオのセグメントの再生中にプロファイルの間で切り替えることができる。例えば、再生中に、メディアプレーヤ112は、ビデオアセットの異なるプロファイルを要求することができる。例えば、低帯域幅再生状態が経験されている場合、メディアプレーヤ112は、ビデオの今度のセグメントについてのより低いビットレートに関連するより低いプロファイルを要求することができる。しかしながら、より高い利用可能な帯域幅の再生状態が経験されている場合、メディアプレーヤ112は、ビデオの今度のセグメントについてのより高い帯域幅に関連するより高いレベルのプロファイルを要求してもよい。
【0015】
[0050]セグメント品質駆動型適応処理システム(SQAシステム)108は、候補平均ビットレートのリストを使用してセグメントを符号化することができる。次いで、SQAシステム108は、最適化プロセスを使用してプロファイルごとにセグメントを選択する。例えば、SQAシステム108は、同様の品質レベルを維持しつつ、プロファイルラダーのプロファイルごとに最適なビットレートを有するセグメントを適応的に選択することができる。SQAシステム108は、コンテンツを記憶または配信するために必要とされるビット数を最小化しつつ、システムがターゲットビットレートと同様の品質またはターゲットビットレートに一致する品質を維持することを可能にする。
【0016】
[0051]事前分析最適化プロセス110は、ビデオの部分についての候補平均ビットレートのリストを動的に生成することができる。いくつかの実施形態では、事前分析最適化プロセス110は、レート歪み曲線などのビデオの一部分のそれぞれの特性を予測することができる。次いで、事前分析最適化プロセス110は、ビデオの部分のそれぞれの特性を分析することに基づいて、その部分についての候補平均ビットレートを選択する。
【0017】
[0052]以下は、まず、セグメント品質駆動型適応処理プロセスを説明し、次いで、候補平均ビットレートのリストの動的選択をより詳細に説明する。
【0018】
[0053]セグメント品質駆動型適応プロセス
[0054]上述のように、最適化プロセス110は、ビデオの部分についての候補平均ビットレートのリストを動的に選択することができる。ビデオの部分は、異なるサイズであってもよい。図2は、いくつかの実施形態によるビデオの部分の一例を示す。ビデオ200は、セグメントレベルおよびチャンクレベルで異なる部分に分割され得る。いくつかの実施形態では、202において、ビデオ200は、チャンクレベル部分に分割され得る。例えば、チャンク_0、チャンク_1、・・・、チャンク_mの複数のチャンクが、ビデオ200に含まれてもよい。各それぞれのチャンクは、セグメントと呼ばれ得るより小さな部分に分割され得る。例えば、204において、チャンク_0は、セグメント_0、セグメント_1、・・・、セグメント_nのセグメントに分割される。同様に、図示されていないが、チャンク_1は、セグメント_0、セグメント_1、・・・、セグメント_nのそれ自体のそれぞれのセグメントに分割され得る。セグメントは、チャンクよりも長さが短くてもよい。例えば、チャンクは、2分のビデオであってもよく、セグメントは5秒のビデオであってもよい。
【0019】
[0055]セグメント品質駆動型適応プロセスでは、SQAシステム108は、候補平均ビットレートのリストに基づいて、各それぞれのセグメントの複数の符号化を生成するために、ビデオ200の各セグメントを処理することができる。説明のために、最適化プロセス110は、チャンクごとに候補平均ビットレートのリストを選択するが、候補平均ビットレートのリストは、セグメントごと、複数のチャンクについて等など、異なる部分サイズについて選択されてもよい。候補平均ビットレートの各それぞれのリストに含まれるビットレートは、候補平均ビットレートのリストを使用するビデオのそれぞれの部分(例えば、チャンクおよび/またはセグメント)に関連する特性に基づいて最適化され得る。異なるチャンクについて異なる特性が与えられると、候補平均ビットレートのそれぞれのリストは異なり得る。しかしながら、候補平均ビットレートのそれぞれのリスト内の複数のチャンクについてのビットレートが同じであることが可能であり得る。
【0020】
[0056]図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】
[0057]候補平均ビットレートのリストは、それぞれのセグメントを符号化するために符号器によって使用されるビットレートを含み得る。従来から、候補平均ビットレートは、同じビットレートを静的に含んできた可能性がある。時には、2つのタイプのビットレートがすべてのチャンクについて使用された。第1のタイプはターゲット平均ビットレートであり得、第2のタイプは中間平均ビットレートであり得る。ターゲット平均ビットレートは、適応ビットレート符号化のためのプロファイルラダーにおけるプロファイルに関連付けられた基本ビットレートであり得る。中間平均ビットレートは、ターゲット平均ビットレートへの補足であってもよい。例えば、ターゲット平均ビットレートの間の追加のビットレートが追加されてもよい。中間平均ビットレートの使用は、品質など、ターゲット平均ビットレートからの符号化されたセグメントとは異なる特性を有し得る追加の符号化セグメントを符号化するための追加のビットレートを与えることができる。場合によっては、最適化プロセス110は、候補平均ビットレートのリスト内にターゲット平均ビットレートおよび/または中間平均ビットレートからのビットレートを含め得る。例えば、最適化プロセス110は、候補平均ビットレートのリスト内にターゲット平均ビットレートを含み得るが、他のビットレートを動的に選択してもよい。他の例では、最適化プロセスは、チャンクの特性のみに基づいて、候補平均ビットレートのリスト内のビットレートを動的に選択することができる。
【0022】
[0058]上述のように、符号器は、チャンクについての符号化されたセグメントを生成する。図3Bは、いくつかの実施形態による符号化されたセグメントの生成の一例を示す。204において、チャンク_0のチャンクについてのセグメントが、セグメント_0、セグメント_1、セグメント_2、・・・、セグメント_nで示されている。304において、チャンク_0についての候補平均ビットレートのリスト(CABのリスト)が使用される。いくつかの実施形態では、チャンク_0についての候補平均ビットレートの同じリストが、チャンクのすべてのセグメントについて使用される。しかしながら、候補平均ビットレートの複数の異なるリストが、チャンクの異なるセグメントについて使用され得る。次いで、符号器は、候補平均ビットレートのリストを使用してチャンク_0のセグメントを符号化する。
【0023】
[0059]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】
[0060]セグメントごとに、最適化プロセス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】
[0061]符号化されたセグメントをプール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】
[0062]各プールから、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】
[0063]図6は、いくつかの実施形態によるプールのための符号化セグメントを選択するために使用され得るレート歪み曲線のグラフ600の一例を示す。グラフ600において、Y軸は品質であり、X軸はビットレートである。曲線602は、品質とビットレートの間の関係を定義する。例えば、曲線は、セグメントまたはチャンクのレートおよび歪みをプロットし得るが、曲線は、品質およびビットレートの他の特性をプロットしてもよい。
【0028】
[0064]符号化セグメントは、符号化セグメントのそれぞれのレートおよび歪みに基づいて、曲線602上のA、B、C、D、E、Fとしてリストされ得る。604において、同様の品質を有する符号化されたセグメントの一例が示されている。この場合、符号化セグメントCおよび符号化セグメントDは、同様のビットレートおよび同様の品質を有する。例えば、符号化されたセグメントCと符号化されたセグメントDとの間の品質差は、閾値値min_gap(例えば、等しいおよび/またはより小さい)を満たし得る。この場合、この符号化セグメントは、符号化セグメントCと比較して低いビットレートを有するが、セグメントDは、セグメントCと比較して同様の品質を提供するので、品質差が最小であるので、SQAシステム108は、符号化セグメントDを選択することができる。
【0029】
[0065]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】
[0066]上記の規則はセグメントを選択するために使用され得るが、他のプロセスが使用されてもよい。例えば、符号化されたセグメントの選択は、他のプロファイルについてどの符号化されたセグメントが選択されたかに基づいてもよい。いくつかの例では、選択されるセグメントは、プロファイルが他のプロファイルからのセグメントを再使用し得る符号化されたセグメントの記憶を減少させることに基づき得る。したがって、SQAシステム108は、品質を最適化するとともに、下限とシーリングとの間に見出される符号化されたセグメントに使用されるビットレートを最小化することができる。
【0031】
[0067]図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】
[0068]次に、以下は、候補平均ビットレートのリストを動的に生成するための最適化プロセスについて説明する。
【0033】
[0069]最適化プロセス
[0070]上述のように、ビデオコンテンツは、異なるビデオ内のコンテンツが異なる特性を有し得るとともに、同じビデオ内のコンテンツも異なる特性を有し得るなど、多様な特性を有し得る。例えば、漫画やニュースなどの一部のコンテンツは、符号化するのが簡単であり得る。しかしながら、ライブアクション映画またはスポーツなどのいくつかのコンテンツは、符号化するのが難しい場合がある。符号化の特性は、異なってもよい。以下は、コンテンツについての異なる特性を説明する。
【0034】
[0071]図8は、いくつかの実施形態によるビデオコンテンツのための異なるレート歪み曲線の一例を示す。レート歪み曲線は、品質とビットレートとの間の関連性を示すために使用されるが、他の指標が、ビデオコンテンツについての品質とビットレートとの間の関連性を示すために使用されてもよい。異なるレート歪み曲線は、ビデオの異なるチャンクについて示され得るが、レート歪み曲線は、セグメント、チャンク、複数のチャンク、または異なるビデオなど、ビデオの異なる部分について異なっていてもよい。
【0035】
[0072]チャンク_A、チャンク_B、およびチャンク_Cの3つのチャンクが、それぞれ、チャンクについてのレート歪み曲線のグラフ802、804、および806とともに示されている。グラフ802では、品質は、より低いビットレートでは急勾配を伴って変化するが、より高いビットレートでは、品質はあまり変化しない。グラフ804では、品質は、ビットレートが一定の関連性で増加するにつれて変化する。グラフ806では、より低いビットレートでの品質は、最小限にしか変化しない場合があり、一方、品質は、より高いビットレートで急勾配で増加する。
【0036】
[0073]異なるコンテンツが異なるレート歪み曲線を生成することに加えて、異なる符号化構成もまた、異なる符号化の結果を生成し得る。異なる符号化構成は、異なる符号器(例えば、x264、x265など)、または異なる符号化パラメータ(レート歪み最適化(RDO)レベル、Bフレーム、参照数など)を使用することを含み得る。図9は、いくつかの実施形態による異なる符号化構成を使用する異なる特性を示す。同じセグメントまたはチャンクについて、902における第1の符号化構成は、904に示された第2の符号化構成と比較して異なる特性をもたらす。符号化構成Aは、上記のチャンク_Aと同様のレート歪み曲線をもたらし、符号化構成Bは、これらのレート歪み曲線が同じコンテンツについてのものであっても、上記のチャンク_Bと同様のレート歪み曲線をもたらす。
【0037】
[0074]上記のレート歪み曲線が異なり得ることを考慮すると、候補平均ビットレートの静的リストを使用することは、最適でない場合がある。例えば、異なるレート歪み曲線について候補平均ビットレートの同じリストを使用することは、最適な結果を与えない場合がある。図10は、いくつかの実施形態による異なるレート歪み曲線について静的候補平均ビットレートを使用する一例を示す。グラフ802、804、および806は、図8に示された異なるチャンクについての異なるレート歪み曲線を示す。各グラフにおける点線は、候補平均ビットレートのリストの異なるビットレートを示す。候補平均ビットレートの固定されたリストを使用するときに、いくつかの問題が生じ得る。例えば、グラフ802では、1008において、2つの最高候補平均ビットレートは、1010における第3の候補平均ビットレートと同様の品質を有するので、冗長であり得る。すなわち、同様の品質を有する符号化されたセグメントを与えるために、1010に列挙されたビットレートなどで、たった1つのビットレートが符号化される必要があり得る。
【0038】
[0075]グラフ804では、1012において、2つの候補平均ビットレートは、これらの2つの符号化されたセグメントが1014に示された次に低いビットレートを有する符号化されたセグメントと比較して同様の品質を有するので、冗長であり得る。上記と同様に、同様の品質を有する符号化されたセグメントを与えるために、1014における最低ビットレートなど、たった1つのビットレートが符号化される必要があり得る。
【0039】
[0076]グラフ806では、1016において、最低の3つの候補平均ビットレートが、同様の品質を有する符号化されたセグメントを生成し得る。また、1018において、符号化されたセグメント間で品質の差が大きすぎることがあるので、候補平均ビットレートは、遠く離れすぎている場合がある。すなわち、候補平均ビットレート間の品質の差を最小化するために、より少ない品質差を有するより多くの候補平均ビットレートを有することがより望ましいことがある。
【0040】
[0077]図11は、いくつかの実施形態による最適化された候補平均ビットレートリストを示す。グラフ802において、SQAシステム108は、符号化されたセグメントにおいて見出される品質を最適化するために、候補平均ビットレートを動的に選択することができる。例えば、1102において、SQAシステム108は、曲線が急であるビットレートにおいて、候補平均ビットレートの数を増加させることができる。また、1103において、SQAシステム108は、曲線が品質をあまり変化させない候補平均ビットレートの数を減少させることができる。
【0041】
[0078]グラフ804において、1104において、SQAシステム108は、品質が冗長であり得る最低ビットレートから候補平均ビットレートを除去してもよい。また、1106において、SQAシステム108は、より高いビットレートで変化する品質を獲得するために、追加のビットレートを追加してもよい。
【0042】
[0079]グラフ806において、1108で、SQAシステム108は、曲線の下端でビットレートを除去してよい。また、1110において、SQAシステム108は、より均等な増分で異なる品質レベルを捕獲するために、候補平均ビットレートをより均等に区切ることができる。
【0043】
[0080]事前分析最適化プロセス設計
[0081]図12は、いくつかの実施形態によるSQAシステム108および事前分析最適化プロセス110のより詳細な例を示す。符号化されるチャンクが受信される。また、チャンクを符号化するための設定を定義する符号化構成が受信され得る。符号化構成は、符号器タイプ、品質レベルなどを含み得る。
【0044】
[0082]事前分析最適化プロセス110は、チャンクおよび符号化構成を受信し、候補平均ビットレートの最適化されたリストを出力することができる。RD予測システム1202は、チャンク内のセグメントおよび/またはチャンクについてのレート歪み曲線を予測することができる。セグメントまたはチャンクについてのレート歪み曲線を予測することが説明され得るが、レート歪み曲線は、複数のチャンクおよび/または複数のセグメントについてなど、ビデオの異なる部分について生成され得る。以下でより詳細に説明されるように、RD予測システム1202は、セグメントのレート歪み曲線の予測を生成するために機械学習論理を使用することができる。
【0045】
[0083]予測されたレート歪み曲線は、CABリスト最適化システム1204に出力される。CABリスト最適化システム1204は、チャンク内のセグメントについての予測されたレート歪み曲線などに基づいて、チャンクについての候補平均ビットレートのリストを最適化することができる。候補平均ビットレートの最適化されたリストは、それぞれのチャンクの特性に基づいてもよく、異なる特性を有するコンテンツを有するチャンクについて異なってもよい。このプロセスは、以下により詳細に説明される。
【0046】
[0084]CABリスト最適化システム1204は、候補平均ビットレートの最適化されたリストをSQAシステム108に出力する。SQAシステム108は、符号化構成、チャンク、および候補平均ビットレートの最適化されたリストを受信する符号化システム1206を含む。次いで、符号化システム1206は、チャンクの各セグメントを符号化するために、リスト内の各候補平均ビットレートを使用する。候補平均ビットレートのリストを使用して各セグメントを符号化した後、選択システム1208は、上述したような選択プロセスを使用して、プロファイルラダーにおける各プロファイルについて符号化されたセグメントを選択する。選択システム1208は、プロファイルラダーにおけるプロファイルについて選択された符号化されたセグメントを出力する。
【0047】
[0085]以下は、セグメントの特性の予測、次いで候補平均ビットレートのリストを選択するための最適化を説明する。
【0048】
[0086]RD予測システム
[0087]図13は、いくつかの実施形態によるRD予測システム1202のより詳細な一例を示す。特徴抽出システム1302は、ビデオのチャンクを受信する。次いで、特徴抽出システム1302は、ビデオトランスコーディングに関連した情報を伝達し得る特徴についての値を抽出し得る。特徴のいくつかの例は、ビデオコンテンツ、符号化設定などについてのものであり得る。抽出される特徴は、チャンクのセグメントの特性のより良い予測を与えることができる。特徴についての値は、予測ネットワーク1304に出力される。
【0049】
[0088]予測ネットワーク1304は、予測されたレート歪み曲線などのチャンクのセグメントについての特性を生成するために、トレーニングされたモデルを使用することができる。予測ネットワーク1304は、サポートベクターマシン(SVM)回帰、畳み込みニューラルネットワーク(CNN)、ブースティング等などの異なる機械学習アルゴリズムを使用してもよい。訓練されたモデルは、特定の機械学習アルゴリズムに基づいてトレーニングされ得る。
【0050】
[0089]予測ネットワーク1304は、セグメント位置、符号化構成、およびターゲットビットレートなどの他の入力に加えて特徴についての値を受信することができる。セグメント位置は、レート歪み曲線を生成するセグメント位置(例えば、ビデオ内のそのセグメント)であり得、符号化構成は、セグメントを符号化するために使用される構成を含み得、ターゲットビットレートは、セグメントについての出力ビットレート範囲を含み得る。予測ネットワーク1304は、特徴に基づいて、出力ビットレート範囲間のセグメントについてのレート歪み曲線を出力することができる。
【0051】
[0090]図14は、いくつかの実施形態による予測ネットワーク1304の出力を示す。204において、チャンクについてのセグメントは、セグメント_0、セグメント_1、セグメント_2、・・・、セグメント_nを含む。レート歪み曲線は、ビデオの各チャンク内のセグメントごとに生成され得る。例えば、1402において、レート歪み曲線が、それぞれのセグメントごとに出力される。セグメント_0のレート歪み曲線、セグメント_1のレート歪み曲線などが示されている。各レート歪み曲線は、それぞれのセグメントについての特性に基づく。チャンクについての候補平均ビットレートのリストは、レート歪み曲線に基づいて生成され得る。また、チャンクレベルレート歪み曲線が出力されてもよい。
【0052】
[0091]候補平均ビットレート最適化のリスト
[0092]図15は、いくつかの実施形態による候補平均ビットレートのリストを選択するための最適化プロセスを実行するための方法の簡略化されたフローチャート1500を示す。1502において、CABリスト最適化システム1204は、候補平均ビットレートのリストについての境界を決定する。例えば、境界は、候補平均ビットレートのリストに使用され得る最大ビットレートおよび最小ビットレートであり得る。異なる方法が、境界を決定するために使用されてもよく、図16により詳細に説明される。
【0053】
[0093]1504において、CABリスト最適化システム1204は、最適なビットレート割り振りを有する潜在的な候補平均ビットレートのリストを生成する。いくつかの実施形態では、潜在的な候補平均ビットレートの1つのリストは、502で決定された最大ビットレートおよび最小ビットレートに基づいてチャンクについて生成される。潜在的な候補平均ビットレートのリストは、異なる方法を使用して生成され得る。1つの方法は、最小ビットレートと最大ビットレートとの間に入る予め定められたリストを使用することであり得る。例えば、予め定められたリストは、ターゲット平均ビットレートおよび中間平均ビットレートからのビットレートを含むことができる。例えば、最小と最大の範囲内の予め定められたリストからのビットレートが使用されてもよい。別の方法は、潜在的な候補平均ビットレートの総数を決定し、最小ビットレートと最大ビットレートとの間のビットレート範囲を間隔に分割することができる。以下のような異なる例が、使用されてもよい。
【0054】
【数1】
【0055】
【数2】
【0056】
【数3】
【0057】
【数4】
【0058】
ただし、interval_iはiの間隔値であり、interval_(i+1)は間隔値+1であり、interval_(i+2)は間隔値+2であり、deltaは予め定められた値である。
【0059】
[0094]間隔の総数は、10などの数に設定され得る。interval_iの間隔は、範囲を総数に分割することによって上記の方法に基づいて設定され得る。次いで、CABリスト最適化システム1204は、最小ビットレートと最大ビットレートとの間のビットレートの範囲をビットレートのリストに分割するために間隔値に基づいてビットレートを選択する。例えば、1500の間隔および5のビットレートの総数を有する2000の最小ビットレートおよび10,000の最大ビットレートは、等分割を使用するとき、10,000、7500、5000、3500、および2000のビットレートのリストをもたらし得る。
【0060】
[0095]1506において、CABリスト最適化システム1204は、候補平均ビットレートの最適化されたリストを生成するために、最適な品質割り振りを用いて潜在的な候補平均ビットレートのリストを改良する。品質割り振りは、セグメントごとに品質を検査し、品質が1つまたは複数の規則を満たすかどうかを決定することができる。例えば、同様の品質を有する候補平均ビットレートなどの冗長な候補平均ビットレートが除去され得る。また、隣接する候補平均ビットレートが、大きすぎる差など、閾値を上回る品質ギャップを有するときなど、必要に応じて、追加の候補平均ビットレートが追加され得る。プロセスは、図17図18、および図19により詳細に説明される。
【0061】
[0096]図15の1502に説明されるように、CABリスト最適化システム1204は、候補平均ビットレートのリストについての境界を決定する。図16は、いくつかの実施形態による候補平均ビットレートのリストの境界を決定する一例を示す。以下のプロセスが説明されるが、他のプロセスも理解され得る。例えば、設定は、最小ビットレートおよび最大ビットレートを決定するために使用され得る。この例では、CABリスト最適化システム1204は、チャンク内のそれぞれのセグメントについてのレート歪み曲線についての最小ビットレートと最大ビットレートとを分析し、最小ビットレートおよび最大ビットレートがチャンクレベルにおいてあるべきことを決定することができる。
【0062】
[0097]1602において、それぞれのセグメントについてのレート歪み曲線が受信され、分析される。次いで、CABリスト最適化システム1204は、セグメントについてそれぞれのレート歪み曲線に基づいてセグメントごとに最小ビットレートと最大ビットレートとを選択し得る。例えば、セグメント_0について、最小ビットレートおよび最大ビットレートが、セグメント_0についてのレート歪み曲線の特性に基づいて選択される。例えば、CABリスト最適化システム1204は、最小品質閾値に対応する最小ビットレートと最大品質閾値に対応する最大ビットレートとを決定するために、最大品質閾値と最小品質閾値とを設定し、レート歪み曲線を使用し得る。セグメント_1について、CABリスト最適化システム1204は、セグメント_1についてのレート歪み曲線の特性に基づいて最小ビットレートと最大ビットレートとを選択する、などである。
【0063】
[0098]上記の分析は、セグメントレベルで実施した。次いで、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】
[0099]1608において、CABリスト最適化システム1204は、チャンクについての最小ビットレートと最大ビットレートとを出力する。この場合には、セグメントについての最小ビットレートから最も低い最小ビットレートが選択され、セグメントについての最大ビットレートから最も高い最大ビットレートが選択される。選択プロセスは、セグメントについてのレート歪み曲線の個々の特性を考慮に入れ、セグメントレベルで決定された最小ビットレートおよび最大ビットレートのすべてを含み得る最小ビットレートと最大ビットレートとを選択し得る。例えば、最小ビットレートが2000、3000、および3500である場合、選択される最小ビットレートは2000になる。同様に、最大ビットレートが10000、9000、および8500である場合、選択される最大ビットレートは10000になる。上記のプロセスが使用され得るが、値の平均を取ることなど、最小ビットレートと最大ビットレートとを選択する他の方法が理解され得る。
【0065】
[00100]図15の1506に説明されるように、CABリスト最適化システム1204は、最適な品質割り振りを有する候補平均ビットレートのリストを定義する。割り振りの一部は、同様の品質に基づいて候補平均ビットレートを除去することを含む。品質の類似性は、異なるやり方で定義されてもよい。例えば、CABリスト最適化システム1204は、いくつかの候補平均ビットレートが除去されるべきかどうかを決定するために、品質の値間の距離を決定する。図17は、いくつかの実施形態による品質に基づいて候補平均ビットレートを除去する一例を示す。この例では、CABリスト最適化システム1204は、2つの隣接する候補平均ビットレートの品質レベルが閾値内にあるなど、閾値を満たすかを決定し得る。次いで、より高いビットレートを有する候補が除去され得る。
【0066】
[00101]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】
[00102]上記の分析は、セグメントレベルであった。次いで、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】
[00103]上記の分析は、セグメントレベルで実行され、チャンクレベルにマージされた。しかしながら、プロセスは、異なるレベルで実行されてもよい。例えば、分析は、複数のチャンクから複数のチャンクレベルをカバーするビデオの部分へ、または複数のチャンクからビデオレベルへ、候補平均ビットレートをマージするために使用され得る。
【0069】
[00104]以下は、候補平均ビットレートを除去する一例について説明する。図18は、いくつかの実施形態による候補平均ビットレートを除去するために最小ギャップが使用される一例を示す。例えば、1802において、候補平均ビットレートCおよびDは、閾値min_gapなどの閾値を満たす同様の品質レベルを有する。この場合、この候補平均ビットレートは候補平均ビットレートDに隣接し、候補平均ビットレートCは候補平均ビットレートDよりも大きいビットレートを有するが、最小の品質の利点を有するので、CABリスト最適化システム1204は、候補平均ビットレートCなど、候補平均ビットレートのうちの1つが除去されるべきであると決定する。この場合、CABリスト最適化システム1204は、隣接する候補平均ビットレートについての品質の値との間の差を閾値min_gapと比較し、閾値が満たされたとき、候補平均ビットレートのうちの1つを除去し得る。
【0070】
[00105]品質割り振りの別の部分は、品質のギャップに基づいて候補平均ビットレートを追加することを含む。図19は、いくつかの実施形態による候補平均ビットレートを追加することが有利であり得る場合を示すグラフ1900を示す。CABリスト最適化システム1204は、候補平均ビットレートを追加するときを決定するために、1902における最大ギャップmax_gapなどの閾値を使用し得る。例えば、グラフ1900における候補平均ビットレートCとDとの間など、閾値max_gapよりも大きい品質値のギャップが隣接する候補平均ビットレート間にある場合、CABリスト最適化システム1204は、レート歪み曲線上の候補平均ビットレートCとDとの間に候補平均ビットレートを追加し得る。
【0071】
[00106]異なる方法が、新しい候補平均ビットレートがいくつ追加されるべきかを決定するために使用されてもよい。CABリスト最適化システム1204は、2つの候補が比に基づく閾値によって分離されるとき、「i」個の新しい候補を追加し得る。例えば、各ギャップが等しいことを意味する1:1、各ギャップが1.5であることを意味する1:1.5、または他の比など、異なる比が、追加された候補間のギャップを構成し得る。
【0072】
[00107]ある可能なプロセスでは、変数iはi=1に設定され、CABリスト最適化システム1204は、比に基づいてi個の新しい候補平均ビットレートを追加する。例えば、「F」と名付けられた1つの候補平均ビットレートは、点Cと点Dとの間に追加され得る。次いで、新しい隣接する候補平均ビットレート間のすべてのギャップが閾値max_gapよりも小さい場合、プロセスは終了する。しかしながら、そうでない場合、変数iの値は、「2」などで増分され、2つの新しい候補が、比に基づいて候補平均ビットレート間に追加される。例えば、2つ以上の候補平均ビットレートが、点CとFとの間、および点FとDとの間に追加され得る。次いで、プロセスは、上記で説明されたように継続する。候補平均ビットレートDとCとの間に閾値よりも大きいギャップがないように候補平均ビットレートが追加されると、候補平均ビットレートが出力される。
【0073】
[00108]上記のプロセスは、セグメントごとに決定される。次いで、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】
[00109]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】
[00110]CABリスト最適化システム1204の出力は、チャンクごとの候補平均ビットレートリストである。例えば、図3Aに記載されたようなチャンクごとの候補平均ビットレートのリストは、いくつかの実施形態によるCABリスト最適化システム1204によって出力される。
【0076】
[00111]結論
[00112]したがって、候補平均ビットレートのリストは、各セグメントにおいて見出される特性に基づいて最適化され得る。これは、チャンクのそれぞれの特性について最適化されたチャンクごとの改善された候補平均ビットレートリストを生成する。候補平均ビットレートは、各チャンクのプロファイルの選択に利用可能な符号化されたセグメントの選択の品質を改善することができる。これは、再生経験を改善することに加えて、ビデオの品質を改善することができる。
【0077】
[00113]レート歪み曲線の予測
[00114]RD予測システム1202は、ビデオについてのビットレートと品質との間の関連性の予測を生成することができる。上述されたように、関連性は、レート歪み曲線(RD曲線)と呼ばれ得る。レート歪み曲線は、異なるターゲット構成について予測され得る。例えば、適応ビットレートビデオトランスコーディングについては、高解像度ソースビデオは、複数の解像度(例えば、4K(3840x2160ピクセル)、1080p(1920x1080)、720p(1280x720)、360p(480x360)など)に変換および符号化され得る。各解像度について、RD予測システム1202は、レート歪み曲線を予測することができる。例えば、解像度が1080p、720p、および360pを含む場合、RD予測システム1202は、3つのそれぞれの解像度について異なるビットレートで3つのレート歪み曲線を生成し得る。異なる解像度における複数のレート歪み曲線は、レート歪みマップと呼ばれ得る。3つのレート歪み曲線が説明されるが、より多くのレート歪み曲線が、ビデオのために必要とされてもよい。より多くの解像度に加えて、例えば、ビデオを符号化するための設定の異なる組合せに対して新たなレート歪みマップが必要とされるように、新たなレート歪みマップを必要とする複数のターゲット構成が存在してもよい。符号器#1および符号器#2の2つの符号器タイプがある場合、RD予測システム1202は、各エンコーダについて異なるターゲット構成を生成し得る。次いで、符号器ごとに、RD予測システム1202は、合計6つのレート歪み曲線について3つのレート歪み曲線を生成し得る。
【0078】
[00115]従来、レート歪みマップは、適応ビットレートシステムのための符号化されたビットストリームを生成するための最適なトランスコーディングシステムを設計するためなど、異なるやり方で使用され得る。従来、レート歪みマップは、所与のビデオの多数の実際の符号化を介してのみ取得され得る。例えば、1つの符号化ジョブは、1つのビットレートおよび解像度のペアについて1つの品質値を生成することができる。ターゲット構成についてのレート歪み曲線を生成するために複数の符号化ジョブが各ビットレートで実行されなければならない。複数のターゲット解像度およびターゲット構成があるとき、レート歪み曲線を生成するために多数の符号化ジョブが実行されなければならない。したがって、レート歪み曲線を生成するための処理時間および計算リソースのコストはとても高い。サービスが複数のビデオをトランスコードしているとき、レート歪み曲線を生成するために必要とされる処理時間および計算リソースは、実用的でない可能性がある。
【0079】
[00116]いくつかの実施形態では、RD予測システム1202は、ビデオについての1つまたは複数のレート歪みマップを予測する。これは、ターゲット構成および解像度ごとのレート歪み曲線を生成するための実際の符号化ジョブが実行される必要がない可能性があるという点で、計算リソースの使用を改善する。さらに、予測は、実際の符号化ジョブを実行するよりも速く生成され得る。この予測は、プロキシ符号化情報を使用することなどによっても改善され得る。プロキシ符号化情報は、予測を生成するために実際の符号化からの符号化結果を使用することができる。しかしながら、プロキシ符号化情報は、ビデオの符号化時に高速プリセット設定を使用する構成などによって、予測において使用されているターゲット構成とは異なる符号化構成から収集され得る。高速プリセット設定は、入力ビデオのより小さい解像度、より少ないターゲットビットレート、間引かれたビデオフレーム等など、符号化がより高速に実行されることを可能にするための簡略化を含み得る。プロキシ符号化情報は、以下より詳細に説明される。
【0080】
[00117]システム概要
[00118]図21は、いくつかの実施形態によるRD予測システム1202の一例を示す。RD予測システム1202は、レート歪みマップのためのレート歪み曲線を生成し得る。上述のように、ビデオコンテンツは異なった特性を有し得るので、レート歪みマップは重要であり得る。例えば、一部のコンテンツは、漫画またはニュースのように符号化が簡単であり得るが、一部のコンテンツは、映画またはスポーツのように符号化が難しい場合もある。異なるコンテンツについてのレート歪み曲線は、ビデオの異なるチャンクについての異なるレート歪み曲線を示す図8において上述されたように異なり得る。また、図9は、同じセグメントについての異なる符号化構成についての異なるレート歪み曲線を示す。図10および図11は、適応ビットレートアルゴリズムのためのビットレートを選択するためにレート歪み曲線を使用することの利点を示す。上述のように、SQAシステム108は、符号化されたセグメントにおいて見出された品質を最適化するために候補平均ビットレートを動的に選択することができる。例えば、SQAシステム108は、曲線が急勾配であるビットレートで候補平均ビットレートの数を増加させ、曲線が品質をあまり変化させない候補平均ビットレートの数を減少させ、品質が冗長であり得る最低ビットレートから候補平均ビットレートを除去し、より高いビットレートで変化する品質を捕捉するために追加のビットレートを追加し、曲線の下端でビットレートを除去し、より等しい増分で異なるレベルの品質を獲得するために候補平均ビットレートをより均等に間隔をおいて配置してもよい。レート歪み曲線は、適応ビットレートアルゴリズムに使用され得るが、品質値の予測は、他の目的に使用されてもよい。いくつかの実施形態では、レート歪み曲線の予測は、異なる符号化最適化システムにおいて使用され得る。例えば、タイトルごとの符号化およびセグメントごとの符号化において、システムは、1つのビデオのタイトルレベルまたはセグメントレベルについてのレート歪み曲線を予測することができる。システムは、タイトルまたはセグメントについて、同じビットレートでより高い品質のための動的ターゲットビットレート、または同じ品質でより低いビットレートを決定することができる。符号化パラメータ最適化のために、システムは、異なるレート歪み曲線を予測するために異なる符号化パラメータを使用し得る。次いで、システムは、いくつかのビデオについて適切な符号化パラメータを選択し得る。異なるプロファイル(例えば、ビットレートおよび解像度)の適応プロファイルラダーを生成する際に、システムは、異なる解像度およびビットレートについてのレート歪み曲線を予測することができる。次いで、システムは、異なるビデオについての適応プロファイルラダーを設定するために群内のビットレートおよび解像度を最適化するためにレート歪み曲線に基づいて異なる解像度およびビットレート群を選択し得る。RD予測システム1202は、ビデオのフレームなどのビデオを受信し、レート歪みマップのためのレート歪み曲線を生成し得る。特徴抽出システム2102は、ビデオのフレームを受信することができる。次いで、特徴抽出システム2102は、ビデオの各フレームの特性に基づいて特徴のリストについての値を抽出し得る。特徴統合システム2104は、フレームレベル特徴をビデオの部分に統合することができる。例えば、上述したように、セグメントは、ビデオの6秒または複数のフレームのようなビデオの一部分であり得る。特徴統合システム2104は、フレームレベル特徴を、セグメントレベルで特徴を記述するセグメントレベル特徴に統合し得る。セグメントの開始フレームおよび終了フレームは、異なるやり方で決定され得る。例えば、セグメントを定める設定が受信されてもよく、またはセグメントは、セグメントを生成するためにビデオの特性を分析することによって動的に決定されてもよい。セグメントレベルの特徴が説明されるが、フレームレベル、チャンクレベルなど、ビデオの他の部分が使用されてもよい。
【0081】
[00119]予測ネットワーク2106は、セグメントレベル特徴およびターゲット構成を受信し得る。ターゲット構成は、異なるパラメータの組合せを含み得る。例えば、ターゲット構成のパラメータは、ターゲット開始フレーム/終了フレーム、ターゲット解像度、ターゲットビットレート、ターゲット品質指標、およびターゲット符号器を含み得る。例えば、パラメータは、ターゲット解像度(640×360、1280×720、1920×1080など)、ターゲットビットレート(500kbps、1Mbps、3Mbps、6Mbpsなど)、ターゲット画質指標(PSNR、VMAF、EPSなど)、ターゲット符号化構成(例えば、ターゲット符号器(AVC、HEVC、AV1など)、ターゲット符号化設定(高速プリセット、低速プリセットなど))を含むことができる。パラメータの異なる組合せが生成されてもよい。例えば、第1のターゲット構成は、ターゲット解像度(640×360、1280×720、1920×1080など)、ターゲットビットレート(500kbps、1Mbps、3Mbps、6Mbpsなど)、ターゲット品質指標(PSNR)、ターゲット符号化構成(例えば、ターゲット符号器(AVC))、およびターゲット符号化設定(高速プリセット)であり得る。第2のターゲット構成は、ターゲット解像度(640×360、1280×720、1920×1080など)、ターゲットビットレート(500kbps、1Mbps、3Mbps、6Mbpsなど)、ターゲット品質指標(VMAF)、ターゲット符号化構成(例えば、ターゲット符号器(HEVC)、ターゲット符号化設定(低速プリセット))である。各組合せは、ターゲット構成として列挙され得るが、可能なパラメータ設定のリストが受信され得、次いで、RD予測システム1202は、異なる組合せを生成する。第1のターゲット構成を使用して、予測ネットワーク2106は、より高速なプリセットを使用してAVC符号器のための各解像度(640×360、1280×720、1920×1080など)における複数のビットレート(500kbps、1Mbps、3Mbps、6Mbpsなど)についての品質値(PSNR)のリストを予測し得る。第2のターゲット構成を使用して、予測ネットワーク2106は、より遅いプリセットを使用してHEVC符号器のための各解像度(640×360、1280×720、1920×1080など)における複数のビットレート(500kbps、1Mbps、3Mbps、6Mbpsなど)についての品質値(VMAF)のリストを予測し得る。出力の結果は、ビットレートについての複数の品質値であり得る。RDマップ生成器2108は、品質値からレート歪み曲線を生成し、次いでレート歪み曲線からレート歪みマップを生成し得る。レート歪みマップは、1つのターゲット構成についてのものであり得る。複数のターゲット構成が処理されている場合、RD予測システム1202は、ターゲット構成ごとにレート歪みマップを生成し得る。
【0082】
[00120]次に、以下は、RD予測システム1202の異なる部分をより詳細に説明する。
【0083】
[00121]特徴抽出
[00122]特徴抽出システム2102は、ビデオのフレームについての異なる種類の特徴を抽出することができる。いくつかの実施形態では、特徴抽出システム2102は、コンピュータビジョン特徴、空間領域特徴、時間領域特徴、周波数領域特徴、およびプロキシ符号化特徴に関連付けられた特徴を抽出することができるが、他の特徴も使用され得る。図22は、いくつかの実施形態による抽出され得る特徴の一例を示す。2202において、コンピュータビジョン特徴は、フレームの視覚的特性に関する異なる特徴を含み得る。コンピュータビジョン特徴は、このフレームのいくつかの詳細な情報を記述し得る。例えば、ソーベル(Sobel)の勾配は、この値がより高い場合、このフレームが複雑であることを意味し、符号器は、このフレームを符号化するためにより多くのビットレートを使用し得る。したがって、値が低い場合、符号化ビットレートは高くなり、品質はより低くなり、その逆も同様である。例えば、ピクセル値の平均、分散、およびヒストグラム、ソーベルおよびラプラス演算の勾配、ぼけ強度、ノイズ強度などに基づいて特徴が使用されてもよい。値は、ピクセルレベル、ブロックレベル、フレームレベルなどで組織化されてもよい。
【0084】
[00123]2204において、空間領域特徴は、フレームのコンテンツの類似性および/または冗長性などのコンテンツの差を分析することができる。空間領域特徴は、フレームの類似性および冗長性を記述することができ、したがって、フレーム内のコンテンツが多くの冗長性および類似性を有する場合、符号化ビットレートはより低くなり得、品質はより高くなり得、その逆も同様である。特徴は、フレームのコンテンツの類似性または冗長性を決定するために、絶対差の和(SAD)を計算するためのイントラ予測に基づき得る。特徴は、4×4、8×8、16×16などの異なるブロックサイズなどによって、異なって組織化され得る。
【0085】
[00124]2206において、時間領域特徴は、複数のフレームに関連付けられた特徴に基づき得る。時間領域特徴は、隣接するフレームの動きの速度および動きの複雑さを記述することができ、したがって、これらのフレーム内のコンテンツが遅く、かつ予測可能に動く場合、符号化ビットレートはより低くなり得、品質はより高くなり得、その逆も同様である。例えば、時間領域特徴は、隣接するフレームの類似性、動きの速度、および動きの複雑さに基づき得る。特徴抽出システム2102は、隣接するフレームの類似性、動き、速度、または動きの複雑さを伝達するために、動きベクトル(MV)と、フレーム内のオブジェクト間の絶対差の和とを計算するためにインター予測を使用することができる。特徴は、異なるブロックサイズによっても組織化され得る。
【0086】
[00125]2208において、周波数領域特徴は、フレームの周波数領域情報に基づき得る。周波数領域特徴は、このフレームを見るための別のビューであるフレームの周波数領域情報を記述し得る。フレームが周波数領域において複雑である場合、符号器は、このフレームを符号化するためにより多くのビットレートを使用することができ、したがって、符号化ビットレートはより高くなり得るとともに、品質はより低くなり得、その逆も同様である。特徴抽出システム2102は、離散コサイン変換(DCT)/離散サイン変換(DST)の変換係数などの異なる周波数領域情報を使用することができる。特徴は、ブロックサイズによっても組織化され得る。
【0087】
[00126]2210において、プロキシ符号化特徴は、ビデオの実際の符号化に基づくことができる。プロキシ符号化特徴は、符号化結果との関連性を有し、ビデオの符号化結果の予測と正の相関を有する。実際の符号化を実行するために使用される構成は、予測のために処理されているターゲット構成とは異なり得る。いくつかの実施形態において、プロキシ符号化特徴は、ターゲット構成と比較してより低いコンピューティングリソース消費符号化に基づいて決定されてよい。他の実施形態では、エンコーダのより高速なプリセットが、プロキシ符号化を生成するために使用され得る。符号器は、異なる量のコンピューティングリソースを使用する高速、低速、中間などの異なるプリセットを有し得る(例えば、低速は、より多くのコンピューティングリソースを使用し得るが、より高品質の符号化を生成し得る)。また、プロキシ符号化は、入力ビデオのより小さい解像度、より少ないターゲットビットレート、間引かれたビデオフレーム(例えば、より少ないビデオフレーム)、異なる符号器など、他の簡略化を有し得る。したがって、プロキシ符号化構成は、ターゲット構成の正確なコピーではあり得ないが、より速く実行されるように設計され得る。プロキシ符号化機能は、複数のターゲット構成にも使用され得る。いくつかの実施形態では、1つのプロキシ符号化は、複数のターゲット構成の予測において実行および使用される。プロキシ符号化結果は、プロキシ符号化特徴を生成するために使用され得る。プロキシ符号化特徴のいくつかの例は、実際のプロキシ符号化から生じるフレームタイプ量子化パラメータ、品質、ビットレートなどを含む。
【0088】
[00127]特徴統合
[00128]特徴統合システム2104は、フレームレベル特徴をセグメントレベル特徴に統合することができる。上述のように、セグメントレベル特徴が処理され得るが、このステップは、フレームレベル特徴が予測に使用されている場合には必要でない場合がある。図23は、いくつかの実施形態によるビデオのフレームの一例を示す。2302-i~2302-i+1、2302-i+jにおいて、フレーム_i、フレーム_i+1、フレーム_i+jを含むセグメントXが示されている。各フレームは、フレームのフレーム_iについての特徴の特徴_0_i、特徴_1_i、特徴_2_i、特徴_M_iなどの2304におけるセグメント中の複数の特徴に関連付けられ得る。
【0089】
[00129]特徴統合システム2104は、特徴_0_出力、特徴_1_出力、特徴_2_出力、特徴_M_出力の2306におけるセグメントレベル特徴を生成するためにそれぞれの特徴を統合し得る。異なる方法が、セグメントレベル特徴を決定するために使用されてもよい。いくつかの実施形態では、各特徴の平均値が、セグメントの各フレームから計算され得る。例えば、特徴統合システム2104は、各フレームについて特徴_0の特徴値の平均値を生成し得る。他の特徴についても平均値が同様に計算される。
【0090】
[00130]別の例では、平均が計算される前に、特徴統合システム2104は、閾値を満たすフレームのうちのいくつかからいくつかの値を除去することができる。いくつかの実施形態では、フレームからの一部の外れ値が除去され得る。例えば、あるフレームは、他のフレームからの特徴とは大きく異なり得る(例えば、閾値を上回る)特徴の値を有する場合があり、セグメントのフレームの大部分を表さないようにセグメントレベル値を歪め得る。外れ値を計算する異なる方法が、使用されてもよい。いくつかの実施形態では、セグメントのフレームについての特徴の平均が計算されてもよく、特徴の標準誤差が計算される。平均値を標準誤差と比較するスコアが、特徴のスコアが外れ値であるかどうかを決定するために使用され得る。スコアが閾値を満たす場合、その特徴は除去されてもよい。閾値が満たされない場合、スコアは除去されない場合がある。次いで、特徴統合システム2104は、除去されていない特徴のリストに基づいて、特徴の平均値を計算し得る。
【0091】
[00131]フレームレベルでの特徴をセグメントレベルに統合する結果は、特徴ごとの平均値であってもよい。平均値が説明されるが、フレームからの中央値を使用するなど、特徴を統合または組み合わせる他の方法が使用されてもよい。セグメントレベルで特徴を統合した後、レート歪みマップの予測が生成され得る。
【0092】
[00132]予測
[00133]予測ネットワーク2106は、ターゲット構成に基づいて複数のビットレートについての品質値のリストを予測することができる。予測ネットワーク2106は、予測される品質値のリストを出力するために、特徴統合システム2104からのセグメントレベル特徴とターゲット構成とを使用することができる。予測ネットワーク2106は、予測を実行するようにトレーニングされ得る1つまたは複数のモデルを使用することができる。いくつかの実施形態では、予測ネットワーク2106は、ターゲット解像度のビットレートごとに品質値を予測してもよい。例えば、ターゲット解像度640×360について、予測ネットワーク2106は、ターゲットビットレート500Kbps、1Mbps、3Mbps、6Mbpsなどについての品質値を予測する。次いで、ターゲット解像度1280×720について、予測ネットワーク2106は、ターゲットビットレート500Kbps、1Mbps、3Mbps、6Mbpsなどについての品質値を予測する。複数のターゲット構成が使用される場合、ターゲット構成ごとに以下のプロセスが実行され得る。
【0093】
[00134]図24は、いくつかの実施形態による予測方法の簡略化されたフローチャート2400を示す。以下のプロセスは、ビデオのセグメントごとに実行され得る。すなわち、レート歪みマップについての品質値は、セグメントごとに生成される。2402において、RD予測システム1202は、ターゲット構成に基づいてモデルを構成する。例えば、各ターゲット構成は、品質値を予測することができるモデルに関連付けられてもよい。他の実施形態では、単一のモデルが、複数のターゲット構成についての品質値を予測してもよい。教師ありトレーニングおよび教師なしトレーニングなどの異なる方法が、モデルを構成するために使用されてもよい。
【0094】
[00135]モデルを構成した後、品質値が予測され得る。品質値を生成する異なる方法が、少なくとも図26および図27において説明されるが、他の方法が使用されてもよい。2404において、RD予測システム1202は、最後のターゲット解像度が処理されたか決定する。例えば、ターゲット解像度は、640×360、1280×720、1920×1080などを含み得る。最後のターゲット解像度が処理された場合、プロセスは終了し得る。最後のターゲット解像度が処理されていない場合、2406において、RD予測システム1202は、最後のビットレートが処理されたかどうかを決定する。上述のように、予測ネットワーク2106は、ターゲット解像度ごとに複数のビットレートについての品質値を予測してもよい。
【0095】
[00136]最後のビットレートが処理されていない場合、2408において、RD予測システム1202は、予測ネットワーク2106のモデルを使用して、現在のターゲット解像度と現在のビットレートの品質値とを予測する。予測は、セグメントについての特徴およびターゲット構成を受信し、ビットレートについての品質値を出力することができる。例えば、予測は、640×360のターゲット解像度および500kbpsのターゲットビットレートについての品質値であり得る。
【0096】
[00137]2410において、RD予測システム1202は、解像度の次のターゲットビットレートに移る。例えば、500kbpsのビットレートの後、次のターゲットビットレートは1Mbpsであってもよい。次いで、プロセスは2406に戻る。ビットレートごとに、予測ネットワーク2106は、品質値を予測する。例えば、他のビットレートは、3Mbps、6Mbpsなどであり得る。最後のビットレートが予測されたとき、プロセスは、2412に移り、次のターゲット解像度が処理される。例えば、別のターゲット解像度は、1280×720であってもよい。次いで、プロセスは2404に戻り、RD予測システム1202は、最後のターゲット解像度が処理されたかどうかを決定する。そうでない場合、プロセスは、新たなターゲット解像度についてのビットレートを処理し続ける。上述されたものと同じビットレートが使用されてもよい。1920×1080のターゲット解像度が処理された後など、すべてのターゲット解像度が処理されたとき、プロセスは終了する。
【0097】
[00138]予測は、レート歪み曲線の代わりに、解像度およびビットレートのペアごとの品質値を予測し得る。レート歪み曲線を生成するためにすべての詳細を予測することは、曲線のいくつかの部分がより速く増加し、いくつかの部分がより遅く増加する、曲線の部分の傾斜が異なる、曲線の形状が完全に異なるなど、多くの詳細な情報を予測することを必要とし得るので、予測は、曲線を予測することと比較して改善され得る。したがって、レート歪み曲線を直接予測することは困難であり得る。しかしながら、RD予測システム1202は、レート歪み曲線上の点を生成するためにより詳細な情報を使用することができ、次いで、これは、曲線を推定するために使用され得る。しかしながら、予測は、単一の入力に基づいてレート歪み曲線の品質測定値を予測し得る。
【0098】
[00139]図25は、いくつかの実施形態による、1つのターゲット解像度についてのビットレートの品質値を列挙するグラフ2500を示す。グラフ2500は、たった1つの解像度における単一のターゲット構成についての品質値のリストを与える。X軸はビットレートであり、Y軸は品質であり得る。グラフ2500中の各点は、予測ネットワーク2106によって出力される品質値を表し得る。例えば、2502における点は、第1のビットレートについての品質値予測であり、2504における点は、第2のビットレートについての品質値である。複数の解像度は、図25に示されるようにそれぞれの関連付けられた点を有することができる。
【0099】
[00140]2408に記載されているような現在のターゲット解像度およびビットレートの品質値の予測は、異なるやり方で実行されてもよい。以下は、直接予測モードと間接予測モードの2つの方法を説明する。
【0100】
[00141]直接予測モード
[00142]図26は、いくつかの実施形態による直接予測モードの一例を示す。2602において、セグメントxの特徴が、予測ネットワーク2106に入力される。さらに、ターゲット構成が、予測ネットワーク2106に入力される。使用される特徴は、コンピュータビジョン特徴、空間領域特徴、時間領域特徴、周波数領域特徴、および/またはプロキシ符号化特徴の図22に記載された特徴を含み得る。予測ネットワーク2106は、特徴入力に基づいて予測を生成するようにトレーニングされ得る。例えば、特徴についての値に基づいて、予測ネットワーク2106は、品質値を生成することができる。プロキシ符号化特徴は、他の特徴とともに入力として使用され、予測ネットワーク2106は、プロキシ符号化特徴および他の特徴の値に基づいて品質値を出力するようにトレーニングされる。出力された品質値は、ターゲット構成についてのものである。以下により詳細に説明されるように、プロキシ符号化特徴は、プロキシ符号化構成についての品質値を予測することによって、間接予測モードにおいて異なるように使用され得る。
【0101】
[00143]予測ネットワーク2106は、ビットレートごとに予測品質値を出力する。いくつかの実施形態では、予測は、ビットレートおよび解像度のペアごとに実行され得る。予測を決定するためにプロキシ符号化特徴を使用することは、品質値を改善し得る。例えば、いくつかの実際の符号化結果を使用することは、実際の符号化に基づかない特徴を単に使用することよりも良好な情報を提供し得る。プロキシ符号化結果は、レート歪み曲線の正確な予測との強い相関関係を有し得る。実際の符号化からのいくつかの点を有することによって、レート歪み曲線の生成形状が与えられ得、実際の符号化結果からガイダンスを与えられた場合、それらの実際の点に基づく予測が改善され得る。図25では、8つの品質値が存在した。予測ネットワーク2106は、1つの解像度について8つの異なるビットレートを使用して8つの異なる品質値を生成するように実行され得る。
【0102】
[00144]間接予測モード
[00145]間接予測モードは、品質オフセット予測を使用して品質値を予測することができる。品質オフセットは、プロキシ符号化予測とターゲット符号化予測との間の差に基づき得る。プロキシ符号化予測は、プロキシ符号化構成に基づく品質値であり得る。ターゲット符号化予測は、プロキシ符号化構成とターゲット構成との間の差に基づくターゲット品質値であり得る。例えば、プロキシ符号化構成は高速設定を含み得るが、ターゲット構成は通常設定を含み得る。プロセスは、プロキシ符号化構成とターゲット構成との間の差に基づいてプロキシ符号化予測を調整するためのオフセットを決定し得る。ターゲット符号化予測は、図26で生成された品質値と同様のターゲット構成についての所望の品質値であり得る。
【0103】
[00146]図27は、いくつかの実施形態による間接予測モードシステムの一例を示す。間接予測モードでは、予測ネットワーク2106およびプロキシ符号化品質計算エンジン2702の2つのサブモジュールが使用され得る。
【0104】
[00147]セグメントx2602の特徴は、予測ネットワーク2106およびプロキシ符号化品質計算エンジン2702で受信される。プロキシ符号化品質計算エンジン2702は、現在のターゲット解像度と現在のターゲットビットレートとに基づいてプロキシ品質値を計算するためにプロキシ符号化構成を使用することができる。いくつかの実施形態では、プロキシ符号化特徴を生成するためにビデオの実際の符号化が使用され得る。符号器は、セグメントxのフレームを受信し、セグメントxを符号化し、符号化されたビットストリームを出力することができる。プロキシ符号化特徴は、符号化されたビットストリームの特性によって決定され得る。プロキシ符号化品質計算エンジン2702は、プロキシ符号化点におけるプロキシ品質値を生成し得る。
【0105】
[00148]図28は、いくつかの実施形態によるプロキシ品質値およびターゲット品質値のグラフ2800の一例を示す。線2808はプロキシ品質値を表し、線2810はターゲット品質値を表す。プロキシ符号化値は、品質値がプロキシ符号化特徴から予測される点にあり、2806-1、2806-2、および2806-3に示される。符号器は、プロキシ符号化点においてプロキシ符号化結果を生成するために、高速符号化プリセットなどの設定を使用し得る。次いで、予測ネットワーク2106は、対応するプロキシ品質値を生成するために、プロキシ符号化からの特徴を使用することができる。しかしながら、プロキシ符号化点は、ターゲット品質値についての必要な点を生成するのに十分な点ではない場合がある。したがって、プロキシ符号化品質計算エンジン2702は、ターゲット符号化値を生成するために追加のプロキシ符号化値を生成し得る。
【0106】
[00149]追加のプロキシ符号化値を生成するために、プロキシ符号化品質計算エンジン2702は、他のビットレートで推定プロキシ符号化値を生成し得る。例えば、推定プロキシ品質値2802は、実際のプロキシ品質値に基づいて生成される。いくつかの例では、補間またはフィッティングアルゴリズムが、別のビットレートについて2802において推定プロキシ品質値を推定し得る。図示のように、推定プロキシ品質値2802は、プロキシ品質値2806-2と2806-3との間のビットレートで推定プロキシ品質値2802の値を推定することなどによって、推定プロキシ品質値2802の値を決定するためにプロキシ品質値2806-2および2806-3の値を使用し得る。計算エンジン2702は、同様に他のプロキシ品質値を生成してもよい。プロキシ符号化品質計算エンジン2702は、プロキシ符号化点品質値をコンバイナ2704に出力する。
【0107】
[00150]また、プロキシ符号化品質計算に加えて、予測ネットワーク2106は、ビットレートについての品質オフセットを生成するように構成される。例えば、予測ネットワーク2106は、セグメントについての入力された特徴に基づいて品質オフセットを決定するようにトレーニングされ得る。品質オフセットは、ターゲット構成とプロキシ符号化構成との間の差の予測であり得る。例えば、品質オフセットは、プロキシ符号化構成とターゲット構成との間の差に基づいて推定されるプロキシ品質値とターゲット品質値との間の差を推定し得る。予測ネットワークは、ターゲット品質値の代わりにオフセットを予測するために、異なってトレーニングされ得る。
【0108】
[00151]図28では、予測ネットワーク2106は、点2802とターゲット符号化点との間の差であるオフセットを予測することができる。例えば、予測ネットワーク2106は、2802において、プロキシ品質値に関連付けられたターゲットビットレートについての品質値のオフセットを予測することができる。次いで、予測ネットワーク2106は、プロキシ品質値に関連付けられたビットレートごとのオフセットをコンバイナ2704に出力する。
【0109】
[00152]コンバイナ2704は、プロキシ品質値と品質オフセットとを組み合わせることができる。例えば、プロキシ品質値ごとに、それぞれの品質オフセットが受信され得る。次いで、コンバイナ2704は、図28の2804に示されるように、ターゲット品質値を生成するために、プロキシ品質値を関連付けられた品質オフセット値と結合し得る。いくつかの実施形態では、コンバイナ2704は、ターゲット品質値を生成するために品質オフセットをそれぞれのプロキシ品質値に加算し得る。オフセットを乗数として使用すること、オフセットを減算することなど、オフセットを組み合わせる他の方法も理解され得る。次いで、コンバイナ2704は、ターゲット構成についてのターゲット品質値を出力する。上記のプロセスは、ターゲット品質値を生成するために、ターゲット構成ごとに実行されてもよい。
【0110】
[00153]直接予測モードおよび間接予測モードは、品質値を生成するためにモードのうちの一方のみが実行されるなど、二者択一的に実行されてもよい。例えば、間接モードは、ビデオの特定の特性に遭遇したときにより正確であるように決定され得、直接モードは、特定の特性に遭遇したときにより正確であり得る。いくつかの例では、直接モードは、漫画などの単純なコンテンツが符号化されているとき、より正確であり得る。しかしながら、映画がより複雑なコンテンツで符号化されているとき、間接モードはより正確であり得る。間接モードは、プロキシ符号化が品質値を生成するために実際の符号化を使用し得るので、より正確であり得る。そのとき、ターゲット品質値の予測は、実際の符号化からのいくつかの品質値に基づくことができ、品質値のストレートな予測は、コンテンツの複雑さのために困難であり得る。
【0111】
[00154]他の実施形態では、直接予測品質値および間接予測品質値は、組み合わせて使用され得る。図29は、いくつかの実施形態による、直接品質値と間接品質値とを使用する一例を示す。いくつかの実施形態では、交差検証エンジン2902は、検証された品質値を出力するために、直接品質値および間接品質値を使用することができる。検証された品質値はビットレートについての直接品質値と間接品質値との組合せに基づき得る。例えば、2つの値の平均が使用されてもよい。他の実施形態では、交差検証エンジン2902は、出力するために直接品質値または間接品質値のうちの1つを選択し得る。例えば、直接予測測定が選択されてもよく、または間接予測測定が選択されてもよい。
【0112】
[00155]他の例では、交差検証エンジン2902は、ビットレートについての直接品質値と間接品質値とを比較などして、測定値を検証することができる。直接品質値と間接品質値との間の差が、互いの閾値内にあるなど閾値を満たす場合、交差検証エンジン2902は、品質値を検証することができる。そうでない場合、交差検証エンジン2902は、品質値を検証することができず、エラーを出力することができる。また、交差検証エンジン2902は、ビットレート範囲に基づいて、直接モード結果と間接モード結果とをマージし得る。例えば、交差検証エンジン2902は、異なる予測モードは異なるビットレート範囲において異なる利点を有し得るので、より低いビットレート範囲において品質値を予測するために直接モードを使用し、より高いビットレート範囲において品質値を予測するために間接モードを使用することができる。さらに、交差検証エンジン2902は、値を平均するときなど、値を一緒にマージするときに最大値または最小値を使用することができる。
【0113】
[00156]RDマップ
[00157]複数の解像度およびビットレートについてのターゲット品質値の生成後、RDマップ生成器2108は、RDマップを生成する。RDマップ生成器2108は、生成されている品質値をリンクするためにフィッティングまたは補間方法を使用することができる。RDマップ生成器2108は、異なる解像度についてレート歪み曲線を生成し得る。
【0114】
[00158]図30Aは、いくつかの実施形態による、単一の解像度についてのレート歪み曲線のグラフ3000を示す。品質値の点が示されており、RDマップ生成器2108は、曲線3004として点をリンクする方法を使用する。異なるフィッティング方法または補間方法が、品質値に基づいて曲線を描くために使用され得る。
【0115】
[00159]図30Bは、いくつかの実施形態によるRDマップを示すグラフ3002を示す。RDマップは、306-1、306-2、および306-3で、それぞれ、1920×1080、1280×720、および640×360の3つの解像度についてのレート歪み曲線を含み得る。
【0116】
[00160]結論
[00161]したがって、レート歪み曲線およびレート歪みマップは、ターゲット構成を使用して各レート歪み曲線を実際に符号化することなく予測され得る。これは、計算リソースおよび時間を節約する。また、レート歪み曲線は、直接モードおよび間接モードを使用してより正確に予測され得る。
【0117】
[00162]システム
[00163]本明細書に開示される特徴および態様は、図31に示されるように、1つまたは複数の通信ネットワークを介して複数のクライアントデバイスと通信するビデオストリーミングシステム3100と併せて実施され得る。ビデオストリーミングシステム3100の態様は、本開示に従って準備されたコンテンツの配給および配信を可能にするためのアプリケーションの一例を与えるように説明されるのに過ぎない。本技術は、ストリーミングビデオアプリケーションに限定されず、他のアプリケーションおよび配信機構に適合され得ることを理解されたい。
【0118】
[00164]一実施形態では、メディアプログラムプロバイダは、メディアプログラムのライブラリを含んでもよい。例えば、メディアプログラムは、サイト(例えば、ウェブサイト)、アプリケーション、またはブラウザを通じて集約および提供されてもよい。ユーザは、メディアプログラムプロバイダのサイトまたはアプリケーションにアクセスし、メディアプログラムを要求することができる。ユーザは、メディアプログラムプロバイダによって提供されるメディアプログラムのみを要求することに限定され得る。
【0119】
[00165]システム3100において、ビデオデータは、ビデオコンテンツサーバ3102への入力として使用するために、1つまたは複数のソース、例えば、ビデオソース3110から取得され得る。入力ビデオデータは、任意の適切なデジタルフォーマット、例えば、ムービングピクチャーエクスパーツグループ(MPEG)-1、MPEG-2、MPEG-4、VC-1、H.264/高度ビデオコーディング(AVC)、高効率ビデオコーディング(HEVC)、または他のフォーマットの生または編集されたフレームベースのビデオデータを備え得る。代替として、ビデオは、非デジタルフォーマットで提供され、スキャナまたはトランスコーダを使用してデジタルフォーマットに変換され得る。入力ビデオデータは、例えば、テレビエピソード、動画、および消費者に関心のある主要コンテンツとして生成される他のコンテンツなどの様々なタイプのビデオクリップまたは番組を含むことができる。ビデオデータは、音声も含んでもよく、または音声のみが使用されてもよい。
【0120】
[00166]ビデオストリーミングシステム3100は、1つまたは複数のコンピュータにわたって分散された1つまたは複数のコンピュータサーバまたはモジュール3102、3104、および3107を含み得る。各サーバ3102、3104、3107は、1つまたは複数のデータストア3109、例えば、データベース、インデックス、ファイル、または他のデータ構造を含んでもよく、またはそれらに動作可能に結合されてもよい。ビデオコンテンツサーバ3102は、様々なビデオセグメントのデータストア(図示せず)にアクセスし得る。ビデオコンテンツサーバ3102は、クライアントデバイスと通信するユーザインターフェースコントローラによって指示されるようにビデオセグメントを供給することができる。本明細書で使用されるとき、ビデオセグメントは、テレビエピソード、動画、記録されたライブパフォーマンス、または他のビデオコンテンツを見るためにストリーミングビデオセッションにおいて使用され得るようなフレームベースのビデオデータの明確な部分を指す。
【0121】
[00167]いくつかの実施形態では、ビデオ広告サーバ3104は、特定の広告主またはメッセージのための広告として構成された比較的短いビデオ(例えば、10秒、30秒、または60秒のビデオ広告)のデータストアにアクセスし得る。広告は、何らかの種類の支払いと引き換えに広告主に提供されてもよく、またはシステム3100のための宣伝メッセージ、公共サービスメッセージ、もしくは何らかの他の情報を含んでもよい。ビデオ広告サーバ3104は、ユーザインターフェースコントローラ(図示せず)によって指示されるようにビデオ広告セグメントを供給してもよい。
【0122】
[00168]ビデオストリーミングシステム3100は、事前分析最適化プロセス110を含むこともできる。
【0123】
[00169]ビデオストリーミングシステム3100は、ビデオコンテンツおよびビデオ広告をストリーミングビデオセグメントに統合する統合およびストリーミングコンポーネント3107をさらに含んでもよい。例えば、ストリーミングコンポーネント3107は、コンテンツサーバまたはストリーミングメディアサーバであってもよい。コントローラ(図示せず)は、任意の適切なアルゴリズムまたはプロセスに基づいて、ストリーミングビデオ内の広告の選択または構成を決定することができる。ビデオストリーミングシステム3100は、図31に示されていない他のモジュールまたはユニット、例えば、管理サーバ、コマースサーバ、ネットワークインフラストラクチャ、広告選択エンジンなどを含み得る。
【0124】
[00170]ビデオストリーミングシステム3100は、データ通信ネットワーク3112に接続してもよい。データ通信ネットワーク3112は、ローカルエリアネットワーク(LAN)、広域通信網(WAN)、例えば、インターネット、電話ネットワーク、ワイヤレスネットワーク3114(例えば、ワイヤレスセルラー電気通信ネットワーク(WCS))、あるいはこれらのネットワークまたは類似のネットワークのいくつかの組合せを含み得る。
【0125】
[00171]1つまたは複数のクライアントデバイス3120は、データ通信ネットワーク3112、ワイヤレスネットワーク3114、または別のネットワークを介して、ビデオストリーミングシステム3100と通信することができる。そのようなクライアントデバイスは、例えば、LANのためのルータ3118を介して、ワイヤレスネットワーク3114のための基地局3117を介して、または何らかの他の接続を介して、1つまたは複数のラップトップコンピュータ3120-1、デスクトップコンピュータ3120-2、「スマート」モバイルフォン3120-3、タブレットデバイス3120-4、ネットワーク対応テレビ3120-5、またはそれらの組合せを含み得る。動作中、そのようなクライアントデバイス3120は、ユーザ入力デバイスから受信されたユーザ入力または他の入力に応答して、システム3100にデータまたは命令を送信および受信し得る。これに応答して、システム3100は、メディア番組の選択に応答して、データストア3109からのビデオセグメントおよびメタデータをクライアントデバイス3120に供給することができる。クライアントデバイス3120は、表示画面、プロジェクタ、または他のビデオ出力デバイスを使用して、メディアプレーヤ内のストリーミングビデオセグメントからビデオコンテンツを出力し、ビデオコンテンツと対話するためのユーザ入力を受信することができる。
【0126】
[00172]オーディオビデオデータの配信は、ストリーミングコンポーネント3107からリモートクライアントデバイスへ、コンピュータネットワーク、電気通信ネットワーク、およびそのようなネットワークの組合せを介して、様々な方法、例えばストリーミングを使用して実施され得る。ストリーミングでは、コンテンツサーバは、クライアントデバイス上で少なくとも部分的に動作するメディアプレーヤコンポーネントにオーディオビデオデータを連続的にストリーミングし、メディアプレーヤコンポーネントは、サーバからストリーミングデータを受信するのと同時にオーディオビデオデータを再生することができる。ストリーミングについて説明するが、他の配信方法を使用することもできる。メディアプレーヤコンポーネントは、コンテンツプロバイダからデータの最初の部分を受信した直後にビデオデータの再生を開始することができる。従来のストリーミング技術は、データのストリームをエンドユーザのセットに配信する単一のプロバイダを使用する。単一のストリームを多数の視聴者に配信するためには、高い帯域幅および処理能力が必要とされる場合があり、プロバイダの必要な帯域幅は、エンドユーザの数が増加するにつれて増加する場合がある。
【0127】
[00173]ストリーミングメディアは、オンデマンドまたはライブで配信され得る。ストリーミングは、ファイル内の任意の点での即時再生を可能にする。エンドユーザは、メディアファイルをスキップして、再生を開始するか、またはメディアファイル内の任意の点に再生を変更することができる。したがって、エンドユーザは、ファイルが徐々にダウンロードされるのを待つ必要がない。通常、ストリーミングメディアは、高帯域幅能力を有する少数の専用サーバから、ビデオファイルの要求を受け入れる専用デバイスを介して配信され、それらのファイルのフォーマット、帯域幅、および構造に関する情報を用いて、ビデオを再生するのに必要なデータ量だけを、ビデオを再生するのに必要な速度で配信する。ストリーミングメディアサーバは、宛先クライアント上のメディアプレーヤの伝送帯域幅および能力を考慮することもできる。ストリーミングコンポーネント3107は、ビデオが再生されるときに変化するネットワーク状態に適応するために、制御メッセージおよびデータメッセージを使用してクライアントデバイス3120と通信し得る。これらの制御メッセージは、クライアントにおいてファイルの特定の部分への早送り、早戻し、一時停止、またはシークなどの制御機能を可能にするためのコマンドを含むことができる。
【0128】
[00174]ストリーミングコンポーネント3107は、必要なときにのみ、必要とされるレートでビデオデータを送信するので、サービスされるストリームの数に対する正確な制御が維持され得る。視聴者は、より低いデータレートの伝送媒体を介して高いデータレートのビデオを視聴することができない。しかしながら、ストリーミングメディアサーバは、(1)ユーザにビデオファイルへのランダムアクセスを提供し、(2)誰がどのビデオ番組を視聴しているか、およびどれくらい長く視聴されているかの監視を可能にし、(3)視聴体験をサポートするために必要とされるデータ量のみが伝送されるため、伝送帯域幅をより効率的に使用し、(4)ビデオファイルは、視聴者のコンピュータに記憶されず、メディアプレーヤによって破棄され、したがって、コンテンツに対するさらなる制御を可能にする。
【0129】
[00175]ストリーミングコンポーネント3107は、ハイパーテキスト転送プロトコル(HTTP)およびリアルタイムメッセージングプロトコル(RTMP)などのTCPベースのプロトコルを使用し得る。ストリーミングコンポーネント3107は、ライブウェブキャストを配信することもでき、マルチキャストすることができ、これにより、2つ以上のクライアントが単一のストリームに同調することが可能になり、したがって、帯域幅が節約される。ストリーミングメディアプレーヤは、メディアプログラムの任意の点へのランダムアクセスを提供するために、ビデオ全体をバッファリングすることに依存しない場合がある。その代わりに、これは、メディアプレーヤからストリーミングメディアサーバに送信される制御メッセージを使用して達成される。ストリーミングに使用される他のプロトコルは、HTTPライブストリーミング(HLS)またはHTTP上の動的適応ストリーミング(DASH)である。HLSおよびDASHプロトコルは、通常は1つまたは複数のコンテンツ配信ネットワーク(CDN)から様々なビットレートで利用可能にされる小さいセグメントのプレイリストを介してHTTPを介してビデオを配信する。これにより、メディアプレーヤは、セグメントごとにビットレートとコンテンツソースの両方を切り替えることができる。この切り替えは、ビデオの再生中に発生する可能性のあるネットワーク帯域幅の変動およびインフラストラクチャの障害を補償するのに役立つ。
【0130】
[00176]ストリーミングによるビデオコンテンツの配信は、様々なモデルの下で達成され得る。1つのモデルでは、ユーザは、ビデオ番組の視聴に対して支払いを行い、例えば、メディア番組のライブラリまたは制限されたメディア番組の一部へのアクセスに対して料金を支払い、またはペイパービューサービスを使用する。放送テレビによってその開始直後に広く採用されている別のモデルでは、スポンサーは、番組の提示中またはそれに隣接して広告を提示する権利と引き換えに、メディア番組の提示に対して支払いを行う。いくつかのモデルでは、広告はビデオ番組内の「広告スロット」「広告ブレイク」と呼ばれることがある所定の時間に挿入される。ストリーミングビデオでは、メディアプレーヤは、クライアントデバイスが、指定された広告スロット中に所定の広告を再生することもなくビデオを再生することができないように構成され得る。
【0131】
[00177]図32を参照すると、ビデオコンテンツおよび広告を視聴するための装置3200の概略図が示されている。選択された実施形態では、装置3200は、プロセッサメモリ3204に動作可能に結合されたプロセッサ(CPU)3202を含むことができ、プロセッサメモリは、プロセッサ3202による実行のためのバイナリコード化された機能モジュールを保持する。そのような機能モジュールは、入力/出力およびメモリアクセスなどのシステム機能を処理するためのオペレーティングシステム3206、ウェブページを表示するためのブラウザ3208、およびビデオを再生するためのメディアプレーヤ3210を含み得る。メモリ3204は、図32に示されていない追加のモジュール、例えば、本明細書の他の箇所で説明される他の動作を実行するためのモジュールを保持し得る。
【0132】
[00178]バス3214または他の通信構成要素は、装置3200内の情報の通信をサポートし得る。プロセッサ3202は、特定のタスクを定義する機械可読ソフトウェアコードを実行することによって、本明細書に開示される特徴および態様に従って特定のタスクを実行するように構成された、または動作可能な、専用または専用マイクロプロセッサであり得る。プロセッサメモリ3204(例えば、ランダムアクセスメモリ(RAM)または他の動的記憶デバイス)は、バス3214に、またはプロセッサ3202に直接接続され、プロセッサ3202によって実行される情報および命令を記憶し得る。メモリ3204は、そのような命令の実行中に一時変数または他の中間情報を記憶することもできる。
【0133】
[00179]記憶装置3224内のコンピュータ可読媒体は、バス3214に接続され、プロセッサ3202のための静的情報および命令を記憶することができ、例えば、記憶装置(CRM)3224は、装置3200の電源がオフにされたときにオペレーティングシステム3206、ブラウザ3208、およびメディアプレーヤ3210のためのモジュールを記憶することができ、装置3200の電源がオンにされたときに、そこからモジュールをプロセッサメモリ3204にロードすることができる。記憶デバイス3224は、情報、命令、またはそれらの何らかの組合せ、例えば、プロセッサ3202によって実行されたとき、本明細書で説明する方法の1つまたは複数の動作を実行するように装置3200を構成させるかまたは動作可能にさせる命令を保持する非一時的コンピュータ可読記憶媒体を含み得る。
【0134】
[00180]ネットワーク通信(comm.)インターフェース3216も、バス3214に接続され得る。ネットワーク通信インターフェース3216は、任意選択でルータ/モデム3226および有線またはワイヤレス接続3225を介して、装置3200と1つまたは複数の外部デバイス、例えばストリーミングシステム3100との間の双方向データ通信を提供またはサポートすることができる。代替として、または追加的に、装置3200は、アンテナ3229に接続された送受信機3218を含み得、それを通して、装置3200は、ワイヤレス通信システムのためのベースステーションと、またはルータ/モデム3226とワイヤレスに通信し得る。代替として、装置3200は、ローカルエリアネットワーク、バーチャル・プライベート・ネットワーク、または他のネットワークを介してビデオストリーミングシステム3100と通信し得る。別の代替形態では、装置3200は、システム3100のモジュールまたは構成要素として組み込まれ、バス3214を介して、または何らかの他のモダリティによって他の構成要素と通信し得る。
【0135】
[00181]装置3200は、(例えば、バス3214およびグラフィック処理ユニット3220を介して)ディスプレイユニット3228に接続されてもよい。ディスプレイ3228は、装置3200のオペレータに情報を表示するための任意の適切な構成を含み得る。例えば、ディスプレイ3228は、液晶ディスプレイ(LCD)、タッチスクリーンLCD(例えば、容量性ディスプレイ)、発光ダイオード(LED)ディスプレイ、プロジェクタ、または他のディスプレイ装置を含むかまたは利用して、視覚ディスプレイにおいて装置3200のユーザに情報を提示することができる。
【0136】
[00182]1つまたは複数の入力デバイス3230(例えば、英数字キーボード、マイクロフォン、キーパッド、リモートコントローラ、ゲームコントローラ、カメラ、またはカメラアレイ)が、装置3200に情報およびコマンドを通信するために、ユーザ入力ポート3232を介してバス3214に接続され得る。選択された実施形態では、入力装置3230は、カーソルの位置決めに対する制御を提供またはサポートすることができる。ポインティングデバイスとも呼ばれるそのようなカーソル制御デバイスは、マウス、トラックボール、トラックパッド、タッチスクリーン、カーソル方向キー、または物理的な動きを受信または追跡し、その動きをカーソルの動きを示す電気信号に変換するための他のデバイスとして構成され得る。カーソル制御装置は、例えばタッチセンシティブスクリーンを用いて、ディスプレイユニット3228に組み込まれてもよい。カーソル制御装置は、方向情報およびコマンド選択をプロセッサ3202に通信し、ディスプレイ3228上のカーソル移動を制御することができる。カーソル制御装置は、例えば、装置が平面または3次元空間におけるカーソル位置を指定することを可能にする2以上の自由度を有してもよい。
【0137】
[00183]いくつかの実施形態は、命令実行システム、装置、システム、または機械によって、またはそれらと関連して使用するための非一時的コンピュータ可読記憶媒体において実施され得る。コンピュータ可読記憶媒体は、いくつかの実施形態によって説明される方法を実行するようにコンピュータシステムを制御するための命令を含む。コンピュータシステムは、1つまたは複数のコンピューティングデバイスを含み得る。命令は、1つまたは複数のコンピュータプロセッサによって実行されるとき、いくつかの実施形態で説明されるものを実行するように構成され得、または動作可能であり得る。
【0138】
[00184]本明細書の説明においておよび以下の特許請求の範囲全体を通して使用されるとき、「a」、「an」、および「the」は、文脈上が明らかに別段指示しない限り、複数の言及を含む。また、本明細書の説明においておよび以下の特許請求の範囲全体を通して使用されるとき、「in」の意味は、文脈上別段明確に指示しない限り、「in」および「on」を含む。
【0139】
[00185]上記の説明は、いくつかの実施形態の態様がどのように実施され得るかの例とともに、様々な実施を示す。上記の例および実施形態は、唯一の実施形態であると見なされるべきではなく、以下の特許請求の範囲によって定められるようないくつかの実施形態の柔軟性および利点を例示するために提示される。上記の開示および以下の特許請求の範囲に基づいて、特許請求の範囲によって定められる本発明の範囲から逸脱することなく、他の構成、実施形態、実施、および均等物が採用されてもよい。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30A
図30B
図31
図32
【外国語明細書】