(57)【特許請求の範囲】
【請求項１】
適応的にデジタルビデオコンテンツをダウンロードする方法において、
前記デジタルビデオコンテンツの第１の部分に関連する第１の複雑度のレベルと、前記デジタルビデオコンテンツの第１の部分に続いて再生する前記デジタルビデオコンテンツの第２の部分に関連する第２の複雑度のレベルを、特定するシーン複雑度マップを受信するステップと、
前記デジタルビデオコンテンツに対応する複数のエンコード済みビデオストリームであって、該エンコード済みビデオストリームのそれぞれが個々のビットレートで前記デジタルビデオコンテンツをエンコードして得られたエンコード済みビデオストリームを特定するステップと、
前記複数のエンコード済みビデオストリームの中の最も低いビットレートのエンコード済みビデオストリームから前記第１の部分に対応する第１のエンコード済みデータをダウンロードしてコンテンツプレーヤ装置内に存在するコンテンツバッファーに格納するステップと、
前記デジタルビデオコンテンツの第１の部分に関連するデータをダウンロードするために利用可能であると推定される帯域幅を計算するステップと、
前記推定された利用可能な帯域幅と前記第１の複雑度のレベルと前記第２の複雑度のレベルとに基づいて、前記デジタルビデオコンテンツの第１の部分を再生するビットレートを決定するステップと、
前記決定されたビットレートが前記最も低いビットレートのエンコード済みビデオストリームの第１のビットレートを越えないように決定された際には、前記第１のエンコード済みデータを再生出力するステップと、
前記決定されたビットレートが前記最も低いビットレートのエンコード済みビデオストリームの第１のビットレートを越えて決定された際には、前記決定されたビットレートに対応する前記複数のエンコード済みビデオストリームの中から１つのエンコード済みビデオストリームを選択し、前記コンテンツプレーヤ装置に存在する前記コンテンツバッファーに前記選択されたエンコード済みビデオストリームから第２のエンコード済みデータをダウンロードし、前記第１のエンコード済みデータではなく、前記第２のエンコード済みデータを再生出力するステップと、
を備えた方法。
【請求項２】
前記推定された帯域幅と前記第１の複雑度のレベルと前記第２の複雑度のレベルとに基づいて、前記複数のエンコード済みビデオストリームのうち、前記デジタルビデオコンテンツの前記第２の部分に対応するエンコード済みデータをダウンロードするためのエンコード済みビデオストリームを選択するステップをさらに備えることを特徴とする請求項１記載の方法。
【請求項３】
前記第１の複雑度のレベルが低く、前記第２の複雑度のレベルが高い場合に、前記第１の部分に対応するエンコード済みデータをダウンロードするためのエンコード済みビデオストリームのビットレートは前記推定された帯域幅より小さくなるように設定され、前記第２の部分に対応するエンコード済みデータをダウンロードするためのエンコード済みビデオストリームのビットレートは前記推定された帯域幅より大きくなるように設定されることを特徴とする請求項２記載の方法。
【請求項４】
前記決定するステップが、さらに前記コンテンツバッファーのサイズに基づいて、前記第１の部分を再生するビットレートを決定することを特徴とする請求項１記載の方法。
【請求項５】
前記決定するステップが、さらに前記デジタルビデオコンテンツの１以上の部分のそれぞれの部分に対する品質の低下を耐えられる範囲で最大にするように、前記第１の部分を再生するビットレートを決定することを特徴とする請求項１記載の方法。
【請求項６】
前記デジタルビデオコンテンツの１以上に亘る部分をダウンロードするために利用可能な実際の帯域幅と前記推定された帯域幅に基づいて、前記デジタルビデオコンテンツの前記第１の部分の帯域幅の変動率の値を算出するステップをさらに備えることを特徴とする請求項１記載の方法。
【請求項７】
前記決定するステップが、さらに前記帯域幅の変動率に基づいて、前記第１の部分を再生するビットレートを決定することを特徴とする請求項６記載の方法。
【請求項８】
デジタルビデオコンテンツを適応的にダウンロードするコンピューターシステムとして機能させるための命令を格納したコンピューター読み取り可能な記録媒体であって、
プロセッサに、
前記デジタルビデオコンテンツの第１の部分に関連する第１の複雑度のレベルと、前記デジタルビデオコンテンツの第１の部分に続いて再生する前記デジタルビデオコンテンツの第２の部分に関連する第２の複雑度のレベルを、特定するシーン複雑度マップを受信するステップと、
前記デジタルビデオコンテンツに対応する複数のエンコード済みビデオストリームであって、該エンコード済みビデオストリームのそれぞれが個々のビットレートで前記デジタルビデオコンテンツをエンコードして得られたエンコード済みビデオストリームを特定するステップと、
前記複数のエンコード済みビデオストリームの中の最も低いビットレートのエンコード済みビデオストリームから前記第１の部分に対応する第１のエンコード済みデータをダウンロードしてコンテンツプレーヤ装置内に存在するコンテンツバッファーに格納するステップと、
前記デジタルビデオコンテンツの第１の部分に関連するデータをダウンロードするために利用可能であると推定される帯域幅を計算するステップと、
前記推定された利用可能な帯域幅と前記第１の複雑度のレベルと前記第２の複雑度のレベルとに基づいて、前記デジタルビデオコンテンツの第１の部分を再生するビットレートを決定するステップと、
前記決定されたビットレートが前記最も低いビットレートのエンコード済みビデオストリームの第１のビットレートを越えないように決定された際には、前記第１のエンコード済みデータを再生出力するステップと、
前記決定されたビットレートが前記最も低いビットレートのエンコード済みビデオストリームの第１のビットレートを越えて決定された際には、前記決定されたビットレートに対応する前記複数のエンコード済みビデオストリームの中から１つのエンコード済みビデオストリームを選択し、前記コンテンツプレーヤ装置に存在する前記コンテンツバッファーに前記選択されたエンコード済みビデオストリームから第２のエンコード済みデータをダウンロードし、前記第１のエンコード済みデータではなく、前記第２のエンコード済みデータを再生出力するステップと、
を実行させるための命令を格納したコンピューター読み取り可能な記録媒体。
【請求項９】
適応的にデジタルビデオコンテンツをダウンロードするためのシステムであって、
再生アプリケーションと、
コンテンツバッファーと、
前記デジタルビデオコンテンツの第１の部分に関連する第１の複雑度のレベルと、前記デジタルビデオコンテンツの第１の部分に続いて再生する前記デジタルビデオコンテンツの第２の部分に関連する第２の複雑度のレベルを特定するシーン複雑度マップとを格納するメモリ、および、
前記メモリに接続され、前記再生アプリケーションを実行するように構成するプロセッサを備え、
前記プロセッサに、
前記シーン複雑度マップを受信するステップと、
前記デジタルビデオコンテンツに対応する複数のエンコード済みビデオストリームであって、該エンコード済みビデオストリームのそれぞれが個々のビットレートで前記デジタルビデオコンテンツをエンコードして得られたエンコード済みビデオストリームを特定するステップと、
前記複数のエンコード済みビデオストリームの中の最も低いビットレートのエンコード済みビデオストリームから前記第１の部分に対応する第１のエンコード済みデータをダウンロードしてコンテンツプレーヤ装置内に存在するコンテンツバッファーに格納するステップと、
前記デジタルビデオコンテンツの第１の部分に関連するデータをダウンロードするために利用可能であると推定される帯域幅を計算するステップと、
前記推定された利用可能な帯域幅と前記第１の複雑度のレベルと前記第２の複雑度のレベルとに基づいて、前記デジタルビデオコンテンツの第１の部分を再生するビットレートを決定するステップと、
前記決定されたビットレートが前記最も低いビットレートのエンコード済みビデオストリームの第１のビットレートを越えないように決定された際には、前記第１のエンコード済みデータを再生出力するステップと、
前記決定されたビットレートが前記最も低いビットレートのエンコード済みビデオストリームの第１のビットレートを越えて決定された際には、前記決定されたビットレートに対応する前記複数のエンコード済みビデオストリームの中から１つのエンコード済みビデオストリームを選択し、前記コンテンツプレーヤ装置に存在する前記コンテンツバッファーに前記選択されたエンコード済みビデオストリームから第２のエンコード済みデータをダウンロードし、前記第１のエンコード済みデータではなく、前記第２のエンコード済みデータを再生出力するステップと、
を実行させるシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
この出願は、２０１０年１２月６日に出願された米国特許出願第１２／９６１，３７５号、発明の名称「適応ストリーミングのための様々なビットのビデオストリーム」の継続出願である２０１１年１月２１日に出願された米国特許出願第１３／０１１，２４２の利益を主張する。この関連出願は、ここに完全に援用される。
【技術分野】
【０００２】
本発明は、一般的に、デジタルメディアに関するものであり、具体的には適応ストリーミング（最適化配信）による可変ビットのビデオストリームに関連するものである。
【背景技術】
【０００３】
従来、デジタルコンテンツ配信システムは、コンテンツサーバー、コンテンツプレーヤ、および、コンテンツプレーヤにコンテンツサーバーを接続する通信ネットワークを備えている。コンテンツサーバーは、コンテンツサーバーからコンテンツプレーヤにダウンロードされるデジタルコンテンツのファイルを格納するように構成される。各デジタルコンテンツファイルは、ユーザーによく知られた「風と共に去りぬ」等の特定の識別タイトルに対応している。デジタルコンテンツファイルには、通常、再生する時間に従った順番で並べられたコンテンツデータが含まれ、オーディオデータ、ビデオデータ、またはその組み合わせで構成される。
【０００４】
コンテンツプレーヤは、ユーザーが再生するために選択しているタイトルの要求に応じて、デジタルコンテンツのファイルをダウンロードして再生するように構成される。デジタルコンテンツファイルを再生する処理には、オーディオおよびビデオデータをエンコードしてオーディオおよびビデオ信号に変換する処理が含まれ、その信号がスピーカーサブシステムとビデオサブシステムを備えた表示システムを駆動する。通常、再生には、「ストリーミング」として知られている技術が用いられ、コンテンツサーバーが順番にコンテンツプレーヤへデジタルコンテンツファイル送信し、コンテンツプレーヤでデジタルコンテンツファイルを構成するコンテンツデータを受信しながらデジタルコンテンツファイルを再生する。通信ネットワーク内での待ち時間と帯域幅の変化を考慮するために、コンテンツバッファーは、実際にコンテンツデータが再生される前に受信したコンテンツデータを待ち行列に入れる。ネットワークの輻輳が発生した際は、それが、コンテンツデータが利用可能な帯域幅の減小につながり、コンテンツバッファーに追加されるコンテンツデータが少なくなり、特定の再生ビットレートで再生をサポートする際に、待ち行列から取り出されるコンテンツデータの流れが滞る可能性がある。しかしながら、ネットワークの帯域幅が高い間は、コンテンツバッファーが補充され、コンテンツバッファーが、通常、再び一杯になるまでは、追加のバッファー時間が加えられる。実用的なシステムでは、コンテンツバッファーに、数秒から１分以上にわたるタイムスパンに対応するコンテンツデータが持ち行列に入る可能性がある。
【０００５】
コンテンツサーバーに格納されている各デジタルコンテンツファイルは、通常、特定の再生ビットレートでエンコードされる。再生を開始する前に、コンテンツプレーヤはコンテンツサーバーで利用可能な帯域幅を測定し、測定された利用可能な帯域幅でサポートすることが可能なビットレートのデジタルコンテンツファイルを選択する。再生品質を最大にするには、通常、測定された帯域幅を超えない最も高いビットレートのデジタルコンテンツファイルを選択する。通信ネットワークは、ビットレートの要求を満たすように、選択したデジタルコンテンツのファイルをダウンロードするのに適した帯域幅を提供することが可能な範囲で、満足がいくように再生が進められる。しかし、実際には、通信ネットワークに接続されている異なる装置が独立したタスクを実行しているので、通信ネットワークの利用可能な帯域幅は常に変化する。
【０００６】
ネットワークの状態の変動に対応するために、タイトル毎に異なるビットレートを持つ複数のビデオストリームが存在する適応ストリーミングを実装するようにしてもよい。ネットワークの状態が変化すると、コンテンツプレーヤは、ネットワークの状況に応じてビデオストリームを切り替えるようにしてもよい。例えば、ビデオデータは、ネットワークの状態が良好なときは、高いビットレートでエンコードされたビデオストリームからダウンロードするようにし、ネットワークの状態が悪化したときには、低いビットレートでエンコードされたビデオストリームから次のビデオデータをダウンロードするようにしてもよい。
【０００７】
可変ビットレート（ＶＢＲ）技術を用いて、ビデオストリームをエンコードする際に、適応ストリーミングのソリューションを実装すると問題が発生する。ＶＢＲビデオストリームでは、帯域幅またはファイルが使用するスペースの使用率を最適化するように、これらのビデオのシーンの複雑度に応じて異なるビデオのシーンをエンコードする。複雑度が高いシーンのビットを「セーブ」するために、複雑度が低いシーンはより低いビットレートでエンコードされる。ＶＢＲビデオストリーム全体にわたる平均ビットレートは、そのため、ＶＢＲビデオストリーム内の特定のシーンのビットレートを反映しているのではない。これが、適応ストリーミングが実装されたときに問題を引き起こす。なぜなら、平均ビットレートに基づいて、コンテンツプレーヤがエンコード済のビデオストリームを選択するが、エンコード済みのビデオストリームからダウンロードしたビデオデータの特定の部分は、平均ビットレートよりもはるかに高い、またははるかに低いビットレートでエンコードされた可能性がある。このようなシナリオでは、エンコード済みのビデオストリーム間で切り替えが適切にまたは効果的に行うことが出来ず、再生の品質を全体に引き下げる場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述で説明したように、この分野で必要とされているものは、デジタルコンテンツのシーンの複雑度に基づいて、コンテンツプレーヤにデジタルコンテンツをダウンロードするための手法である。
【課題を解決するための手段】
【０００９】
本発明の一実施形態では、適応的にデジタルビデオコンテンツをダウンロードする方法について説明する。本発明の方法は、前記デジタルビデオコンテンツに関連付けられたシーン複雑度マップを受信して、前記デジタルビデオコンテンツの１以上の各部分に関連付けられている複雑度のレベルを特定するステップを備える。前記デジタルビデオコンテンツに対応するエンコード済みビデオストリームであって、エンコード済みビデオストリームのそれぞれが、異なるビットレートに関連付けられ、かつ、前記デジタルビデオコンテンツの１以上の各部分に対して前記異なるビットレートでエンコードされたエンコード部分を含む複数のエンコード済みビデオストリームを特定する。１以上の時間窓に亘ってデジタルビデオコンテンツをダウンロードするために利用可能な実際の帯域幅基づいて、１番目の時間窓に対して推定された帯域幅を計算する。前記シーン複雑度マップに基づいて、前記デジタルビデオコンテンツの１番目の部分と前記デジタルビデオコンテンツの２番目の部分に関連する複雑度のレベルを決定する。前記デジタルビデオコンテンツの別の部分の再生中に、前記推定された帯域幅と前記第１の複雑度のレベルと前記第２の複雑度のレベルとに基づいて、前記複数のエンコード済みビデオストリームのうち、前記デジタルビデオコンテンツの前記１番目の部分に対応する第１のエンコード部分をダウンロードする第１のエンコード済みビデオストリームを選択する。再生するために、前記第１のエンコード部分を前記第１のエンコード済みビデオストリームからコンテンツプレーヤ装置に存在するコンテンツのバッファーにダウンロードする。
【００１０】
開示された技術の利点の１つは、ビデオデータの各部分の複雑度のレベルに基づいて異なる一定のビットレートでエンコードされたストリームからビデオデータの複数の部分を選択することによって、様々なビットでエンコードされたストリームが、再生時にコンテンツプレーヤ装置によって動的に生成される。このような技術により、ビデオデータの再生を最適化し、現在の状況とシーンの複雑度に基づいてビデオストリームを最高の品質で再生することが可能になる。
【図面の簡単な説明】
【００１１】
本発明の特徴を詳細に理解することができるように、実施形態と添付された図面を参照して、上記の簡単に要約された発明のより具体的な説明を行う。ただし、添付の図面は、この発明の単に典型的な実施形態を示すものであり、その範囲に制限されるものではなく、本発明は同様に有効な他の実施形態を許容することが可能である。
【図１】本発明の１以上の態様を実装するように構成されたコンテンツ配信システムを示す図。
【図２】本発明の一実施形態による図１のエンコードサーバーの詳細な図。
【図３】本発明の一実施形態による図２の複雑度マップ生成部によって生成されたシーン複雑度マップを示す図
【図４】本発明の一実施形態によるビデオスリームエンコード部によって生成された様々なビデオストリームを示す図。
【図５】本発明の一実施形態による図１のコンテンツプレーヤの詳細な図。
【図６】本発明の一実施形態による、シーンの複雑度に基づいて、複数のビデオストリームの１つから再生する次のシーンを選択するための方法のステップを示すフローチャート。
【図７】本発明の一実施形態による、図２の複雑度マップ生成部によって生成されたシーンの複雑度マップ、推定された帯域幅、および選択されたエンコード済みビデオストリームを示す図。
【図８】本発明の一実施形態による、シーンの複雑度および推定された帯域幅に基づいて、複数のビデオストリームのうちの１つから生成するエンコード済みビデオストリームを選択するための方法のステップを示すフローチャート。
【発明を実施するための形態】
【００１２】
以下の説明では、本発明をより理解することができるように、多くの具体的な細部について説明する。ただし、本発明は１以上のこれらの具体的な細部でなくとも実施できることは、当業者にとって明らかである。他の例では、本発明が不明瞭になるのを避けるために周知の特徴については説明しない。
【００１３】
図１に、本発明の１つ以上の態様を実装するように構成したコンテンツ配信システム１００を示す。図に示すように、コンテンツ配信システム１００は、エンコードサーバー１０２、通信ネットワーク１０４、コンテンツ配信ネットワーク（ＣＤＮ）１０６、およびコンテンツプレーヤ１０８を備える。
【００１４】
通信ネットワーク１０４は、ルーターやスイッチ等の複数のネットワーク通信システムを備え、エンコードサーバー１０２とＣＤＮ１０６とコンテンツプレーヤ１０８間のデータ通信を容易にするように構成される。当業者であれば、通信ネットワーク１０４を構築するために、周知のインターネット通信ネットワーク上で展開される技術を含む、多くの技術的に実現可能な技術が存在することを理解されるであろう。
【００１５】
エンコードサーバー１０２は、適応ストリーミング用のデジタルコンテンツファイルに関連付けられているビデオストリームをエンコードするように構成されたコンピューターシステムである。図２および図３を用いて、適応ストリーミング用のビデオストリームをエンコードするためのエンコードのワークフローについてより詳細に説明する。コンテンツ配信システム１００は、１つ以上のエンコードサーバー１０２を備え、各エンコードサーバー１０２は、ビデオストリームのエンコードに必要とされる全ての機能を実行するように構成される、または、各エンコードサーバー１０２は、各ビデオストリームをエンコードするために必要な特定の機能を実行するように構成される。エンコード済みのビデオストリームで構成されているデジタルコンテンツファイルをコンテンツプレーヤ１０８に配信するために、通信ネットワーク１０４経由でＣＤＮ１０６によって取り出される。
【００１６】
ＣＤＮ１０６は１つ以上のコンピューターシステムで構成され、コンピューターシステムは、コンテンツプレーヤ１０８からのデジタルコンテンツファイルに対する要求をダウンロードできるように構成される。デジタルコンテンツファイルは、コンピューターシステムにアクセス可能な大容量記憶システム上に置かれるようにしてもよい。大容量記憶システムには、これらに限定されるものではないが、直接接続型ストレージ、ネットワーク接続されているファイルスレージ、または、ネットワーク接続されたブロックレベルのストレージ等で構成されてもよい。デジタルコンテンツファイルは、フォーマットされ、任意の実現可能な技術が用いられた大容量記憶システムに格納される。周知のハイパーテキスト転送プロトコル（ＨＴＴＰ）等のデータ転送プロトコルが、デジタルコンテンツファイルをコンテンツサーバー１０６から、コンテンツプレーヤ１０８にダウンロードするために用いられるようにしてもよい。
【００１７】
コンテンツプレーヤ１０８は、コンピューターシステム、セットトップボックス、携帯電話のようなモバイル装置、または、他の技術的に適したコンピュータープラットフォーム等で構成され、それぞれ、ネットワーク接続機能を有し、かつ、ビデオフレームを表示し音響出力を行うための表示装置とスピーカー装置が接続または装備される。コンテンツプレーヤ１０８は、適応ストリーミング用に構成され、すなわち、特定の再生ビットレートでエンコードされたビデオストリームの単位でダウンロードされ、それに続くビデオストリームの単位のダウンロードは、通信ネットワーク１０４内で使われている帯域幅の条件に応じて、異なる再生ビットレートでエンコードされたものに切り替える。通信ネットワーク１０４内の利用可能な帯域幅が制限されるに従って、コンテンツプレーヤ１０８は低い再生ビットレートでエンコードされたビデオストリームを選択するようにしてもよい。利用可能な帯域幅が増加するに従って、高い再生ビットレートでエンコードされたビデオストリームを選択するようにしてもよい。
【００１８】
上記の説明では、コンテンツ配信システム１００は１つのコンテンツプレーヤ１０８とＣＤＮ１０６で示されているが、図１の構造は、単に模範的な発明の実施例であることを当業者であれば理解されるであろう。他の実施形態では、任意の数のコンテンツプレーヤ１０８またはＣＤＮ１０６で構成するようにしてもよい。したがって、いかなる方法において本発明の範囲を図１に制限するものではない。
【００１９】
図２は、本発明の一実施形態による、図１のエンコードサーバー１０２をより詳細に示す図である。図に示すように、エンコードサーバー１０２は、中央処理装置（ＣＰＵ）２０２、システムディスク２０４、入出力（Ｉ／Ｏ）装置用インターフェイス２０６、ネットワークインターフェース２０８、相互接続部２１０およびシステムメモリ２１２を備えている。
【００２０】
ＣＰＵ２０２は、システムメモリ２１２に保存されたプログラムの命令を取得し実行するように構成する。同様に、ＣＰＵ２０２は、アプリケーションデータを格納し、システムメモリ２１２からアプリケーションデータを取得するように構成する。相互接続部２１０は、ＣＰＵ２０２、システムディスク２０４、Ｉ／Ｏ装置用インターフェイス２０６、ネットワークインターフェース２０８、およびシステムメモリ２１２間で行われるプログラム命令とアプリケーションデータ等のデータの送信が容易になるように構成する。Ｉ／Ｏ装置用インターフェイス２０６は、Ｉ／Ｏ装置２２２から入力データを受け取り、相互接続部２１０を経由してＣＰＵ２０２へ入力データを送信するように構成する。例えば、Ｉ／Ｏ装置２２２は、１つ以上のボタン、キーボード、マウスまたは他のポインティングデバイスで構成されるようにしてもよい。また、Ｉ／Ｏ装置用インターフェイス２０６は、ＣＰＵ２０２から相互接続部２１０を介して出力データを受け取り、出力データをＩ／Ｏ装置２２２に送信するように構成する。ハードディスクドライブやフラッシュメモリ記憶ドライブ等のシステムディスク２０４は、エンコードされたビデオストリーム等の変化しないデータを格納するように構成する。エンコードされたビデオストリームは、通信ネットワーク１０４を介してＣＤＮ１０６によって取得することが可能である。ネットワークインターフェース２０８は、相互接続部２１０を経由してＣＰＵ２０２に接続され、通信ネットワーク１０４を介してパケットデータを送受信するように構成する。一実施形態では、ネットワークインターフェース２０８は、周知の標準のイーサネット（登録商標）に準拠して動作するように構成する。
【００２１】
システムメモリ２１２には、適応ストリーミングのために、特定のコンテンツのタイトルに関連付けられた１つ以上のビデオストリームをエンコードするための命令を含むソフトウェアが記憶される。図に示すように、これらのソフトウェアは、複雑度マップ生成部２１４、ビデオストリームエンコード部２１６、ビデオストリームシーケンスヘッダーインデックス（ＳＨＩ）生成部２１８を備える。
【００２２】
特定のビデオストリームに対して、複雑度マップ生成部２１４は、ビデオストリームを分析して、ビデオストリームの異なる部分（ここでは「シーン」として参照される）の動画コンテンツの複雑度を決定する。複雑なシーンは、通常、著しくフレームからフレームへ変化するシーンで、例えば、アクション映画の車のクラッシュシーンです。逆に、単純なシーンは、通常、フレームからフレームへ変化がないシーンで、例えば、平穏な夜の水域のシーンです。複雑度マップ生成部２１４は、予め経験に基づいて決定された情報に基づいて、ビデオストリームを分析するようにしてもよい。分析に基づき、複雑度マップ生成部２１４が、図３を用いて以下により詳細に説明するシーン複雑度マップを生成する。
【００２３】
ビデオストリームエンコード部２１６は、ビデオストリームを特定の再生ビットレートでエンコードするエンコード操作を実行し、エンコードされたビデオストリームをＶＣ１等の特定の規格に準拠したビデオコードに変換して、適応ストリーミング用に構成する。別の実施形態では、ＭＰＥＧやＨ．２６４等の別の規格に準拠したビデオコードに変換するようにビデオストリームをエンコードすることも可能である。操作において、特定のビデオストリームのために、ビデオストリームエンコード部２１６は、ビデオストリームを異なる一定のビットレートでエンコードして複数のエンコード済みビデオストリームを生成し、各エンコード済みビデオストリームは、異なる一定のビットレートに対応付けられ、つまり、異なる品質を持つ。ビデオストリームエンコード部２１６によって生成されたエンコード済みビデオストリームには、写真のグループ（ｇｒｏｕｐ  ｏｆ  ｐｈｏｔｏ：ＧＯＰ、各ＧＯＰはビデオデータの複数のフレームで構成される。）の順序が含まれる。
【００２４】
ＳＨＩ生成部２１８は、エンコード済みの各ビデオストリームに対応してシーケンスヘッダーのインデックスを生成する。シーケンスヘッダーのインデックスを生成するために、ＳＨＩ生成部２１８は、最初に、エンコード済みビデオストリームを検索して、エンコード済みビデオストリーム内の異なる複数のＧＯＰに対応するキーフレームを捜す。キーフレームに含まれるシーケンスヘッダーで指定されたシーケンス開始コードに基づいて、ＳＨＩ生成部２１８によってキーフレームの位置を見つけることができる。特定されたキーフレームのそれぞれに対応するＧＯＰに対して、ＳＨＩ生成部２１８は、シーケンスヘッダーのインデックス内にスイッチポイントを定義し、そのシーケンスヘッダーのインデックスに、（ｉ）ＧＯＰに対応するキーフレームを含むデータパケットを特定するデータパケット番号と、（ｉｉ）ＧＯＰに対応する再生オフセットが格納される。再び、ＧＯＰに対応する再生オフセットは、エンコード済みビデオストリームに収録された連続する複数のＧＯＰの中のそのＧＯＰの位置に基づいて決定される。
【００２５】
エンコードサーバー１０２は、上記の方法を用いて、同じコンテンツのタイトルに関連付けられるとともに異なる再生ビットレートでエンコードされた複数のエンコード済みビデオストリームを生成する。ここに記載されたエンコード処理によれば、異なるエンコードが行われた複数のビデオストリームに亘って、複数のＧＯＰが同じ再生時間間隔で割り当てられ、かつ、異なるエンコードが行われた複数のビデオストリーム間で対応する複数のＧＯＰに、同じ再生オフセットが割り当てられることが、保証される。したがって、特定のコンテンツのタイトルに関連付けられた一つのエンコード済みビデオストリームに含まれるシーケンスヘッダーに定義された各スイッチポイントに対応するスイッチポイントが、同じコンテンツのタイトルに関連付けられた他のエンコード済みビデオストリームのそれぞれに含まれるシーケンスヘッダーに定義される。
【００２６】
同じコンテンツのタイトルに関連付けられた２つのエンコード済みビデオストリームのシーケンスヘッダーのインデックスに基づいて、コンテンツプレーヤは、シーケンスヘッダーのインデックス内の適切なスイッチポイントを特定して、エンコード済みビデオストリーム間を効率的に切り替えることができる。現在再生中のエンコード済みビデオストリームと新しいエンコード済みビデオストリームを切り替える時に、コンテンツプレーヤ１０等のコンテンツプレーヤは、新しいエンコード済みビデオストリームに含まれるシーケンスヘッダーのインデックスを検索して、次に再生するＧＯＰに対応する再生オフセットを規定している特定のスイッチポイントの位置を捜す。コンテンツプレーヤは、そこで、再生するために特定のスイッチポイントで新しいエンコード済みビデオストリームに切り替え、指定されたデータパケットに格納されているＧＯＰをダウンロードする。例えば、エンコード済みビデオストリームに対して各ＧＯＰに３秒の再生時間間隔が割り当ててあれば、０秒の再生オフセットが割り当てられている最初のＧＯＰが現在再生されている場合には、次に再生するＧＯＰは３秒の再生オフセットが割り当てられる。このようなシナリオでは、コンテンツプレーヤは、新しいエンコード済みストリームシーケンスのヘッダーを検索して３秒の再生オフセットが規定されている特定のスイッチポイントの位置を捜す。特定のスイッチポイントの位置が一度見つけられると、コンテンツプレーヤは再生するためにスイッチポイントで特定されたデータパケットに格納されているＧＯＰをダウンロードする。
【００２７】
実際には、１つのＧＯＰに複数のシーンまたはシーンの一部が含まれる。便宜上、本発明に関して、エンコード済みビデオストリーム内のＧＯＰではなく、エンコード済みビデオストリーム内の特定のシーンに注目して、以下説明する。コンテンツプレーヤ１０８等のコンテンツプレーヤが、対応するシーケンスヘッダーのインデックスで定義されたＧＯＰの境界に応じて、異なるエンコードが行われたビデオストリーム間を切り替え、スイッチング処理はＧＯＰ内に含まれているシーンの複雑度の量を考慮にいれる。このスイッチング処理は、以下にさらに詳しく説明する。
【００２８】
図３は、本発明の一実施形態において、図２の複雑度マップ生成部２１４によって生成されたシーン複雑度マップ３０２を示す。図に示すように、シーン複雑度マップ３０２は、ビデオストリーム内の異なるシーン３０４の複雑度のレベルを規定する。例えば、シーン３０４（０）および３０４（４）のそれぞれはシーンの複雑度は中程度、シーン３０４（１）はシーンの複雑度は低く、シーン３０４（２）および３０４（３）のそれぞれはシーンの複雑度は高い。また、シーン複雑度マップ３０２の他の実施形態も、この発明で検討される。別の実施形態では、シーンの複雑度のレベルは、数値ベースかつ／またはより細かい単位であらわされる。本発明の目的のため、シーン複雑度マップ３０２は、ビデオストリーム内の各シーンの複雑度のレベルを規定し、特定のシーンがビデオストリーム内の特定のフレームに対応する。
【００２９】
図４は、本発明の一実施形態における、ビデオストリームエンコード部２１６によって生成された異なるエンコードが行われたビデオストリーム４０４を示す。図に示すように、各エンコード済みのビデオストリーム４０４は、同じタイトルと関連付けられ、かつ、図３に示すシーン３０４が複数含まれる。さらに、各エンコード済みのビデオストリーム４０４は異なるビットレートでエンコードされる。エンコード済みのビデオストリーム４０４（０）は、エンコード済みのビデオストリーム４０４（１）のビットレートより低いビットレートでエンコードされる。同様に、エンコード済みのビデオストリーム４０４（１）は、エンコード済みのビデオストリーム４０４（２）のビットレートより低いビットレートでエンコードされる。また、図に示すように、各エンコード済みビデオストリーム４０４内のシーン３０４毎のビット割り当ては、一定である。例えば、エンコード済みビデオストリーム４０４（０）内の各シーン３０４は、ビット割り当て４０６によって規定されるビットを割り当てる。同様に、エンコード済みビデオストリーム４０４（１）内の各シーン３０４は、ビット割り当て４０８によって特定されるビットを割り当て、エンコード済みのビデオストリーム４０４（２）内の各シーン３０４はビット割り当て４１０によって特定されるビットを割り当てる。重要なのは、ビット割り当て４０６、４０８および４１０は、対応するエンコード済みビデオストリーム４０４に関連付けられているビットレートによって変わり、ビット割り当て４０６がビット割り当て４０８よりも小さく、ビット割り当て４０８はビット割り当て４１０よりも小さい。
【００３０】
図５は、本発明の一実施形態における図１のコンテンツプレーヤ１０８のより詳細な図である。図に示すように、コンテンツプレーヤ１０８は、これに制限されるものではないが、中央処理装置（ＣＰＵ）５１０、グラフィックスサブシステム５１２、入出力（Ｉ／Ｏ）装置用インターフェイス５１４、ネットワークインターフェース５１８、相互接続部５２０、メモリサブシステム５３０を備える。また、コンテンツプレーヤ１０８に、大容量記憶部５１６を備えるようにしてもよい。
【００３１】
ＣＰＵ５１０は、メモリサブシステム５３０に格納されたプログラミング命令を取得し実行するように構成される。同様に、ＣＰＵ５１０は、メモリサブシステム５３０内に存在するアプリケーションデータを格納および取得するように構成する。相互接続部５２０は、ＣＰＵ５１０、グラフィックスサブシステム５１２、Ｉ／Ｏ装置用インターフェイス５１４、大容量記憶部５１６、ネットワークインターフェース５１８、およびメモリサブシステム５３０間で、プログラム命令とアプリケーションデータ等のデータの送信が容易になるように構成する。
【００３２】
グラフィックスサブシステム５１２は、ビデオデータのフレームを生成し、表示装置５５０へビデオデータのフレームを送信するように構成する。一実施形態では、グラフィックスサブシステム５１２は、ＣＰＵ５１０と共に、集積回路に統合されるようにしてもよい。表示装置５５０は、表示する画像を生成するために技術的に可能な手段で構成されたものであればよい。例えば、表示装置５５０は、液晶ディスプレイ（ＬＣＤ）技術、ブラウン管技術、発光ダイオード（ＬＥＤ）ディスプレイ技術（有機又は無機）を用いたものであってもよい。入出力（Ｉ／Ｏ）装置用インターフェイス５１４は、ユーザー用Ｉ／Ｏ装置５５２から入力データを受け取り、ＣＰＵ５１０へ相互接続部５２０を経由して入力データを送信するように構成する。例えば、ユーザー用Ｉ／Ｏ装置５５２は、１つ以上のボタン、キーボード、マウスまたは他のポインティングデバイスで構成されるようにしてもよい。また、Ｉ／Ｏ装置用インターフェイス５１４は、また、電気的なオーディオ出力信号を生成するよう構成されたオーディオ出力部を備える。ユーザー用Ｉ／Ｏ装置５５２は、電気的なオーディオ出力信号に応じた音響出力を生成するスピーカーで構成される。別の実施形態では、表示装置５５０にスピーカーが含まれるようにしてもよい。テレビは、ビデオフレームを表示して音響出力を生成することができる、この分野でよく知られている装置の一例である。ハードディスクドライブやフラッシュメモリ記憶ドライブ等の大容量記憶部５１６は、変化しないデータを格納するように構成される。ネットワークインターフェース５１８は、通信ネットワーク１５０を介してデータのパケットを送受信するように構成する。一実施形態では、ネットワークインターフェース５１８は、周知の「イーサネット」標準を用いて通信するように構成する。ネットワークインターフェース５１８はＣＰＵ５１０に相互接続部５２０を介して接続される。
【００３３】
メモリサブシステム５３０は、オペレーティングシステム５３２、ユーザーインターフェイス５３４、および再生アプリケーション５３６を構成するプログラミング命令とデータとを備える。オペレーティングシステム５３２は、ネットワークインターフェース５１８、大容量記憶部５１６、Ｉ／Ｏ装置用インターフェイス５１４、およびグラフィックスサブシステム５１２を含むハードウェアデバイスの管理等のシステム管理機能を実行する。また、オペレーティングシステム５３２は、ユーザーインターフェイス５３４および再生アプリケーション５３６に対して、プロセス管理およびメモリ管理のモデルを提供する。ユーザーインターフェイス５３４は、コンテンツプレーヤ１０８とユーザーが対話入力を行うためのウィンドウやオブジェクトのメタファ等の特定の構造を提供する。当業者であれば、コンテンツプレーヤ１０８に組み込むのに適した、周知の様々なオペレーティングシステムとユーザーインターフェイスであればよいことを理解されるであろう。
【００３４】
再生アプリケーション５３６は、ＣＤＮ１０６からネットワークインターフェース５１８を介してデジタルコンテンツを取得し、グラフィックスサブシステム５１２を介してデジタルコンテンツを再生するように構成する。グラフィックスサブシステム５１２は、画像に変換されたビデオ信号を表示装置５５０に送信するように構成する。通常の操作では、再生アプリケーション５３６は、特定のタイトルを再生するためにユーザーから要求を受け取る。再生アプリケーション５３６は、ＣＤＮ１０６から要求されたタイトルに関連付けられている異なるエンコードが行われた複数のビデオストリームを特定する。ここで、各エンコード済みビデオストリームは、異なる再生ビットレートでエンコードされている。再生アプリケーション５３６は、要求されたタイトルに関連付けられたエンコード済みビデオストリームの位置を見つけた後、再生アプリケーションはＣＤＮ１０６から要求されたタイトルに関連付けられている各エンコード済みビデオストリームに対応するシーケンスヘッダーのインデックスをダウンロードする。本明細書で既に説明したよう、エンコード済みビデオストリームに関連付けられたシーケンスヘッダーのインデックスには、デジタルコンテンツファイルに含まれるエンコード済みシーケンスに関連する情報が含まれている。
【００３５】
一実施形態では、再生するためのセットアップ時間が最小になるように、再生アプリケーション５３６は、要求されたタイトルに関連付けられた最も低い再生ビットレートでエンコードされたエンコード済みシーケンスで構成されるデジタルコンテンツファイルのダウンロードから始める。単に説明のために、デジタルコンテンツファイルは、要求されたタイトルと関連付けられた最も低い再生ビットレートでエンコードされたエンコード済みシーケンスで構成されているものとする。要求されたデジタルコンテンツファイルは、ファーストイン・ファーストアウトの待ち行列になるように構成されたコンテンツバッファー５４３にダウンロードされる。一実施形態では、ダウンロードされた各データの単位は、ビデオデータの単位またはオーディオデータの単位で構成される。要求されたデジタルコンテンツファイルに関連付けられているビデオデータの単位でコンテンツプレーヤ１０８にダウンロードされると、ビデオデータの単位でコンテンツバッファー５４３にプッシュされる。同様に、要求されたデジタルコンテンツファイルに関連付けられたオーディオデータの単位で、コンテンツプレーヤ１０８にダウンロードされると、オーディオデータの単位でコンテンツバッファー５４３にプッシュされる。一実施形態では、ビデオデータの単位でコンテンツバッファー５４３内のビデオバッファー５４６に格納され、オーディオデータの単位でコンテンツバッファー５４３内のオーディオバッファー５４４に格納される。
【００３６】
ビデオデコーダー５４８は、ビデオバッファー５４６からビデオデータの単位で読み取り、ビデオデータの単位で固定間隔の再生時間に対応するビデオフレームのシーケンスに変換する。ビデオバッファー５４６からビデオデータの単位で読み出すことで、効率的にビデオバッファー５４６（かつ、コンテンツバッファー５４３から）の待ち行列からビデオデータの単位で取り出される。ビデオフレームのシーケンスは、グラフィックスサブシステム５１２で処理され、表示装置５５０に送信される。
【００３７】
オーディオデコーダー５４２は、オーディオバッファー５４４からオーディオデータの単位で読み取り、オーディオデータの単位で、一般的にビデオフレームのシーケンスの時間と同期させたオーディオサンプルのシーケンスに変換する。一実施形態では、オーディオサンプルのシーケンスが、オーディオサンプルのシーケンスを電気信号に変換するＩ／Ｏ装置用インターフェイス５１４に送信される。電気的なオーディオ信号は、それに応じて音響出力を生成するユーザー用Ｉ／Ｏ装置５５２内のスピーカーに送信される。
【００３８】
通信ネットワーク１５０の帯域幅に制限が与えられると、再生アプリケーション５３６は、複雑度に基づいて、異なる一定のビットレートでエンコードされたビデオストリームからビデオデータの連続した部分をダウンロードするようしてもよい。操作では、再生が開始されると、再生アプリケーション５３６は、再生するデジタルビデオに関連付けられているシーン複雑度マップ３０２を受信する。前述で説明したように、シーン複雑度マップ３０２は、デジタルビデオの異なるシーンの複雑度のレベルを規定する。ダウンロードするビデオデータの次の部分を選択すると、再生アプリケーション５３６はシーン複雑度マップ３０２に基づいてビデオデータの一部に含まれるシーンの複雑度のレベルを決定する。シーンの複雑度のレベルと１以上のパフォーマンスの要因とに基づいて、再生アプリケーション５３６は、ビデオデータのその部分をダウンロードする特定のエンコード済みビデオストリームを決定する。例えば、利用可能な帯域幅が低いシナリオでは、シーンの複雑度が低い場合、再生アプリケーション５３６は、低いビットレートでエンコードされたビデオストリームから複数のシーンを含むビデオデータの一部をダウンロードする。この方法では、複雑度の高いシーンに対してはより高いビットレートでエンコードされたビデオストリームの後続の部分をダウンロードすることで、再生アプリケーション５３６によって通信ネットワーク１５０の帯域幅を効果的に管理することができる。このようなシナリオでは、中程度の複雑度のシーンと比較して低い複雑度のシーンをダウンロードするために低い帯域幅を用いて、複雑度が高いシーンで構成されたビデオデータの部分に対応する中程度または高いビットレートでエンコードされたビデオストリームの部分をダウンロードするのに有利になるように帯域幅を節約する。一方、従来のコンテンツプレーヤは、可変ビットレートのビデオストリームの特定の部分がエンコードされたシーンの複雑度を考慮せず、単に利用可能な帯域幅に基づいて、可変ビットレートでエンコードされたビデオストリームのいずれかを選択していた。
【００３９】
ビデオデータの一部に含まれる複数のシーンの複雑度のレベルは別として、ビデオデータの一部をダウンロードする特定のエンコード済みストリームに影響を与える可能性がある他のパフォーマンス要因には、ビデオデータの後続のシーンの複雑度のレベル、ビデオバッファー５４６のバッファーサイズ、ビデオコンテンツを表示するエンドユーザーの動作、生成される表示タイプ（高精細、標準画質等）、利用可能なリードタイムが含まれる。通信ネットワーク１５０の帯域幅の制限と組み合わせて、これらの要因は、ビデオデータのその部分に含まれている複数のシーンの複雑度に基づいて、ビデオデータの各部分をダウンロードする特定のエンコード済みビデオストリームを決定するために用いることができる。このような方法で、異なる一定のビットレートでエンコードされたビデオストリームから、可変ビットレートのビデオストリームが生成される。
【００４０】
別の実施形態では、複雑度の高いシーンを含むビデオデータの部分だけを、高いビットレートでエンコードする。同様に、複雑度が中程度または高いシーンを含むビデオデータの部分だけを、中程度のビットレートでエンコードする。複雑度の低いシーンしか含まないビデオデータの部分は、低いビットレートのみでエンコードする。図４を再び参照すると、ビデオスリームのエンコードされたレベルが中程度のビットレートでは、エンコード後のビデオストリーム４０４（１）には、シーン３０４（１）は含まれず、ビデオストリームのエンコードされたレベルが高いビットレートでは、エンコード後のビデオストリーム４０４（２）には、シーン３０４（０）、３０４（１）、および３０４（４）は含まれない。このような実施形態では、再生アプリケーション５３６は、高いビットレートでエンコードされたビデオストリームから複雑度が高いシーンを含むビデオデータの部分だけをダウンロードし、低いビットレートでエンコードされたビデオストリームからビデオデータの全ての他の部分をダウンロードするようにしてもよい。
【００４１】
図６は、本発明の一実施形態による、シーンの複雑度に基づいて、複数のビデオストリームの中の１つから再生する次のシーンを選択する方法のフローチャートである。この方法のステップは、図１〜５のシステムと組み合わせて説明されるが、当業者であれば、この方法のステップを、任意の順序で実行するように構成したシステムであっても発明の範囲内であることを理解されるであろう。
【００４２】
ステップ６０２では、再生アプリケーション５３６は、再生が開始されているデジタルビデオに関連付けられているシーン複雑度マップ３０２を受信する。前述で説明したように、シーン複雑度マップ３０２は、デジタルビデオの異なるシーンの複雑度のレベルを規定する。ステップ６０４では、再生アプリケーション５３６が再生するデジタルビデオに関連付けられているエンコード済みビデオストリームの一組を特定する。図３を用いて前述で説明したように、各エンコード済みビデオストリームは異なるビットレートでエンコードされる。
【００４３】
ステップ６０６では、再生アプリケーション５３６は、ビデオデータは次の部分に対して、次の部分の含まれているシーンに関連付けられている複雑度のレベルを決定する。複雑度のレベルは、ステップ６０２で取得したシーン複雑度マップ３０２に基づいて決定される。ステップ６０８では、再生アプリケーション５３６は、１以上のパフォーマンス要因だけでなく決定された複雑度のレベルに基づいて、ビデオデータの次の部分をダウンロードするために特定のエンコード済みビデオストリームを選択する。前述で説明したように、パフォーマンス要因は、帯域幅の制限やコンテンツバッファー５４３のサイズが含まれる。特定のエンコード済みビデオストリーム選択するために、コンテンツプレーヤ１０８で実行している再生アプリケーション５３６は、デジタルビデオコンテンツの別の（前の）部分を再生している間に、ダウンロードするビデオデータの次の部分に対するビデオストリームのエンコードレベル（高い、中程度、または低いビットレート）を動的に決定する。
【００４４】
ステップ６１０では、再生アプリケーション５３６は、ビデオデータの再生中に別の時間ステップが発生するかを決定し、そうである場合は、再生アプリケーション５３６はビデオストリームの別の部分に対してステップ６０６、６０８を繰り返す。別の時間ステップがビデオデータの再生中に発生しないときは、すなわち、ビデオコンテンツの再生は終わっている。時間ステップは、一定の間隔（秒またはフレーム)で発生する、あるいは、コンテンツバッファー５４３が一杯であるか空であるかをトリガーとして発生するようにしてもよい。
【００４５】
開示の技術の利点の１つは、ビデオデータの各部分の複雑度のレベルに基づいて、異なる一定のビットレートでエンコードされたビデオストリームからビデオデータの一部を選択することにより、様々なビットレートでエンコードされたストリームが再生時に動的に生成される。このような技術により、現在の状況とシーンの複雑度に基づいてビデオデータの再生を最適化して、最高の再生品質のビデオストリームを生成することが可能になる。
【００４６】
帯域幅とシーンの複雑度に基づいたビデオストリームの選択
コンテンツプレーヤ１０８とエンコードサーバー１０２間の帯域幅の制限に応じて、ダウンロードするビデオストリームの選択を変えるようにしてもよい。場合によっては、コンテンツプレーヤ１０８によってシーン複雑度マップが用いられ、より低い一定のビットレートでエンコードされたビデオストリームからシーン複雑度のレベルがより低いシーンをダウンロードし、それに続く複雑度のレベルがより高いシーンをより高い一定のビットレートでエンコードされたビデオストリームからダウンロードできるようにする。つまり、あるシーンのためにダウンロードされるエンコード済みのビデオの品質を妥協して（より低いビットレートでダウンロードされる）、それに続くより高いビットレートでエンコードされたシーンについては、エンコード済みのビデオをより高い品質でダウンロードするようにしてもよい。複数のシーンに亘って品質のレベルのバランスをとるために、複雑度が低いシーンと比較して、複雑度が高いシーンはより高いビットレートでダウンロードするようにする。ダウンロードするエンコード済みのビデオのビットレートを選ぶのに用いられるパフォーマンス要因に、品質の低下を耐えられる範囲で最大にすることを考慮するようにしてもよい。例えば、品質の低下を耐えられる範囲で最大にすることが唯一の基準であれば、複雑度の高いシーンは、高／中ビットレートでダウンロードし、低いビットレートでダウンロードしないようにする。
【００４７】
コンテンツプレーヤ１０８は、コンテンツプレーヤ１０８とエンコードサーバー１０２間の実際の帯域幅をサンプリングして、帯域幅を推定することができる。推定された帯域幅は、将来の時間窓に対する実際の帯域幅の見積である。例えば、推定された帯域幅は、ビデオデータの一部または時間窓に対する実際の帯域幅の過去の状態に基づいて決定されたものであってもよい。時間窓の時間長は、単一のフレームほどの大きさ、あるいは、複数のＧＯＰと同じ大きさになるように、固定される、またはプログラムされてもよい。推定された帯域幅は、前の１つ以上の時間窓で帯域幅を実際にサンプルした平均を計算したものであってもよい。また、推定された帯域幅は、時間窓の間に実際にサンプルされた帯域幅を入力とする関数を用いて計算するようにしてもよい。コンテンツプレーヤ１０８とエンコードサーバー１０２間の実際の帯域幅は、時間窓の間に何百回、何千回、または、何回サンプリングされてもよい。
【００４８】
帯域幅の見積りの計算に加えて、帯域幅の変動率は、推定した帯域幅に対応する実際の帯域幅の変動率として求められ、推定した帯域幅から偏差値（例えば、標準偏差の数字）で表すようにしてもよい。時間窓内のあらゆる時点で、実際の帯域幅は、ゼロまたはゼロに近いビットレートから高いビットレートまたは高いビットレートよりさらにより高いビットレートまで変化する。特に、衛星で流れるビデオコンテンツでは帯域幅の変動率の幅が大きく、それに応じて偏差値は高くなる。それ以外の場合では、実際の帯域幅の変化が少なく、帯域幅の変動率に対する偏差値は低くなる。新しいストリーミングのセッションの初めに、推定された帯域幅および帯域幅の変動率は前のセッションでの挙動に基づいて値が初期設定されるようにしてもよい。計算された推定された帯域幅に加え、シーンの複雑度および帯域幅の変動率の１つ以上を用いて、ダウンロードする特定の固定ビットレートでエンコードされたビデオストリームを選び、コンテンツプレーヤ１０８が受け取るデジタルコンテンツの質を最適化する。
【００４９】
図７は、本発明の一実施例における、図２の複雑度マップ生成部２１４によって生成されたシーンの複雑度マップ７００の一例である。また、推定された帯域幅７１０と選択されたストリーム７２０、すなわち、様々なビットレートのビデオストリームを生成するために、各シーンに対して選ばれる固定レートのビデオストリームの各部分を図７に示す。
【００５０】
図に示すように、シーン複雑度マップ７００はビデオストリーム内の異なるシーン７０４の複雑度のレベルを規定する。例えば、シーン７０４（０）、７０４（４）および７０４（５）のそれぞれのシーンの複雑度は中程度、シーン７０４（１）および７０４（９）のそれぞれのシーンの複雑度は低い、シーン７０４（２）、７０４（３）、７０４（６）、７０４（７）および７０４（８）のそれぞれのシーンの複雑度は高い。シーン複雑度マップ７００の他の実施形態も、この発明によって考慮される。別の実施形態では、シーン複雑度のレベルは数値ベースおよび／またはより粒度が高くてもよい。ここに記述されている発明の実施形態の目的は、シーン複雑度のマップ７００はビデオストリームの各シーンのシーン複雑度のレベルを規定し、特定シーンがビデオストリーム内の特定の一組のフレームに対応する。
【００５１】
上記のように、本発明の一実施委形態では、ビデオストリームエンコーダー２１６によって、異なるエンコードが行われたビデオストリームが生成される。エンコード済みビデオストリームの各々は同じタイトルに関連付けられ、図７に示されるシーン７０４が含まれる。更に、各エンコード済みビデオストリームは、異なる固定ビットレート、例えば、低い固定ビットレート、中程度の固定ビットレート、および、高い固定ビットレートでエンコードされる。別の実施形態では、複雑度が高いシーンが含まれているビデオデータの部分だけ高いビットレートでエンコードされる。同様に、複雑度が中程度または高いシーンが含まれているビデオデータの部分だけ中程度のビットレートでエンコードされる。複雑度が低いシーンだけが含まれているビデオデータの部分は、低いビットレートにだけエンコードされる。従って、高いエンコードと中程度のエンコードが行われたビデオストリームには、図７で説明されたシーン７０４の全ては含まれないかもしれない。例えば、高いエンコードと中程度のエンコードが行われたビデオストリームには、シーン７０４（１）と７０４（９）は含まれない。
【００５２】
コンテンツプレーヤ１０８とエンコードサーバー１０２間の推定された帯域幅７１０はコンテンツプレーヤ１０７によって、各時間窓（１つの時間窓が１つのシーン７０４に対応する）毎に定められる。シーンの複雑度が低いか、中程度か、高いか対応して、各シーンの推定された帯域幅は、それぞれ低く、中程度、高くなるように計算されるようにしてもよい。シーン７０４（０）に対して推定された帯域幅が中程度であり、シーン７０４（０）の複雑度が中程度あれば、シーン７０４（０）は中程度の固定ビットレートでダウンロードすることができる。
【００５３】
シーン７０４（１）に対して推定された帯域幅７１０が高く、シーン７０４（１）の複雑度が低ければ、シーン７０４（１）は、低い固定ビットレートでも、中程度の固定ビットレートでも、高い固定ビットレートでもダウンロードすることができる。シーン７０４（１）の複雑度は低いので、シーン７０４（１）は低い固定ビットレートでダウンロードされる（選択されたストリーム７２０に示すように）。シーン７０４（１）に対する時間窓の間に追加のエンコード済みのビデオデータをダウンロードするようにして、高い複雑度を持っているシーン７０４（２）もダウンロードしてもよい。シーン７０４（２）は、シーン７０４（１）に対する時間窓の間に高い固定ビットレートでダウンロードされる。
【００５４】
シーン７０４（２）および７０４（３）に対して推定された帯域幅７１０は中程度であり、シーン７０４（２）および７０４（３）に対する時間窓の間に、シーン７０４（３）を高い固定ビットレートでダウンロードしてもよい。シーン７０４（４）、７０４（５）、７０４（６）、７０４（７）、７０４（８）、および７０４（９）に対して推定された帯域幅は中程度である。少なくともシーン７０４（６）および７０４（７）を高い固定ビットレートのダウンロードするためには、シーン７０４（４）および７０４（５）に対して、低い固定ビットレートエンコードされたビデオストリームが選ばれる（選択されたストリーム７２０を参照）。シーン７０４（４）に対する時間窓の間に、シーン７０４（４）および７０４（５）のために低い固定ビットレートでエンコードされたビデオストリームがダウンロードされる。シーン７０４（５）、シーン７０４（６）、および７０４（７）に対応する時間窓の間には、シーン７０４（６）および７０４（７）のために高い固定ビットレートエンコードされたビデオストリームが選ばれ、ダウンロードされる。シーン７０４（４）および７０４（５）をより低いビットレートでダウンロードするのなら、シーン７０４（６）および７０４（７）はより高いビットレートでダウンロードするようにしてもよい。
【００５５】
最後に、推定された帯域幅が中程度であれば、中程度の固定ビットレートでエンコードされたビデオストリームがシーン７０４（８）をダウンロードするために選ばれる。シーン７０４（９）は複雑度が低いので、低い固定ビットレートでエンコードされたビデオストリームが、シーン７０４（９）をダウンロードするために選ばれる。シーン７０４（９）に対する時間窓の残りの帯域幅がそれに続くシーンのビデオストリームをダウンロードするために使用されてもよい。
【００５６】
図８は、発明の一実施形態による、シーンの複雑度および推定された帯域幅に基づいて、複数のビデオストリームの１つから再生するエンコード済みのビデオストリームを選ぶための方法のステップ８００を示すフローチャートである。方法のステップ８００は、図１〜７のシステムと組み合わせて説明されるが、当業者であれば、任意の順序で実行するように構成したシステムであっても発明の範囲内であることを理解されるであろう。
【００５７】
ステップ８０２で、再生アプリケーション５３６は再生が開始されているデジタルビデオに関連付けられているシーン複雑度マップ３０２を受信する。前述で説明したように、シーン複雑度マップ７００は、デジタルビデオの異なるシーンの複雑度のレベルを規定する。ステップ８０４では、再生アプリケーション５３６が再生するデジタルビデオに関連付けられているエンコード済みビデオストリームの一組を特定する。図３および図７を用いて前述で説明したように、各エンコード済みビデオストリームは異なる固定ビットレートでエンコードされる。
【００５８】
ステップ８０６では、再生アプリケーション５３６は、次の時間窓に対して、エンコードサーバー１０２からコンテンツレーヤ１０８にエンコード済みデオストリームをダウンロードするための推定された帯域幅を計算する。推定された帯域幅は１つ以上の前の時間窓における実際の帯域幅に基づいて計算された推定値である。ステップ８０７では、再生アプリケーション５３６は次の時間窓に対して、推定された帯域幅に対する実際の帯域幅の変動率を計算する。帯域幅の変動率は、１つ以上の前の時間窓での実際の帯域幅および推定された帯域幅に基づいて計算される。
【００５９】
ステップ８０８で、再生アプリケーション５３６は、次の１つ以上の時間窓に対して、シーンに関連付けられている複雑度のレベルを決定する。１つ以上の時間窓ごとに先読みすることで、再生アプリケーション５３６は、推定された帯域幅に基づいて、複雑度が低いシーンに比較して、複雑度が高いシーンをより高いビットレートでダウンロードすることが可能になるので、いくつかのシーンに亘って品質のレベルのバランスをとることができる。複雑度のレベルは、ステップ８０２で受信したシーン複雑度マップ７００に基づいて決定される。ステップ８１０では、再生アプリケーション５３６は、１以上のパフォーマンス要因だけでなく、計算された推定された帯域幅、計算された帯域幅の変動率、および決定された複雑度のレベルに基づいて、ビデオデータの次の部分をダウンロードするための特定のエンコード済みビデオストリームを選択する。パフォーマンス要因には、コンテンツバッファー５４３のサイズや品質の低下を耐えられる範囲で最大にすることが含まれる。特定のエンコード済みビデオストリーム選択するために、コンテンツプレーヤ１０８で実行している再生アプリケーション５３６は、デジタルビデオコンテンツの別の（前の）部分を再生している間に、ダウンロードするビデオデータの次の部分に対するビデオストリームのエンコードレベル（高い、中程度、または低いビットレート）を動的に決定する。
【００６０】
ステップ８１２では、再生アプリケーション５３６は、ビデオデータの再生中に別の時間窓が発生するかを決定し、そうである場合は、再生アプリケーション５３６はビデオストリームの別の部分に対してステップ８０６、８０８、および８１０を繰り返す。別の時間窓がビデオデータの再生中に発生しないときは、すなわち、ビデオコンテンツの再生は終わっている。時間窓は、一定の間隔（秒、フレーム、またはＧＯＰ)で発生する、あるいは、コンテンツバッファー５４３が一杯であるか空であるかをトリガーとして発生するようにしてもよい。
【００６１】
一実施形態では、再生アプリケーション５３６は、少なくとも低いビットレートエンコードされたビデオストリームが、ビデオバッファー５４６の最初の部分で利用できるようにするために、１つ以上の時間窓に対して低いビットレートでビデオストリームをダウンロードする。ステップ８１０で時間窓に対して低いビットレートでエンコードされたビデオストリームが選ばれる時はいつも、データがビデオバッファー５４６の最初の部分に既にそのデータが格納されているので、再生アプリケーション５３６は時間窓に対して低いビットレートでエンコードされたビデオストリームはダウンロードしない。ステップ８１０では、時間窓に対して中程度／高いビットレートのエンコード済みビデオストリームが選択された時は、再生アプリケーション５４６がビデオバッファー５４６の二番目の部分へ選択されたエンコード済みビデオストリームをダウンロードする。
【００６２】
開示の技術の利点の１つは、エンコード済みビデオデータをダウンロードするための推定された帯域幅とビデオデータの各部分の複雑度のレベルに基づいて、異なる一定のビットレートでエンコードされたビデオストリームからビデオデータの一部を選択することにより、様々なビットレートでエンコードされたストリームが再生時に動的に生成される。このような技術により、利用可能なダウンロード帯域幅、帯域幅の変動率、およびシーンの複雑度に基づいてビデオデータの再生を最適化して、最高の再生品質のビデオストリームを生成することが可能になる。
【００６３】
本発明の一実施形態は、コンテンツプレーヤ１０８には、セットトップボックス等の組込型コンピューターのプラットフォームを含む。本発明の別の実施例では、例えば、インターネットのＷＥＢサイトに埋め込まれた実行可能な命令のように、コンピューターシステム内のメモリにダウンロードされるプログラム製品として実装するようにしてもよい。この実施形態では、コンテンツプレーヤ１０８にはコンピューターシステムが装備されている。
【００６４】
前述では本発明の実施形態を示しているが、基本的な範囲から逸脱することがなく、発明を他のさらなる実施形態で実施することが可能である。例えば、本発明は、ハードウェアまたはソフトウェア、またはハードウェアとソフトウェアの組合せで実装することが可能である。本発明の一実施形態のコンピューターシステムで使用するためのプログラム製品として実装するようにしてもよい。プログラム製品のプログラムは実施形態（ここに記載された方法を含む）の機能を規定し、各種コンピューターの読み取り可能な記憶媒体に記憶することが可能である。説明したコンピューターが読み取り可能な記録媒体は、これに限定されるものではないが：（ｉ）書き込み不可能な記録媒体（例えば、ＣＤ−ＲＯＭドライブによって読み取り可能なＣＤ−ＲＯＭディスク等のコンピューター内の読み取り専用メモリ、フラッシュメモリ、ＲＯＭチップ、またはあらゆる種類の不揮発性半導体メモリ）に情報が永久的に格納され：（ｉｉ）書き込み可能な記録媒体（例えば、ディスクドライブ内のフロッピー（登録商標）ディスク、またはハードディスクドライブ、またはあらゆる種類のランダムアクセス可能な半導体メモリ）に変更可能な情報が格納される。本発明の機能を指示するコンピューターが読み取り可能な命令を運ぶものであればコンピューター読み取り可能記録媒体は、本発明の実施形態に含まれる。
【００６５】
上記の観点から、請求項に従って本発明の範囲が決定される。
【図１】
0005840702.tif 000002
【図２】
0005840702.tif 000003
【図３】
0005840702.tif 000004
【図４】
0005840702.tif 000005
【図５】
0005840702.tif 000006
【図６】
0005840702.tif 000007
【図７】
0005840702.tif 000008
【図８】
0005840702.tif 000009