(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
コンテンツ共有プラットフォームは、多くの場合、メディアアイテムを共有できるように処理およびトランスコードされる数百万の着信メディアアイテムを受信する。従来のメディアコーディングシステムを使用してメディアアイテムをトランスコーディングすると、レイテンシが長くなる。多くの場合、トランスコーディングレイテンシは、ビデオの解像度、ビットレート、フレームレート、継続時間、または画像品質に応じて増加する。たとえば、単一のビデオトランスコーダによって3分のビデオを高解像度(HD)形式のビデオにトランスコードすると、ビデオコンテンツの長さの10倍の時間がかかる場合がある。長いトランスコーディングレイテンシは、ダウンストリーム処理(たとえば、ビデオ分析またはストリーミング)をさらに遅延させ、ユーザエクスペリエンスを低下させる可能性がある。従来のビデオトランスコーダは、多くの場合、ビデオコンテンツとコーディングの複雑度のトランスコーディングへの影響を無視することによってレイテンシを削減しようとする。ビデオコンテンツと複雑度のトランスコーディングへの影響を考慮せずにビデオをトランスコーディングすると、ビデオの品質とユーザエクスペリエンスが低下する可能性がある。
【0011】
本開示の態様および実装形態は、個々のチャンクの複雑度に基づいてメディアアイテムの異なるチャンクに対して異なるエンコーダを選択することによって、上記および他の欠陥に対処する。一例では、本技術は、メディアアイテムを複数のチャンクにセグメント化することを伴い得る。チャンクのうちのいくつかは第1のエンコーダによってエンコードされ得、他のチャンクは第2のエンコーダによってエンコードされ得る。どちらのエンコーダがどのチャンクに使用されるかの選択は、それぞれのチャンクの複雑度(たとえば、動きの量、色の変化、オーディオの変動)に基づき得る。チャンクの複雑度は、以前にエンコードされたチャンクの複雑度を示す数値または非数値であり得るメディア複雑度測定値を使用して表され得る。メディアアイテムが映画(たとえば、ビデオ)である場合、メディア複雑度測定値は、ビデオコーディング複雑度測定値と呼ばれ得る。一例では、特定のチャンクの時空間分布(たとえば、コンテンツの動き)を分析することによって、ビデオコーディング複雑度測定値が決定され得る。別の例では、メディア複雑度指標は、フレームのピクセル数にフレームレートを掛けた組合せで割ったチャンクのビットレートと、以下で説明する数学方程式を使用した他の情報に基づいて概算され得る。ビットレートは、あらかじめ定義された品質レベルまたは許容可能な品質レベルを達成するために必要なビットレートであり得る。いずれの例においても、エンコーダを選択する際に、メディア複雑度測定値(たとえば、ビデオコーディング複雑度)が分析され、1つまたは複数のしきい値と比較され得る。
【0012】
本明細書で説明するシステムおよび方法は、より複雑なチャンク用の第1のエンコーダと、それほど複雑ではないチャンク用の第2のエンコーダを選択し得る。一例では、第1のエンコーダはマルチパスエンコーダであり得、第2のエンコーダはシングルパスエンコーダであり得る。マルチパスエンコーダはチャンクを分析する第1のパスを実行し得、後続のパスは分析中に集められた情報を使用してチャンクをエンコードし得る。シングルパスエンコーダは、チャンクの処理中に分析およびエンコードし得る。シングルパスエンコーダはマルチパスエンコーダよりも少ないコンピューティングリソースを使用し得るが、エンコード結果は第1のエンコーダの結果よりも効率が低い(たとえば、圧縮率または品質がより低い)場合がある。チャンクがより複雑な場合、エンコード効率の向上はユーザによって簡単に認識され得るが、チャンクがあまり複雑ではない場合、結果を認識しにくくなり得る。本明細書で説明する技術は、メディアアイテムの集約エンコードがほぼ同じ圧縮および品質でよりリソース効率のより良い方法で実行され得るように、メディアアイテムのより複雑なチャンクに対して第1のエンコーダを選択し、あまり複雑ではないチャンクに対して第2のエンコーダを選択し得る。
【0013】
本明細書で開示される技術は、コンピューティングデバイスが、シングルパスエンコーダまたはマルチパスエンコーダのいずれかを単独で使用する場合と比較して、より速いレートまたはより高い品質でメディアアイテムをエンコードすることを可能にするため有利である。一例では、これにより、コンテンツ共有プラットフォームが、より少ないコンピューティングリソースを使用して着信メディアアイテムを処理することが可能になり得る。別の例では、これにより、コンテンツ共有プラットフォームが、同じ量のコンピューティングリソースを使用して、着信メディアアイテムをより高い品質で処理することが可能になり得る。
【0014】
上記で参照された方法およびシステムの様々な態様は、限定ではなく例として本明細書で以下に詳細に説明される。以下に提供される例では、単純さと簡潔さのためにビデオを参照することがよくある。しかしながら、本開示の教示は一般にメディアアイテムに適用され、たとえば、オーディオ、テキスト、画像、プログラム命令などを含む様々なタイプのコンテンツまたはメディアアイテムに適用することができる。
【0015】
図1は、本開示の一実装形態による、例示的なシステムアーキテクチャ100を示す。コンピュータシステム100の他のアーキテクチャが可能であり、本開示の実施形態を利用するコンピュータシステムの実装形態は、描かれた特定のアーキテクチャに必ずしも限定されない点に留意されたい。システムアーキテクチャ100は、コンテンツ共有プラットフォーム110、サーバ120、ユーザデバイス130A〜Z、ネットワーク140、およびデータストア150を含む。
【0016】
コンテンツ共有プラットフォーム110は、ユーザがメディアアイテム112A〜Zを消費、アップロード、共有、検索、承認(「好き」)、嫌悪、および/またはコメントすることを可能にし得る。コンテンツ共有プラットフォーム110は、メディアアイテム112A〜Zへのアクセスをユーザに提供するために使用され得るウェブサイト(たとえば、ウェブページ)またはアプリケーションバックエンドソフトウェアを含み得る。メディアアイテム112A〜Zは、ユーザによって選択されたデジタルコンテンツ、ユーザによって利用可能にされたデジタルコンテンツ、ユーザによってアップロードされたデジタルコンテンツ、コンテンツプロバイダによって選択されたデジタルコンテンツ、放送局によって選択されたデジタルコンテンツなどであり得る。メディアアイテム112A〜Zの例は、デジタルビデオ、デジタル映画、デジタル写真、デジタル音楽、ウェブサイトコンテンツ、ソーシャルメディアアップデート、電子書籍(ebooks)、電子雑誌、デジタル新聞、デジタルオーディオブック、電子ジャーナル、ウェブブログ、リアルシンプルシンジケーション(RSS)フィード、電子コミックブック、ソフトウェアアプリケーションなどを含み得るが、これらに限定されない。メディアアイテム112A〜Zは、インターネットおよび/またはモバイルデバイスアプリケーションを介して消費され得る。簡潔かつ簡単にするために、本明細書全体を通じてメディアアイテムの例としてオンラインビデオ(以下、ビデオとも呼ばれる)が使用される。
【0017】
本明細書で使用されるように、「メディア」、「メディアアイテム」、「オンラインメディアアイテム」、「デジタルメディア」、「デジタルメディアアイテム」、「コンテンツ」、および「コンテンツアイテム」は、デジタルメディアアイテムをエンティティに提示するように構成されたソフトウェア、ファームウェア、またはハードウェアを使用して実行またはロードすることができる電子ファイルを含むことができる。一実装形態では、コンテンツ共有プラットフォームは、データストア150を使用してメディアアイテム112A〜Zを記憶し得る。一例では、メディアアイテムは、ユーザデバイス130Aのユーザによって識別されるユーザが生成したビデオであってもよく、または、ユーザデバイス130A〜Zのうちの1つまたは複数に別のメディアアイテムを提示する前、最中、または後に提示される、コンテンツ共有プラットフォーム110によって選択された広告であってもよい。
【0018】
メディアチャンク152A〜Cは、特定のメディアアイテム(たとえば、メディアアイテム112A)の異なる部分であり得る。
図1に示される例では、メディアチャンク152A〜Cは、メディアアイテム112Aのセグメント化されたコンテンツを含むメディアチャンクのシーケンスであり得る。セグメント化されたコンテンツは、メディアアイテムと同じ形式でもよく、異なる形式でもよい。シーケンスは、重複しないメディアチャンクの連続シーケンスであり得る。たとえば、期間がXのメディアアイテムは、それぞれがX/4の固定期間またはX/4の平均期間(すなわち、可変的にセグメント化されている場合)を有する4つのチャンクに分割され得る。別の例では、チャンクのうちの1つまたは複数が他のチャンクのうちの1つまたは複数と重複し得る。たとえば、期間がXのメディアアイテムは5つのチャンクに分割され得、チャンクのうちの4つは前述のように画像コンテンツ(たとえば、ビデオコンテンツ)のシーケンスを含み得、1つのチャンクはすべてのオーディオコンテンツを含み得る。画像コンテンツを含むチャンクは互いに重複しない場合があるが、オーディオコンテンツは4つの画像コンテンツチャンクの各々と重複し得る。一例では、ビデオコンテンツを伴うチャンク(たとえば、ビデオチャンク)は、中間ストリームのビデオデータを含み得る。ビデオチャンクは、チャンク識別データ(たとえば、v_id_123)によって識別され得、ビデオチャンクのシーケンス内の後続のビデオチャンクの識別データは、一定量(たとえば、v_id_124)だけ増分され得る。
【0019】
サーバ120は、コンテンツ共有プラットフォーム110の一部であってもよく、メディアアイテム112A〜Zを処理するための別個のデバイスであってもよい。サーバ120は、1つまたは複数のコンピューティングデバイス(ラックマウントサーバ、ルータコンピュータ、サーバコンピュータ、パーソナルコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータなど)、データストア(たとえば、ハードディスク、メモリ、データベース)、ネットワーク、ソフトウェアコンポーネント、および/またはハードウェアコンポーネントを含み得る。
図1に示される例では、サーバ120は、メディアセグメンテーションコンポーネント122、複雑度決定コンポーネント124、およびトランスコーディングコンポーネント126を含み得る。
【0020】
メディアセグメンテーションコンポーネント122は、メディアアイテム112A〜Zを分析し得、メディアアイテムの各々を1つまたは複数の部分にセグメント化し得る。メディアセグメンテーションコンポーネント122は、メディアアイテム112A〜Zの各々にアクセスし、メディアアイテムを中間ストリームなどの中間データ構造に変換し得る。次いで、メディアセグメンテーションコンポーネント122は、メディアストリームを1つまたは複数のチャンク(たとえば、メディアチャンク152A〜C)にセグメント化し得る。
【0021】
複雑度決定コンポーネント124は、以下でより詳細に説明するように、メディアアイテム全体を分析することによって、あるいはメディアアイテムのメタデータ、またはメディアアイテムの1つもしくは複数のチャンクなどのメディアアイテムの一部を分析することによって、メディアチャンク152A〜Cの複雑度を決定し得る。分析は、メディアチャンクごとのコーディング複雑度データを識別し得、コーディング複雑度データは、メディアアイテムのチャンクの画像または聴覚複雑度を表し得る1つまたは複数の測定値を決定するために使用され得る。
【0022】
トランスコーディングコンポーネント126は、チャンクを修正するために、コーディング複雑度データにアクセスし、1つまたは複数のエンコーダ(たとえば、トランスコーダ)を選択し得る。トランスコーディングコンポーネント126は、同じメディアアイテムの複数の異なるチャンクをエンコードするために、複数の異なるエンコーダを選択し得る。たとえば、チャンクのうちのいくつかは、第1のトランスコーダを使用してエンコードされ得、同じメディアアイテムの他のチャンクは異なるトランスコーダを使用してエンコードされ得る。メディアアイテムがトランスコードされると、サーバ120またはコンテンツ共有プラットフォーム110の他のコンピューティングデバイスによって1つまたは複数のユーザデバイス130A〜Zに提供され得る。
【0023】
ユーザデバイス130A〜Zは、パーソナルコンピュータ(PC)、ラップトップ、モバイル電話、スマートフォン、タブレットコンピュータ、ネットブックコンピュータ、ネットワーク接続テレビなどのコンピューティングデバイスを含み得る。いくつかの例では、ユーザデバイス130A〜Zはまた、「クライアントデバイス」と呼ばれ得る。ユーザデバイス130A〜Zの各々は、メディアキャプチャコンポーネント132A〜Zおよびメディアプレゼンテーションコンポーネント134A〜Zを含み得る。
【0024】
メディアキャプチャコンポーネント132A〜Zは、ユーザデバイスが、メディアアイテムを作成するためにユーザデバイスによって感知されたオーディオデータおよび画像データをキャプチャすることを可能にし得る。メディアプレゼンテーションコンポーネント134A〜Zは、ユーザデバイスが、コンテンツ共有プラットフォーム110から受信した記録済みメディアアイテムあるいは1つまたは複数のメディアアイテムを提示(たとえば、再生)することを可能にし得る。メディアプレゼンテーションコンポーネント134A〜Zは、画像、ビデオ、オーディオ、ウェブページ、ドキュメントなどを提示するメディアビューアを含み得る。
【0025】
一例では、メディアビューアは、Webサーバによって提供されるコンテンツ(たとえば、ハイパーテキストマークアップ言語(HTML)ページなどのウェブページ、デジタルメディアアイテムなど)にアクセス、検索、提示、および/またはナビゲートすることができるウェブブラウザであり得る。メディアビューアは、コンテンツ(たとえば、ウェブページ、メディアビューア)をユーザにレンダリング、表示、および/または提示し得る。メディアビューアはまた、ウェブページ(たとえば、オンラインショップによって販売されている製品に関する情報を提供し得るウェブページ)に埋め込まれた、埋込みメディアプレーヤ(たとえば、Flash(登録商標)プレーヤまたはHTML5プレーヤ)を表示し得る。別の例では、メディアビューアは、ユーザがデジタルメディアアイテム(たとえば、デジタルビデオ、デジタル画像、電子書籍など)を見ることを可能にするスタンドアロンアプリケーション(たとえば、モバイルアプリケーション)であり得る。
図1に示される例では、ユーザデバイス130A〜Zの各々は、メディア共有デバイス、メディア受信者デバイス、または両方の組合せとして機能し得る。
【0026】
ネットワーク140は、サーバ120および他の公的に利用可能なコンピューティングデバイスへのアクセスを1つまたは複数のユーザデバイス130A〜Zに提供するパブリックネットワークであり得る。ネットワーク140は、1つまたは複数のワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、ワイヤードネットワーク(たとえば、イーサネット(登録商標)ネットワーク)、ワイヤレスネットワーク(たとえば、802.11ネットワークまたはWi-Fiネットワーク)、セルラーネットワーク(たとえば、ロングタームエボリューション(LTE)ネットワーク)、ルータ、ハブ、スイッチ、サーバコンピュータ、および/またはそれらの組合せを含み得る。
【0027】
データストア150は、メモリ(たとえば、ランダムアクセスメモリ)、ドライブ(たとえば、ハードドライブ、フラッシュドライブ)、データベースシステム、あるいはデータを記憶することができる別のタイプのコンポーネントまたはデバイスであり得る。データストア150は、複数のコンピューティングデバイス(たとえば、複数のサーバコンピュータ)に広がることができる複数のストレージコンポーネント(たとえば、複数のドライブまたは複数のデータベース)を含み得る。データストア150は、コンテンツ共有プラットフォーム110から受信されるメディアアイテムのコピーを記憶するメディアキャッシュを含み得る。一例では、メディアアイテム112A〜Zの各々は、コンテンツ共有プラットフォーム110からダウンロードされるファイルであり得、メディアキャッシュにローカルに記憶され得る。別の例では、各メディアアイテム112は、コンテンツ共有プラットフォーム110からストリーミングされてもよく、トランスコードされるまで、サーバ120のメモリに一時的なコピーとして存在してもよい。
【0028】
本開示の実装形態は、サーバおよびコンテンツ共有プラットフォームに関して説明されているが、実装形態は一般に、デジタルコンテンツおよびユーザ間の接続を提供するあらゆるタイプのソーシャルネットワークにも適用され得る。本明細書で説明するシステムがユーザに関する個人情報を収集する状況、または個人情報を利用し得る状況では、コンテンツ共有プラットフォームがユーザ情報(たとえば、ユーザのソーシャルネットワークに関する情報、社会的なアクションまたは活動、職業、ユーザの嗜好、あるいはユーザの現在の場所)を収集するかどうかを制御するための、あるいはユーザに関連性の高い可能性があるコンテンツサーバからコンテンツを受信するかどうかを制御するための機会、および/またはその方法がユーザに提供され得る。さらに、特定のデータは、記憶または使用される前に1つまたは複数の方法で扱われ得るため、個人を特定できる情報は削除される。たとえば、ユーザの個人情報は、ユーザの個人を特定できる情報が決定されないように扱われ得、位置情報が取得されるユーザの地理的位置(たとえば、都市、郵便番号、または州レベル)が一般化され得るため、ユーザの特定の位置を決定することはできない。したがって、ユーザは、ユーザに関する情報が収集され、コンテンツ共有プラットフォームによって使用される方法の制御を有し得る。
【0029】
本開示の実装形態では、「ユーザ」は単一の個人として表され得る。しかし、本開示の他の実装形態は、ユーザのセットおよび/または自動化されたソースによって制御されるエンティティである「ユーザ」を包含する。たとえば、ソーシャルネットワークにおけるコミュニティとしてフェデレーションされた個々のユーザのセットは、「ユーザ」と見なされ得る。
【0030】
図2は、例示的なコンピューティングシステム200を示すブロック図である。コンピューティングシステム200は
図1のサーバ120と同一であってもよく、類似であってもよい。
図2に示される例では、コンピューティングシステム200は、メディアセグメンテーションコンポーネント122、複雑度決定コンポーネント124、トランスコーディングコンポーネント126、およびデータストア150を含む。
【0031】
メディアセグメンテーションコンポーネント122は、ディアアイテムを1つまたは複数のメディアチャンク152にセグメント化するために、メディアアイテム112を分析し得、またメディアアイテム112に対して1つまたは複数の前処理ステップを実行し得る。一例では、メディアセグメンテーションコンポーネント122は、中間ストリームモジュール210およびチャンク識別モジュール212を含み得る。
【0032】
中間ストリームモジュール210は、1つまたは複数のデータストア150からメディアアイテム112にアクセスし得る。メディアアイテム112は、メディアアイテム112をキャプチャ、記録、変換、または記憶したコンピューティングデバイスまたはハードウェアデバイスに固有の形式であり得る。形式は、データを識別してインターリーブするための特定のマルチメディアコンテナ形式であり得、ビデオストリーム、オーディオストリーム、またはそれらの組合せなどの異なるタイプのデータを含み得る。形式は、Moving Picture Experts Group Standard(MPEG)(たとえば、MPEG4)、QuickTime File Format、Flash Video(.FLV、F4V)、Audio Video Interleaved(AVI)、Windows Media Video(WMV)、他の形式、またはそれらの組合せと同一であってもよく、類似であってもよい。一例では、メディアアイテム112は、メディアアイテムをキャプチャおよび記録したユーザデバイス(たとえば、モバイル電話、デジタル映画カメラ)に固有のネイティブ形式であり得る。別の例では、メディアアイテム112は、コンテンツ共有プラットフォームに特有の1つまたは複数の形式に変換され得る。いずれの例においても、メディアアイテム112の形式は、ソース形式または元の形式と見なされ得る。中間ストリームモジュール210は、メディアアイテム112を元の形式から1つまたは複数の中間形式に変換し得る。これは、メディアアイテムを元の形式から中間形式にデコードすることを含み得る。中間形式は、ストリームの形式(たとえば、中間ストリーム)であってもよく、ネイティブ形式とは異なっていてもよく、ネイティブ形式と類似であってもよく、同一であってもよい。
【0033】
チャンク識別モジュール212は、中間ストリームにアクセスし、中間ストリームを1つまたは複数の固定サイズまたは可変サイズのメディアチャンク152にセグメント化し得る。一例としてビデオトランスコーディングを取り上げると、チャンク識別モジュール212は、中間ストリームを固定サイズのビデオチャンクに分割し得る。たとえば、中間ビデオストリームの15秒ごとのビデオデータは、個別のビデオチャンクとして識別され得る。別の例では、チャンク識別モジュール212は、フレーム内境界などの既存の境界に基づいて、中間ストリームを可変サイズのビデオチャンクに分割し得る。いずれの例においても、チャンク識別モジュール212は、ビデオコンテンツをビデオチャンクにセグメント化し得、チャンクの各々は、中間ストリームのビデオデータの少なくとも1つまたは複数の画像を含む。
【0034】
オーディオコンテンツを伴う中間ストリームの場合、チャンク識別モジュール212は、中間ストリームを複数のオーディオチャンクにセグメント化し得る。ビデオストリームのオーディオデータは、より高い周波数(たとえば、48kHz)でサンプリングされ得、フレーム間圧縮は必要ない(たとえば、MP3オーディオデータ)。さらに、複雑なビデオ処理(たとえば、動きの推定および補正)による計算コストの高いビデオデータトランスコーディングと比較すると、オーディオトランスコーディングははるかに安価である。一例では、中間ストリームのオーディオチャンクは、中間ストリームのビデオチャンクより大きい場合がある。別の実施形態では、中間ストリームのオーディオコンテンツは、セグメント化されることなしにビデオまたは画像コンテンツから分離されてもよく、オーディオコンテンツ全体が単一のオーディオチャンクとして扱われてもよい。
【0035】
複雑度決定コンポーネント124は、メディアアイテム全体を分析することによって、またはメディアアイテムのメタデータあるいはメディアアイテムの1つまたは複数のチャンクなどのメディアアイテムの一部を分析することによって、メディアチャンク152の複雑度を決定し得る。分析はチャンクのコーディング複雑度データを識別し得、メディアアイテムのチャンクの聴覚、画像、またはビデオコーディング複雑度を表し得る1つまたは複数のメディア複雑度測定値を決定するためにコーディング複雑度データが使用され得る。複雑度決定コンポーネント124は、チャンク分析モジュール220および複雑度測定モジュール222を使用して、チャンクのメディア複雑度測定値252を決定し得る。
【0036】
メディア複雑度測定値252は、1つまたは複数のメディアチャンク152のコーディング複雑度を表す数値または非数値であってもよく、メディアアイテム112の特定のチャンクをエンコードする難しさを示してもよい。メディア複雑度測定値は、メディアアイテム112のチャンクに含まれる空間的および/または時間的情報(たとえば、モーションデータ)の量に直接または間接的に関連する(たとえば、比例する)可能性がある。たとえば、より高いメディア複雑度測定値は、ビデオフレームの大きい空間アクティビティに対応することが多いため、ビデオフレーム内の動き補償された大きい輝度残差値またはピクセル値の輝度分散に対応し得る。動きベクトルの長さ/エントロピー、およびフレーム残余のエネルギーなどの、ビデオフレームの抽出された時間的特徴も、ビデオフレームに存在する動きの量を反映する場合がある。
【0037】
チャンク分析モジュール220は、チャンクに関連付けられるコンテンツ情報を集めることによってチャンクを分析し得る。コンテンツ情報は、チャンクのフレームごとの分析を実行することなしに集められてよく、たとえば、チャンクまたはメディアアイテムに関連付けられるメタデータを分析することが含まれてよい。チャンク分析モジュール220は、複数のソースから情報を集めることができ、情報は、特定のチャンク、対応するメディアアイテム、他のチャンクまたはメディアアイテム、コンピューティングデバイス、ユーザ、他の情報あるいはそれらの組合せに関連し得る。コンテンツ情報は、メディアアイテムまたはチャンクの1つまたは複数の画像フレームの寸法に関連し得る。フレームの寸法は、フレームの幅(W)、フレームの高さ(H)、アスペクト比、他の寸法、またはそれらの組合せを含んでもよく、それらに関連してもよい。フレームの寸法は、ピクセル量(たとえば、1920×1080)、解像度値(たとえば、1080p、720p、1080i、720i)、解像度モード(たとえば、標準解像度(SD)、高解像度(HD)、超高解像度(UHD))、他の値、またはそれらの組合せで表現され得る。
【0038】
コンテンツ情報は、チャンクのフレームレートまたはビットレートに関する情報を含み得る。フレームレート(たとえば、フレーム周波数)は、時間単位で表示されるフレームの数を指し得、1秒あたりのフレーム数(Fps)で表現され得る。ビットレート(R)またはエンコードビットレートは、ソースコーディング(たとえば、データ圧縮)後のオーディオまたはビデオを表すために再生時間の単位ごとに使用されるビットの数を指し得る。ビットレートは、可変ビットレートマルチメディアソースコーディングスキームのコンテキストにおいて使用される場合、平均ビットレートであり得る。チャンクのエンコードビットレートは、バイト単位のチャンクのサイズを、記録の再生時間(秒)に8を掛けた値で割った値であり得る。一般的に、ビットレートが高いほど、チャンクはより複雑なコンテンツを含む。これは、ビデオの空間的および時間的特徴と、それに対応するエンコードビットレートの間に相関関係があることが多いためであり得る。
【0039】
コンテンツ情報は、チャンクのクロミナンスに関連してもよく、チャンクの色関連情報を伝達してもよい。色情報は、デジタルまたはアナログのビデオ撮影においてカラー画像パイプラインの一部として使用される色空間のファミリ(たとえば、YCbCr、YUV)に基づいている場合がある。色空間の例は、YCbCr(YCC)色空間であり得、これは、関連付けられる赤緑青(RGB)色空間からの数学的な座標変換によって定義され得る。Y(または、Y')は輝度成分であり得、CbおよびCrはそれぞれ青差と赤差の色差成分であり得る。
【0040】
多くの場合、メディアアイテムは、クロマサブサンプリングを実行することによって、エンコードされたメディアアイテムにおいて利用可能な色情報を減らすことによって圧縮される。クロマサブサンプリングは、ルマ情報(たとえば、輝度)の解像度よりも低いクロマ情報(たとえば、色情報)の解像度で画像をエンコードし得る。サブサンプリングスキームは、一般的に、幅Jピクセルで高さ2ピクセルであり得る概念領域内の輝度およびクロミナンスサンプルの数を表す3部の比率J:a:b(たとえば、4:2:2)として表現される。「J」は水平サンプリング基準を表し、多くの場合値4である。「a」はJピクセルの1行目におけるクロミナンスサンプル(Cr、Cb)の数を表し、「b」はJピクセルの1行目と2行目の間のクロミナンスサンプル(Cr、Cb)の変化の数を表す。
【0041】
クロマサブサンプリングの量は、クロマ係数(CF)で表され得る。一例では、クロマ係数は、4:4:4ベースラインなどのベースラインに対して計算され得る。次いで、係数の各々を合計し、結果を12(すなわち、4+4+4)で除算することによって、クロマ係数が決定され得る。たとえば、4:2:2Y'CbCrクロマサブサンプリングスキームを使用する圧縮画像は、4+2+2が8であり、8/12が2/3であるため、2/3のクロマ係数を有し得る。
【0042】
複雑度測定モジュール222は、チャンク分析モジュール220によって決定されたコンテンツ情報にアクセスし得、メディアチャンク152のメディア複雑度測定値252を計算し得る。メディアチャンクがビデオコンテンツを含む場合、メディア複雑度測定値は、ピクセルあたりのビット(bpp)値に基づいて概算されるビデオコーディング複雑度(VCC)測定値であり得る。ピクセルあたりのビット値は、チャンクの1つまたは複数のフレームにわたって、所与の品質レベルでピクセルをエンコードするために使用されるビットの数を表し得る。一例では、複雑度測定モジュール222は、チャンクのピクセル単位のビットレート(R)、フレームレート(Fps)、クロマ係数(CF)、フレーム幅(W)、およびフレーム高さ(H)を含むコンテンツ情報にアクセスすることによって、チャンクのビデオコーディング複雑度(VCC)測定値を決定し得る。次いで、複雑度測定モジュール222は、VCC=R/(W*H*Fps*CF)を備える数式に基づいてビデオコーディングの複雑度の値を計算し得る。
【0043】
複雑度測定モジュール222は、ソースメディアチャンク152の1つまたは複数の追加の空間的および/または時間的特徴にVCC値を補足または基づかせることによって、メディア複雑度測定値252(たとえば、ビデオコーディング複雑度測定値)の精度を向上させることができる。たとえば、メディアチャンク152のVCC値は、フレームレベルの空間分散、残留エネルギー、スキップされたマクロブロック(MB)の数、およびチャンクの予測マクロブロックの動きベクトルをエンコードするためのビットの数に基づいて、追加的または代替的に計算され得る。ソースメディアチャンク152をエンコードするユニバーサルワークロードなどの他のコーディングパラメータをVCC値の計算において使用することができる。
【0044】
複雑度決定コンポーネント124は、メディア複雑度測定値の決定を向上させるために、機械学習技法を組み込むことができる。一例では、複雑度決定コンポーネント124は、メディアアイテムの空間的および時間的特徴とその対応するエンコードビットレートとの間の相関関係を学習するために、メディアデータストアから選択されたメディアアイテムを使用してオフラインでトレーニングされ得る。たとえば、複雑度決定コンポーネント124は、大きいメディアセット(たとえば、ビデオデータベースからの20,000のビデオ)で線形回帰アルゴリズムを使用してトレーニングされ得る。選択したビデオ機能と正規化されたビットレートとの間の関係をモデル化するために、線形回帰アルゴリズムが使用され得る。
【0045】
トランスコーディングコンポーネント126は、チャンクを修正するために、コーディング複雑度データにアクセスし、1つまたは複数のエンコーダ(たとえば、トランスコーダ)を選択し得る。トランスコーディングコンポーネント126は、同じメディアアイテムの複数の異なるチャンクをトランスコードするために、複数の異なるエンコーダを選択し得る。たとえば、チャンクのうちのいくつかは第1のトランスコーダを使用してエンコードされ、同じメディアアイテムの他のチャンクは異なるトランスコーダを使用してエンコードされ得る。メディアアイテムがトランスコードされると、サーバ120、またはコンテンツ共有プラットフォーム110の他のコンピューティングデバイスによって、1つまたは複数のユーザデバイス130に提供され得る。一例では、トランスコーディングコンポーネント126は、選択モジュール230、開始モジュール232、および組合せモジュール234を含み得る。
【0046】
選択モジュール230は、メディアチャンク152の各々についてメディア複雑度測定値252にアクセスし得、それぞれのメディア複雑度測定値に基づいてメディアチャンクのトランスコーダを選択し得る。選択モジュール230は、異なるエンコーダの間で選択する際に1つまたは複数のしきい値を使用し得る。しきい値は、コンピューティングシステム200に記憶された、またはコンピューティングシステム200にアクセス可能な所定の値に基づいてもよく、またメディアチャンク複雑度しきい値の特定の値(たとえば、ピクセルあたりのビット(bpp)値)に対応してもよい。所定のしきい値は、設計者、開発者、管理者、他のユーザ、またはそれらの組合せの入力に基づいてもよい。所定のしきい値は、機械学習に基づいて生成または調整され得、エンコーディングがチャンクで完了する前、最中、または後にフィードバックに基づいて時間とともに更新され得る。
【0047】
選択モジュール230は、メディアチャンクを符号化するために特定のエンコーダを選択する際に、チャンクのメディア複雑度指標を所定のしきい値と比較し得る。所定のしきい値(たとえば、VCCしきい値またはbppしきい値)は、コーディング複雑度のカテゴリ間の分割点を反映し得る。一例では、2つのカテゴリがあり得、所定のしきい値複雑度値は、2つのグループ間の分割を意味し得る。しきい値を下回るメディア複雑度測定値を有するチャンクは、チャンクの第1のセット(たとえば、より低い複雑度のチャンク)に関連付けられ得、しきい値以上のメディア複雑度測定値を有するチャンクは、チャンクの第2のセット(たとえば、より高い複雑度のチャンク)に関連付けられ得る。選択モジュール230は、より低い複雑度に関連付けられるチャンクをエンコードするためにシングルパスエンコーダ/トランスコーダを選択し得、より高い複雑度に関連付けられるチャンクをエンコードするために、マルチパスエンコーダ/トランスコーダを選択し得る。他の例では、3つ以上のカテゴリの複雑度がある。
【0048】
開始モジュール232は、メディアチャンクおよび選択されたエンコーダに基づいてエンコーディング要求を生成し得る。エンコーディング要求は、チャンク識別子、メディアコンテンツタイプ(たとえば、ビデオチャンク、オーディオチャンク)、エンコーダ識別子(たとえば、シングルパス、マルチパス)、チャンクサイズ、チャンクオフセット(たとえば、メディアアイテムに関するオフセット)、タイムスタンプ、ソース形式、ターゲット形式、他の情報、またはそれらの組合せの1つまたは複数を含み得る。開始モジュール232は、個々のメディアチャンク152に対する要求を提出してもよく、または複数のメディアチャンク152に対する要求を提出してもよい。たとえば、より高い複雑度のチャンクのうちの1つまたは複数(たとえば、第1のセットのすべて)を識別する要求、およびより低い複雑度のチャンクのうちの1つまたは複数(たとえば、第2のセットのすべて)を識別する別の要求が識別可能な要求があり得る。開始モジュール232は、エンコーディングを実行するために要求をコンピューティングシステム200上のコンポーネントに送信してもよく、エンコーディングを実行するために要求を1つまたは複数の他のコンピュータシステム(たとえば、クラスタのメンバー)に送信してもよい。いずれの例においても、メディアチャンクのエンコーディングは、並列に、直列に、またはそれらの組合せにおいて発生し得る。
【0049】
組合せモジュール234はエンコードされたメディアチャンクにアクセスし得、メディアアイテムのエンコードされたバージョンを生成するためにエンコードされたメディアチャンクを組み合わせし得る。組合せモジュール234は、エンコードされたメディアチャンクにアクセスし得、エンコードされたチャンクをマージされたメディアアイテムにマージし得る。マージプロセスは、メディアアイテムの先頭に対応するチャンクを検出することを含み得る。エンコードされたチャンクが第1のチャンクであることに応答して、組合せモジュール234はヘッダ情報を保持し得、残りのチャンク(たとえば、第1ではないチャンク)については、組合せモジュール234はヘッダ情報を削除し得る。組合せモジュール234は、エンコードされたチャンクを順番に組み合わせてもよく、また組み合わせられたメディアアイテム内のエンコードされたチャンクの位置は、チャンク識別に基づいてもよい。たとえば、H.264ビデオ形式のチャンクはネットワーク抽象層(NAL)ヘッダを含み得、組合せモジュール234は第1のビデオチャンクに含まれるNALヘッダを保持し、後続のビデオチャンク内のNALヘッダを取り除くことができる。
【0050】
図3は、本開示の1つまたは複数の態様による、同じメディアアイテムの異なるチャンクをトランスコードするために、複数の異なるトランスコーダを使用するための方法300の例示的な一例の流れ図を示す。方法300およびその個々の機能、ルーチン、サブルーチン、または動作の各々は、本方法を実行するコンピュータデバイスの1つまたは複数のプロセッサによって実行され得る。特定の実装形態では、方法300は、単一のコンピューティングデバイスによって実行され得る。あるいは、方法300は、2つ以上のコンピューティングデバイスによって実行され得、各コンピューティングデバイスは、方法の1つまたは複数の個々の機能、ルーチン、サブルーチン、または動作を実行し得る。例示的な例では、方法300を実装するコンピューティングデバイスは同期され得る。あるいは、方法300を実装するプロセスは、互いに関して非同期的に実行され得る。
【0051】
説明を簡単にするために、本開示の方法は一連の行為として図示および説明されている。しかしながら、本開示による行為は、様々な順序で、および/または同時に、ならびに本明細書では提示および説明されていない他の行為とともに発生する可能性がある。さらに、開示された主題に従って方法を実装するために、図示されたすべての行為が必要とされるわけではない。さらに、当業者は、本方法が状態図またはイベントを介して一連の相互に関係する状態として代替的に表され得ることを理解および認識するだろう。さらに、本明細書で開示される方法は、そのような方法をコンピューティングデバイスに輸送および転送することを容易にするために製造品に記憶するできることが理解されるべきである。本明細書で使用される「製造品」という用語は、任意のコンピュータ可読デバイスまたはストレージ媒体からアクセス可能なコンピュータプログラムを包含することが意図されている。一実装形態では、方法300は、
図1のサーバ120または
図2のコンピューティングシステム200によって実行され得る。
【0052】
方法300は、サーバデバイスまたはクライアントデバイスの処理デバイスによって実行され得、ブロック302において開始し得る。ブロック302において、処理デバイスは、第1のチャンクと第2のチャンクを備えるメディアアイテムにアクセスし得る。処理デバイスは、メディアアイテムをキャプチャおよび記録したユーザデバイスからメディアアイテムを受信し得、メディアアイテムを第1のチャンクおよび第2のチャンクを含む複数のチャンクにセグメント化し得る。一例では、メディアアイテムの第1のチャンクおよびメディアアイテムの第2のチャンクは、メディアアイテムの重複しない持続時間のシーケンスから導出され得る。たとえば、メディアアイテムは5分間の長さであってよく、メディアアイテムを生成するためにチャンクの各々を連結することができるようにチャンクにセグメント化され得る。別の例では、第1のチャンクと第2のチャンクは部分的または完全に重複し得る。たとえば、第1のチャンクはビデオのオーディオコンテンツを含み得、第2のチャンクはビデオの画像コンテンツであり得、オーディオコンテンツは、オーディオコンテンツとビデオコンテンツの一部またはすべてが同時に提示されるようにビデオコンテンツと重複し得る。いずれの例においても、処理デバイスは、より少ないコンピューティングリソースを使用してメディア複雑度測定値を決定することができるように、元のチャンクの代わりにより低い解像度にダウンスケールされたチャンク(たとえば、第1のチャンクおよび第2のチャンク)にアクセスし得る。
【0053】
ブロック304において、処理デバイスは、第1のチャンクの第1のメディア複雑度指標と第2のチャンクの第2のメディア複雑度指標とを決定し得る。第1のメディア複雑度指標および第2のメディア複雑度指標の各々は、それぞれのチャンクの空間的および時間的分布を示し得る。メディアアイテムがビデオである場合、メディア複雑度指標は、メディアアイテムの第1のチャンクのビデオコーディング複雑度測定値および第2のチャンクのビデオコーディング複雑度測定値を含み得る。一例では、第1のチャンクのビデオコーディング複雑度(VCC)測定値を決定するステップは、第1のチャンクのピクセル単位のビットレート(R)、フレームレート(Fps)、クロマ係数(CF)、フレーム幅(W)、およびフレーム高さ(H)を決定するステップを含み得る。このコンテンツ情報は、以下の数式:VCC=R/(W*H*Fps*CF)に基づいてビデオコーディングの複雑度の値を計算するために使用され得る。
【0054】
ブロック306において、処理デバイスは、複数のエンコーダから第1のエンコーダおよび第2のエンコーダを選択し得る。第1のエンコーダは第1のチャンクの第1のメディア複雑度指標に基づいて選択され得、第2のエンコーダは第2のチャンクの第2のメディア複雑度指標に基づいて選択される。一例では、第1のエンコーダを選択するステップは、第1のチャンクの第1のメディア複雑度指標を所定のしきい値と比較することと、第1のメディア複雑度指標が所定のしきい値未満であることに応答してシングルパスエンコーダを選択することとを行う処理デバイスを含み得る。所定のしきい値は、設計者、開発者、管理者、他のユーザ、またはそれらの組合せによって提供される所定の値に基づいてもよい。所定のしきい値は、機械学習に基づいて調整され得、エンコーディングがチャンクで完了した後にフィードバックに基づいて時間とともに修正され得る。
【0055】
複数のエンコーダは、複数の可変ビットレートエンコーダを含み得、第1のエンコーダはシングルパスエンコーダであり得、第2のエンコーダはマルチパスエンコーダであり得る。シングルパスエンコーダは、ビデオバッファリング検証器(VBV)を含むシングルパストランスコーダであり得、マルチパスエンコーダは、制約された品質と制限されたビットレートとを備える2パストランスコーダであり得る。ビデオバッファリング検証器は、MPEG規格(たとえば、MPEG2)で使用されるビデオバッファモデルであり得、エンコードされたビデオストリームを別のデバイス(たとえば、デコーディングデバイス、ユーザデバイス)で正しくバッファリングして再生できることを確実にし得る。ビデオバッファリング検証器は、受信デバイス(たとえば、デコーダデバイス)においてバッファオーバーフローまたはバッファアンダーフローがあるかどうかを決定(たとえば、推定または予測)するために使用され得る。ビデオバッファリング検証器は、メディアストリームが受信されるビットレート(たとえば、最大ビットレート)およびメディアストリームが記憶されるバッファサイズを考慮に入れてもよい。一例では、ビデオバッファリング検証器は、1つまたは複数のリーキーバケットモデルを使用して実装され得る。離散イベントのいくつかのシーケンスが、それらの平均およびピークレートまたは頻度の定義された制限に適合するかどうかを決定するために、リーキーバケットモデルが使用され得る。リーキーバケットモデルは、データ送信(たとえば、パケット)が帯域幅とバースト性の定義された制限に適合していることを確認するために、パケット交換コンピュータネットワークに適用し得る。バースト性は、ネットワークトラフィックのフロー内の変動の指標である。
【0056】
ブロック308において、処理デバイスは、第1のエンコーダを使用して第1のチャンクをエンコードし得、第2のエンコーダを使用して第2のチャンクをエンコードする。一例では、メディアアイテムの第1のチャンクはシングルパスエンコーダを使用してエンコードされ得、メディアアイテムの第2のチャンクはマルチパスエンコーダを使用してエンコードされ得る。処理デバイスはまた、エンコードされたメディアアイテムを形成するために、メディアアイテムの第1のチャンク(シングルパスエンコーダを使用してエンコードされた)をメディアアイテムの第2のチャンク(2パスエンコーダを使用してエンコードされた)と組み合わせてもよい。ブロック308を参照して本明細書で上述した動作を完了することに応答して、本方法は終了し得る。
【0057】
図4は、本開示の1つまたは複数の態様に従って動作するコンピュータシステムのブロック図を示している。特定の実装形態では、コンピュータシステム400は、(たとえば、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、またはインターネットなどのネットワークを介して)他のコンピュータシステムに接続され得る。コンピュータシステム400は、クライアント-サーバ環境のサーバまたはクライアントコンピュータの容量で、あるいはピアツーピアまたは分散ネットワーク環境のピアコンピュータとして動作し得る。コンピュータシステム400は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、セルラー電話、ウェブ機器、サーバ、ネットワークルータ、スイッチまたはブリッジ、あるいはそのデバイスによって実行されるべきアクションを指定する命令のセット(シーケンシャルまたはその他)を実行することができる任意のデバイスによって提供され得る。さらに、「コンピュータ」という用語は、本明細書で説明する方法のうちの任意の1つまたは複数を実行するために命令のセット(または、複数のセット)を個別または共同で実行するコンピュータの任意の集合を含むものとする。
【0058】
さらなる態様では、コンピュータシステム400は、処理デバイス402、揮発性メモリ404(たとえば、ランダムアクセスメモリ(RAM))、不揮発性メモリ406(たとえば、読取り専用メモリ(ROM)、または電気的消去可能プログラマブルROM(EEPROM))、およびバス408を介して互いに通信し得るデータストレージデバイス416を含み得る。
【0059】
処理デバイス402は、汎用プロセッサ(たとえば、複雑な命令セット計算(CISC)マイクロプロセッサ、縮小命令セット計算(RISC)マイクロプロセッサ、非常に長い命令語(VLIW)マイクロプロセッサ、他のタイプの命令セットを実装するマイクロプロセッサ、または命令セットのタイプの組合せを実装するマイクロプロセッサなど)、または専用プロセッサ(たとえば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、またはネットワークプロセッサなど)などの1つまたは複数のプロセッサによって提供され得る。
【0060】
コンピュータシステム400は、ネットワークインターフェースデバイス422をさらに含み得る。コンピュータシステム400はまた、ビデオディスプレイユニット410(たとえば、LCD)、英数字入力デバイス412(たとえば、キーボード)、カーソル制御デバイス414(たとえば、マウス)、および信号生成デバイス420を含み得る。
【0061】
データストレージデバイス416は、
図1および
図2のトランスコーディングコンポーネント126をエンコードする命令、ならびに
図3の方法300を実装するための命令を含む、本明細書で説明する方法または機能のうちのいずれか1つまたは複数をエンコードする命令426を記憶し得る非一時的コンピュータ可読記憶媒体424を含み得る。
【0062】
命令426はまた、コンピュータシステム400による実行中に、揮発性メモリ404内および/または処理デバイス402内に完全にまたは部分的に存在することもあり、したがって、揮発性メモリ404および処理デバイス402もマシン可読記憶媒体を構成し得る。
【0063】
コンピュータ可読記憶媒体424は、例示的な例では単一の媒体として示されているが、「コンピュータ可読記憶媒体」という用語は、実行可能な命令の1つまたは複数のセットを記憶する単一の媒体または複数の媒体(たとえば、集中または分散データベース、および/または関連付けられるキャッシュおよびサーバ)を含むものとする。「コンピュータ可読記憶媒体」という用語はまた、コンピュータに本明細書に記載の方法のうちのいずれか1つまたは複数を実行させるコンピュータによる実行のための命令のセットを記憶またはエンコードすることができる任意の有形媒体も含むものとする。「コンピュータ可読記憶媒体」という用語は、これらに限定されないが、ソリッドステートメモリ、光学媒体、および磁気媒体を含むものとする。
【0064】
本明細書で説明する方法、コンポーネント、および機能は、個別のハードウェアコンポーネントによって実装されてもよく、ASIC、FPGA、DSP、または類似のデバイスなどの他のハードウェアコンポーネントの機能に統合されてもよい。さらに、方法、コンポーネント、および機能は、ファームウェアモジュールまたはハードウェアデバイス内の機能回路によって実装され得る。さらに、方法、コンポーネント、および機能は、ハードウェアデバイスとコンピュータプログラムコンポーネントの任意の組合せにおいて、またはコンピュータプログラムにおいて実装され得る。
【0065】
特に明記しない限り、「検出」、「決定」、「解放」、「破壊」、「開始」、「作成」、「放棄」などの用語は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表されるデータを、コンピュータシステムのメモリまたはレジスタ、あるいは他のそのような情報ストレージ、送信、またはディスプレイデバイス内の物理量として同様に表される他のデータに操作および変換するコンピュータシステムによって実行または実装されるアクションとプロセスを指す。また、本明細書で使用される「第1」、「第2」、「第3」、「第4」などの用語は、異なる要素を区別するためのラベルとして意味され、それらの数値指定による順序の意味を有しない場合がある。
【0066】
本明細書で説明される例は、本明細書で説明される方法を実行するための装置にも関する。この装置は、本明細書に記載の方法を実行するために特別に構築されてもよく、またはコンピュータシステムに記憶されたコンピュータプログラムによって選択的にプログラムされた汎用コンピュータシステムを備えてもよい。そのようなコンピュータプログラムは、コンピュータ可読の有形のストレージ媒体に記憶され得る。
【0067】
本明細書で説明される方法および例示的な例は、任意の特定のコンピュータまたは他の装置に本質的に関連するものではない。本明細書に記載の教示に従って様々な汎用システムが使用され得、または方法300および/またはその個々の機能、ルーチン、サブルーチン、または動作の各々を実行するためにより特殊な装置を構築することが便利であることが分かる。これらの様々なシステムの構造の例は、上記の説明において記載されている。上記の説明は例示的なものであり、限定的なものではない。本開示は、特定の例示的な例および実装形態を参照して説明されたが、本開示は、説明された例および実装形態に限定されないことが認識されるであろう。本開示の範囲は、特許請求の範囲が権利を有する均等物の全範囲とともに、以下の特許請求の範囲を参照して決定されるべきである。