(57)【特許請求の範囲】
【請求項１】
最適化されたビデオキャッシングの方法であって、
複数のビデオ最適化サーバに記憶された一つまたは複数のソースファイルの複数の最適化されたバージョンに対応する複数の参照キーを含むキャッシュデータベースをビデオ最適化器によって保持するステップであり、各参照キーは、前記ソースファイルの前記最適化されたバージョンのパラメータを指定すると共に前記ソースファイルの識別子と前記ソースファイルの前記最適化されたバージョンを記憶するビデオ最適化サーバの識別子とを含む、ステップと、
前記ビデオ最適化器で前記ソースファイルを最適化する要求をクライアント機器から受信するステップであり、前記ソースファイルは配信元サーバに記憶されており、前記要求は、前記ソースファイルを最適化するためのパラメータを指定するキーと前記ソースファイルの識別子とを含む、ステップと、
前記キャッシュデータベースに対する照会を前記キーに基づいて生成するステップと、
前記キャッシュデータベースから、前記キーが前記データベースに保持されている参照キーと一致するかどうかを示す応答を受信するステップと、
前記キーが前記参照キーと一致することを示す前記キャッシュデータベースの応答に応答して、前記クライアント機器に前記ソースファイルの前記最適化されたバージョンを要求させるために、前記キーと前記参照キーによって指定された前記ビデオ最適化サーバのアドレスとを含むリダイレクト要求を前記クライアント機器へ送信するステップと、
を含む方法。
【請求項２】
前記キーが前記参照キーと一致することを示す前記キャッシュデータベースの応答に応答して、
前記参照キーによって指定された前記ビデオ最適化サーバに、前記ビデオ最適化サーバに記憶されている前記ソースファイルの前記最適化されたバージョンの要求を送信するステップをさらに含む請求項１に記載の方法。
【請求項３】
受信した前記ソースファイルの前記最適化されたバージョンの一部を記憶するステップをさらに含む請求項２に記載の方法。
【請求項４】
前記参照キーによって指定された前記ビデオ最適化サーバに記憶されている前記ソースファイルの前記最適化されたバージョンの前記要求と共に、前記ビデオ最適化サーバに記憶されている前記最適化された前記ソースファイルを前記ビデオ最適化器で複製する要求を送信するステップと、
前記ビデオ最適化器に記憶されている前記ソースファイルの前記最適化されたバージョンを記憶するのに応答して、前記キャッシュデータベースを更新する命令を前記キャッシュデータベースに送信するステップと、
をさらに含む請求項２に記載の方法。
【請求項５】
前記キーは、送信元署名を含み、前記送信元署名は、前記ソースファイルの一部分のハッシュである請求項１に記載の方法。
【請求項６】
前記キャッシュデータベースは、前記ソースファイルの前記最適化されたバージョンを記憶している複数の最適化サーバを識別するデータエントリを含み、前記エントリは、前記キャッシュデータベースに送信される命令を通じて変更されて、前記ソースファイルの前記最適化されたバージョンが記憶されている場所を更新する請求項１に記載の方法。
【請求項７】
記憶されている前記ソースファイルの前記最適化されたバージョンは、生成された最適化された前記ソースファイル全体のうち所定のセグメントを含む請求項１に記載の方法。
【請求項８】
前記キーが、前記ソースファイルの前記最適化されたバージョンのどの参照キーとも一致しないことを示す前記キャッシュデータベースの応答に応答して、
前記ソースファイルの要求を前記配信元サーバに送信するステップと、
前記配信元サーバから前記ソースファイルをストリーミングするステップと、
所定の変換設定に基づいてストリームを変換し、前記ソースファイルの前記最適化されたバージョンを記憶することにより、前記ソースファイルの前記最適化されたバージョンを生成するステップと、
前記ソースファイルの前記最適化されたバージョンを前記クライアント機器で再生するためにストリーミングするステップと、
前記最適化サーバに記憶された前記最適化された前記ソースファイルに対応する参照キーで前記キャッシュデータベースを更新する命令を前記キャッシュデータベースに送信するステップと、
をさらに含む請求項１に記載の方法。
【請求項９】
前記キーに含まれる前記ソースファイルの前記識別子が前記参照キーに含まれる前記ソースファイルの前記識別子と一致し、前記キーによって指定された最適化パラメータが前記ソースファイルの前記最適化されたバージョンの前記パラメータと一致するのに応答して、前記キーが前記参照キーと一致する、請求項１に記載の方法。
【請求項１０】
最適化されたビデオキャッシングのシステムであって、
プロセッサと、
実行可能コンピュータプログラム命令を記憶した非一時的なコンピュータ読み取り可能記憶媒体と、
を備え、
前記コンピュータプログラム命令は、実行されると前記プロセッサに、
複数のビデオ最適化サーバに記憶された一つまたは複数のソースファイルの複数の最適化されたバージョンに対応する複数の参照キーを含むキャッシュデータベースをビデオ最適化器によって保持させ、各参照キーは、前記ソースファイルの前記最適化されたバージョンのパラメータを指定すると共に前記ソースファイルの識別子と前記ソースファイルの前記最適化されたバージョンを記憶するビデオ最適化サーバの識別子とを含み、
前記ソースファイルを最適化する要求をクライアント機器から受信させ、前記ソースファイルは配信元サーバに記憶されており、前記要求は、前記ソースファイルを最適化するためのパラメータを指定するキーと前記ソースファイルの識別子とを含み、
前記キャッシュデータベースに対する照会を前記キーに基づいて生成させ、
前記キャッシュデータベースから、前記キーが前記データベースに保持されている参照キーと一致するかどうかを示す応答を受信させ、
前記キーが前記参照キーと一致することを示す前記キャッシュデータベースの応答に応答して、前記クライアント機器に前記ソースファイルの前記最適化されたバージョンを要求させるために、前記キーと前記参照キーによって指定された前記ビデオ最適化サーバのアドレスとを含むリダイレクト要求を前記クライアント機器へ送信させる、
システム。
【請求項１１】
前記キーが前記参照キーと一致することを示す前記キャッシュデータベースの応答に応答して、前記プロセッサに、
前記参照キーによって指定された前記ビデオ最適化サーバに、前記ビデオ最適化サーバに記憶されている前記ソースファイルの前記最適化されたバージョンの要求を送信させる命令をさらに含む請求項１０に記載のシステム。
【請求項１２】
前記キーが、前記ソースファイルの前記最適化されたバージョンのどの参照キーとも一致しないことを示す前記キャッシュデータベースの応答に応答して、前記プロセッサに、
前記ソースファイルの要求を前記配信元サーバに送信させ、
前記配信元サーバから前記ソースファイルをストリーミングさせ、
所定の変換設定に基づいてストリームを変換し、前記ソースファイルの前記最適化されたバージョンを記憶することにより、前記ソースファイルの前記最適化されたバージョンを生成させ、
前記ソースファイルの前記最適化されたバージョンを前記クライアント機器で再生するためにストリーミングさせ、
前記最適化サーバに記憶された前記最適化された前記ソースファイルに対応する参照キーで前記キャッシュデータベースを更新する命令を前記キャッシュデータベースに送信させる、
命令をさらに含む請求項１０に記載のシステム。
【請求項１３】
前記キーに含まれる前記ソースファイルの前記識別子が前記参照キーに含まれる前記ソースファイルの前記識別子と一致し、前記キーによって指定された最適化パラメータが前記ソースファイルの前記最適化されたバージョンの前記パラメータと一致するのに応答して、前記キーが前記参照キーと一致する、請求項１０に記載のシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]本出願は、２０１２年７月１８日に出願された米国仮出願第６１／６７３，１８８号の利益を主張するものであり、同文献は参照により全体が本明細書に組み込まれる。
［背景］
【技術分野】
【０００２】
[0002]本開示は、一般にはネットワーク上でのユーザ体験を向上させることに関し、より詳細には、ネットワーク内のビデオのキャッシュを最適化することに関する。
【関連技術の説明】
【０００３】
[0003]近年、スマートフォンやタブレットなどのモバイル機器が普及している。モバイルコンピューティング力の進歩と広範囲のワイヤレスインターネットアクセスに伴って、ストリーミングビデオをモバイル機器で視聴するユーザが増えている。そのようなストリーミングビデオは、多くの場合、ユーザが自身のモバイル機器からアクセスする各種の提供元から、様々な品質、フレームレート、フレームサイズ、及び圧縮レベルでストリーミングされる。多くの場合、ネットワーク上で利用可能なビデオはワイヤレス伝送やモバイル機器で視聴するための最適化がされておらず、提供元からネットワーク条件に関係なく一定品質でストリーミングされる。例えば、最適化されていないビデオは、コンピュータモニタやテレビで良好な視聴体験をユーザに提供するのに十分な品質レベルを持つ場合がある。その結果、より少ない帯域幅でモバイル機器の小さなディスプレイで同等のユーザ視聴体験を十分に提供できる時に、最適化されていないビデオをストリーミングするために不必要に多くの帯域幅部分が使用される場合がある。
【０００４】
[0004]既存のネットワーク提供者やメディアの提供元は、ストリーミングされるビデオにビデオの最適化を行うことによってビデオストリーミング時の帯域幅の使用状況を改善することを試みている。最適化は、しばしば、ビデオなどのソースファイルを、モバイル機器又はネットワーク提供者のシステムの能力により合った形式に変換することを伴う。最適化を行うことでモバイル機器で視聴されるストリームビデオの品質にほとんど影響を及ぼすことなく帯域幅の使用状況を改善することができるが、最適化処理は、通例、サーバが変換処理を開始する時にビデオのストリーミングと再生に遅延を生じさせる。それらの遅延により最終的にユーザの視聴体験に負の影響が生じ、その結果ユーザが早い段階でビデオのストリーミングを停止したり、別のストリーミングサイトに切り替えたりする可能性がある。
【０００５】
[0005]ここに開示される実施形態は、以下の詳細な説明、添付の特許請求の範囲、及び添付図（又は図面）から容易に明らかになる他の利点及び特徴を有する。以下に図を簡単に説明する。
【図面の簡単な説明】
【０００６】
【図１】最適化されたビデオキャッシュのための例示的な通信環境の高レベルブロック図である。
【図２】機械読み取り可能媒体から命令を読み出し、プロセス又はコントローラ内で実行することが可能な例示的マシンの構成要素の一実施形態を説明する図である。
【図３Ａ】最適化されたビデオをユーザ機器に提供する場合の例示的なイベント図の実施形態を説明する図である。
【図３Ｂ】最適化されたビデオをユーザ機器に提供する場合の例示的なイベント図の実施形態を説明する図である。
【図３Ｃ】最適化されたビデオをユーザ機器に提供する場合の例示的なイベント図の実施形態を説明する図である。
【図３Ｄ】最適化されたビデオをユーザ機器に提供する場合の例示的なイベント図の実施形態を説明する図である。
【図４】キャッシュされたヘッダを使用した予測符号化の一実施形態の流れ図である。
【詳細な説明】
【０００７】
[0010]図及び以下の説明は、単なる例示として好ましい実施形態に関する。以下の説明から、本明細書に開示される構造及び方法の代替実施形態が、特許請求の主題の原理から逸脱することなく用いることが可能な代替形態として容易に認識されることに留意されたい。
【０００８】
[0011]以下でいくつかの実施形態を詳細に参照し、その例を添付図面に示す。可能な箇所では図で同様の参照符号を使用して同様の機能を示す場合があることに留意されたい。図は、開示されるシステム（又は方法）の実施形態を単に例示のために示す。当業者は、以下の説明から、本明細書に記載される構造及び方法の代替実施形態を本明細書に記載される原理から逸脱することなく用いることが可能であることを直ちに認識されよう。
【０００９】
［概要］
[0012]ネットワーク提供者やメディアの提供元は、ビデオなどのソースファイルをモバイル機器にストリーミングする際の品質を向上させるための方法としてローカルキャッシュを使用することがある。ソースファイルが例えばビデオ最適化器によって変換及び最適化されると、ファイルはローカルキャッシュに保存することができる。ローカルでキャッシュすることにより、ビデオ最適化器は、変換されたソースファイル（又は最適化されたバージョンのソースファイル）を短期間記憶しておき、変換のためにソースファイルを再度取り出す必要なく、ユーザの要求（例えばビデオの再生やビデオのタイムラインにおけるスキップ）に応えることができる。したがって、ローカルキャッシュ構成を用いると、１回のセッション中に特定のユーザのために特定のファイルを繰り返し取り出して変換せずに済む。
【００１０】
[0013]しかし、通例は、変換されたファイルは、ユーザがセッションを終了すると間もなくローカルキャッシュから消去される。消去は、主として、他のユーザのための変換中に他のファイルをローカルにキャッシュできるようにすることと、著作権の侵害を回避することの２つの理由から行われる。後者は、ビデオ最適化器が、著作権保有者からもはや入手することができない、著作権で保護されたファイルの最適化バージョンを記憶（及びストリーミング）する結果生じる。これは、変換を行ったサービス提供者に望まない責任を負わせることになる。キャッシュされたファイルが消去されない場合でも、ユーザは、可能性としては数千ものビデオ最適化器の中から最適化されたソースファイルをキャッシュしている特定のビデオ最適化器に割り当てられるだけ幸運でなければならない。そうでない場合、ユーザは、以前の別のビデオ最適化器からそのビデオをストリーミングしたユーザと同じ変換動作が行われるのを待たなければならない。
【００１１】
[0014]本明細書に開示される実施形態は、多数のビデオ最適化器で行われる最適化済みビデオのローカルキャッシングを監視するキャッシュデータベースを含む。このキャッシュデータベースは、所与の最適化器でローカルにキャッシュされた最適化済みビデオ各々に対応するエントリを保持する。そして、ユーザが提供元サーバの所与のソースファイルをビデオ最適化器で最適化するように要求すると、キャッシュデータベースは、そのソースファイルを以前に最適化して各自のローカルキャッシュ記憶している他の最適化器の場所及びアドレスをそのビデオ最適化器に提供することができる。そして、ソースファイルの最適化要求を受け取った最適化器は、別の最適化器から最適化されたファイルを取得するか、又はユーザ機器をその第２の最適化器にリダイレクトすることにより、最適化済みのソースファイルを冗長に生成せずに済むようにする。同じソースファイルを繰り返し変換するのではなく、既存の最適化されたソースファイルを利用することにより、リソースを多く要する変換動作を行うために必要なビデオ最適化器を減らすことができる。
【００１２】
[0015]例示的な実施形態では、複数のソースファイルを記憶している配信元サーバにユーザ機器がソースファイルを要求すると、経路選定装置がその要求を検出し、ネットワークコントローラで処理するために要求を中途受信する。ネットワークプロセッサは、ネットワークを横断するネットワークフローに関するデータを収集し、要求及び他のデータをリダイレクトしてネットワーク内の帯域幅の使用状況を最適化することができる。一実施形態では、ネットワークコントローラは要求及びそれに関連するトラフィック（すなわちネットワークフロー）を調べて、ソースファイル、ネットワークの状態、及びユーザ機器に関する情報を判定することができる。また、ネットワークコントローラは、ソースファイルの要求を配信元サーバに転送し、配信元サーバの応答を中途受信して、ソースファイルがビデオに対応するかどうかを判定することができる。中途受信された要求及び／又は応答は、ビデオ情報又はソースファイル自体の一部を含んでいる可能性がある。
【００１３】
[0016]ネットワークコントローラはそれらの情報を処理して、要求されるソースファイルを変換するかどうかを判定し、ソースファイルをユーザ機器に合わせて変換するための最適化パラメータを判断する。ネットワークコントローラは、元のソースファイル及び最適化されたソースファイルの両方に一意に関連付けられた識別子（ＩＤ）キーを生成することができる（例えば指定された最適化パラメータに基づく）。そして、ネットワークコントローラは、ユーザ機器をビデオ最適化器にリダイレクトすることができる。一実施形態では、ネットワークコントローラは、ユーザ機器に送信されるリダイレクト要求にＩＤキーを含める。或いは、ネットワークコントローラは、ユーザ機器がリダイレクトされたビデオ最適化器にＩＤキーを送信してもよい。ＩＤキーを送信し、ソースビデオファイルを取得するためにユーザ機器をビデオ最適化器にリダイレクトすることにより、ユーザは最適化されたバージョンのソースファイルを受信することができ、直接の入力を行うことはなく、さらにはそれらの処理が行われていることも意識しない。
【００１４】
[0017]すでに変換されているソースファイルを再度変換する必要をなくすために、ビデオ最適化器は、自身のローカルキャッシュ、及び／又はキャッシュデータベースの管理下にあるビデオ最適化器に記憶されている最適化されたバージョンのソースファイルに対応する参照ＩＤキーを記憶しているキャッシュデータベースを照会することができる。要求されるソースファイルのＩＤキーと一致する参照ＩＤキーがある場合は、既存の最適化されたバージョンのソースファイルをユーザ機器に提供することができる。重要な点として、ＩＤキーはソースファイルと最適化されたソースファイルの両方を一意に識別する。ソースファイルに変更が行われると、生成されたＩＤキーと一致する参照キーはなくなり、新しいソースビデオファイルが取得され、変換される。したがって、例えば、ソースファイルの著作権所有者がソースファイルに変更を加えた場合は、著作権保有者から現在入手できるソースファイルの最適化されたバージョンのみがユーザ機器に提供される。最適化されたバージョンのソースファイルが、ソースファイルを要求するユーザ機器に指定された最適化パラメータと一致することにより、適切に最適化されたバージョンがユーザ機器に提供されることが確実になる（例えば、携帯電話に対してタブレットのディスプレイサイズ、又は３Ｇ接続の速度に対して４Ｇ接続の速度には、最適化されたバージョンが２つ以上ある場合がある）。
【００１５】
[0018]一実施形態では、ソースファイルがこれまでに変換されたことがないか、又は指定された最適化パラメータに基づいて変換されておらず、したがってユーザ機器の要件を満たす最適化されたバージョンのソースファイルがどのビデオ最適化器にも存在しない。したがって、ＩＤキーはキャッシュデータベースにあるどの参照キーとも一致しない。キャッシュデータベースは、キャッシュデータベースにＩＤキーを照会するビデオ最適化器にキャッシュミスの通知を返し、それによりビデオ最適化器に、配信元サーバからソースファイルを取得させ、ソースファイルの変換とユーザへのストリーミングを開始させる。最適化されたソースファイルの少なくとも一部がビデオ最適化器にキャッシュされると、ビデオ最適化器は、ビデオ最適化器に新たにローカルにキャッシュされた最適化済みのソースファイル部分に対応するエントリでキャッシュデータベースを更新することができる。一実施形態では、ビデオ最適化器は、ビデオ最適化器のローカルキャッシュに記憶されたソースファイル及び最適化されたバージョンのソースファイルのパラメータを一意に識別する新しい参照キーとして、ネットワークコントローラから受け取ったＩＤキーをキャッシュデータベースに記憶するために渡す。それと同じソースファイルの部分に対応する記憶された参照キーと一致するＩＤキーでキャッシュデータベースを照会する他のビデオ最適化器には、ソースファイルの同じ部分を再度変換するのではなく、上記ビデオ最適化器のローカルキャッシュに記憶された既存の最適化されたバージョンのソースファイルを照会させることができる。
【００１６】
[0019]別の例示的実施形態では、ソースファイルがすでに以前に別の最適化器によって変換されており、要求されるパラメータを持つ最適化されたバージョンが他の最適化器のうち１つのローカルキャッシュに記憶されている。キャッシュデータベースは、そのＩＤキーでキャッシュデータベースを照会したビデオ最適化器にキャッシュヒットの通知を送る。キャッシュヒットの応答は、ＩＤキーで指定された最適化パラメータと一致する参照キーを持つ最適化されたバージョンのソースファイルが第２のビデオ最適化器のローカルキャッシュにあることを意味する。一例では、最適化器は、最適化されたバージョンのソースファイルをローカルにキャッシュしている第２の最適化器に、最適化されたソースファイルを要求することができる。そして、第１の最適化器が、最適化されたビデオを再生のためにユーザ機器に転送することができる。別の例では、第１の最適化器がユーザ機器にリダイレクトを送信することができる。そのリダイレクトにより、ユーザ機器を、最適化されたバージョンのソースファイルを記憶している第２のビデオ最適化器に接続させる。リダイレクトは、ネットワーク上の第２の最適化器の場所及び生成されたＩＤキーを含むことができる。この例では、第２の最適化器は、最適化されたバージョンのソースファイルを直接ユーザ機器にストリーミングすることによって応答する。
【００１７】
[0020]場合によっては、人気のあるソースファイルが多数のユーザから頻繁に要求される場合がある。その特定のソースファイルに対する需要の増大に応答して、ビデオ最適化器は、第２の最適化器に存在する最適化されたバージョンのソースファイルの複製を要求することができる。頻繁に要求されるソースファイルの最適化されたバージョンを第１の最適化器に記憶することにより、第１の最適化器は、そのソースファイルについての要求負荷を第２の最適化器と分担することができ、したがって、第２の最適化器の負荷を軽減することができる。利点は、両方の最適化器が同じ最適化されたバージョンのソースファイルを提供することができ、他のソースファイル最適化要求も処理しながら、当該ソースファイルの要求に迅速に対応できることである。
【００１８】
［最適化されたビデオキャッシュ環境］
[0021]次いで図１を参照すると、最適化されたビデオキャッシュのための例示的な通信環境１００の高レベルブロック図が示される。環境１００は、ユーザ機器１１０Ａ及び１１０Ｂ（まとめてユーザ機器１１０と呼ぶ）、配信元サーバ１７０、経路選定装置１３０、ネットワークコントローラ１４０、ビデオ最適化器１５０、キャッシュデータベース１６０、並びにネットワーク１２０を含む。ネットワーク１２０は、ユーザ機器１１０、経路選定装置１３０、配信元サーバ１７０と、及び／又はビデオ最適化器１５０の間でデータを伝送する通信ネットワークである。一実施形態では、ネットワーク１２０は、ワイヤレスネットワーク及びインターネットを含む。
【００１９】
[0022]設備投資が収益を上回らないようにしようとするネットワーク効率戦略は、次第に高いデータ使用量に依拠するようになりつつあるより優れたユーザ体験を求める顧客の需要とバランスをとらなければならない。今日、モバイル事業者は、各種の手段を用いて、データ使用量の上限、Ｗｉ−Ｆｉの負荷軽減、及びインテリジェントな最適化を含む処理能力を管理している。環境１００は、深いセッションインテリジェンス、統合されたサービス管理、及びどのようなサービス提供にも合う動的な適合性を備えた、統一された基盤を提供するそのような解決法を提示する。ネットワークコントローラ１４０とビデオ最適化器１５０は連携して、ワイヤレス事業者とインターネットサービス提供者に特化した処理能力の利益をもたらすと共に、代替の解決法よりも好適にピーク容量を節減する世界水準のメディア最適化の解決法を提供する。
【００２０】
[0023]一実施形態では、ユーザ機器１１０は、ネットワーク機能を備えるコンピューティング機器である。多くの場合、例えば、ユーザ機器１１０は、ウェブブラウザ及びメディア表示機能を備えたワイヤレス対応のモバイルコンピューティング機器である。モバイルコンピューティング機器としてのユーザ機器１１０は、ラップトップ、ネットブック、タブレット、スマートフォン、又は携帯情報端末（ＰＤＡ）を含むことができる。図１には２つのみのユーザ機器１１０Ａ及び１１０Ｂを示すが、環境１００はそのような機器を数千又は数百万台含む可能性がある。ウェブブラウザは、モバイル機器１１０で実行されるソフトウェアアプリケーションであり、配信元サーバ１７０からウェブコンテンツを含むソースファイルを取得し、モバイル機器に結合されたディスプレイにそのウェブコンテンツを提示する。ユーザ機器１１０からアクセスされるマルチメディアのウェブコンテンツには、テキスト、画像、音声、及び映像のコンテンツが含まれる。ソースファイルは、１つ又は複数の種類のマルチメディアウェブコンテンツを含むことができる。マルチメディアコンテンツは、ブラウザ、例えばＨＴＭＬ５に対応するブラウザ、プラグイン、又は独立型のメディアプレーヤで再生することができる。ブラウザが、ユーザ機器１１０上で利用可能なメディアプレーヤ又はプラグインを呼び出して、再生のために画像、音声、及び／又は映像をメディアプレーヤ又はプラグインに渡すこともできる。
【００２１】
[0024]経路選定装置１３０は、ユーザ機器１１０とネットワーク１２０の間に位置する負荷分散装置又はルータである。経路選定装置１３０はユーザ機器１１０にネットワークへのアクセスを提供し、したがって、ユーザ機器からのトラフィックがネットワークへと流れる、又は逆にネットワークからのトラフィックが流れ込む経路となるゲートウェイを提供する。一実施形態では、経路選定装置１３０は、自身を通るトラフィックを分類して、ネットワークコントローラ１４０でさらに検査すべき対象フローを識別する。或いは、ネットワークコントローラ１４０が経路選定装置１３０とのインターフェースを取って、ＨＴＴＰトラフィックフローの大きいオブジェクトと小さいオブジェクトを識別する等のネットワークトラフィックの監視及び分類を調整する。その場合、経路選定装置１３０は、さらに検査すべき対象フローを分類するための所望の基準に基づくネットワークコントローラ１４０からの命令を受け取る。
【００２２】
[0025]しかし、ワイヤレス／セルラユーザ機器１１０側についての情報は、セルラネットワークと有線インターネットの間に位置する経路選定装置１３０では取得できないことが多い。例えば、しばしば、モバイル機器１１０に関連付けられた送信塔の識別子についての情報は得られない。送信塔の関連付けの情報は、モバイル機器が最初にネットワークに接続した時にのみブロードキャストされる。また、ユーザ機器１１０は通常はＩＰアドレス以外の識別情報は報告しない。したがって、ネットワークトラフィックの監視及び輻輳の検出を自動化してコントローラ１４０で管理し、モバイルユーザがそのことを知ることなく、エンドユーザの体験のためにネットワークを最適化できるようにする。
【００２３】
[0026]送受信されるあらゆるデータパケットを監視する従来のインライン式のＴＣＰスループット監視装置と異なり、ネットワークコントローラ１４０は、経路選定装置１３０とのインターフェースを取って対象のユーザフローを選択的に検査する「帯域外（out-of-band）」のコンピュータサーバである。ネットワークコントローラ１４０はさらに、最適化するユーザフローを（例えば対象フローの中から）識別することができる。一実施形態では、ネットワークコントローラ１４０は経路選定装置１３０で実装してトラフィックを監視することができる。他の実施形態では、ネットワークコントローラ１４０は、経路選定装置１３０と結合され、経路選定装置１３０と通信して、トラフィックの監視及び最適化を行う。経路選定装置１３０から照会を受けると、ネットワークコントローラ１４０は、所与のネットワークフローを無視すべきか、さらに監視すべきか、又は最適化すべきかを判断する。フローの最適化はしばしばフローの最初に決定される。その理由は、最適化されていないコンテンツの配信が一旦開始されると、途中で最適化されたコンテンツに切り替えることはめったに可能でないためである。ただし、ネットワークコントローラ１４０は、特定の利用者又は他のエンティティに関連付けられた既存のフローを最適化すると判断する場合もある。そして、そのエンティティに関連付けられていると判断された新しいフロー（例えば、メディア内でのシーク要求、新しいメディア要求、一時停止後の再開等の結果生じる）を最適化することができる。ネットワークコントローラ１４０は、監視及び最適化を決定する際に、ネットワーク状態と過去のトラフィックデータを使用する。輻輳などの現在のネットワーク状態についての知識は、データの最適化に関しては重要と考えられる。
【００２４】
[0027]一実施形態では、ネットワークコントローラ１４０は、ユーザ機器１１０と、ビデオ最適化器１５０や配信元サーバ１７０など環境１００の他の構成要素との間の仲介者である。ユーザ機器１１０がビデオ又は他の関連するソースファイルの要求を送信すると、要求は経路選定装置１３０に中途受信され、フローは、さらに分析するためにネットワークコントローラ１４０に送られる。事例によっては、ネットワークコントローラ１４０が、要求されるソースファイルをさらに最適化することによりネットワーク１２０の総容量を改善できると判断することができる。事例によっては、コントローラ１４０は、ソースファイルを求める中途受信した要求を配信元サーバ１７０に転送し、配信元サーバ１７０からの応答を中途受信して、ソースファイルに関する情報を判定し、ソースファイルを最適化するかどうかを判断することができる。
【００２５】
[0028]ネットワークコントローラ１４０が、要求されるソースファイルを最適化すべきと判断すると、ネットワークコントローラ１４０は、最適化されたバージョンのソースファイルを生成するための最適化パラメータを決定する。最適化パラメータは、変換後のファイルがユーザ機器１１０に適合し、ネットワーク１２０及びユーザ機器１１０の利用可能な帯域幅容量を満たすようにソースファイルを変換するために、目標ビットレート、フレーム幅、フレーム高、サンプルレート、音声特性等の属性を指定する。そして、ネットワークコントローラ１４０は、最適化パラメータをビデオ最適化器１５０に提供し、ユーザ機器１１０をビデオ最適化器１５０にリダイレクトして、最適化されたバージョンのソースファイル（例えば最適化パラメータに従って変換された）を取得させる。ネットワークコントローラ１４０が要求されるソースファイルを最適化しないと判断した場合、ネットワークコントローラ１４０は、フローの監視を続けるか、又は経路選定装置１３０に、そのフローをネットワークコントローラ１４０に送らないように指示することができる。
【００２６】
[0029]ネットワークコントローラ１４０は図に示すようにキー生成器１４５を含み、これは、要求ソースファイルと、ビデオ最適化器１５０がユーザ機器１１０のためにソースファイルをどのように変換すべきかを記述した最適化パラメータとを一意に識別する識別（ＩＤ）キーを生成する。ソースファイルのＩＤキーを生成するために、キー生成器１４５は、中途受信された機器要求１１０からの要求に含まれるソースファイル情報から、及び／又は、要求されるソースファイルを一意に記述する配信元サーバ１７０からの中途受信された応答に含まれるソースファイル情報からソースファイル署名を判定する。一実施形態では、ソースファイル署名は、元のファイル又は元のファイルの一部のハッシュ、ビデオの属性（例えばビットレート、フレーム幅、フレーム高、サンプルレート、音声特性等）、元のファイルのＵＲＬ等を含むことができる。事例によっては、ドメイン又はウェブサイトがＵＲＬに変更を加えたり、ＵＲＬに追加的な部分を加えたりする場合でも送信元署名のＵＲＬ部分が変化しないようにＵＲＬに変更を加えることができる。また、キーを生成するために、キー生成器１４５は、最適化されたバージョンのソースファイルを生成するためにネットワークコントローラ１４０によって決定された最適化パラメータを受け取ることができる。そのパラメータを通じて、生成されたキーを使用して、様々なビデオ最適化器１５０のキャッシュに記憶されているソースファイルの特定の最適化されたバージョンを特定することができる。一実施形態では、生成されたキーは、リダイレクト要求と共にユーザ機器１１０に送信される。ビデオ最適化器１５０は、リダイレクトされたソースファイルの要求と共にＩＤキーを受け取る。ビデオ最適化器１５０はそのＩＤキーで自身のローカルキャッシュ１５５及びキャッシュデータベース１６０を照会して、最適化されたバージョンのソースビデオファイルがすでにローカルに、又は別のビデオ最適化器に存在するかどうかを判定することができる。
【００２７】
[0030]ビデオ最適化器１５０は、ビデオや画像などのソースファイルの最適化を提供し、最適化されたビデオや画像のコンテンツをネットワーク１２０を介してユーザ機器１１０に配信するコンピュータサーバである。ビデオ及び画像の最適化は、ビデオ及び画像コンテンツの変換を通じて提供されるオンデマンドサービスである。例えば、ユーザ機器が配信元サーバ１７０からビデオの取得を試みると、ネットワークコントローラ１４０は、そのフローがコンテンツ最適化の一定の基準を満たすと判断することができる。そして、ネットワークコントローラ１４０は、ユーザ機器１１０をビデオ最適化器１５０にリダイレクトして、最適化されたコンテンツを取得させる。ビデオ最適化器１５０は、ユーザ機器１１０又はネットワークコントローラ１４０からのリダイレクト要求で最適化パラメータ及びビデオ又は画像コンテンツの場所を受け取り、最適化及びその後のユーザ機器１１０への配信のために、ビデオ又は画像コンテンツを対応する配信元サーバ１７０から取得する。
【００２８】
[0031]一実施形態では、ビデオ最適化器１５０は、配信元サーバ１７０又は他の供給元から直接ソースファイルの内容を取り込み、ビットレートを下げたストリームをリアルタイムで生成する。変換され、最適化されたストリームは一時的にローカルの記憶域に記憶することができ、このローカルの記憶域をローカルキャッシュ１５５と呼ぶことができる。例えば、ローカルキャッシュ１５５は、シリアルＡＴＡ（ＳＡＴＡ）／シリアルＡｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）の回転媒体又はフラッシュ媒体の形態である。実施形態によっては、ローカルキャッシュ１５５はビデオ最適化器１５０の内部に物理的に置かれ、バスを介してビデオ最適化器１５０システムの他の構成要素と接続することができる。他の実施形態では、ローカルキャッシュ１５５はビデオ最適化器１５０の外部に置かれ、ネットワーク１２０又は他種の有線／無線接続を介してビデオ最適化器１５０に接続することができる。各ビデオ最適化器１５０は、最適化されたソースファイルストリームの平均的なサイズと比較して多量の記憶域を有するので、各ビデオ最適化器１５０はいくらかの量の最適化されたデータをキャッシュすることができる。いくつかのビデオ最適化器１５０を組み合わせてビデオキャッシュ群にすることができ、ローカルにキャッシュされた最適化済みのソースファイルを個々のビデオ最適化器１５０間で共有することができる。
【００２９】
[0032]ビデオ最適化器１５０のローカルキャッシュ１５５の記憶空間が限られているため、キャッシュ１５５は効率的に管理して、ソースファイルのより新しいバージョン及び／又はより人気のある最適化されたバージョンを配布のために入手できるようにする。ビデオ最適化器１５０は、次の１つ又は複数に従ってキャッシュされたファイルのうち削除するファイルを検討する。すなわち、最後に使用されてからの時間が最も長いファイル、最後にアクセスされた時刻、ヒットの回数（例えば全期間と直近の期間）、複製要求の回数（例えば人気の上昇）、ファイルのサイズ（例えばより大きなファイルをより小さいファイルより先に消去して空間を節約する）、又は以前／最近消去されたファイル（例えば人気の低下）。一実施形態では、ビデオ最適化器１５０は、削除動作に必要なシステムプロセッサ負荷を最小に抑えるために、キャッシュされたファイルを長い期間にわたって小さなまとまりで削除する。事例によっては、ビデオ最適化器１５０は、アクティブなファイルにアクセスしているすべてのユーザをリダイレクトするのを待ってから、そのアクティブなファイルを削除することもできる。最後のユーザがリダイレクトされると、ユーザのストリーミング経験に影響せずに、アクティブファイルを削除することができる。実施形態によっては、ビデオ最適化器１５０は、自身がキャッシュしているすべてのファイルを記憶のためにキャッシュデータベース１６０にプッシュすることができる。
【００３０】
[0033]ビデオ最適化器１５０のローカルキャッシュ１５５の限られた記憶空間をより効率的に管理するために、キャッシュ１５５は、最適化されたソースファイルの小さなセグメント又はクリップのみを記憶してもよい。一実施形態では、小さなセグメントは、最適化されたソースファイルのプレビューを表すことができる。通例ユーザはユーザ機器１１０にストリーミングされて再生される１本のビデオのすべては見ないことから、最適化されたソースファイル全体をローカルキャッシュ１５５に記憶するのは記憶空間の非効率的な使用である。そのため、ソースファイルの一部だけをビデオプレビューとして記憶することにより、最適化されたソースファイルをより多くローカルキャッシュ１５５に記憶できるようになる。さらに、ユーザが、ローカルキャッシュ１５５に記憶されたビデオプレビューセグメント以外のソースファイル部分を見たい場合は、ローカルキャッシュ１５５に記憶されたビデオのプレビューファイルを取り出して、対応するソースファイルの最適化された部分と合併することもできる。ソースファイルのいくつかの異なるセグメントが最適化されたビデオプレビューファイルとしていくつかの異なるビデオ最適化器１５０のローカルキャッシュ１５５に記憶されている場合は、１つのビデオ最適化器１５０が各ローカルキャッシュ１５５からセグメントを取り出し、それらを共に合併し、必要であれば追加的なセグメントを変換することもできる。
【００３１】
[0034]ビデオ最適化器１５０のローカルキャッシュ１５５に変更が加えられる（例えばファイルが追加、除去、又は更新される）と、ビデオ最適化器１５０は、キャッシュデータベース１６０にコマンドを出して、変更されたファイルに関連付けられた対応エントリを更新させる。一実施形態では、コマンドは、「キャッシュ追加」、「キャッシュ削除」、「キャッシュ取得」、又は「全キャッシュ削除」を含むことができる。「キャッシュ追加」及び「キャッシュ削除」は、最適化されたソースファイルがローカルキャッシュ１５５で更新／記憶された時や、ファイルがローカルキャッシュ１５５から除去された時などに、キャッシュデータベース１６０のエントリを追加又は除去するために使用される。「全キャッシュ削除」は、特定のビデオ最適化器１５０に関連付けられたエントリのセット全体を除去するために使用することができる。これは、ビデオ最適化器１５０が停止又はクラッシュした時に特に有用である。そのような場合にはキャッシュ全体が失われる可能性がある。「キャッシュ取得」のコマンドはしばしば、キャッシュデータベース１６０を照会するためのＩＤキーを伴い、それにより、要求される最適化されたバージョンのソースファイルがローカルキャッシュ１５５に記憶されている任意のビデオ最適化器１５０又はサーバのＩＰアドレスを特定する。これらの実施形態に示すコマンド以外の他のキャッシュコマンドも使用することができる。
【００３２】
[0035]実施形態によっては、ローカルキャッシュ１５５を使用して、予測符号化で使用される、最適化されたソースファイルのヘッダを記憶することもできる。ヘッダは、図４で詳細に説明するが、変換処理の開始前に作成され、ソースファイルに関連する基本的な情報を含んでいる。メディアプレーヤは、ソースファイルを認識して再生できるように、ヘッダファイルを分析する。最適化されたソースファイルが最初に生成される際に、ビデオ最適化器１５０は、最終的な最適化ソースファイルの特性を予測する。予測は変換処理より前に行われるので、予測の結果生成されるヘッダファイルは正確でない可能性がある。予測符号化により、ビデオ最適化器１５０は、変換処理後に、生成されたヘッダをローカルキャッシュ１５５に記憶し、将来同じソースファイルを最適化する際に記憶されたヘッダを取り出して、より正確なヘッダファイルを生成するために使用することができる。
【００３３】
[0036]キャッシュデータベース１６０は、以前に別のビデオ最適化器１５０ですでに最適化されているソースファイルを変換する必要をなくすことによりビデオ最適化器１５０の性能を強化する。一実施形態では、キャッシュデータベース１６０は、自身のデータベースの最適化群に、ローカルにキャッシュされている最適化されたバージョンのソースファイルの場所を記憶する。キャッシュされている最適化済みソースファイルの場所に加えて、キャッシュデータベース１６０は、記憶された参照キー、各ソースファイル／最適化されたバージョンが最後にアクセスされた時間、及び各ソースファイル／最適化されたバージョンの合計ヒット回数／要求回数も保持することができる。種々の最適化されたバージョンについての情報を収集して、ユーザ機器１１０に提供された回数が最も多いものを特定することができる。
【００３４】
[0037]キャッシュデータベース１６０は、中央化されたリソース／サーバであっても、又はビデオ最適化器１５０自体に分散させてもよい。キャッシュデータベース１６０が、ユーザ機器１１０に送信するために、ソースファイル及び最適化されたバージョンのソースファイルに対応するＩＤキーに基づく、最適化されたソースファイルの場所を問い合わせる照会を受け取ると、キャッシュデータベース１６０は、自身のデータベースを検索して、一致する参照キーを持つ最適化されたバージョンのソースファイルの場所を特定することができる。キャッシュデータベース１６０は、ビデオ最適化器１５０の群内で最適化されたソースファイルを識別し、発見するために維持しているエントリのリストを更新させるコマンドもビデオ最適化器１５０から受け取る。
【００３５】
[0038]ビデオトラフィックはすべてのネットワークトラフィックの約半分を占め、その割合は毎年増加していることから、ここに開示される実施形態は、最適化されたバージョンのソースファイルをキャッシュすることに着目する。したがって、ビデオトラフィックを最適化するとネットワーク内の輻輳が大幅に低減する。最適化されたバージョンのソースファイルをキャッシュする効率的な方法を実施することにより、ビデオ最適化器は、以前に別のビデオ最適化器によって他の形で変換されているソースファイルの変換せずに済むようになる。そのような空いたビデオ最適化器は、要求される他のソースファイルの変換で効果的に使用することができ、全体として向上したストリーミング体験をユーザにもたらす。最適化されたソースファイルをビデオ最適化器１５０のローカルキャッシュ１５５に保存し、各種のビデオ最適化器を検索するためのキャッシュデータベースを提供することにより、この最適化されたビデオキャッシングのシステムは、最適化されたバージョンをまだ持たないソースファイルを主に変換すればよいため、ビデオ最適化の処理を効率化する。キャッシュデータベースは、ビデオ最適化器群全体にわたるソースファイルの複数個の最適化バージョンの記憶及びキャッシュを管理するためにも使用することができ、頻繁に要求される最適化されたバージョンのソースファイルをいくつかのビデオ最適化器に複製して、１つのビデオ最適化器に送られる要求の数を減らすことができる。
【００３６】
[0039]ビデオ最適化器１５０、キャッシュデータベース１６０、及び配信元サーバ１７０は、典型的には１つ又は複数のコンピュータサーバから構成され、そのコンピュータサーバは、図２を参照して詳細に説明する構成要素及び機能を備えることができる。図１の環境１００にはビデオ最適化器１５０、キャッシュデータベース１６０、及び配信元サーバ１７０それぞれのサーバを１つずつ示すが、異なる実施形態は、１つのエンティティ又は複数のエンティティによって運営される複数個のウェブサーバ及びビデオサーバを含むことができる。他の実施形態では、１つのサーバが、ウェブサーバとしてのウェブコンテンツの配信や最適化されたビデオコンテンツの提供などの種々の機能を提供することもできる。経路選定装置１３０、ネットワークコントローラ１４０、及びユーザ機器１１０も、図２に説明するものと同様の構成要素及び機能を備えることができる。
【００３７】
［コンピューティングマシンのアーキテクチャ］
[0040]次いで図２を参照すると、ブロック図で例示的マシンの構成要素を示し、このマシンは、機械読み取り可能な媒体から命令を読出し、それをプロセッサ（又はコントローラ）で実行して、オンデマンドでリアルタイムにネットワークを監視し利用者を識別する本開示のシステムを実施することができる。具体的には、図２は、コンピュータシステム２００の例示的形態をとるマシンの概略表現であり、コンピュータシステム２００内では、マシンに本明細書に記載される方法論の１つ又は複数を行わせる命令２２４（例えばソフトウェア）を実行することができる。代替実施形態では、マシンは、独立した装置として動作するか、又は他のマシンに接続される（例えばネットワーク化する）ことができる。ネットワーク化された構成では、マシンは、サーバ／クライアント型のネットワーク環境ではサーバマシン若しくはクライアントマシンの能力内で動作するか、又はピアツーピア（又は分散）のネットワーク環境ではピアマシンとして動作することができる。
【００３８】
[0041]マシンは、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、スマートフォン、ウェブ機器、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンによって行われる動作を指定する命令２２４（シーケンシャル又はその他）を実行することが可能な任意のマシン等である。さらに、図には１台のみのマシンを示すが、用語「マシン」は、個々に、又は協働して命令２２４を実行して、本明細書に記載される方法論の１つ又は複数を行うマシンの集まりも含むものと解釈すべきである。
【００３９】
[0042]例示的なコンピュータシステム２００は、１つ又は複数のプロセッサ２０２（例えば中央演算処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、１つ又は複数の特定用途集積回路（ＡＳＩＣ）、１つ又は複数の無線周波集積回路（ＲＦＩＣ）、又はそれらの組み合わせ）、メインメモリ２０４、及び静的メモリ２０６を含み、これらはバス２０８を介して互いと通信するように構成される。コンピュータシステム２００はさらに、グラフィック表示装置２１０（例えばプラズマディスプレイパネル（ＰＤＰ）、液晶ディスプレイ（ＬＣＤ）、プロジェクタ、又は陰極線管（ＣＲＴ））を含むことができる。コンピュータシステム２００は、英数文字入力装置２１２（例えばキーボード）、カーソル制御装置２１４（例えばマウス、トラックボール、ジョイスティック、動きセンサ、又は他のポインティング機器）、記憶装置２１６、及びネットワークインターフェース装置２２０も含むことができ、それらもバス２０８を介して通信するように構成される。
【００４０】
[0043]記憶装置２１６は、本明細書に記載される方法論又は機能の１つ又は複数を実現する命令２２４（例えばソフトウェア）が記憶された機械読み取り可能媒体２２２を含む。命令２２４（例えばソフトウェア）は、コンピュータシステム２００による実行時に、完全に、又は少なくとも部分的に、メインメモリ２０４内又はプロセッサ２０２内（例えばプロセッサのキャッシュメモリ内）に存在することもでき、メインメモリ２０４及びプロセッサ２０２も機械読み取り可能媒体を構成する。命令２２４（例えばソフトウェア）は、ネットワークインターフェース装置２２０を介して、ネットワーク１２０を通じて送信又は受信することができる。
【００４１】
[0044]例示的実施形態では、機械読み取り可能媒体２２２を１つの媒体として示すが、用語「機械読み取り可能媒体」は、命令（例えば命令２２４）を記憶することが可能な１つの媒体又は複数個の媒体（例えば中央データベース若しくは分散データベース、又は互いに関連付けられたキャッシュ及びサーバ）を含むものと解釈すべきである。用語「機械読み取り可能媒体」はまた、マシンによる実行のために命令（例えば命令２２４）を記憶することが可能で、マシンに本明細書に開示される方法論の１つ又は複数を行わせる媒体を含むものと解釈すべきである。用語「機械読み取り可能媒体」は、これらに限定されないが、固体メモリ、光学媒体、及び磁気媒体のデータの形態のデータリポジトリを含む。
【００４２】
［最適化されたビデオキャッシング］
[0045]図３Ａ〜３Ｄは、ユーザ機器に最適化されたビデオを提供するための例示的なイベント図を示す。図３Ａは、具体的には、ソースファイル要求とその後に行われるデータベース照会の例を示す。図３Ｂ〜３Ｄは、ビデオ最適化器がデータベースからの種々の応答にどのように反応するかの各種実施形態を示す。ある実施形態ではビデオ最適化器は単にビデオ自体を変換し、他の実施形態では、ビデオ最適化器は要求を他のビデオ最適化器にリダイレクトしなければならない場合がある。図には、ユーザ機器１１０、ネットワークコントローラ１４０、ビデオ最適化器１５０、キャッシュデータベース１６０、及び配信元サーバ１７０が示される。経路選定装置（図３Ａ〜３Ｄには示さない）が、ネットワーク１２０を介してこれらエンティティの１つ又は複数の間のトラフィックの流れを管理することができる。図３Ｃ及び図３Ｄでは、２つのビデオ最適化器１５０Ａ及び１５０Ｂが存在する。これらのビデオ最適化器は互いと無関係に動作することができるが、共有ローカルキャッシュ１５５に記憶された最適化されたソースファイルを共有することもできる。
【００４３】
[0046]図３Ａは、ビデオ最適化器でソースビデオ要求を処理する工程を説明する例示的なイベント図である。この工程は、ユーザ機器１１０、ネットワークコントローラ１４０、ビデオ最適化器１５０、キャッシュデータベース１６０、及び配信元サーバ１７０を含む。工程は、ユーザ機器１１０が、ソースファイルを求めるユーザの要求を生成する３０２と開始する。例えば、ユーザは、視聴したいビデオを保持しているインターネットサイトを閲覧したいと思う。ユーザ機器１１０は、要求を生成し３０２、配信元サーバ１７０からビデオソースファイルの内容を取得するためのＨＴＴＰ  ＧＥＴビデオ要求３０４を送信する。一実施形態では、経路選定装置１３０が、要求及びユーザ機器１１０へのビデオの提供に関連する応答を中途受信する。経路選定装置１３０はビデオコンテンツ要求をネットワークコントローラ１４０にリダイレクトし、ネットワークコントローラ１４０は、変更を加えたＨＴＴＰ  Ｇｅｔビデオ要求３０６を配信元サーバ１７０に転送する。その変更で、ネットワークコントローラ１４０は、配信元サーバ１７０がソースファイルのビデオ情報で応答するように指示する。ビデオ情報を含むＨＴＴＰ  ＲＥＳＰＯＮＳＥ３０８を中途受信することにより、ネットワークコントローラ１４０は、ユーザ機器１１０をビデオ最適化器１５０に誘導するためにユーザ機器１１０にＨＴＴＰリダイレクト命令を転送すべきか、又は配信元サーバ１７０から取得されたビデオコンテンツを直接ユーザ機器１１０に送信すべきか（すなわち、ビデオコンテンツをさらに最適化する必要がない）を判定することができる。
【００４４】
[0047]ビデオ情報を含むＨＴＴＰ  ＲＥＳＰＯＮＳＥ３０８を受信するのに応答して、ネットワークコントローラ１４０は、ＨＴＴＰ  ＧＥＴビデオ３０４要求及び／又はＨＴＴＰ応答３０８で受信した情報と、フローの監視からネットワークの状態とユーザ機器について判定した情報とを使用してＩＤキーを生成する３１０。ＩＤキーは、配信元サーバ１７０にある元のソースファイルを一意に識別する送信元署名と、ユーザ機器に適合し、ネットワークの能力を満たす最適化されたバージョンのソースファイルを識別する決定された最適化パラメータとを含む。
【００４５】
[0048]ネットワークコントローラ１４０は、最適化されたバージョンのソースファイルを取得するためにユーザ機器１１０をビデオ最適化器１５０にリダイレクトすることができると判定し、最適化されたバージョンは、ソースファイルを変換することにより直接生成するか、又はビデオ最適化器１５０のローカルキャッシュ１５５から取得することができる。ネットワークコントローラ１４０は、ＨＴＴＰ  ＲＥＳＰＯＮＳＥ要求に対応する命令を判定し、生成されたキーと共にＨＴＴＰリダイレクト命令３１２をユーザ機器１１０に送信する。一実施形態では、ＨＴＴＰリダイレクト命令３１２はＨＴＴＰ  ＲＥＳＰＯＮＳＥ要求３０８を書き換えたものとすることができる。他の実施形態では、ＨＴＴＰリダイレクト命令３１２は、受信したＨＴＴＰ  ＲＥＳＰＯＮＳＥ要求３０８に対応付けられた命令、又は要求３０８を変換したものとすることができる。一実施形態では、ネットワークコントローラ１４０は、ユーザ機器１１０をリダイレクトするビデオ最適化器１５０を無作為に選択する。別の実施形態では、ネットワークコントローラ１４０は負荷分散装置として働き、ネットワークコントローラ１４０に関連付けられた各ビデオ最適化器の現在の処理負荷に基づいてユーザ機器１１０をリダイレクトする。例えば、ネットワークコントローラ１４０は、ビデオ最適化器１５０の作業負荷を監視し、現在利用可能な処理能力が最も高い、又は要求数が最も少ないビデオ最適化器１５０にユーザ機器１１０をリダイレクトすることができる。命令を受け取ると、ユーザ機器１１０はＨＴＴＰ  ＧＥＴ要求及び受信したキー３１４を、ネットワークコントローラ１４０がＨＴＴＰリダイレクト命令３１２で指示したビデオ最適化器１５０に送信する。
【００４６】
[0049]一実施形態では、ビデオ最適化器１５０が、元のソースファイル３１４に関連付けられたキーと共にＨＴＴＰ  ＧＥＴ要求を受け取ると、ビデオ最適化器１５０は、キャッシュデータベース１６０を照会して、最適化されたソースファイルが存在するかどうかを判定する。ビデオ最適化器１５０は、自身のローカルキャッシュ１５５にソースビデオの最適化されたバージョンが保持されているかどうかも判定することができる。キャッシュデータベース１６０は、受け取ったキーに基づいて自身のデータベースを検索３１８して、データベースにキーに一致する参照キーエントリが保持されているかどうかを判定する。キーと一致する参照キーエントリがある場合、キャッシュデータベース１６０は、ソースファイルの最適化されたバージョンが別のビデオ最適化器１５０に存在することを知らせるデータベース応答３２０を送信し、最適化されたソースファイルの場所を含める。これはキャッシュヒットと呼ばれ、ソースファイルの最適化されたバージョンをユーザ機器１１０に送信するためにビデオ最適化器１５０がソースファイルを変換する必要がないことを意味する。キーと一致する参照キーエントリがない場合、キャッシュデータベース１６０は、要求されるソースファイルの最適化されたバージョンが、キャッシュデータベース１６０の管理下にあるどのビデオ最適化器１５０のキャッシュにも記憶されていないことを知らせるデータベース応答３２０を送信する。これはキャッシュミスと呼ばれ、最適化されたソースファイルをユーザ機器１１０に送信するためにビデオ最適化器１５０がソースファイルを変換しなければならないことを意味する。
【００４７】
[0050]図３Ｂは、キャッシュミスの場合にユーザ機器に最適化されたソースファイルを提供する工程の一実施形態を説明する例示的なイベント図である。キャッシュミスが発生すると（例えばＩＤキーがどの参照キーとも一致しない）、キャッシュデータベース１６０は、元のソースファイルの最適化されたバージョンがキャッシュデータベース１６０に関連付けられたビデオ最適化器１５０のどのキャッシュにも存在しないことを知らせるデータベース応答３２０を送信することによってビデオ最適化器の照会に応答する。このデータベース応答３２０に応答して、ビデオ最適化器１５０は、ソースファイルの最適化されたバージョンをユーザ機器に提供するために元のソースファイル自体を変換しなければならない。ビデオ最適化器１５０は、ＨＴＴＰ  ＧＥＴビデオ要求３３２を配信元サーバ１７０に送信して変換のために元のソースファイルを要求することにより変換処理を開始する。ビデオ最適化器１５０が配信元サーバ１７０からＨＴＴＰ  ＲＥＳＰＯＮＳＥでビデオコンテンツ３３４を受信すると、ビデオ最適化器１５０は、ＩＤキーで提供された最適化パラメータに従って、ビデオをユーザ機器１１０で使用できる最適化された形式に変換する３３６。したがって、最適化は、ビデオ最適化器１５０がユーザ機器１１０について受け取るユーザ機器の仕様及び能力に関する情報（例えば画面サイズ、プロセッサ、ネットワーク接続、記憶空間、画面の解像度、バッファ、キャッシュ、オペレーティングシステム等）、並びにネットワークの特性（例えばサービス提供者、帯域幅、ネットワークの輻輳等）に基づくことができる。
【００４８】
[0051]一実施形態では、ビデオ最適化器１５０は、ユーザが知覚する可能性のある遅延を最小に抑えるために、ビデオが変換され次第、最適化されたビデオをユーザ機器１１０にストリーミングする。他の実施形態では、最適化されたストリーム３３８をビデオ最適化器１５０でわずかに遅延させて、変換が遅れた場合にビデオ最適化器１５０がバッファを構築できるようにする。ビデオ最適化器１５０がソースファイルの一部を変換すると、ビデオ最適化器１５０は、データベース更新３４０をキャッシュデータベース１６０に送って、ソースファイルの最適化されたバージョンの一部がビデオ最適化器１５０のローカルキャッシュ１５５で将来メディアコンテンツ要求があった場合に入手できる状態になったことを知らせる。データベース更新３４０は、ローカルキャッシュ１５５における最適化されたバージョンのソースファイルの場所、配信元サーバ１７０から取得された元のソースファイルの送信元署名と最適化されたバージョンのソースファイルのパラメータとを含むキー、及び変換された元のソースファイルのセグメントを含むことができる。一実施形態では、ビデオ最適化器１５０は、ビデオ全体の最適化が済む前にデータベース更新３４０を送信することができる。そのため、変換処理がまだ行われている時に別の要求が受信された場合には、変換が済んでいるビデオのセグメントを、別のユーザ機器１１０にストリーミングするために別のビデオ最適化器１５０に提供することができる。データベース更新３４０を受信すると、キャッシュデータベース１６０は、データベースエントリを更新して３４２、キャッシュデータベース１６０が将来のデータベース照会に応答するためにソースファイルの最適化されたバージョンの場所を特定できるようにする。
【００４９】
[0052]図３Ｃは、キャッシュヒットに応答して最適化されたソースファイルをユーザ機器に提供する工程の実施形態を説明する例示的イベント図である。図３Ｃでは、２つのビデオ最適化器１５０Ａ及び１５０Ｂが存在しており、ビデオ最適化器のネットワーク間で行うことが可能なデータ転送を説明している。各ビデオ最適化器１５０Ａ、１５０Ｂは上記のビデオ最適化器１５０と機能的に同じであるが、各ビデオ最適化器１５０Ａ及び１５０Ｂは、各自のローカルキャッシュ１５５に異なる最適化済みソースファイルを記憶している可能性がある。キャッシュヒットに応答して（例えばＩＤキーが参照キーと一致する）、キャッシュデータベース１６０は、元のソースファイルの最適化されたバージョンが、キャッシュデータベース１６０に関連付けられたビデオ最適化器１５０Ｂのローカルキャッシュ１５５にあることを知らせるデータベース応答３２０及び３３２を送信することにより、ソースファイルの最適化されたバージョンを特定しようとする第１のビデオ最適化器からの照会に応答する。
【００５０】
[0053]キャッシュヒットを処理する工程３５０の一実施形態では、第１のビデオ最適化器１５０Ａは、ビデオ最適化器１５０Ｂから最適化されたバージョンのソースファイルを取得するか、又はストリーミングし、その結果、最適化されたソースファイル自体をユーザ機器１１０にストリーミングすることができる。この実施形態では、第１のビデオ最適化器１５０Ａは、最適化されたバージョンのソースファイルを取得するためのＨＴＴＰ  ＧＥＴビデオ、又は他の要求３５２を第２のビデオ最適化器１５０Ｂに送信することができる。要求３５２を受信すると、第２のビデオ最適化器１５０Ｂは、最適化されたストリーム３５４を第１のビデオ最適化器１５０Ａに提供する。一実施形態では、第１のビデオ最適化器１５０Ａは、最適化されたストリーム３５６をユーザ機器１１０に送信する際に、受信した最適化されたバージョンのソースファイルをローカルにキャッシュすることができる。例えば、ビデオ最適化器１５０Ａは、頻繁に要求されるソースファイルの最適化されたバージョンをローカルにキャッシュしておくことができる。この処理を通じて、第１のビデオ最適化器１５０Ａは、ビデオ最適化器１５０Ｂから受信した最適化されたストリーム３５６の一部を将来ストリーミングするためにローカルにキャッシュする。別の実施形態では、第１のビデオ最適化器１５０Ａは、受信した最適化されたストリーム３５４のキャッシュを行わず、単に最適化されたストリーム３５６をユーザ機器１１０に転送することを選択することができる。例えば、第１のビデオ最適化器１５０Ａは、その最適化されたソースファイルが頻繁には要求されない、又はローカルキャッシュ１５５がすでに一杯であると判断すると、最適化されたストリームを記憶しない場合がある。ソースファイルの最適化されたバージョンについての統計をビデオ最適化器１５０自体で個々に保持する、及び／又はキャッシュデータベース１６０に保持しておき、キャッシュデータベース１６０は、照会に対する応答と共に統計を提供してもよい。
【００５１】
[0054]別の実施形態では、第１のビデオ最適化器１５０Ａは、最適化されたストリームを転送する３５４、３５６のではなく、ユーザ機器１１０をリダイレクトして、第２のビデオ最適化器１５０Ｂから最適化されたソースファイルを取得させることを決定することができる。ユーザ機器１１０をリダイレクトして第２のビデオ最適化器１５０Ｂから最適化されたソースファイルを取得させることにより、第１のビデオ最適化器１５０Ａは、プロセッサの負荷及びネットワーク帯域幅を解放して他のメディア要求を処理することができる。第１のビデオ最適化器１５０Ａは、ユーザ機器１１０にＨＴＴＰリダイレクト命令３６２を送信して、要求される最適化済みソースファイルを見つけられるビデオ最適化器を通知する。そして、ユーザ機器１１０が、ＨＴＴＰリダイレクト命令で指示された第２のビデオ最適化器１５０ＢにＨＴＴＰ  ＧＥＴ要求３６４を送信して、第２のビデオ最適化器１５０Ｂに、要求される最適化済みソースファイルをストリーミングするように要求する。ＨＴＴＰ  ＧＥＴ要求３６４に応答して、第２のビデオ最適化器１５０Ｂは、最適化されたストリーム３６６をユーザ機器に送信する。実施形態によっては、第１の最適化器１５０Ａが生成されたＩＤキーを含むＨＴＴＰリダイレクトを生成し、第２の最適化器１５０Ｂはそのキーを使用して自身のローカルキャッシュ１５５内で最適化されたバージョンのソースファイルを特定する。第２の最適化器１５０Ｂは、上記で図３Ａを参照して説明したように別途データベース照会３１６を生成することができる。
【００５２】
[0055]事例によっては、各種の異なる要因によってキャッシュヒットエラーが発生する可能性がある。一例では、キャッシュデータベース１６０に記憶された送信元署名、ＩＤキー、又は参照エントリが、ビデオ最適化器１５０に記憶された最適化されたバージョンのソースファイルと一致しない場合がある。例えば、キャッシュデータベース１６０がエントリを誤って保存していたり、エントリを破損している場合があり、又は、ビデオ最適化器１５０でローカルにキャッシュされた最適化されたバージョンのソースファイルが破損した、若しくは削除されたエラーが発生している場合がある。別の実施形態では、ビデオ最適化器１５０がキャッシュデータベース１６０に命令を送ってエントリを削除するよう要求することができる。キャッシュデータベース１６０に関連付けられた各ビデオ最適化器１５０は、ローカルにキャッシュされたリソースを、キャッシュデータベース１６０に記憶されたエントリと周期的に同期させて、キャッシュデータベース１６０からエントリを抹消する必要があるかどうかを判定することもできる。
【００５３】
[0056]別の実施形態では、第１のビデオ最適化器１５０Ａを、キャッシュデータベース１６０により、特定の最適化されたソースファイルを持っている第２のビデオ最適化器１５０Ｂにリダイレクトさせることができる。ただし、第２のビデオ最適化器１５０Ｂは、サーバのクラッシュやネットワークの接続問題等の何らかの理由で利用できない場合がある。第１のビデオ最適化器１５０Ａは、第２のビデオ最適化器１５０Ｂが利用できない状態であることをキャッシュデータベース１６０に通知することによって応答することができる。それに応答して、キャッシュデータベース１６０は、第２のビデオ最適化器１５０Ｂがキャッシュデータベース１６０と同期するまで、又は別のビデオ最適化器１５０からの要求に応答するまで、自身の利用可能なサーバリソースのセットから第２のビデオ最適化器１５０Ｂを一時的に除くことができる。
【００５４】
[0057]実施形態によっては、第１のビデオ最適化器１５０Ａが、キャッシュデータベース１６０が第２のビデオ最適化器１５０Ｂにあると報告した最適化されたファイルが第２のビデオ最適化器１５０Ｂにない等のエラーが発生したことを検出する場合がある。エラーに応答して、第２のビデオ最適化器１５０Ｂは自身の現在のサーバ負荷を第１のビデオ最適化器１５０Ａのサーバ負荷と比較して、どちらの帯域幅が多いかを判定することができる。第１のビデオ最適化器１５０Ａの方が第２のビデオ最適化器１５０Ｂよりも負荷が軽い場合には、第１のビデオ最適化器１５０Ａがソースファイルを変換し、最適化することができる。第２のビデオ最適化器１５０Ｂの方が第１のビデオ最適化器１５０Ａよりも負荷が軽い場合は、第２のビデオ最適化器１５０Ｂがソースファイルを変換し、最適化することができる。実施形態によっては、ビデオ最適化器１５０は、ビデオ最適化器１５０がソースファイルを変換する際の判断要因として接続の品質やクライアントとの近接度を比較してもよい。ビデオ最適化器１５０はキャッシュデータベース１６０にデータベース更新命令を送って、キャッシュされている最適化されたソースファイルの場所に関連するエントリを更新させてもよい。
【００５５】
[0058]図３Ｄは、キャッシュヒットに応答してユーザ機器に最適化されたソースファイルを提供し、最適化されたソースファイルを複製する工程の一実施形態を説明する例示的なイベント図である。図３Ｃと同様に、図３Ｄは、ユーザ機器１１０、ネットワークコントローラ１４０、第１のビデオ最適化器１５０Ａ、第２のビデオ最適化器１５０Ｂ、及びキャッシュデータベース１６０を含む。第１のビデオ最適化器１５０Ａからのデータベース照会に応答して、キャッシュデータベース１６０は、第２のビデオ最適化器１５０Ｂが要求される最適化されたソースファイルを持っていることを知らせるデータベース応答３２０を送信する。一実施形態では、第１のビデオ最適化器１５０Ａは、第２のビデオ最適化器１５０Ｂに記憶されたソースファイルの最適化されたバージョンを自身のローカルキャッシュ１５５に複製することができる。例えば、第１のビデオ最適化器１５０Ａは、その特定の最適化されたバージョンのソースファイルがしばしば要求され、最適化されたバージョンのソースファイルをローカルに記憶し、キャッシュしておけば処理時間の節減になるであろうと判断することができる。最適化されたバージョンのソースファイルは高いヒット率になる可能性があり、その最適化されたバージョンのソースファイルを記憶している１つのビデオ最適化器１５０では対応しきれない可能性がある。そのため、ヒット率が高い最適化されたバージョンのソースファイルを要求する別の最適化器が、自身のローカルキャッシュ１５５に記憶するためにその最適化されたバージョンを複製することを要求して、１つのサーバで対応しきれなくなることを防止することができる。最適化されたソースファイルを複製することにより、ビデオ最適化器は、キャッシュデータベース１６０の管理下にあるビデオ最適化器間で要求の負荷を分散させる。別の例では、要求される最適化されたソースファイルが、元のソースファイルの全再生時間の一セグメントのみに相当する場合がある。第１のビデオ最適化器１５０Ａは、複数のビデオ最適化器１５０に要求を発行して、元のソースファイルの最適化されたセグメントを可能な限り多く収集してから、残りの未最適化セグメントを変換することができる。最適化されたソースファイルの合併については下記でビデオプレビューのキャッシュとの関連で説明する。
【００５６】
[0059]一実施形態では、第１のビデオ最適化器１５０Ａは、要求される最適化されたバージョンのソースファイルを持っている第２のビデオ最適化器１５０ＢにＨＴＴＰ  ＧＥＴビデオ要求及び複製要求３８２を送信する。要求に応答して、第２のビデオ最適化器１５０Ｂは最適化されたストリーム３８４を第１のビデオ最適化器１５０Ｂに送信する。別の実施形態では、第１のビデオ最適化器１５０Ａは、最適化されたバージョンのソースファイルの複製を要求せずに、ＨＴＴＰ  ＧＥＴビデオ要求を送信する。その要求に応答して、第２のビデオ最適化器１５０Ｂは、自身が要求又は変換処理で過負荷になっていると判断する場合がある。第２のビデオ最適化器１５０Ｂは、最適化されたストリームを第１のビデオ最適化器１５０Ａに送信するとともに、複製された最適化済みビデオを記憶する３８６ことを第１のビデオ最適化器１５０Ａに求める要求を送信することにより第１のビデオ最適化器１５０Ａに応答することができる。第１のビデオ最適化器１５０Ａは、最適化されたストリーム３８４を受信すると、最適化されたバージョンのソースファイルをローカルキャッシュ１５５に記憶し３８６、同時に最適化されたストリーム３８８を再生のためにユーザ機器１１０に送信する。この結果、第１のビデオ最適化器１５０Ａは、ローカルにキャッシュされたバージョンの最適化されたソースファイルを所有するようになったので、第１のビデオ最適化器１５０Ａは、データベース更新の命令３９０をキャッシュデータベース１６０に送信する。受信した命令に応答して、キャッシュデータベース１６０はデータベースを更新３９２して、ビデオ最適化器１５０Ａと１５０Ｂの両方がその特定の最適化されたバージョンのソースファイルをローカルにキャッシュしていることを示すエントリを追加する。
【００５７】
［ビデオプレビューキャッシュ］
[0060]最適化されたビデオキャッシュの別の可能性はビデオプレビューのキャッシュである。完全な長さの最適化されたバージョンのソースファイルを多数ビデオ最適化器１５０にローカルにキャッシュするのではなく、さらに多くの数の部分的な長さの最適化されたバージョンを記憶することができる。したがって、各ビデオ最適化器１５０は、変換処理を開始する必要なしに、又は別の最適化器から最適化されたバージョンをストリーミングする必要なしに、多数の要求の処理を直接開始することができる。例えば、ビデオ最適化器１５０がユーザ機器１１０から要求される最適化されたバージョンのソースファイルのうち１分間の部分を記憶している場合、ストリームの滑らかな配信のために変換処理又はストリーミング処理を行う必要が生じる前にユーザがビデオを破棄する（例えば最初の３０秒間以内に）と、それ以上の処理は必要なくなる。したがって、冒頭の数セグメントより先を視聴するユーザは多くないため、プレビューのキャッシュで最適化されたバージョンの最初の３０〜６０秒を記憶することにより、ネットワークで使用される要求及び帯域幅を減らすことができる。したがって、ユーザが視聴しないことが多いソースファイルのセグメントの変換及び記憶に追加的なプロセッサ帯域幅を費やす代わりに、ビデオ最適化器１５０は、短い最適化済みのビデオプレビューを作成することによって自身のコンテンツをより効率的に管理することができる。最適化されたビデオを短くすることにより、ビデオ最適化器１５０の同じ限られた記憶キャッシュでも、最適化されたバージョンのソースファイルをより多く記憶することができる。人気のあるファイルは、完全な長さの最適化されたバージョンとして記憶されることが可能であるが、ユーザの動向に追従してより頻繁に消去及び更新される。
【００５８】
[0061]一実施形態では、ビデオ最適化器１５０がソースファイルの変換を開始し、最適化されたソースファイルをユーザ機器１１０にストリーミングする。ユーザがユーザ機器１１０での再生を取りやめると、ビデオ最適化器１５０は、ソースファイルの最適化を停止し、すでに最適化されたセグメントを記憶する。ビデオ最適化器１５０は、最適化されたソースファイル、元のソースファイルに関連付けられたキー、及び最適化されたビデオのセグメントを示すエントリでキャッシュデータベース１６０を更新する。後にユーザがソースファイルの同じセグメントを要求すると、キャッシュデータベース１６０は要求元のビデオ最適化器１５０を、最適化されたビデオセグメントを保持している適切なローカルキャッシュ１５５にリダイレクトすることができる。他の実施形態では、最適化されたバージョンのソースファイルの一部分を各種のビデオ最適化器１５０に分散することができる。
【００５９】
[0062]実施形態によっては、ユーザが、すべての部分の最適化が済んではいないソースファイルのセグメントを要求する場合がある。この実施形態では、ビデオ最適化器１５０は、すでに最適化されているビデオセグメントを判定して、すでに存在するソースファイルの最適化されたセグメントを再度変換せずに済むようにすることができる。ビデオ最適化器１５０は、最適化されたビデオセグメントをユーザ機器にストリーミングする時に、ビデオ変換処理が、これまでに最適化されていないセグメントに近づきつつあるかどうかを監視し続ける。ビデオ最適化器１５０は、最適化されていないソースファイル部分の変換を任意のキーフレームから開始することができ、以前に最適化されているビデオセグメントの開始部に到達するまで変換を続けることができる。変換処理が以前に最適化されたビデオセグメントの開始部に到達する前、又は到達した時に、ビデオ最適化器１５０は、以前に最適化されたビデオセグメントを、そのセグメントが記憶されている別のビデオ最適化器に要求する。要求に応答して、別のビデオ最適化器は、要求される最適化されたビデオセグメントを開始元のビデオ最適化器１５０に送り、ビデオ最適化器１５０は受信した最適化済みビデオセグメントを、自身が変換したセグメントの最後のキーフレームから合併する。
【００６０】
[0063]例えば、３つの連続したビデオセグメントがビデオ最適化器１５０の群にキャッシュされており、各ビデオ最適化器１５０はそれぞれ異なるセグメントを保持しているとする。第１のビデオ最適化器は、最適化されたバージョンのソースファイルから記憶されたプレビューをストリーミングし、その後、記憶されたプレビューの最後のキーフレームからソースファイルを取り出して最後のキーフレームからソースファイルを変換し、新たに変換されたストリームをそのキーフレームから合併して、ユーザ機器１１０で滑らかな再生を提供することができる。第１のビデオ最適化器は、別のビデオ最適化器で識別される最適化されたビデオセグメントの開始部に到達するまで、ソースファイルの変換と最適化されたバージョンのストリーミングを続ける。そして、第１のビデオ最適化器は、すでに変換されているセグメントを対応するビデオ最適化器から取得することができる。第１のビデオ最適化器１５０は、ユーザがビデオの視聴を停止するか、又はソースファイルの一部分について最適化されたセグメントが入手できなくなるまで、他のビデオ最適化器へのセグメントの要求を続けることができる。ソースファイルの一部について最適化されたセグメントが入手できない場合は、開始元のビデオ最適化器１５０は、中断した最後の最適化済みセグメントからソースファイルを変換する。必要な場合は、ビデオ最適化器は、将来最適化されたビデオが要求された時に利用できるようにストリーム全体をローカルにキャッシュすることもできる。
【００６１】
[0064]ローカルキャッシュの管理時に、ビデオ最適化器１５０は、ソースファイルの他の最適化されたバージョン用に記憶ドライブに空の空間を作るために、最適化されたバージョンのソースファイルのいくつかの部分だけを抹消することを決定することができる。例えば、ソースファイルの３０分間の最適化されたバージョンを分割して処理して、ソースファイルの最適化されたバージョンの最初の１分間だけを保存し、ソースファイルの最適化されたバージョンの残りはローカルキャッシュ１５５から消去することができる。ローカルキャッシュ１５５の消去により、多量の記憶空間を解放しつつ、特に他に比べて人気がないソースファイルの最適化されたバージョンについて、ユーザに対しては速い応答と最初のストリーミング時間を維持する。削除及び他のキャッシュ管理動作に応答して、ビデオ最適化器１５０は、キャッシュデータベース１６０にデータベース更新を送信して、データベースに記憶されたエントリを更新させる。
【００６２】
［予測符号化の改良］
[0065]図４は、キャッシュされたヘッダを使用した予測符号化の一実施形態の流れ図を示す。一実施形態では、図４に示す処理は、ヘッダを備えるソースファイルに対してビデオ最適化器１５０によって行われる。例えば、ヘッダは、ＭＰ４ファイル、ＡＶＩファイル、ＭＰＥＧファイル、ＭＯＶファイル、ＭＫＶファイル、ＯＧＭファイル、及びその他の種類の媒体ファイルに生成することができる。説明を分かりやすくするために、以下の説明ではＭＰ４のソースファイル及びヘッダを参照するが、他の種類の媒体ファイルも該当する可能性がある。ＭＰ４ソースファイルの最適化されたバージョンが生成される時に、元のソースファイル及び／又は元のソースファイルヘッダに基づいて、変換処理の開始前に予測ヘッダが作成される。予測ヘッダは、メディアプレーヤが最適化されたバージョンのソースファイルを認識して再生できるように、ソースファイルに関連する基本的な情報を含む。例えば、予測ヘッダは、送信元のプロファイル、フレーム／サンプルレート、フレームの種別、出力サンプルのサイズ、各出力フレームのサイズ、使用される符号化、圧縮率等の情報を含むことができる。予測ヘッダは、リアルタイムでストリーミングできるようにソースファイルが完全に変換される前に作成されるので、ビデオ最適化器１５０はヘッダに挿入する情報を予測しなければならない。その結果、ヘッダが含む、変換された媒体のフレームを変換するために必要な媒体コンテナの大きさの見積もりが大きく、又は小さくなり過ぎる場合がある。フレームサイズの過大な見積もりを補償するには、ビデオ最適化器１５０は、フレームを再度変換してその品質としたがってサイズを減らさなければならず、その結果、最適化されたバージョンのソースファイルに歪みが生じ、追加的な処理時間が必要となる可能性がある。フレームサイズの過小な見積もりを補償するには、事前に指定されたサイズに合わせるために冗長なビット又はデータをフレームに追加してフレームを埋める場合がある。そのため、ソースファイルの最適化されたバージョンは、過度に最適化されたフレームを含む可能性がある。
【００６３】
[0066]推定される品質の歪みとばらつきは、ソースファイルの変換で複数回のパスを行うことによって軽減することができ、各パスでは以前に生成された予測ヘッダを使用して次のパスのために新しいヘッダデータをより正確に予測する。ビデオ最適化器１５０は、一部のフレームに必要な埋め込みを減らし、一方で最適化されたソースファイル全体の品質を均等化することにより、ヘッダ生成時のエラーを修正することができる。最適化されたソースファイル中の埋め込みを減らすことにより、ビデオ最適化器１５０は、最適化されたソースファイルをローカルにキャッシュするために必要な記憶空間を減らすこともできる。しかし、ビデオの変換と最適化はしばしば実行中に（on-the-fly）行われるので、ビデオ最適化器１５０が元のソースファイルに複数回のパスを行うことは現実的でない。また、そのようなパスは不必要に行うべきではなく、したがって、ユーザ機器１１０にソースファイルを提供するために必要な時だけ行うことができる。
【００６４】
[0067]一実施形態では、最適化されたビデオのキャッシングは、予測符号化を改良するシステムを提供する。元のソースファイルが最初に変換される時に、予測ヘッダが従来の方法で生成され、この方法は、ソースファイル又はソースファイルの小さな部分及び／又はソースファイルのヘッダに予測アルゴリズムを使用して、出力されるソースファイルの最適化されたバージョンの特性を最良に推測することを伴う。予測ヘッダは、最適化されたバージョンのソースファイルに対応するキーと共に、最適化されたバージョンのソースファイルと共にビデオ最適化器１５０のキャッシュ又はキャッシュデータベース１６０に記憶することができ、また、後に行われるヘッダ予測の改良で使用するために検索することができる。ソースファイルの変換後に記憶された予測ヘッダは、変換中に生成される最適化されたバージョンのソースファイルに関連する情報を含むように更新することができる。例えば、更新後の予測ヘッダは、最適化されたバージョンの実際のフレームサイズ、ソースファイルの元のフレームサイズ、サイズが大き過ぎたために再変換を必要とした最後のフレームサイズ、及び最適化されたバージョンのソースファイルについて予測ヘッダが更新された回数を含むことができる。したがって、後に行われる変換処理ほど、最初のパスに比べて向上した最適化と高い品質を得ることができ、閾値回数のパスが完了すると、ビデオ最適化器１５０は、再度パスを行わずに予測ヘッダ情報を直接利用することができる。
【００６５】
[0068]図４で説明するように、ビデオ最適化器１５０がソースファイルを変換する要求を受け取ると、ビデオ最適化器１５０は、配信元サーバ１７０から元のソースファイルを取得する４０２と共に、元のソースファイルヘッダも受け取る。元のソースファイルヘッダ及びＩＤキーを受け取るのに応答して、ビデオ最適化器１５０はキャッシュデータベース１６０を照会して４０４、キャッシュデータベース１６０に、対応する以前に最適化されたバージョンのソースファイル及びヘッダの場所があるかどうかを判定する。データベース応答で、キャッシュデータベース１６０は、最適化されたバージョンのソースファイルとそれに関連付けられたヘッダが別のビデオ最適化器のローカルキャッシュ１５５に見つかるか、又はヘッダ情報はキャッシュされているが、要求される最適化されたバージョンのソースファイルがどのローカルキャッシュ１５５にも存在しないか、又は最適化されたバージョンのソースファイルとそれに関連付けられたヘッダのどちらもビデオ最適化器の群内に存在しないことを判定する４０６。後者の場合は、上記で図３Ａ〜３Ｄを参照して説明したように変換処理を進めることができ、将来ビデオ最適化器１５０が使用できるように、ソースファイルのヘッダ情報及び／又は１回目のパスの最適化されたバージョンの予測ヘッダ情報（及びそれに基づく更新されたヘッダ情報）がローカルに記憶されるか、又はキャッシュデータベース１６０で更新される。実施形態によっては、同じソースファイルであるが異なる最適化バージョンについての予測ヘッダ情報を使用して、より高い品質又は低い品質の新しい最適化されたバージョンのソースファイルの生成を支援することができる。
【００６６】
[0069]最適化されたソースファイルとそれに関連付けられたヘッダがキャッシュデータベース１６０及び／又は別のビデオ最適化器で入手できる実施形態では、開始元のビデオ最適化器１５０は、元のソースファイルヘッダ情報及び／又はソースファイルに生成されたＩＤキーを取得し４０２、キャッシュデータベース１６０を照会して４０４、以前に生成された予測ヘッダ及び最適化されたバージョンのソースファイルの情報を取得することができる。開始元のビデオ最適化器１５０が以前に生成された予測ヘッダ及び最適化されたバージョンのソースファイルの情報を受け取ると、開始元のビデオ最適化器１５０は、ユーザ機器１１０にストリーミングする前に、もう一度パスを行うことで最適化バージョンの品質を改良するため、又は異なる最適化バージョン（例えば異なる品質レベル）を生成するために、最適化されたバージョンのソースファイルを再度変換すべきかどうかを判定する。
【００６７】
[0070]ビデオ最適化器１５０は、ヘッダ及びファイルの属性を分析して４１２、その分析に基づいて新しい予測ヘッダを生成する４１４。一実施形態では、ビデオ最適化器１５０は、予測アルゴリズムを使用して、最適化されたソースファイルヘッダ、最適化されたバージョンのソースファイル、元のソースファイル、及び／又は元のソースファイルヘッダを分析して４１２、新しい予測ヘッダの情報をより適切に判断することができる。したがって、後にパスを行うたびに以前に生成されたヘッダを分析して４１２、新しいセッションの予測アルゴリズムを微調整して、最適化されたバージョンのソースファイルにより正確なヘッダを生成することができる。その後、将来の最適化されたビデオ要求及び予測符号化動作のために、新しく生成したヘッダを最適化されたソースファイルと共に記憶し４３０、キャッシュデータベース１６０中で更新する。将来行われる予測符号化動作を支援するために、ビデオトランスコーダ１５０は、変換処理に関する情報を記録し、予測ヘッダを更新して４３０、最適化されたバージョンの実際のフレームサイズ、ソースファイルの元のフレームサイズ、サイズが大き過ぎたために再変換を必要とした最後のフレームサイズ、及び最適化されたバージョンのソースファイルについて予測ヘッダが更新された回数等の情報を含めることができる。
【００６８】
[0071]以前に最適化されたソースファイルヘッダが存在しない場合４０６、ビデオ最適化器１５０は、自身の最良の推量を使用して新しい最適化されたソースファイルの属性を予測する４２２。この方法を使用すると、ビデオ最適化器１５０はしばしば、予測に基づいて生成された４２４ヘッダに不正確さを生じさせ、結果として最適化されたビデオフレームのサイズの見積もりが過度に大きく、又は小さくなる。上記のように、ビデオ最適化器１５０は、過大な見積もりを補償する場合はフレームの品質を下げなければならず、過小な見積もりの場合は冗長なビットでフレームを埋めなければならない。後に行われるパスでそれらのエラーを軽減することはできるが、ビデオ最適化器１５０がストリーミング動作中に２回目のパスを行うことはしばしば現実的でない。後に行われる最適化されたビデオ要求及び予測符号化動作のために、新しい予測ヘッダが最適化されたソースファイルと共に記憶される４３０。将来行われる予測符号化動作を支援するために、ビデオトランスコーダ１５０は、変換処理に関する情報を記録し、最適化されたバージョンの実際のフレームサイズ、ソースファイルの元のフレームサイズ、サイズが大き過ぎたために再変換を必要とした最後のフレームサイズ等の情報を含むように予測ヘッダを更新する４３０ことができる。
【００６９】
［構成に関するその他の事項］
[0072]ここに開示される構成は、キャッシュデータベースを導入することにより、最適化器でソースファイルを再度変換する必要なしに、最適化されたソースファイルを迅速に取得し、ユーザ機器にストリーミングすることを可能にするという利点を有する。従来のシステムでは、ソースファイルは全く最適化せずにユーザ機器にストリーミングされるか（その場合は限られたネットワーク帯域幅の使用が非効率になる）、又は、ユーザがソースファイルを要求するたびにソースファイルが最適化される（その場合は各最適化器の処理能力の使用が非効率になる）かのどちらかである。最適化器はしばしば互いに独立しており、互いと無関係に動作するので、キャッシュデータベースの導入により、どのローカルキャッシュが特定の最適化されたソースファイルを保持しているかを判定するための中央の管理用の一覧が可能になる。したがって、最適化されたソースファイルをより迅速にユーザに提供することができ、再度変換する必要がない。
【００７０】
[0073]本明細書を通じて、１つの事例として説明した構成要素、動作、又は構造を複数の事例として実施することができる。１つ又は複数の方法の個々の動作を別個の動作として図示及び説明したが、個々の動作の１つ又は複数を同時に行うことも可能であり、動作を説明した順序で行うことは必要とされない。例示的構成で別々の構成要素として提示した構造及び機能を、組み合わせて１つの構造又は構成要素として実施してもよい。同様に、１つの構成要素として提示した構造又は機能を別々の構成要素として実施してもよい。上記及びその他の変形、改変、追加、及び改良は、本明細書の主題の範囲に含まれる。
【００７１】
[0074]特定の実施形態は、ロジック、又はいくつかの構成要素、モジュール、又は機構を含むものとして本明細書に記載される。モジュールは、ソフトウェアモジュール（例えば機械読み取り可能媒体又は伝送信号に具現化されたコード）を構成しても、ハードウェアモジュールを構成してもよい。ハードウェアモジュールは、特定の動作を行うことが可能な有形の装置であり、任意の方式で構成又は適合することができる。例示的な実施形態では、１つ又は複数のコンピュータシステム（例えば独立型、クライアント若しくはサーバコンピュータシステム）又はコンピュータシステムの１つ又は複数のハードウェアモジュール（例えばプロセッサやプロセッサの群１０２）が、ソフトウェア（例えばアプリケーション若しくはアプリケーションの一部）によって、本明細書に記載の特定の動作を行うように動作するハードウェアモジュールとして構成されることができる。
【００７２】
[0075]各種の実施形態で、ハードウェアモジュールは機械的又は電子的に実施することができる。例えば、ハードウェアモジュールは、特定の動作を行うように恒久的に構成された専用の回路又はロジック（例えば利用者書き換え可能ゲートアレイ（ＦＰＧＡ）や特定用途集積回路（ＡＳＩＣ）などの特殊目的プロセッサ）からなることができる。ハードウェアモジュールは、特定の動作を行うようにソフトウェアによって一時的に構成されるプログラム可能なロジック又は回路（例えば汎用プロセッサや他のプログラム可能なプロセッサに包含される）からなる場合もある。ハードウェアモジュールを機械的に実施するか、専用の恒久的に構成された回路として実施するか、又は一時的に構成される回路（例えばソフトウェアで構成される）として実施するかの決定は、費用及び時間の考慮事項に応じて決まることが認識されよう。
【００７３】
[0076]本明細書に記載される例示的方法の各種動作（例えば図３Ａ〜Ｄ及び図４で説明される）は、少なくとも部分的には、関連する動作を行うように一時的に（例えばソフトウェアにより）又は恒久的に構成された１つ又は複数のプロセッサ（例えばプロセッサ２０２）によって行うことができる。一時的に構成される場合でも、恒久的に構成される場合でも、そのようなプロセッサは、１つ又は複数の動作又は機能を行うように動作する、プロセッサによって実装されるモジュールを構成することができる。本明細書で参照するモジュールは、一部の例示的実施形態では、プロセッサによって実装されるモジュールからなることができる。
【００７４】
[0077]本明細書の一部は、アルゴリズム、又はマシンメモリ（例えばコンピュータメモリ２０４）内にビット又はバイナリのデジタル信号として記憶されたデータに対する動作の記号的表現として記述される。それらのアルゴリズム又は記号的表現は、データ処理技術の当業者が自身の作業の内容を他の当業者に伝えるために使用する技法の例である。本明細書で使用される「アルゴリズム」は、所望の結果をもたらす動作又は同様の処理の自己充足的なシーケンスである。この文脈で、アルゴリズム及び動作は、物理的な数量の物理的な操作を伴う。必ずしもそうとは限らないが、典型的には、そのような数量は、マシンによる記憶、アクセス、転送、組み合わせ、比較、又はその他の操作が可能な電気、磁気、又は光学信号の形態をとることができる。時には、原理的に一般に使用されているという理由から、そのような信号を、「データ」、「内容」、「ビット」、「値」、「要素」、「記号」、「文字」、「項」、「数」、「数値」等の語を用いて参照することが利便である。ただし、そのような語は単に利便な標識に過ぎず、該当する物理的な数量に関連付けられるものとする。
【００７５】
[0078]特に断らない限り、「処理する」、「演算する」、「計算する」、「判定する」、「提示する」、「表示する」等の語を使用した本明細書の記述は、１つ又は複数のメモリ（例えば揮発性メモリ、不揮発性メモリ、若しくはそれらの組み合わせ）、レジスタ内で物理的な（例えば電子、磁気、又は光学）数量として表されるデータを操作又は変換するマシン（例えばコンピュータ）、又は情報を受信、記憶、送信、若しくは表示する他のマシン構成要素の動作又は処理を意味する。
【００７６】
[0079]本明細書で使用される場合、「一実施形態」の参照は、その実施形態との関連で説明する特定の要素、特徴、構造、又は特性が少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な箇所における「一実施形態では」という語句の出現は、すべてが同じ実施形態を指すとは限らない。
【００７７】
[0080]一部の実施形態は、「結合された（coupled）」及び「接続された（connected）」という表現とそれらの派生語を用いて説明している。例えば、一部の実施形態は、用語「結合された」を使用して説明することにより、２つ以上の要素が直接物理的又は電気的に接触していることを意味する。ただし、用語「結合された」は、２つ以上の要素が互いと直接接触しておらず、しかしなお互いと共同又は相互作用することを意味する場合もある。実施形態はこれに関して制限されない。
【００７８】
[0081]本明細書で使用される場合、用語「備える（comprises、comprising）」、「含む（includes、including）」、「有する（has、having）」、又はそれらの変化形は、非排他的な包含を含むことを意図する。例えば、要素の列挙を含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素に限定されず、明示的には記載されない他の要素、又はそのようなプロセス、方法、物品、若しくは装置に固有の他の要素を含むことができる。さらに、逆に明確に指摘しない限り、「又は（or）」は包含的なＯＲを意味し、排他的なＯＲではない。例えば、「条件Ａ又はＢ」は、Ａが真（又は存在する）且つＢが偽（又は存在しない）、Ａが偽（又は存在しない）且つＢが真（又は存在する）、及びＡとＢの両方が真（又は存在する）、のいずれかの時に成立する。
【００７９】
[0082]また、「ａ」又は「ａｎ」の使用は、本明細書では実施形態の要素及び構成要素を説明するために用いられる。これは単に便宜的なものであり、本発明の概略的な認識を与えるためである。このような記述は、１つ又は少なくとも１つを含むものと解釈すべきであり、単数形は、他の意味であることが明らかな場合を除いて複数形も含む。
【００８０】
[0083]本開示を読めば、当業者は、本明細書に開示される原理を通じてＨＴＭＬアンダーレイと共に対話型のビデオ広告を提供するシステム及び方法のさらに他の代替の構造的及び機能的な設計を認識されよう。したがって、特定の実施形態及び応用例を例示し説明したが、開示される実施形態は本明細書に開示される通りの構造及び構成要素に限定されないことを理解されたい。当業者には明らかであろう各種の改変、変更、及び変形を、添付の特許請求の範囲で定義される主旨及び範囲から逸脱することなく、本明細書に開示される方法及び装置の構成、動作、及び詳細に加えることができる。
【図１】
0005961850.tif 000002
【図２】
0005961850.tif 000003
【図３Ａ】
0005961850.tif 000004
【図３Ｂ】
0005961850.tif 000005
【図３Ｃ】
0005961850.tif 000006
【図３Ｄ】
0005961850.tif 000007
【図４】
0005961850.tif 000008