(57)【要約】  ビデオクリップのトランスコーディングのためのシステムおよび方法が開示される。一実装形態では、コンピュータシステムは、ビデオクリップをN+1個の連続的なチャンクにそこで分割するN個のフレームを決定し、Nが正の整数であり、またフレームが、ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づいて決定される。N+1個のチャンクのそれぞれが、トランスコーディングのためのそれぞれのプロセッサに提供され、またトランスコードされたビデオクリップが、トランスコードされたN+1個のチャンクから生成される。
2017507533.tif 000002
【特許請求の範囲】
【請求項１】
ビデオクリップをN+1個の連続的なチャンクにそこで分割する、前記ビデオクリップのN個のフレームを、コンピュータシステムによって決定するステップであって、Nが正の整数であり、前記ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づく決定するステップと、
前記N+1個のチャンクのそれぞれを、トランスコーディングのためのそれぞれのプロセッサに提供するステップと、
トランスコードされたビデオクリップを、トランスコードされたN+1個のチャンクから生成するステップと
を含む、前記ビデオクリップをトランスコードする方法。
【請求項２】
前記N個のフレームを決定する前記ステップが、前記最小チャンクサイズ以上、前記最大チャンクサイズ以下であるデフォルトチャンクサイズにさらに基づく、請求項1に記載の方法。
【請求項３】
前記N個のフレームの少なくとも1つが、前記ビデオクリップにおける場面変化に基づいて決定される、請求項1に記載の方法。
【請求項４】
前記ビデオクリップにおける1つまたは複数の場面変化を識別するステップをさらに含む、請求項3に記載の方法。
【請求項５】
前記それぞれのプロセッサのそれぞれが、それぞれのコンピュータシステムに関連付けられた、請求項1に記載の方法。
【請求項６】
前記ビデオクリップが、前記最大チャンクサイズを超える場面を含み、前記場面内のフレームが、前記場面の少なくとも2つのフレームに関する明るさの尺度に基づいて決定される、請求項1に記載の方法。
【請求項７】
前記フレームが、前記明るさの尺度が最小変化率を有する前記場面のある点において発生する、請求項6に記載の方法。
【請求項８】
ビデオクリップを格納するためのメモリと、
前記ビデオクリップをN+1個の連続的なチャンクにそこで分割する、前記ビデオクリップのN個のフレームの決定であって、Nが正の整数であり、前記ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づく決定のための、
前記N+1個のチャンクのそれぞれを、第1の符号化方式への、また第2の符号化方式へのトランスコーディングのためのそれぞれのプロセッサに提供するための、
第1のビデオクリップを、前記第1の符号化方式にトランスコードされた前記N+1個のチャンクから生成するための、また
第2のビデオクリップを、前記第2の符号化方式にトランスコードされた前記N+1個のチャンクから生成するためのプロセッサと
を備える装置。
【請求項９】
前記N+1個のチャンクが、前記それぞれのプロセッサによって並行してトランスコードされる、請求項8に記載の装置。
【請求項１０】
前記N個のフレームの少なくとも1つが、前記ビデオクリップにおける場面変化に基づいて決定される、請求項8に記載の装置。
【請求項１１】
前記プロセッサが、前記ビデオクリップにおける1つまたは複数の場面変化をさらに識別する、請求項10に記載の装置。
【請求項１２】
前記N個のフレームの前記決定が、前記最小チャンクサイズ以上、前記最大チャンクサイズ以下であるデフォルトチャンクサイズにさらに基づく、請求項8に記載の装置。
【請求項１３】
前記ビデオクリップが、前記最大チャンクサイズを超える場面を含み、前記場面内のフレームが、前記場面の少なくとも2つのフレームに関する動きの尺度に基づいて決定される、請求項8に記載の装置。
【請求項１４】
前記フレームが、前記動きの尺度が最小変化率を有する前記場面のある点において発生する、請求項13に記載の装置。
【請求項１５】
実行されたときコンピュータシステムに動作を実行させる命令が格納された非一時的なコンピュータ可読記憶媒体であって、前記動作が、
ビデオクリップをN+1個の連続的なチャンクにそこで分割する、ビデオクリップのN個のフレームを、前記コンピュータシステムによって決定することであって、Nが正の整数であり、前記ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づく決定することと、
前記N+1個のチャンクのそれぞれを、トランスコーディングのためのそれぞれのプロセッサに提供することと、
トランスコードされたビデオクリップを、トランスコードされたN+1個のチャンクから生成することと
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記N個のフレームの少なくとも1つが、前記ビデオクリップにおける場面変化に基づいて決定される、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記動作が、前記ビデオクリップにおける1つまたは複数の場面変化を識別することをさらに含む、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記ビデオクリップが、前記最大チャンクサイズを超える場面を含み、場面内のフレームが、前記場面の少なくとも2つのフレームに関する明るさの尺度に基づいて決定される、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
前記フレームが、前記明るさの尺度が最小変化率を有する前記場面のある点において発生する、請求項18に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
前記ビデオクリップが、前記最大チャンクサイズを超える場面を含み、前記場面内のフレームが、前記場面の少なくとも2つのフレームに関する動きの尺度に基づいて決定される、請求項15に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２１】
前記フレームが、前記動きの尺度が最小変化率を有する前記場面のある点において発生する、請求項20に記載の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の態様および実装形態は、データ処理に関し、より詳細には、デジタルコンテンツのトランスコーディングに関する。
【背景技術】
【０００２】
トランスコーディングは、ある符号化方式から別の符号化方式への直接的なデジタル-デジタルデータ変換である。トランスコーディングは、様々な画面解像度、アスペクト比、ファイルフォーマット、コーデックなどへのサポートを行うために、クライアントマシン(例えば、デスクトップコンピュータ、スマートフォン、タブレットなど)へのビデオクリップの伝達においてしばしば利用される。
【発明の概要】
【課題を解決するための手段】
【０００３】
以下は、対象となる態様の基礎的な理解をもたらすために、本開示の様々な態様の簡略化された概要を提示する。この概要は、すべての考えられる態様の広範囲な概略ではなく、また主要な要素または重要な要素を識別するものでも、そうした態様の範囲を描写するものでもない。その目的は、本開示のいくつかの概念を、後で提示するより詳細な説明への前置きとして簡略化された形態で提示することである。
【０００４】
本開示の一態様では、コンピュータシステムは、ビデオクリップをN+1個の連続的なチャンクにそこで分割するN個のフレームを決定し、Nが正の整数であり、またフレームが、ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づいて決定される。一実装形態では、N+1個のチャンクのそれぞれが、トランスコーディングのためのそれぞれのプロセッサに提供され、次いで、トランスコードされたビデオクリップが、トランスコードされたN+1個のチャンクから生成される。
【０００５】
本開示の態様および実装形態は、以下に示す「発明を実施するための形態」から、また開示の様々な態様および実装形態の添付図面から、より詳細に理解されるが、それは、開示を特定の態様または実装形態に限定するように解釈されるべきではなく、説明および理解のためだけのものである。
【図面の簡単な説明】
【０００６】
【図１】例示的なビデオクリップおよびビデオクリップの例示的な固定されたサイズのコンテンツ適応的なチャンキングの一部を示す図である。
【図２】本開示の一実装形態による例示的なシステムアーキテクチャを示す図である。
【図３】トランスコードマネージャの一実装形態のブロック図である。
【図４】ビデオクリップの分散トランスコーディングのための方法の態様の流れ図である。
【図５】映像をチャンクにそこで分割する境界フレームを決定するための方法の態様の流れ図である。
【図６】本開示の態様および実装形態に従って動作する例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【０００７】
本開示の態様および実装形態が、ビデオクリップの分散トランスコーディングのために開示される。詳細には、本開示の実装形態は、ビデオクリップをチャンクに分割することができ、チャンクのそれぞれを、トランスコーディングのためのそれぞれのプロセッサ(例えば、それぞれのサーバの中央処理装置、マルチプロセッサコンピュータのそれぞれのプロセッサなど)に提供し、トランスコードされたビデオクリップを、トランスコードされたチャンクから生成する。チャンクは複数のプロセッサによって並行してトランスコードできるので、ビデオクリップは、単一のプロセッサがビデオクリップ全体をトランスコードするのに必要な時間の何分の1かの時間でトランスコードすることができる。
【０００８】
しかし、こうした戦略とともに生じ得る問題は、チャンクは、そのビデオコーディング複雑度(video coding complexity)が大きく異なる場合があることである。より具体的には、異なるビデオコーディング複雑度をもつ隣接するチャンクにわたって場面が分けられると、結果がチャンク境界において不連続性を有する恐れがあり、それが十分大きい場合、不連続性がトランスコードされたビデオクリップの閲覧者に見える場合がある。例えば、隣接するチャンク間で量子化ステップサイズ(quantization step size)に不連続性がある恐れがあり、それが十分大きい場合、チャンク境界においてピーク信号対雑音比(PSNR)の可視的な不連続性を生じさせる。
【０００９】
映像をトランスコードするためにチャンキングを使用するときに、ビデオ圧縮の性質から、さらなる問題が生じる。より具体的には、ビデオ圧縮は、様々なタイプのフレーム、すなわち、完全に指定された画像を含むIフレームおよび隣接するフレーム間の変化のみを格納する非Iフレーム(例えば、Pフレームとして知られる予測画像フレーム、Bフレームとして知られる双予測画像フレームなど)を利用する。チャンクの最初のフレームは常にIフレームであるが、チャンクの最後のフレームはIフレームでも非Iフレームでもよい。さらに、Iフレームおよび非Iフレームは、異なる量子化雑音パターンを示す。したがって、チャンクの最後の非Iフレームと次のチャンクの最初のIフレームとの間の品質の差は、特に、低ビットレート符号化スキーム(例えば、低ビットレートH.264/MPEG-4符号化方式など)において、Iパルシング(I-pulsing)として知られる可視的なちらつきになる場合がある。
【００１０】
本開示の実装形態は、コンテンツ適応的なアルゴリズムを使用することによって、チャンキングのこうした固有の問題を軽減することができる。より具体的には、単純にビデオクリップを固定されたサイズの(またはほぼ固定されたサイズの)チャンクに分割する代わりに、本開示の実装形態は、チャンク境界を、ビデオクリップの画像コンテンツ(例えば、ビデオクリップのフレームのピクセル値、ビデオクリップの特性など)、最小チャンクサイズ、および最大チャンクサイズに基づいて決定する。この手法は、チャンク境界に生じるアーティファクトを軽減し、それによってユーザの閲覧体験が改善されることになる。
【００１１】
本開示のいくつかの実装形態では、チャンク境界をビデオクリップの画像コンテンツに基づいて決定することは、ビデオクリップにおける場面変化を、(例えば、フェードインやフェードアウトなどの効果の抽出を介し、フレーム間のピクセルベースの差を介し、フレーム間のヒストグラムベースの差を介し、特性の統計的分析を介してなど)識別することを含む。場面変化を識別し、可能であればチャンク境界を場面変化と調整することにより、場面変化と同時に生じるとき、チャンキングによって引き起こされるアーティファクトは一般に閲覧者にはあまり目立たないので、つなぎ合わされ、トランスコードされたビデオクリップの品質は改善される。
【００１２】
図1は、(a)、すなわちビデオクリップの例示的な固定されたサイズのチャンキングによって、また(b)、すなわちビデオクリップの例示的なコンテンツ適応的なチャンキングによって分割された場面101-1〜101-5を含む例示的なビデオクリップの一部を示す。図1に示すように、両方のチャンキング手法は5つのチャンク境界を生み出すが、コンテンツ適応的なチャンクは、固定されたサイズのチャンキングと比較して、場面内での境界の発生が少なく、それによってより高い品質のトランスコードされたビデオクリップをもたらす。
【００１３】
いくつかの実装形態では、チャンク境界の決定は、最小チャンクサイズおよび最大チャンクサイズに加えて、デフォルトチャンクサイズにも基づく。いくつかのそうした実装形態では、デフォルトチャンクサイズは、最小チャンクサイズ以上、最大チャンクサイズ以下である。
【００１４】
いくつかの実装形態では、場面が最大チャンクサイズを超えるとき、チャンク境界での場面分けは、画像コンテンツに基づくことができる。例えば、チャンク境界は、場面の個々のフレームの明るさの尺度に基づいて決定することができ(例えば、明るさの尺度が最小変化率を有しているフレームにおける場面分けなど)、また場面のフレームにわたる動きの尺度に基づいて決定することができる(例えば、動きの尺度が最小変化率を有しているフレームにおける場面分けなど)。
【００１５】
いくつかの実装形態によれば、チャンクは、最初に中間の「ユニバーサル」フォーマットに復号することができ、次いでユニバーサルフォーマットから目標の符号化方式にトランスコードすることができる。さらに、いくつかの実装形態では、ビデオクリップは、複数の異なる符号化方式(例えば、H.264/MPEG-4、MPEG-2など)にトランスコードすることができる。いくつかのそうした実装形態では、各チャンクは、複数の異なる符号化方式にトランスコードされ、各符号化方式向けにトランスコードされたビデオクリップが、対応するトランスコードされたチャンクを集約することによって生成される(例えば、MPEG-2ビデオクリップはMPEG-2符号化チャンクから集約され、H.264/MPEG-4ビデオクリップはH.264/MPEG-4符号化チャンクから集約されるなど)。いくつかの実装形態では、ユニバーサルフォーマットは圧縮されていない場合があり、他の実装形態では、ユニバーサルフォーマットは圧縮されている場合があることに留意されたい。
【００１６】
本開示の態様および実装形態は、したがって、並行および分散処理を介してトランスコードされるビデオクリップの品質を改善することができる。トランスコードされたビデオクリップは、単純な固定されたサイズのチャンキング戦略と比較すると、場面内のチャンク境界の減少、長い場面のインテリジェントな分割(例えば、そうした場面に含まれる境界における、明るさ、動きなどの変化率を最小化することによる)、およびトランスコードされたビデオクリップにおけるIフレームの数の全体的な減少により、目立ったアーティファクトがより少ない。したがって、本開示の態様および実装形態は、分散および並行処理によって引き起こされる品質低下を軽減しながら、そうした処理を介したビデオクリップのトランスコーディングを迅速化するという利点をもたらす。
【００１７】
態様および実装形態が、ビデオクリップをトランスコードするという文脈で開示されているが、本開示の技法は、他のタイプのメディアアイテム(例えば、オーディオクリップ、画像など)のトランスコーディングに適合させることができることに留意されたい。例えば、ビデオクリップにおける場面変化の相似形は、オーディオクリップにおいて、音声を伴わない時間間隔であってもよい。
【００１８】
図2は、本開示の一実装形態による例示的なシステムアーキテクチャ200を示す。システムアーキテクチャ200は、ネットワーク204に接続されたサーバマシン215、メディアストア220、ウェブページストア230、クライアントマシン202-1〜202-M、およびトランスコードサーバ260-1〜260-Nを備え、MおよびNは正の整数である。ネットワーク204は、パブリックネットワーク(例えば、インターネット)、プライベートネットワーク(例えば、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN))、またはそれらの組合せであってもよい。
【００１９】
クライアントマシン202-1〜202-Mは、パーソナルコンピュータ(PC)、ラップトップ、携帯電話、タブレットコンピュータ、セットトップボックス、テレビ、ビデオゲームコンソール、携帯情報端末、または任意の他のコンピューティングデバイスであり得る。クライアントマシン202-1〜202-Mは、クライアントマシン202-1〜202-Mのハードウェアおよびソフトウェアを管理するオペレーティングシステム(図示せず)を実行することができる。ブラウザ(図示せず)は、いくつかのクライアントマシン上で(例えば、クライアントマシンのOS上で)実行することができる。ブラウザはサーバマシン215のコンテンツサーバ240によって供給されるコンテンツに、(例えば、ハイパーテキスト転送プロトコル(HTTP)を使用して)コンテンツサーバ240のウェブページにナビゲートすることによって、アクセスすることができるウェブブラウザであり得る。ブラウザは、メディアアイテム(例えば、ビデオクリップ、オーディオクリップ、画像など)をアップロードするためのコマンドなどの、コマンドおよびクエリをコンテンツサーバ240に発行し、メディアアイテムを検索し、メディアアイテムを共有することなどができる。
【００２０】
1つまたは複数のクライアントマシン202-1〜202-Mは、コンテンツサーバ240によって提供されるサービスと関連付けられたアプリケーションを含むことができる。そうしたアプリケーション(「アプリ」)を使用できるクライアントマシンの例には、携帯電話、「スマート」テレビ、タブレットコンピュータなどが含まれる。アプリケーションまたはアプリは、コンテンツサーバ240のウェブページを訪れることなく、コンテンツサーバ240によって提供されるコンテンツにアクセスし、コマンドをコンテンツサーバ240に発行することなどができる。
【００２１】
一般に、一実施形態においてコンテンツサーバ240によって実行されるものとして説明された機能はまた、適切な場合、他の実施形態においてクライアントマシン202-1〜202-M上で実行することもできる。さらに、特定のコンポーネントに起因する機能は、一緒に動作する異なるコンポーネントまたは複数のコンポーネントによって実行することができる。コンテンツサーバ240はまた、適切なアプリケーションプログラミングインターフェースを通じて他のシステムまたはデバイスに提供されるサービスとしてアクセスすることもでき、したがってウェブサイトでの使用に限定されない。
【００２２】
サーバマシン215は、ラックマウントサーバ、ルータコンピュータ、パーソナルコンピュータ、携帯情報端末、携帯電話、ラップトップコンピュータ、タブレットコンピュータ、カメラ、ビデオカメラ、ネットブック、デスクトップコンピュータ、メディアセンタ、または上記の任意の組合せであってもよい。サーバマシン215は、コンテンツサーバ240およびトランスコードマネージャ250を備える。別の実装形態では、コンテンツサーバ240およびトランスコードマネージャ250は、様々なマシン上で実行可能である。
【００２３】
メディアストア220は、メディアアイテム(例えば、ビデオクリップ、オーディオクリップ、画像など)、ならびにメディアアイテムのタグ付け、編成、およびインデックス付けを行うためのデータ構造を格納することができる永続記憶装置である。メディアストア220は、メインメモリ、磁気もしくは光学式記憶装置ベースのディスク、テープもしくはハードドライブ、NAS、SANなどの1つまたは複数の記憶装置によってホストすることができる。いくつかの実装形態では、メディアストア220はネットワーク接続型ファイルサーバである場合があり、他の実施形態では、メディアストア220は、サーバマシン215、またはネットワーク204を介してサーバマシン215に結合される1つもしくは複数の異なるマシンによってホストすることができる、オブジェクト指向データベース、リレーショナルデータベースなどの他の何らかのタイプの永続記憶装置である場合がある。メディアストア220に格納されたメディアアイテムには、クライアントマシンによってアップロードされるユーザ作成型のメディアアイテム、ならびに報道機関、出版社、図書館などのサービスプロバイダからのメディアアイテムが含まれる場合がある。いくつかの実装形態では、メディアストア220は第三者サービスによって提供される場合があり、他の何らかの実装形態では、メディアストア220は、サーバマシン215を維持する同じエンティティによって維持される場合がある。
【００２４】
ウェブページストア230は、クライアントに供給するためのウェブページおよび/またはモバイルアプリドキュメント、ならびにウェブページおよび/またはモバイルアプリドキュメント(例えば、モバイルデバイス上に描写するためにモバイルアプリに提供されるドキュメント)のタグ付け、構成、およびインデックス付けを行うためのデータ構造を格納することができる永続記憶装置である。ウェブページストア230は、メインメモリ、磁気もしくは光学式記憶装置ベースのディスク、テープもしくはハードドライブ、NAS、SANなどの1つまたは複数の記憶装置によってホストすることができる。いくつかの実装形態では、ウェブページストア230はネットワーク接続型ファイルサーバである場合があり、他の実施形態では、ウェブページストア230は、サーバマシン215、またはネットワーク204を介してサーバマシン215に結合される1つもしくは複数の異なるマシンによってホストすることができる、オブジェクト指向データベース、リレーショナルデータベースなどの他の何らかのタイプの永続記憶装置である場合がある。ウェブページストア230に格納されたウェブページおよび/またはモバイルアプリドキュメントは、ユーザによって生成され、クライアントマシンによってアップロードされた、報道機関によって提供されたといった組込みコンテンツ(例えば、メディアストア220に格納されるメディアアイテム、インターネット上のどこか他の場所に格納されるメディアアイテムなど)を有する場合がある。
【００２５】
いくつかの実装形態によれば、トランスコードマネージャ250は、アップロードされたメディアアイテムをメディアストア220に格納し、メディアストア220においてメディアアイテムにインデックス付けし、図3〜図5に関連して以下で説明されるようにメディアアイテムをトランスコードし、画像、映像、および音声処理(例えば、フィルタリング、アンチエイリアシング、線分検出、場面変化検出、特徴抽出など)を実行することができる。トランスコードマネージャ250の実装形態については、図3に関連して以下で詳しく説明する。
【００２６】
トランスコードサーバ260-1〜260-Nのそれぞれは、メモリおよび1つまたは複数のプロセッサを備えるマシンであり、1つまたは複数のチャンクをサーバマシン215からネットワーク204を介して受信し、チャンクを1つまたは複数の符号化方式にトランスコードし、トランスコードされたチャンクをサーバマシンにネットワーク204を介して送信し返すことができる。いくつかの代替の実装形態では、トランスコードサーバ260-1〜260-Nが、サーバマシン215に、ネットワーク204以外のネットワーク(例えば、ローカルエリアネットワーク、プライベートメトロポリタンエリアネットワーク、またはワイドエリアネットワークなど)を介して接続される場合があることに留意されたい。さらに他の実装形態が、トランスコードサーバ260-1〜260-Nの代わりに並行マルチプロセッサマシンを利用することがあり、またいくつかのそうした実装形態が、並行マルチプロセッサマシンを使用してサーバマシン215の機能の一部またはすべてを実行することがあることにさらに留意されたい。
【００２７】
図3は、トランスコードマネージャの一実装形態のブロック図である。トランスコードマネージャ300は、図2のトランスコードマネージャ250と同じであり得るとともに、デマルチプレクサ/マルチプレクサ302、場面変化識別エンジン304、チャンク境界決定エンジン306、スプリッタ/アセンブラ308、コントローラ309、およびデータストア310を備えることができる。こうしたコンポーネントは、特定の実装形態に従って、さらなるコンポーネントの中で一緒に組み合わせる、または分離することができる。いくつかの実装形態では、トランスコードマネージャ300の様々なコンポーネントは別々のマシン上で実行可能であることに留意されたい。
【００２８】
データストア310は、メディアストア220、またはウェブページストア230、あるいはその両方と同じであり得るか、(例えば、メディアストア220に格納されるため、ウェブページに組み込まれるため、処理されるためなどの)1つまたは複数のメディアアイテム、メディアアイテムの1つまたは複数のチャンク、メディアストア220においてメディアアイテムをインデックス付けするための1つまたは複数のデータ構造、(例えば、ウェブページストア230に格納されるため、クライアントに供給されるためなどの)1つまたは複数のウェブページ、ウェブページストア230においてウェブページにインデックス付けするための1つまたは複数のデータ構造、あるいはこうしたデータの何らかの組合せを保持するための(例えば、一時バッファまたは恒久的データストアなどの)異なるデータストアであり得る。データストア310は、メインメモリ、磁気もしくは光学式記憶装置ベースのディスク、テープもしくはハードドライブなどの1つまたは複数の記憶装置によってホストすることができる。
【００２９】
デマルチプレクサ/マルチプレクサ302は、ビデオクリップの映像および音声部分を分離することができ、また映像データと音声データをビデオクリップにまとめることができる。デマルチプレクサ/マルチプレクサ302のいくつかの動作については、図4に関連して以下でより詳しく説明する。
【００３０】
場面変化識別エンジン304は、ビデオクリップにおける場面変化を、(例えば、フェードインやフェードアウトなどの効果の抽出を介し、フレーム間のピクセルベースの差を介し、フレーム間のヒストグラムベースの差を介し、特性の統計的分析を介して)識別することができる。場面変化識別エンジン304のいくつかの動作については、図5に関連して以下でより詳しく説明する。
【００３１】
チャンク境界決定エンジン306は、ビデオクリップを連続的なチャンクにそこで分割する、ビデオクリップのフレームを決定することができる。一態様では、チャンク境界決定エンジン306は、チャンク境界フレームを、ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づいて決定する。一実装形態では、チャンク境界フレームの決定は、ビデオクリップにおける場面変化に基づくとともに、最小チャンクサイズおよび最大チャンクサイズに加えて、デフォルトチャンクサイズに基づく。チャンク境界決定エンジン306のいくつかの動作については、図4および図5に関連して以下でより詳しく説明する。
【００３２】
スプリッタ/アセンブラ308は、1組のチャンク境界フレームに従ってビデオクリップを連続的なチャンクに分けることができ、またチャンクをビデオクリップにまとめることができる。コントローラ309は、チャンクをトランスコーディングのためのそれぞれのトランスコードサーバ260に提供することができ、またトランスコードされたチャンクをトランスコードサーバ260から受信することができる。いくつかの実装形態では、コントローラ309は、チャンクを特定のトランスコードサーバに割り当てるためのロジック(例えば、負荷分散ロジックなど)を含むことができる。スプリッタ/アセンブラ308およびコントローラ309のいくつかの動作については、図4および図5に関連して以下でより詳しく説明する。
【００３３】
図4は、分散トランスコーディングのためにビデオクリップをチャンクに分割するための方法の態様の流れ図を示す。図4は、ビデオクリップの分散トランスコーディングのための方法の態様の流れ図を示す。方法は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピュータシステムや専用マシン上で実行されるものなど)、またはその両方の組合せを備えることができる処理ロジックによって実行される。一実装形態では、方法は、図2のサーバマシン215によって実行され、他の何らかの実装形態では、図4の1つまたは複数のブロックは、別のマシンによって実行され得る。
【００３４】
説明を簡単にするために、方法は、一連の行為として示され、説明される。しかし、本開示による行為は、様々な順序で、また/もしくは同時に発生し得るが、他の行為は、本明細書において提示されず、説明されない。さらに、示されるすべての行為が、開示される主題による方法を実装するために必要とされる可能性があるというわけではない。さらに、当業者は、代替方法として方法を、状態図による一連の相互に関係のある状態または事象として表すことができることを理解する(understand and appreciate)であろう。さらに、本明細書において開示される方法は、こうした方法のコンピューティングデバイスへの転送および伝送を促進するために、製品上に格納することができることを理解されたい。本明細書において使用される場合、「製品」という語は、任意のコンピュータ可読デバイスまたは記憶媒体からアクセスできるコンピュータプログラムを包含するものとする。
【００３５】
ブロック401では、ユーザによってアップロードされたビデオクリップが受信され、ブロック402では、ビデオクリップがメディアストア220に格納される。一態様によれば、ブロック401および402は、コンテンツサーバ240によって実行される。
【００３６】
ブロック403では、ビデオクリップの映像および音声部分が分離される。一態様によれば、ブロック403は、トランスコードマネージャ250のデマルチプレクサ/マルチプレクサ302によって実行される。
【００３７】
いくつかの実装形態では、ビデオクリップの映像部分は、中間の「ユニバーサル」フォーマットに復号することができ、そのフォーマットから、以下のブロック406〜408で、1つまたは複数の目標の符号化方式を取得することができる。いくつかのそうした実装形態では、ユニバーサルフォーマットは圧縮されていない場合があり、他の何らかの実装形態では、ユニバーサルフォーマットは圧縮されている場合がある。いくつかの態様では、ユニバーサルフォーマットへの復号はブロック403の一部として実行することができ、いくつかの他の態様では、復号は、代わりに、図4の方法の他の何らかの部分で(例えば、図4で示されていない別々のブロックで、ブロック404〜410のうちの1つなどの別のブロックの一部としてなど)、または図5の方法のある点において、行われる場合があり、それは、トランスコードサーバ260によって実行され、また以下で説明されることに留意されたい。
【００３８】
ブロック404では、映像部分をチャンクに分割するためのチャンク境界フレームが、ビデオクリップの画像コンテンツ、最小チャンクサイズ、および最大チャンクサイズに基づいて決定される。ブロック404を実行するための方法の実装形態は、図5に関連して以下で詳しく説明する。
【００３９】
ブロック405では、ビデオクリップが、ブロック404で決定されたチャンク境界フレームに従って、連続的なチャンクに分けられる。一態様によれば、ブロック405は、トランスコードマネージャ250のスプリッタ/アセンブラ308によって実行される。ビデオクリップが中間の「ユニバーサル」フォーマットに復号されたとき、チャンクは、ユニバーサルフォーマットの映像をユニバーサルフォーマットのチャンクに分けることによって取得することができることに留意されたい。
【００４０】
ブロック406では、チャンクが、トランスコーディングのためのトランスコードサーバ260に提供される(例えば、第1のチャンクがトランスコードサーバ260-1に提供される、第2のチャンクがトランスコードサーバ260-2に提供されるなど)。一態様によれば、ブロック406は、トランスコードマネージャ250のコントローラ309によって実行される。いくつかの実装形態では、コントローラ309は、チャンクを特定のトランスコードサーバにインテリジェントな方法で割り当てるためのロジック(例えば、負荷分散ロジックなど)を含むことができる。
【００４１】
ブロック407では、トランスコードされたチャンクが、トランスコードサーバ260から受信される。一態様によれば、ブロック407は、コントローラ309によって実行される。いくつかの実装形態によれば、チャンクは、トランスコードサーバ260によって並行してトランスコードされ、各トランスコードサーバは、トランスコーディングが完了すると同時に、そのトランスコードされたチャンクをコントローラ309に提供する。いくつかの実装形態では、トランスコードサーバ260は、各チャンクを、複数の異なる符号化方式(例えば、H.264/MPEG-4、MPEG-2など)に、直接的に、または中間のユニバーサルフォーマットを介してトランスコードすることができ、また複数のトランスコードされたチャンクをコントローラ309に提供可能であることに留意されたい。いくつかの別の実装形態では、トランスコードサーバ260はまた、ビデオクリップ全体が、上述のとおり、チャンクに分けられる前に、ユニバーサルフォーマットに復号されるのではなく、チャンクをユニバーサルフォーマットに復号する役割を担う場合があることにさらに留意されたい。
【００４２】
ブロック408では、1つまたは複数のトランスコードされた映像が、トランスコードされたチャンクから生成される。より具体的には、チャンクが単一の符号化方式にトランスコードされるとき、単一のトランスコードされた映像は、トランスコードされたチャンクから生成することができ、またチャンクが複数の符号化方式(例えば、ユニバーサルフォーマット、MPEG-2、H.264/MPEG-4など)にトランスコードされるとき、第1のトランスコードされた映像は、第1の符号化方式にトランスコードされたチャンクを集約することによって生成することができ、第2のトランスコードされた映像は、第2の符号化方式にトランスコードされたチャンクを集約することによって生成することができるなどとなる。一態様によれば、ブロック408は、コントローラ309によって実行される。
【００４３】
ブロック409では、それぞれのビデオクリップが、ブロック408で生成された各トランスコードされた映像から、またブロック403で得られた音声から生成される。換言すると、単一の符号化方式の場合、単一のトランスコードされたビデオクリップが、音声、およびブロック408で生成されたトランスコードされた映像から生成され、複数の符号化方式の場合、第1のトランスコードされたビデオクリップが、音声、およびブロック408で生成された第1のトランスコードされた映像から生成され、第2のトランスコードされたビデオクリップが、音声、およびブロック408で生成された第2のトランスコードされた映像から生成されるなどとなる。一態様によれば、ブロック409は、トランスコードマネージャ250のデマルチプレクサ/マルチプレクサ302によって実行される。
【００４４】
ブロック410では、ブロック409で生成された1つまたは複数のトランスコードされたビデオクリップが、メディアストア220に格納される。ビデオクリップがユニバーサルフォーマットに復号されたとき、このバージョンのビデオクリップもまた、メディアストア220に格納することができることに留意されたい。いくつかの実装形態では、ユニバーサルフォーマットのビデオクリップは、ブロック410で、メディアストア220に格納することができ、他の何らかの実装形態では、ユニバーサルフォーマットのビデオクリップは、方法の早い時点で(例えば、上記のブロック403におけるユニバーサルフォーマットへの復号の直後に、など)、メディアストア220に格納することができる。一態様によれば、ブロック410は、コントローラ309によって実行される。
【００４５】
図4の流れ図では、トランスコードされるビデオクリップはユーザによってアップロードされるが、他の何らかの実装形態では、トランスコードされるビデオクリップは、他の何らかの方式で得られてもよく、また既にメディアストア220に格納されていてもよい(例えば、メディア企業によって提供されるビデオライブラリなど)ことに留意されたい。図4の流れ図では、各アップロードされたビデオクリップは、サーバマシン215によって受信されたときにトランスコードされるが、他の何らかの実装形態では、アップロードされたビデオクリップのトランスコーディングは、代わりに、しばらく経って行われる場合がある(例えば、夜間実行されるバッチジョブなど)ことにさらに留意されたい。
【００４６】
図5は、映像をチャンクにそこで分割する境界フレームを決定するための方法の態様の流れ図を示す。方法は、ハードウェア(回路、専用ロジックなど)、ソフトウェア(汎用コンピュータシステムや専用マシン上で実行されるものなど)、またはその両方の組合せを備えることができる処理ロジックによって実行される。一実装形態では、方法は、図2のサーバマシン215によって実行され、他の何らかの実装形態では、図5の1つまたは複数のブロックは、別のマシンによって実行することができる。一態様によれば、ブロック501は、コントローラ309によって実行される。
【００４７】
ブロック501では、映像における1つまたは複数の場面変化が識別される。いくつかの実装形態では、場面変化識別は、フェードインやフェードアウトなどの効果の抽出を含む場合があり、他の何らかの実装形態では、場面変化識別は、連続するフレーム間のピクセル値の差を計算することおよび差の関数(例えば、すべてのピクセルにおける差の合計など)を閾値と比較することを含む場合があり、他の何らかの実装形態では、場面変化識別は、フレームにおけるピクセル値のヒストグラムを構築すること、連続するフレームに関するヒストグラム間の差を計算すること、および差の関数(例えば、対応するヒストグラムビン間の差の合計など)を閾値と比較することを含む場合があり、さらに他の実装形態では、場面変化識別は、フレームから抽出する特性の統計分析を含む場合があり、なお他の実装形態では、場面変化は、他の何らかの方式で識別される場合がある。一態様によれば、ブロック501は、トランスコードマネージャ250の場面変化識別エンジン304によって実行される。
【００４８】
ブロック502では、変数Sが空集合に初期化され、ブロック503では、変数chunkStartが0に初期化される。ブロック504では、変数chunkEndの値が、chunkStartと、デフォルトチャンクサイズであるdefaultChunkSizeとの合計に設定される。いくつかの実装形態では、デフォルトチャンクサイズは、最小チャンクサイズと最大チャンクサイズの間であり、包含的である(すなわち、最小チャンクサイズ以上、最大チャンクサイズ以下である)場合がある。
【００４９】
ブロック505では、変数pが、第1の場面変化の前のchunkEndの、フレームのインデックスに設定され、また変数qが、第1の場面変化の次のchunkEndの、フレームのインデックスに設定される。ブロック506は、(q - chunkStart)を最大チャンクサイズであるmaxChunkSizeと比較し、(q - chunkStart)がmaxChunkSize以下である場合、実行はブロック507に進み、そうでない場合、実行はブロック508に進む。
【００５０】
ブロック507では、変数chunkEndの値が、変数qの値に設定される。ブロック507が実行された後、実行はブロック510に進む。
【００５１】
ブロック508は、(p - chunkStart)を最小チャンクサイズであるminChunkSizeと比較し、(p - chunkStart)がminChunkSize以上である場合、実行はブロック509に進み、そうでない場合、実行はブロック510に進む。
【００５２】
ブロック509では、変数chunkEndの値が、変数pの値に設定される。ブロック510では、chunkEndの値が集合Sに追加され、そのchunkEndの値はチャンク境界フレームに対応する。
【００５３】
ブロック511は、変数chunkEndが映像の最終フレームのインデックスに等しいかどうかに基づいて分岐し、等しくない場合、実行はブロック512に進み、そうでない場合、実行はブロック513に進む。ブロック512では、変数chunkStartの値が、chunkEnd + 1に設定され、そしてブロック512が実行された後、実行はブロック504に戻る。ブロック513では、集合Sが返され、その集合Sはチャンク境界フレームのインデックスを含む。
【００５４】
図5の実装形態では、チャンク境界フレームがチャンクの最終フレームとして定義されるが、他の何らかの実装形態では、チャンク境界フレームは、代わりに、適切な変更が図5の方法に加えられた場合、チャンクの最初のフレームとして定義される場合があることに留意されたい。さらに、他の何らかの実装形態では、チャンク境界フレームの決定が、最小チャンクサイズおよび最大チャンクサイズに加えたデフォルトチャンクサイズに基づくのではなく、最小チャンクサイズおよび最大チャンクサイズに基づく場合がある。
【００５５】
他の何らかの実装形態では、図5の実装形態は、場面が最大チャンクサイズを超える場合に対応するために、修正することができることにさらに留意されたい。いくつかのそうした実装形態では、チャンク境界での場面分けは、画像コンテンツに基づくことができ、例えば、チャンク境界は、場面の個々のフレームの明るさの尺度に基づいて決定することができ(例えば、明るさの尺度が最小変化率を有しているフレームにおける場面分けなど)、また場面のフレームにわたる動きの尺度に基づいて決定することができ(例えば、動きの尺度が最小変化率を有しているフレームにおける場面分けなど)、またその両方であることもでき、さらに他の実施形態では、最大サイズを超えている、場面のチャンク境界は、場面においてフレームのピクセル値から得られる他の何らかの情報に基づいて決定することができる。
【００５６】
図4および図5の実装形態は、ビデオクリップをトランスコードするという文脈で開示されているが、これらの実装形態において利用される技法は、他のタイプのメディアアイテム(例えば、オーディオクリップ、画像など)のトランスコーディングに容易に適合させることができることにさらに留意されたい。例えば、オーディオクリップにおけるフレームの相似形は、パルス符号変調(PCM)音サンプルであってもよく、映像における場面変化の相似形は、オーディオクリップにおいて、音声を伴わない時間間隔であってもよい。
【００５７】
図6は、本明細書において論じる方法のうちの任意の1つまたは複数をマシンに実行させるための1組の命令を実行することができる例示的なコンピュータシステムを示す。代替の実装形態では、マシンは、LAN、イントラネット、エクストラネット、またはインターネットの他のマシンに接続する(例えば、ネットワーク接続する)ことができる。マシンは、クライアントサーバネットワーク環境では、サーバマシンとして動作することができる。マシンは、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはマシンによって実施される動作を指定する1組の(順次の、もしくはその他の方法での)命令を実行することができる任意のマシンであってもよい。さらに、単一のマシンのみが示されているが、「マシン」という語はまた、本明細書において論じる方法のうちの任意の1つまたは複数を実行するために、1組(または複数組)の命令を個々にまたは合同で実行する任意の一群のマシンを含むように解釈される。
【００５８】
例示的なコンピュータシステム600は、処理システム(プロセッサ)602、メインメモリ604(例えば、読出し専用メモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)などのダイナミックランダムアクセスメモリ(DRAM))、スタティックメモリ606(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM))、およびデータ記憶装置616を備え、これらはバス608を介して相互に通信する。
【００５９】
プロセッサ602は、マイクロプロセッサ、中央処理装置などの1つまたは複数の汎用処理デバイスを表す。より具体的には、プロセッサ602は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、または他の命令セットを実装するプロセッサもしくは命令セットの組合せを実装するプロセッサであってもよい。プロセッサ602はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の特殊用途の処理デバイスであってもよい。プロセッサ602は、本明細書において論じる動作およびステップを実行するための命令626を実行するように構成される。
【００６０】
コンピュータシステム600は、ネットワークインターフェースデバイス622をさらに備えることができる。コンピュータシステム600はまた、ビデオディスプレイユニット610(例えば、液晶ディスプレイ(LCD)やブラウン管(CRT))、英数字入力デバイス612(例えば、キーボード)、カーソル制御デバイス614(例えば、マウス)、および信号生成デバイス620(例えば、スピーカ)も備えることができる。
【００６１】
データ記憶装置616は、本明細書において説明する方法もしくは機能のうちの任意の1つまたは複数を具現化する、1つあるいは複数の命令626のセット(例えば、トランスコードマネージャ225によって実行される命令など)がそこに格納されるコンピュータ可読媒体624を備えることができる。命令626はまた、コンピュータ可読媒体も備える、コンピュータシステム600、メインメモリ604、およびプロセッサ602による実行中、完全にまたは少なくとも部分的に、メインメモリ604内に、また/もしくはプロセッサ602内にも存在し得る。命令626はさらに、ネットワークインターフェースデバイス622を介してネットワーク上を送信または受信することができる。
【００６２】
コンピュータ可読記憶媒体624は、例示的な実施形態では単一の媒体であることが示されているが、「コンピュータ可読記憶媒体」という用語は、1つもしくは複数の命令のセットを格納する単一の媒体または複数の媒体(例えば、集中データベースもしくは分散データベース、ならびに/または関連したキャッシュおよびサーバ)を含むように解釈されたい。「コンピュータ可読記憶媒体」という用語はまた、マシンによる実行のための1組の命令の格納、符号化、または伝送を行うことができ、また本開示の方法のうちの任意の1つまたは複数をマシンに実行させる、任意の媒体を含むように解釈されるべきである。「コンピュータ可読記憶媒体」という用語は、適宜、それに限定されるものではないが、ソリッドステートメモリ、光学式メディア、および磁気メディアを含むように解釈されるべきである。
【００６３】
上記の説明において、多数の詳細が記載される。しかし、実施形態はこれらの具体的な詳細なしに実践され得ることが、本開示の恩恵を受ける当業者には明らかであろう。いくつかの具体例では、説明を詳細にというより不明瞭にしないように、よく知られた構造およびデバイスがブロック図の形式で示される。
【００６４】
詳細な説明の一部の部分は、コンピュータメモリ内のデータビットに関する動作のアルゴリズムおよび記号表現に関して提示される。これらのアルゴリズム的記述および表現は、その作業の内容を他の当業者に最も効果的に伝えるためにデータ処理技術分野の当業者によって使用される手段である。アルゴリズムは、ここで、一般的には、所望される結果をもたらす、自己矛盾のない一続きのステップと考えられる。これらのステップは、物理量の物理的操作を必要とするステップである。そうであるとは限らないが、通常、これらの量は、記憶されること、転送されること、組み合わされること、比較されること、またはそうでない場合、操作されることが可能な、電気信号、または磁気信号の形をとる。主に共通使用の理由で、これらの信号を時にはビット、値、要素、記号、文字、項、数などと呼ぶことが好都合であることがわかっている。
【００６５】
しかし、これらの用語および類似の用語のすべては、適切な物理量に関連付けられるべきであり、これらの数量に適用された好都合なラベルに過ぎないことに留意すべきである。別段の記述がない限り、上記の議論から明らかなように、本説明を通して「決定する」、「提供する」、「生成する」などの用語を利用する議論は、コンピュータシステムのレジスタ内およびメモリ内の物理(例えば、電子)量として表されたデータを操作して、コンピュータシステムのメモリ内もしくはレジスタ内、または他のそのような情報記憶デバイス内、情報伝送デバイス内、あるいは情報表示デバイス内の物理量として同じように表される他のデータに変換するコンピュータシステム、または類似の電子コンピューティングデバイスの動作およびプロセスを指すことが理解される。
【００６６】
本開示の態様および実装形態はまた、本明細書において動作を実行するための装置に関する。この装置は、必要とされる目的のために特別に構築可能であり、またはこの装置は、コンピュータ内に格納されたコンピュータプログラムによって選択的に活性化または再構成される汎用コンピュータを備えてもよい。こうしたコンピュータプログラムは、それに限定されるものではないが、フロッピーディスク、光ディスク、CD-ROM、および光磁気ディスクを含む任意のタイプのディスク、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カードもしくは光カード、または電子的命令の格納に適した任意のタイプのメディアなどのコンピュータ可読記憶媒体に格納することができる。
【００６７】
本明細書において提示されるアルゴリズムおよび表示は、本質的に、何らかの特定のコンピュータまたは他の装置に関係しない。本明細書の教示に従って、様々な汎用システムをプログラムとともに使用することが可能であるか、または必要とされる方法ステップを実行するために、より特化された装置を構築することが好都合であることがわかるであろう。様々なこれらのシステムの必要とされる構造は、以下の説明から明らかになるであろう。さらに、本開示は、何らかの特定のプログラミング言語を参照して説明されない。本明細書において説明されるような開示の教示を実装するために、様々なプログラミング言語を使用することができることが理解されよう。
【００６８】
上記の説明は例示的であり、限定的ではないことを意図するものとして理解されたい。多くの他の実施形態は、上記の説明を読み進め理解すると、当業者には明らかであろう。さらに、上述の技法は、メディアクリップ(例えば、画像、オーディオクリップ、テキストドキュメント、ウェブページなど)の代わりに、またはメディアクリップに加えて、他のタイプのデータに適用することができる。したがって、開示の範囲は、添付の特許請求の範囲のほか、そうした特許請求の範囲が権利を有する、同等物のすべての範囲を参照しながら、決定されるべきである。
【符号の説明】
【００６９】
101-1  場面
101-2  場面
101-3  場面
101-4  場面
101-5  場面
200  システムアーキテクチャ
202-1  クライアント
202-M  クライアント
204  ネットワーク
215  サーバマシン
220  メディアストア
230  ウェブページストア
240  コンテンツサーバ
250  トランスコードマネージャ
260-1  トランスコードサーバ
260-N  トランスコードサーバ
300  トランスコードマネージャ
302  デマルチプレクサ/マルチプレクサ
304  場面変化識別エンジン
306  チャンク境界決定エンジン
308  スプリッタ/アセンブラ
309  コントローラ
310  データストア
600  コンピュータシステム
602  プロセッサ
604  メインメモリ
606  スタティックメモリ
608  バス
610  ビデオディスプレイ
612  英数字入力デバイス
614  カーソル制御デバイス
616  データ記憶装置
620  信号生成デバイス
622  ネットワークインターフェースデバイス
624  コンピュータ可読媒体
626  命令
【図１（ａ）】
2017507533.tif 000003
【図１（ｂ）】
2017507533.tif 000004
【図２】
2017507533.tif 000005
【図３】
2017507533.tif 000006
【図４】
2017507533.tif 000007
【図５】
2017507533.tif 000008
【図６】
2017507533.tif 000009
【国際調査報告】
2017507533.tif 000010
2017507533.tif 000011
2017507533.tif 000012
2017507533.tif 000013