この出願は、2011年5月19日に出願され、米国仮特許出願第61/468,872号、発明の名称「ビデオエンコードシステムおよび方法」、明細書LYR−P0001は、ここに援用され、利益を主張する。
ここに開示された実施形態は、以下に詳細に説明された詳細な形態に、発明が網羅されたものではなく、あるいは発明を限定することを意図するものでもない。むしろ、実施形態は他の当業者がこの発明を利用できるように説明するために選ばれて記述されている。
図1に、ビデオエンコードシステム100を示す。ビデオエンコードシステム100は、1つ以上のネットワーク104を通して複数の顧客102に対して情報の送受信を行う。ネットワーク104には、プライベートネットワーク、インターネットのような公衆回線、ローカルエリア・ネットワーク、広域ネットワーク、携帯電話通信網、有線ネットワーク、無線ネットワーク、およびこれらの組合せが含まれる。
ビデオエンコードシステム100がクライアントコンピューターシステム106から受信する代表的な情報は、ビデオファイル110およびビデオファイル110の処理に関する情報である。一実施形態では、クライアントコンピューターシステム106がビデオエンコードシステム100にビデオファイル110を送信する、あるいは、ビデオエンコードシステム100にビデオファイル110を送信するように別のコンピューターシステムに命令する。一実施形態では、クライアントコンピューターシステム106は、ビデオファイル110の取り出し方法の指示をビデオエンコードシステム100に提供する。
ビデオエンコードシステム100がクライアントコンピューターシステム106に送信する代表的な情報には、ビデオファイル110およびビデオファイル110の処理に関する情報に基づいて生成される少なくとも1つの処理済みビデオファイル112が含まれる。一実施形態では、ビデオエンコードシステム100は、クライアントコンピューターシステム106に処理済みビデオファイル112を送信する、あるいは、クライアントンコピューターシステム106に処理済みビデオファイル112を送信するように別のコンピューターシステムに命令する。一実施形態では、クライアントコンピューターシステム106によって指定された送信先に処理済みビデオファイル112を送信する、または、クライアントコンピューターシステム106によって指定された送信先に処理済みビデオファイル112を送信するように他のコンピューターシステムに命令する。一実施形態では、ビデオエンコードシステム100が、処理済みビデオファイル112の取り出し方法の指示をクライアントコンピューターシステム106に提供する。
図に示された実施形態では、ビデオファイル110の処理に関する情報には、所望のビデオエンコードフォーマットに関連する情報が含まれる。ビデオファイル110のフォーマットに関連する代表的な情報には、ビデオエンコードのフォーマット、ビットレート、解像度、および、他の適切な情報が含まれる。ビデオファイル110の処理に関連する更なる代表的な情報として、キーポイントの位置および他のメタデータが含まれるようにしてもよい。一実施形態では、情報はビデオファイル110の複数のエンコードフォーマットに関連し、複数の処理済みビデオファイルが、ビデオエンコードシステム100によって生成される。
図2に、代表的なクライアントコンピューターシステム106を示す。クライアントコンピューターシステム106は制御部120を備える。制御部120は、記憶部122へアクセスすることができる。記憶部122は制御部120によって実行され、クライアントコンピューターシステム106がネットワーク104上の他のコンピューター装置と通信するための通信ソフトウェア124が設けられる。通信ソフトウェア124は、ソフトウェアとして図に示しているが、ソフトウェア、ハードウェア、またはそれらの組合せとして組み込まれてもよい。クライアントコンピューターシステム106は、さらに記憶部122に格納される少なくとも1つのビデオファイル110を有する。また、情報ファイル116が記憶部122に格納されている様子が示されている。一実施形態では、情報ファイル116には、ビデオファイル110の処理に関する情報が含まれる。一実施形態では、ビデオファイル110の処理に関する情報は、ビデオファイル110の一部として格納される。
クライアントコンピューターシステム106は、さらにユーザ・インタフェース130を備える。ユーザ・インタフェース130には、1つ以上の入力装置132および1つ以上の出力装置と、図に示すディスプレイ134が含まれる。代表な入力装置には、キーボード、マウス、ポインター装置、トラックボール、ボタン、スイッチ、タッチスクリーン、およびオペレータにクライアントコンピューターシステム106の入力を提供するのに適した他の装置が含まれる。代表的な出力装置には、ディスプレイ、タッチスクリーン、プリンター、スピーカー、およびクライアントコンピューターシステム106のオペレータに情報を提供するのに適した他の装置が含まれる。
一実施形態では、クライアントコンピューターシステム106は、さらにビデオ・カメラ136および付属のマイクロフォン138を備える。ビデオファイル110を撮影するためにビデオ・カメラ136を用いるようにしてもよい。一実施形態では、クライアントコンピューターシステム106は別のコンピューター装置からビデオファイル110を受信する。代表的なクライアントコンピューターシステム106には、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、携帯電話、スマートフォン、ビデオ・カメラ、および他の適切なコンピューター装置が含まれる。
図に示された実施形態では、クライアントコンピューターシステム106は単一システムである。別の実施形態では、クライアントコンピューターシステム106は互いに通信する2つ以上のシステムで構成する。図に示す実施形態では、クライアントコンピューターシステム106は、制御部120と記憶部122を備え、制御部120は同時に作動する一以上のプロセッサーであってもよく、記憶部122が制御部120からアクセス可能な複数の記憶部であってもよい。制御部120の1つ以上のプロセッサーに対する記憶部122として、ソフトウェアの実行に関連する記憶部およびデータの格納に関連する記憶部が設けられるが、これに限定するものではない。記憶部122には、コンピューター読み取り可能な媒体が含まれる。コンピューター読み取り可能な媒体には、制御部120の1つ以上のプロセッサーからアクセス可能なあらゆる媒体が含まれ、揮発性の媒体および不揮発性の媒体が含まれる。さらに、コンピューター読み取り可能な媒体は取り外し可能であっても、取外し不可能な媒体であっても、それらのいずれかまたは両方であってもよい。一例として、コンピューター読み取り可能な媒体には、これに限定するものではないが、RAM、ROM、EEPROM、フラッシュ・メモリ、または他の記憶技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学磁気ディスク装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置が含まれ、あるいは、所望の情報を格納するのに使用され、かつ、制御部120がアクセス可能な他のあらゆる非一時的な媒体であってもよい。
図1に戻って、ビデオエンコードシステム100は、ビデオエンコード管理コンピューターシステム200および複数のワーカーコンピューターシステム202を備える。一実施形態では、ワーカーコンピューターシステム202の数は固定されている。一実施形態では、ワーカーコンピューターシステム202の数は動的に決められ、拡張可能なオンデマンドシステムを提供する。
一実施形態では、ビデオエンコードシステム100はクラウドコンピューターのプラットフォームに置かれる。一実施形態では、クラウドコンピューターは、相当に大きなオンデマンドコンピューターのコンピューター資源が利用可能なサードパティーが提供するサービスである。クラウドコンピューターの実施形態において、コンピューター資源はワーカーコンピューターシステム202またはインスタンスという用語を用いる。「インスタンス」は、特定CPUと所定のメモリと所定のハードディスクのスペースを備えたコンピューター資源である。インスタンスは、プログラムによって起動され、シャットダウンされるものであってもよい。一実施形態では、コンピューター資源の数は固定である。一実施形態では、コンピューター資源の数は動的に決められ、拡張可能なオンデマンドシステムで提供される。
図3に、代表的なビデオエンコード管理コンピューターシステム200を示す。ビデオエンコード管理コンピューターシステム200は、制御部220を備える。制御部220は、記憶部222にアクセスすることができる。記憶部222は制御部220によって実行され、ビデオエンコード管理コンピューターシステム200がネットワーク104または他のネットワーク上の他のコンピューター装置と通信を行う通信ソフトウェア224が設けられる。通信ソフトウェア224は、ソフトウェアとして図に示しているが、ソフトウェア、ハードウェア、またはそれらの組合せとして組み込まれてもよい。ビデオエンコード管理コンピューターシステム200は、さらに、クライアントコンピューターシステム106から受信して、記憶部222に格納するビデオファイル110および情報ファイル116を有する。代表的なビデオエンコード管理コンピューターシステム200には、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、携帯電話、スマートフォン、および他の適切なコンピューターが含まれる。
ビデオエンコード管理コンピューターシステム200は、さらにユーザ・インタフェース230を備える。ユーザ・インタフェース230には、1つ以上の入力装置232および1つ以上の出力装置、図に示すディスプレイ234が含まれる。代表的な入力装置には、キーボード、マウス、ポインター装置、トラックボール、ボタン、スイッチ、タッチスクリーン、および、オペレータにビデオエンコード管理コンピューターシステム200の入力を提供するのに適した他の装置が含まれる。代表的な出力装置には、ディスプレイ、タッチスクリーン、プリンター、および、ビデオエンコード管理コンピューターシステム200のオペレータに情報を提供するのに適した他の装置が含まれる。
図に示す実施形態では、ビデオエンコード管理コンピューターシステム200は単一システムである。別の実施形態では、ビデオエンコード管理コンピューターシステム200は、互い送受信する2つ以上のシステムで構成する。図に示す実施形態では、ビデオエンコード管理コンピューターシステム200は、制御部220と記憶部222を備え、制御部220が同時に作動する1つ以上のプロセッサーであってもよく、記憶部222が制御部220からアクセス可能な複数の記憶部であってもよい。制御部220の1つ以上のプロセッサーに対する記憶部222は、ソフトウェアの実行に関連する記憶部およびデータの格納に関連する記憶部が設けられるが、これに限定するものではない。記憶部222には、コンピューター読み取り可能な媒体が含まれる。コンピューター読み取り可能な媒体には、制御部220の1つ以上のプロセッサーがアクセス可能なあらゆる媒体が含まれ、揮発性および不揮発性の媒体が含まれる。さらに、コンピューター読み取り可能な媒体は、取り外し可能であっても、取外し不可能な媒体であっても、それらのいずれかまたは両方であってもよい。一例として、コンピューター読み取り可能な媒体には、これに限定されるものではないが、RAM、ROM、EEPROM、フラッシュ・メモリ、または他の記憶技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学磁気ディスク装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置が含まれ、あるいは、所望の情報を格納するのに使用され、制御部220がアクセス可能な他のあらゆる非一時的な媒体であってもよい。
記憶部222は、さらに、ビデオエンコード管理ソフトウェア210を備える。ビデオエンコード管理ソフトウェア210は、ビデオファイル110の処理に関するものである。クラウドコンピューターまたは他の分散型のコンピューターの実施形態では、制御部220はビデオファイル110を処理するためのビデオエンコード管理ソフトウェア210を実行する。例えば、ビデオファイル110のサイズおよびビデオファイル110の所望の処理に応じて、制御部220はビデオファイル110を処理するために使用するワーカーコンピューターシステム202の数を決定し、マスターワーカーコンピューターシステム206として機能する各ワーカーコンピューターシステム202を割り当てる。ビデオエンコード管理ソフトウェア210は、ソフトウェアとして図に示されているが、ソフトウェア、ハードウェア、またはそれらの組合せとして組み込まれてもよい。
図11を参照して、ビデオエンコード管理コンピューターシステム200の代表的な処理シーケンス250を説明する。ブロック252に示すように、ビデオファイル110は、ビデオエンコード管理コンピューターシステム200で受信される。ビデオエンコード管理コンピューターシステム200は、ビデオファイル110およびビデオファイル110の所望の処理を定める情報ファイル116を分析する。一実施形態では、情報ファイル116には、ビデオファイル110の所望のエンコードフォーマット、その所望のエンコードフォーマット解像度、およびその所望のエンコードフォーマットのビットレートが含まれる。
図11へ戻って、ブロック254に示されるように、ビデオエンコード管理コンピューターシステム200はビデオエンコードシステム100の推定負荷を決定する。一実施形態では、推定負荷は式(1)に基づいて決定される。
式中、LOAD=ビデオエンコードシステム100の推定負荷;(A)=所望のエンコードの所望のフレームレート;(T)=ビデオファイル110の持続時間;(H)=所望のエンコードにおける列の数;(W)=所望のエンコードにおける行の数;nはワーカーコンピューターシステム202のエンコードソフトウェアの速度に基づく。一実施形態では、エンコードソフトウェアは、NY10022 、ニューヨーク、パークアベニュー405にあるLyrical Labsから提供されるH.2644エンコーダーが利用可能である。この場合、nの値は1.5である。一実施形態では、nの値は、約1.2から約2.5の間である。他の代表的なビデオエンコーダーは、http://www.videolan.org.からオンラインで提供されるVideoLANのx264が利用可能である。
ビデオエンコード管理コンピューターシステム200は、ブロック256によって表されるように、決定されたLOADに基づいて、ワーカーコンピューターシステム202の数を定める。一実施形態では、推定負荷は式(2)に基づいて決定する。
式中、NUM=起動するワーカーコンピューターシステム202の数;LOAD=ビデオエンコードシステム100の推定負荷;SINGLE_WORKER_LOAD=代表的なワーカーコンピューターシステム202の負荷容量;CEILING関数は次の最も小さい整数になるようにNUMを増やす。ブロック258に示すように、ビデオエンコード管理コンピューターシステム200は、ビデオファイル110を処理するのに必要なワーカーコンピューターシステム202を決められた数起動する。ブロック260に示すように、ビデオエンコード管理コンピューターシステム200は、さらに、ビデオファイル110の処理を管理するワーカーコンピューターシステム202の1つをマスターワーカーコンピューターシステム206として指定する。ブロック262に示すように、ビデオエンコード管理コンピューターシステム200は、マスターワーカーコンピューターシステム206にビデオファイル110を送信し、マスターワーカーコンピューターシステム206に指示して、起動されたワーカーコンピューターシステム202の数と等しい数の分割部分にビデオファイル110を分割する。この場合、マスターワーカーコンピューターシステム206も、ビデオファイル110の1つの分割部分をエンコードする。
図4に、代表的なマスターワーカーコンピューターシステム206を示す。マスターワーカーコンピューターシステム206は制御部320を備える。制御部320は、記憶部322へアクセスすることができる。記憶部322は制御部320によって実行され、マスターワーカーコンピューターシステム206がネットワーク104または他のネットワーク上の他のコンピューター装置と通信を行う通信ソフトウェア324が設けられる。通信ソフトウェア324は、ソフトウェアとして図に示しているが、ソフトウェア、ハードウェア、またはそれらの組合せとして組み込まれてもよい。マスターワーカーコンピューターシステム206は、さらに、ビデオエンコード管理コンピューターシステム200から受信し、記憶部322に格納されるビデオファイル110および情報ファイル116を有する。代表的なマスターワーカーコンピューターシステム206には、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、携帯電話、スマートフォン、および他の適したコンピューター装置が含まれる。
マスターワーカーコンピューターシステム206は、さらに、ユーザ・インタフェース330を備える。ユーザ・インタフェース330には、1つ以上の入力装置332および1つ以上の出力装置、図に示すディスプレイ334が含まれる。代表的な入力装置には、キーボード、マウス、ポインター装置、トラックボール、ボタン、スイッチ、タッチスクリーン、およびオペレータにマスターワーカーコンピューターシステム206の入力を提供するのに適した他の装置が含まれる。代表的な出力装置には、ディスプレイ、タッチスクリーン、プリンターをおよびマスターワーカーコンピューターシステム206のオペレータに情報を提供するのに適した他の装置が含まれる。
図に示す実施形態では、マスターワーカーコンピューターシステム206は単一システムである。別の実施形態では、マスターワーカーコンピューターシステム206は、互い送受信する2つ以上のシステムで構成する。図に示す実施形態では、マスターワーカーコンピューターシステム206は、制御部320および記憶部322を備え、制御部320が同時に作動する1つ以上のプロセッサーであってもよく、記憶部322は制御部320がアクセス可能な複数の記憶部であってもよい。制御部320の1つ以上のプロセッサーに対する記憶部322は、ソフトウェアの実行に関連する記憶部およびデータの格納に関連する記憶部が設けられるが、これに限られるものではない。記憶部322には、コンピューター読み取り可能な媒体が含まれる。コンピューター読み取り可能な媒体は、制御部320の1つ以上のプロセッサーからアクセス可能な媒体であり、揮発性および不揮発性の媒体が含まれる。さらに、コンピューター読み取り可能な媒体は、取り外し可能であっても、取外し不可能な媒体であっても、それらのいずれかまたは両方であってもよい。一例として、コンピューター読み取り可能な媒体は、これに限定するものではないが、RAM、ROM、EEPROM、フラッシュ・メモリ、または他の記憶技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学磁気ディスク装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは、所望の情報を格納するのに使用され、制御部320がアクセス可能な他のあらゆる非一時的な媒体も含む。
記憶部322には、さらに、ビデオ分割ソフトウェア302、ビデオ連結ソフトウェア304、ビデオエンコードソフトウェア310、分割部分の数308、およびワーカーコンピューターシステムの割り当てインデックス300が設けられる。ビデオ分割ソフトウェア302は、マスターワーカーコンピューターシステム206と残りのワーカーコンピューターシステム202で処理するために、通常は、等しい時間間隔でビデオファイル110を分割する。一実施形態では、ビデオ分割ソフトウェア302は、ある特定の分割部分に対応してそれぞれ別のビデオクリップを生成する。一例では、ビデオ管理システムは、各分割部分に対する時間窓(クリップの2分と4分の間の間隔)を決定し、分割したビデオクリップを生成するビデオ分割ソフトウェア302にこれらの時間間隔を与える。代表的なビデオ分割ソフトウェア302は、http://www.ffmpeg.orgにオンラインでFFmpeg.orgから提供されるFfmpegが利用可能である。ビデオ連結ソフトウェア304は、ビデオファイルにビデオ部分を連結する。代表的なビデオ連結ソフトウェア304は、http://www.flvsoft.comにオンラインでFLSoftから提供されるFlvbindが利用可能である。ビデオエンコードソフトウェア310は、ビデオファイル110の処理に関するものである。制御部320は、情報ファイル116で指定された目標のエンコードフォーマットに、ビデオファイル110の少なくとも1つの分割部分をエンコードする。代表的なビデオエンコードソフトウェア310は、http://www.videolan.orgにオンラインでVideoLANから提供されるx264が利用可能である。ビデオ分割ソフトウェア302、ビデオ連結ソフトウェア304、およびビデオエンコードソフトウェア310が、別のソフトウエアモジュールとして示されているが、ビデオ分割ソフトウェア302、ビデオ連結ソフトウェア304、およびビデオエンコードソフトウェア310の1つ以上が、一緒のソフトウエアモジュールとして結合されていてもよい。ビデオ分割ソフトウェア302、ビデオ連結ソフトウェア304、およびビデオエンコードソフトウェア310が、ソフトウェアとして説明するが、ビデオ分割ソフトウェア302、ビデオ連結ソフトウェア304、およびビデオエンコードソフトウェア310の1つ以上を、ソフトウェア、ハードウェア、またはそれらの組合せとして組み込まれてもよい。
ビデオファイル110を分割するビデオエンコード管理コンピューターシステム200が起動するワーカーコンピューターシステム202の数は、分割部分の数308が対応する。マスターワーカーコンピューターシステム206は、分割部分の数308に基づいて、ビデオ分割ソフトウェア302でビデオファイル110を分割部分306に分割する。一実施形態では、分割部分306はビデオクリップであり、ビデオクリップのそれぞれが個々の時間間隔に対応する。この実施形態では、マスターコンピューターシステム206が、ワーカーコンピューターシステム202のそれぞれが各分割部分306を取り出して、ビデオファイル110の各分割部分306を処理するように指示する。マスターワーカーコンピューターシステム206は、各分割部分と各ワーカーコンピューターシステム202のインデックス300を格納する(図12参照)。このようにして、マスターワーカーコンピューターシステム206は、処理済みビデオファイル112を生成するように命令したワーカーコンピューターシステム202から送り返された処理済み分割部分316を受信することができる。
図5に、代表的なワーカーコンピューターシステム202を示す。ワーカーコンピューターシステム202は、制御部350を備える。制御部350は、記憶部352へアクセスすることができる。記憶部352は制御部350によって実行され、ワーカーコンピューターシステム202がネットワーク104または他のネットワーク上の他のコンピューター装置と通信を行う通信ソフトウェア354を備えている。通信ソフトウェア354は、図にソフトウェアとして示されているが、ソフトウェア、ハードウェア、またはそれらの組合せとして組み込まれてもよい。ワーカーコンピューターシステム202は、さらに、マスターワーカーコンピューターシステム206から受信して記憶部352に格納する1つの分割部分306を有する。代表的なワーカーコンピューターシステム202には、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、携帯電話、スマートフォン、および他の適切なコンピューター装置が含まれる。
ワーカーコンピューターシステム202には、さらにユーザ・インタフェース360が設けられる。ユーザ・インタフェース360には、1つ以上の入力装置362および1つ以上の出力装置、図に示すディスプレイ364が含まれる。代表的な入力装置には、キーボード、マウス、ポインター装置、トラックボール、ボタン、スイッチ、タッチスクリーン、およびオペレータにワーカーコンピューターシステム202の入力を提供することが可能な他の適切な装置が含まれる。代表的な出力装置には、ディスプレイ、タッチスクリーン、プリンターを、およびワーカーコンピューターシステム202のオペレータに情報を提供する他の適切な装置が含まれる。
図に示めす実施形態において、ワーカーコンピューターシステム202は、単一のシステムである。別の実施形態では、ワーカーコンピューターシステム202には互いに通信する1つ以上のシステムで構成する。図に示す実施形態では、ワーカーコンピューターシステム202は、制御部350と記憶部352を備え、制御部350が同時に動作する1以上のプロセッサーであってもよく、記憶部352が制御部350からのアクセス可能な複数の記憶部であってもよい。制御部350の1以上のプロセッサーに対する記憶部352として、ソフトウェアの実行に関連する記憶部およびデータの格納に関連する記憶部が設けられるが、これに限定するものではない。記憶部352には、コンピューター読み取り可能な媒体が含まれる。コンピューター読み取り可能な媒体には、制御部350の1つ以上のプロセッサーからアクセス可能なあらゆる媒体が含まれ、揮発性の媒体および不揮発性の媒体が含まれる。さらに、コンピューター読み取り可能な媒体は、取り外し可能であっても、取外し不可能な媒体であっても、それらのいずれかまたは両方であってもよい。一例として、コンピューター読み取り可能な媒体には、これに限定するものではないが、RAM、ROM、EEPROM、フラッシュ・メモリ、または他の記憶技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学磁気ディスク装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置が含まれ、あるいは、所望の情報を格納するのに使用され、かつ、制御部120がアクセス可能な他のあらゆる非一時的な媒体であってもよい。
記憶部352には、さらにビデオエンコードソフトウェア310が設けられる。ビデオエンコードソフトウェア310は、割り当てられた分割部分306の処理に関するものである。制御部350は、目標のエンコードフォーマットに、ビデオファイル110の割り当てられた分割部分306をエンコードして、処理済み分割部分316を生成する。
処理済み分割部分316の全てが、マスターワーカーコンピューターシステム206で受信されると、マスターワーカーコンピューターシステム206は処理された分割部分316を連結して処理済みビデオファイル112を生成する(図12を参照)。処理済みビデオファイル112は、要求したクライアントコンピューターシステム106に送り返すか、または、クライアントコンピューターシステム106から指示された別のコンピューター装置に送信する。
図6〜10に、ビデオエンコードシステム100の典型的な実施形態が示されている。図に示された実施形態では、オンデマンドのエンコードシステムとして、コンピューター資源を提供するために、アマゾンウェッブサービスが提供するオンライン上のhttp://aws.amazon.comに置かれるAmazon Elastic Compute Cloud(「Amazon EC2」)サービスが利用可能である。説明された実施形態の総合システム400が、図6に示される。
また、メッセージシステム402は、クライアントコンピューターシステム106とビデオエンコードシステム100間の通信のために使用される。図に示された実施形態では、Amazon’s Simple Queuing Service (「Amazon SQS」)が、メッセージングに用いられる。待ち行列システムは、クライアントコンピューターシステム106とビデオエンコードシステム100のクラウド内のコンピューターシステムの間でメッセージを通信できるようにする。例えば、インスタンスとワーカーコンピューターシステム202とマスターワーカーコンピューターシステム206との間、および、クラウド内のシステムとクライアントコンピューターシステム106との間でファイルを共有するファイルホスティングシステム404が提供される。図に示された実施形態では、アマゾンのS3ファイルシステム(「アマゾンS3」)がファイルを転送するために使用される。
エンコード処理は、コンテンツホスト(以下、「出版業者」という)が、自分のサーバー(クライアントコンピューターシステム106)の指定されたディレクトリー408にビデオファイル410をコピーすることから開始される。出版業者は、ビデオファイル410に加えて、所望のエンコードを行うときの解像度およびビットレートを指定している情報ファイル416を提供する。複数の目的とする解像度およびビットレートが1つの情報ファイル416の内で指定されるようにしてもよい。
次に、出版業者のサーバー(クライアントコンピューターシステム106)で稼動するローカルサービス(ファイルホスティングシステム404)によって、ファイル(ビデオファイル410および情報ファイル416の両方)がクラウドベースのファイルシステムに転送される。図に示された実施形態では、アマゾンS3が使用されている。
出版業者のローカルサービス(ファイルホスティングシステム404)は、特定のファイルがアップロードされていることを示すメッセージをメッセージシステム402のメッセージ待ち行列に置く。図に示された実施形態では、アマゾンSQSが用いられる。アマゾンSQSは、双方向でいつでも利用できるサービスであり、同時に多くのクライアントコンピューターシステム106からアクセス可能である。クリップマネージャーまたはビデオエンコード管理ソフトウェア210(ビデオエンコード管理コンピューターシステム200)、これはクラウドベースのインスタンス上で動くサービスであり、待ち行列にアクセスして、エンコードするファイに関する特定のメッセージを読み込む。図7に示すように、ビデオエンコード管理コンピューターシステム200は、メッセージシステム402を介して多数のクライアントコンピューターシステム106と通信することができる。通信ベースのアマゾンSQSは、クリップマネージャーに利用可能な資源があれば、クリップマネージャーがアマゾンSQSに単にアクセスすれば、クリップマネージャーはコンピューターの負荷が重いためにメッセージを逃すことはないことが保証される。ビデオファイル410および関連する情報ファイル416は、アクセスの準備ができたファイルホスティングシステム404上に存在する。
クリップマネージャーは、エンコードする新しいファイルがあることを示すメッセージ待ち行列内のメッセージにアクセスすると、ファイルホスティングシステム404のビデオファイル410および情報ファイル416にアクセスして、エンコードを完了するために必要な資源を決定する。クリップマネージャーは、ビデオクリップを1つのインスタンスを用いて処理してもよいし、多数のインスタンスの間でその仕事を分けてもよい。図に示された実施形態では、1つのインスタンスに、一定の計算負荷(すなわち、特定の長さの時間に対して特定の解像度のビデオクリップ)が与えられる。解像度に応じて、ビデオファイルは固定の長さのパートごとに処理される。この部分の長さが、エンコードする目標の解像度の1つの処理(function)になる。例えば、2時間のビデオクリップは、2分のパートに分割され、60個のインスタンスで並行して処理するようにしてもよい。但し、90秒のクリップは、1つのインスタンスで処理されるであろう。インスタンスは、オンデマンドでプロクラから起動される。クラウドベースのシステムは、要求された資源を供給し、使用されないインスタンスはプログラムからシャットダウンされる。
ワーカーコンピューターシステム202およびマスターワーカーコンピューターシステム206等のある特定のビデオクリップをエンコードするために起動されるインスタンスに対して、「ワーカー」インスタンスという用語を用いる。ワーカーインスタンスは、ファイルホスティングシステム404内のファイルのポインターが与えられ、アマゾンS3は、目標の解像度とビットレートとファイルのパートに関する情報に従ってエンコードしなければならない(例えば、2分から4分間の間隔のクリップ)。ワーカーは、ファイルホスティングシステム404(アマゾンS3)のビデオファイル410にアクセスする。既知の可用性が高いファイルホスティングシステム404(アマゾンS3)は、通信回線が混雑しているために性能が低下することなく多くのワーカーが同じファイルに同時にアクセスすることができる。ワーカーは、指定された時間間隔で標準的なフォーマットにデコードする。図に示された実施形態では、フォーマットは、圧縮されていない.yuvファイルである。多くのパブリックドメインプログラムで、広範囲の標準的なフォーマットにデコードすることができる。続いて、.yuvファイルは、エンコードする所望の解像度にサイズ調整される。そして、エンコーダーが、所望のフォーマットにファイルをエンコードする。一実施形態では、NY 10022、ニューヨーク、パークアベニュー405 にあるLyrical Labsから提供される H.264のエンコーダーは、.flvファイルを入力してエンコードし、.flv(フラッシュビデオファイル)ファイルまたは.mp4(MPEGオーディオストリーム)ファイルのいずれかのフォーマットまたは両方のフォーマットで出力する。エンコーダーは商業的に関心がもたれる解像度とビットレートの全範囲に対応する機能がある。結果として、エンコード済みファイルは図9に示すようにアマゾンS3の待ち行列に再び置かれる。もう一つの代表的なビデオエンコーダーはhttp://www.videolan.orgにオンラインで置かれるVideoLANから提供されるx264が利用可能である。
エンコードプロセスが複数パートまたは分割部分に分けられると、1つのワーカー(マスターワーカーコンピューターシステム206)は、S3からエンコードされた部分を集めて、それらを連結して1つのエンコード済みファイル(処理済みビデオファイル112)にする。パブリックドメインの多くのプログラムで、このビットストリームを連結することができる。特定の実施形態では、FLVBindが用いられる。
エンコード済みファイルがアマゾンS3に置かれれば、ワーカー(マスターワーカーコンピューターシステム206)は、仕事が完了したことを、クリップマネージャー(ビデオエンコード管理コンピューターシステム200)に通知する。それ以上の仕事がなければクリップマネージャー(ビデオエンコード管理コンピューターシステム200)は、仕事がなくなったワーカーに、新しい仕事を割り当てる、またはインスタンスを終了する。
クリップマネージャー(ビデオエンコード管理コンピューターシステム200)は、特定のエンコードジョブが完了したことを示すメッセージをメッセージシステム402のメッセージ待ち行列に置くとともに、エンコード済みファイルへのポインターをファイルホスティングシステム404(アマゾンS3)上に置く。出版業者のサーバーで動いているローカルサービスは、メッセージ待ち行列にアクセスして、エンコード済みファイル(処理済みビデオファイル112)をダウンロードする。多数あるエンコード済みファイルは、一つの入力ファイルから作られた結果である。このプロセスは図10に示される。
図に示す実施形態では、出版業者は、ピーク時の利用をターゲットにして、広いエンコーダー用の場所(farm)を用意する必要はない。顧客の需要へ対応してクラウドベースのシステムのスケールを決めるので、顧客の費用は、実際に使用されたコンピューター資源に関するだけである。前もってコストがかかることがほとんどないため、出版業者のコストはビジネスに対応したものとなり、経済的な強みを提供する。
この発明では、代表的な設計について説明を行ったが、本発明は、この開示された意図とその範囲内でさらに変更されたものであってもよい。従ってこの出願は、一般的な原則に応じて発明を変形させ、利用し、または適応したあらゆる範囲に及ぶものである。さらに、この出願は、この発明の分野の当業者に知られまたは通常の行われている範囲から生じる現在の開示の範囲から離れることがない範囲に及ぶものである。