コーデック適用フレーム・サイズでの音声スプリッティング
境界アーチファクトを導入することなく、メディア・コンテンツの音声を別々のコンテンツ・ファイルにスプリットする方法および装置について説明する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、インターネットを介したメディア・コンテンツの配信の分野に関し、より具体的には、境界アーチファクトを導入せずに、メディア・コンテンツの音声を、分離した複数のコンテンツ・ファイルにスプリットすることに関する。
【背景技術】
【0002】
インターネットは、メディア・コンテンツ(例、映像および音声または音声)ならびに他の情報をエンド・ユーザに分配する主要な方法になっている。現在、音楽、映像、ゲーム、他のメディア情報を、コンピュータ、携帯電話、また、実質的にいかなるネットワーク可能デバイスにもダウンロードすることが可能である。人々がメディア・コンテンツを求めてインターネットにアクセスする割合は、急速に伸びている。視聴者体験のクオリティーが、オンラインでの映像視聴の成長のキーとなる障壁である。需要者のテレビ視聴体験および映画視聴体験が、オンライン映像に対する需要者期待をもたらす。
【0003】
ウェブ上で映像をストリーミングする視聴者数は急速に増えており、映像をインターネットで視聴することへの興味および需要は増している。データ・ファイルのストリーミングまたは「メディアのストリーミング」とは、大きな中断なしに本来期待される再生速度でメディアをユーザに提供するのに十分なレートで、連続したメディア・コンテンツを配信する技術を指す。メディア・ファイルのダウンロードされたデータとは違い、ストリーム化されたデータは、それを再生するまでメモリに格納し、次いで、指定時間が経過した後削除することができる。
【0004】
電波、衛星、またはケーブルを介した通常のブロードキャストと比較すると、インターネットを介したメディア・コンテンツのストリーミングには、いくつかの課題がある。メディア・コンテンツの音声の符号化の場面で生じる懸念の1つは、映像および音声を複数の固定時間(fixed-time)部分にセグメント化する際の境界アーチファクトの導入である。従来手法の1つでは、音声が、たとえば2秒間といった対応する映像の固定時間幅に合う固定時間幅を有する複数の部分にセグメント化される。この手法では、音声境界が、常に映像境界に整合する。この従来手法では、たとえばAAC LC(Low Complexity Advanced Audio Coding)を使用することにより、コンテンツ・ファイルごとに各音声部分を符号化するために音声コーデックの新たな符号化セッションが開始される。音声の各部分ごとに新たな符号化セッションを使用することにより、音声コーデックが、波形の開始および終了を0からの遷移として解釈し、これにより、図1に示すような部分境界での符号化部分の再生中のポップ雑音(pop noise)またはクリック雑音(click noise)が引き起こされる。こうしたポップ雑音またはクリック雑音を、境界アーチファクトと称する。また、音声コーデックが、コーデック適用(codec-enforced)フレーム・サイズに従って固定時間幅の音声を符号化する。これによっても、音声コーデックの作り出すサンプル数がコーデック適用フレーム・サイズで等しく割り切れない場合、境界アーチファクトが導入される。
【0005】
図1は、ある従来手法を使用した音声の2部分についての例示的音声波形100を示す図である。音声波形100は、映像の第1、第2の部分間の0からの遷移102を示す。音声コーデックが固定フレーム・サイズ(以降本明細書では、コーデック適用フレーム・サイズと称する)を有する場合、音声コーデックでは、コーデック適用フレーム・サイズに従ったフレーム毎のサンプル数でその部分のサンプル数が等しく割り切れないと、最終フレーム104を0で埋める必要がある。たとえば、サンプリング・レート48kHzを使用する場合、2秒間の音声セグメントに対して96000個のサンプルが生成される。このサンプル数96000をフレーム毎のサンプル数(たとえば、AAC LCの場合のサンプル数は1024、HE AAC(High Efficiency AAC)の場合のサンプル数は2048)で割ると、フレーム数は93.75となる。93.75は整数でないので、音声コーデックは、最終フレーム104を0で埋める。この例では、最終フレームの最後の256個のサンプルに、値0が付与される。値0はサイレント音声を表すが、最終フレームを0で埋めているので、音声の符号化部分の再生中に部分境界でポップ音声またはクリック音声が確認される。0からの遷移102および最終フレーム104に埋め込まれた0により、境界アーチファクトが導入される。境界アーチファクトが導入されると、音声の全体的な質が低減されることがあり、このことは、メディア・コンテンツの再生中のユーザ体験に影響を及ぼす。
【0006】
他の従来手法では、フレーム境界との整合をとるために、音声の中からより期間の長い部分を使用することにより、境界アーチファクトの数を制限しようとする。しかし、使用される音声の期間部分がより大きくなると、音声および映像を別々にまとめる必要がある場合がある。このことは、音声および映像を有するメディア・コンテンツのストリーミングに障害をもたらすことがあり、こうした障害は、たとえば、メディア・コンテンツの再生中に様々なクオリティー・レベルへのシフトを可能にするアダプティブ・ストリーミングの場面のように、同一のメディア・コンテンツが様々なクオリティー・レベルで符号化されるときに特にもたらされる。
【図面の簡単な説明】
【0007】
本発明は、以下の説明、および、本発明の実施形態を図示するのに使用する添付の図面を参照することにより最適に理解することができる。
【図1】ある従来手法を使用した音声の2部分についての例示的音声波形を示す図である。
【図2】本実施形態のエンコーダを用いることのできるコンピューティング環境の一実施形態を示す概略ブロック図である。
【図3A】図2のエンコーダをそれぞれが用いた複数のホストを含めた符号化システムを用いることのできるコンピューティング環境の他の実施形態を示す概略ブロック図である。
【図3B】一実施形態によるストリームレット(streamlet)の並行符号化の一実施形態を示す概略ブロック図である。
【図4】コーデック適用フレーム・サイズに従ってメディア・コンテンツの音声を符号化して、このメディア・コンテンツの固定時間映像部分を有するコンテンツ・ファイル間で隙間のない音声フレームをスプリットする方法の一実施形態の流れ図である。
【図5A】固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。
【図5B】固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。
【図5C】固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。
【図6A】音声スプリッティングの一実施形態による音声部分、映像部分、ストリームレットの図である。
【図6B】音声スプリッティングを使用した音声の4部分についての音声波形の一実施形態を示す図である。
【図7】一実施形態による音声スプリッティング用のコンピュータ・システムの例示的形態のマシンの図である。
【発明を実施するための形態】
【0008】
境界アーチファクトを導入せずに、メディア・コンテンツの音声を、分離したコンテンツ・ファイルにスプリットする方法および装置を説明する。一実施形態では、オペレーションを実行するようにプログラムされたコンピューティング・システムにより行われる方法が、音声および映像を含むメディア・コンテンツを受け取ることと、フレーム・レートに従って映像を符号化することと、コーデック適用フレーム・サイズ(すなわち、固定されたフレーム・サイズ)に従って音声を符号化することと、映像のうち固定時間幅を有する符号化済部分と、音声のうち、コーデック適用フレーム・サイズを有する隙間のない音声フレームを有する符号化済部分とをそれぞれが含んだコンテンツ・ファイルを生成することとを含む。一実施形態では、従来行われているようには、音声フレームの最後を0で埋めることはしない。
【0009】
本発明の実施形態により、音声をストリーミングする改善手法が提供される。メディア・コンテンツの音声の各部分毎に新たな符号化セッションを使用する従来手法と異なり、本明細書に記載する実施形態は、境界アーチファクトを導入することなく、メディア・コンテンツを複数の小部分にセグメント化することを可能にする。本明細書に記載の実施形態では、隙間のない音声フレームを使用することにより、音声がセグメント化される。音声が再生のためにステージ(stage)される際、音声は、境界アーチファクトを有する多数の小セグメントではなく、単一のストリームとしてデコーダに提供される。本明細書に記載の実施形態では、エンコーダが、コーデック・フレーム・サイズ(たとえば、AAC-LCの場合のサンプル数は1024、または、HE AACの場合のサンプル数は2048)、および、コーデックの起動毎にいくつの音声フレームが作られるかを認識する。エンコーダは、符号化されたストリームレット(すなわち、コンテンツ・ファイル)に収めることの可能な数の音声フレームを格納するが、この符号化されたストリームレットは、映像のうち固定時間幅に基づいた部分を有する。最終音声フレームを0で埋めるのではなく、音声の次の部分の隙間のないフレームを符号化し、現在のストリームレットに加える。これにより、普通なら次のストリームレットに書き込まれるはずの少量の音声が、現在のストリームレットに書き込まれる。こうした次のストリームレットには、次いで、音声ストリームが隙間(gap)を示すための時間オフセットが付与され、したがって、音声を再生する際に、連続したストリームとしてデコーダに音声を提供することができる。これと同量の時間が、このストリームレットに対する音声のターゲット期間から差し引かれる。上記次のストリームレットの音声の終わりがフレーム境界に載らない場合、最終フレームを埋めるために、再度次のストリームレットから音声を借りる。このプロセスは、メディア・コンテンツのストリームの最後に達するまで繰り返される。音声が借りられているストリームレットの先頭に挿入された隙間は、このストリームレットの音声部分を復号および再生する前にステージする際に除去することができる。ランダムなストリームレットを得ようとする際には、音声/映像同期を維持するために、隙間の期間にサイレント音声を再生することができる。
【0010】
本明細書に記載した音声スプリッティングの実施形態により、コーデック適用フレーム・サイズの大きい(例、AAC、AC3等)音声コーデックを使用して、映像に対する同一の固定時間幅を維持しながら、境界アーチファクトを導入することなくメディア・コンテンツの音声を符号化することが可能になる。
【0011】
以下の説明では、多数の詳細を言及する。ただし、本開示内容から恩恵を受ける当業者には、こうした具体的詳細なしに本発明の実施形態を実践することができることが明らかであろう。いくつかの例では、本発明の実施形態を不明確にすることを避けるために、周知の構造およびデバイスを詳細に図示するのではなく、ブロック図形式で図示している。
【0012】
以下の詳細な説明のいくつかの部分は、コンピュータ・メモリ内のデータ・ビットへのオペレーションの象徴表現およびアルゴリズムの観点から提供している。こうしたアルゴリズム的な記述および表現は、データ処理技術の当業者が他の当業者に自身の研究の本質を最も効果的に伝えるために使用する手段である。ここでまた一般にアルゴリズムとは、所望の結果をもたらす首尾一貫した一連のステップであると理解される。これらステップは、物理量の物理的操作を必要とするものである。必ずではないが通常、これらの量は、格納すること、転送すること、組み合わせること、比較すること、あるいは操作することの可能な電気信号または磁気信号の形態をとる。一般的な使用法であるということが主な理由であるが、これらの信号を、ビット、値、エレメント、シンボル、キャラクター、ターム(term)、番号等と呼ぶことが都合の良いこともあることが分かっている。
【0013】
ただし、これらの用語および同様の用語は全て、適当な物理量に関連付けられるべきであり、これらの量に適用される都合の良いラベルにすぎないことを覚えておかれたい。以下の議論から明確であるように具体的に記載がない限り、記載全体を通じて、「受け取ること(receiving)」、「符号化すること(encoding)」、「生成すること(generating)」、「スプリットすること(splitting)」、「処理すること(processing)」、「計算すること(computing)」、「算出すること(calculating)」、「決定すること(determining)」、「表示すること(displaying)」等の用語を利用した議論は、コンピュータ・システムのレジスタおよびメモリ内の物理的(例、電子的)量で表されたデータを操作し、コンピュータ・システム・メモリもしくはレジスタまたは他のこうした情報記憶デバイス、情報送信デバイスもしくは情報表示デバイス内で同様に物理的量を用いて表された他のデータに変換するコンピュータ・システムまたは同様の電子コンピューティング・システムの動作および処理を言及することが理解される。
【0014】
本発明の実施形態はまた、本明細書内のオペレーションを実行するための装置に関する。この装置は、必要な目的のために具体的に構築することも、自体の中に記憶されたコンピュータ・プログラムに具体的にプログラムされた汎用コンピュータ・システムを備えることもできる。こうしたコンピュータ・プログラムは、フロッピー・ディスク、光学ディスク、CD-ROM、光磁気ディスクを含めた任意の種類のディスクや、ROM(リード-オンリ・メモリ)、RAM(ランダム・アクセス・メモリ)、EPROM、EEPROM、磁気カードまたは光学カードや、電子的命令を記憶するのに適した任意の種類のメディア等のコンピュータ可読記憶媒体中に記憶することができるが、記憶先はこれらに限定されない。
【0015】
本明細書で使用する「符号化済ストリームレット」という用語は、メディア・コンテンツの一部分の単一の符号化表現を指す。各ストリームレットは、メディアの一部分を含む個別のコンテンツ・ファイルとすることができ、また、独立したメディア対象として封入することができ、これにより、そのストリームレットを個別にキャッシュに入れること、メディア・プレイヤで独立して要求することおよび独立して再生することが可能になる。本明細書では、これらの個別のファイルをOSSファイルとも称する。一実施形態では、ストリームレットは、特化されたメディア・サーバによってではなく、特化されていないサーバによりサーブ(serve)されることのある静的ファイルである。一実施形態では、ストリームレット内のメディア・コンテンツが、所定の長さの再生時間(固定時間幅とも称する)を有することがある。この所定の長さの時間は、たとえば、約0.1〜8.0秒とすることができる。あるいは、他の所定の長さを使用することもできる。ストリームレット内のメディア・コンテンツは、ストリームに含まれるメディア・コンテンツの先頭に関して一意の時間インデックスを有することがある。ファイル名が、時間インデックスの一部分を含むことがある。あるいは、ストリームレットを、時間インデックスではなくファイルのサイズに従って分割することもできる。本明細書で使用する「ストリーム」という用語は、メディア・コンテンツのうち同一の映像クオリティー・プロファイルで符号化されたストリームレットの集合を指すことがあり、たとえば、映像のうち同一の映像ビット・レートで符号化された部分である。ストリームは、オリジナルのメディア・コンテンツのコピーを表す。ストリームレットは別々のファイルとして、コンテンツ・サーバ、ウェブ・サーバ、キャッシュ・サーバ、プロキシ・キャッシュ、または、コンテンツ・デリバリ・ネットワーク(CDN)に見られるようなネットワーク上の他のデバイスのうちの1つまたは複数上に格納することができる。こうした別々のファイル(たとえば、ストリームレット)は、クライアント・デバイスによって、ウェブ・サーバからHTTPを使用して要求されうる。HTTP等の標準プロトコルを使用することにより、ネットワーク管理者が、ファイアウォールを、RTSP(Real Time Streaming Protocol)等の特化した新たなプロトコルについてのネットワーク・トラフィックを認識し通過させるように構成する必要がなくなる。さらに、メディア・プレイヤが要求を開始するので、たとえば、ウェブ・サーバは、ストリーム全体ではなく、要求されたストリームレットを取り出し供給することのみ必要とされる。メディア・プレイヤは、2つ以上のウェブ・サーバからストリームレットを取り出すこともできる。これらのウェブ・サーバは、要求された部分を取り出すための、特化したサーバ側知能を伴わないことがある。他の実施形態では、ストリームレットは、ネットワーク・インフラ・オペレータ(例、ISP)のキャッシュ・サーバまたはCDNの他のコンポーネント上に別々のファイルとして格納される。本実施形態のうちいくつかはストリームレットの使用について説明するが、本明細書に記載の実施形態は、ストリームレットを使用するコンピューティング・システム内での使用に限定されず、インターネットを介してライブ・メディア・コンテンツを配信する他の技法を使用する他のシステム内で実行することもできる。たとえば、他の実施形態では、HTTP範囲の要求を使用することにより要求でき、CDN内でキャッシュに入れることの可能な複数部分に分けられる単一のファイル内にメディア・コンテンツが格納される。
【0016】
2つの一般的タイプのメディア・ストリーミング、すわわち、プッシュ(push)-ベース・ストリーミングおよびプル(pull)-ベース・ストリーミングが存在する。プッシュ技術は、発行者のコンテンツ・サーバ等のサーバが所与のトランザクションについての要求を開始するインターネット-ベースの通信の方法を説明するものである。対照的に、プル技術は、情報の送信の要求がクライアント・デバイスにより開始され、次いで、サーバにより応答されるインターネット-ベースの通信の方法について説明するものである。HTTP要求(例、HTTP GET要求)は、プル技術における要求の1種類である。対照的に、プッシュ-ベースの技術では、通常、専用のサーバが、RTSP等の専用のプロトコルを使用して、クライアント・デバイスにデータを送り込む。あるいは、いくつかのプッシュ-ベースの技術では、HTTPを使用してメディア・コンテンツを配信することがある。プル-ベースの技術では、複数のクライアント・デバイスにメディアを配信するために、CDNを使用することがある。
【0017】
本明細書に記載の様々な実施形態はプル-ベースのモデルを対象としたものであるが、プッシュ-ベースの構成等の他の構成内で、これら実施形態を実行することができることに留意されたい。プッシュ-ベースの構成では、エンコーダによる音声スプリッティングの実施形態を、図2に関連して説明するプル-ベースの構成と同様に実行することができ、符号化されたコンテンツ・ファイルをメディア・サーバ等のコンテンツ・サーバ上に格納して、プッシュ-ベースの技術を使用することにより、このメディア・コンテンツを再生用にクライアント・デバイスに配信することができる。これらの実施形態を使用して、メディア・コンテンツの様々なクオリティー・レベルをもたらすことができ、また、これらの実施形態により、一般にアダプティブ・ストリーミングと称される、様々なクオリティー・レベル間での切替えが可能になることにも留意されたい。プッシュ-ベースのモデルでは、メディア・サーバがどのコンテンツ・ファイルをクライアント・デバイスに送るかを決定し、プル-ベースのモデルでは、クライアント・デバイスがどの(1つまたは複数の)コンテンツ・ファイルをコンテンツ・サーバから要求するかを決定することが違いの1つであることがある。
【0018】
図2は、本実施形態のエンコーダ220を用いることのできるコンピューティング環境200の一実施形態を示す概略ブロック図である。コンピューティング環境200は、ソース205、エンコーダ220、コンテンツ配信ネットワーク240のオリジン(origin)・コンテンツ・サーバ210(メディア・サーバまたはオリジン・サーバとも称する)、それぞれクライアント・デバイス204上で動作する複数のメディア・プレイヤ200を含む。コンテンツ・サーバ210と、エンコーダ220と、クライアント・デバイス204とは、データ通信ネットワークで結合することができる。データ通信ネットワークには、インターネットが含まれることがある。あるいは、コンテンツ・サーバ210、エンコーダ220、クライアント・デバイス204を、共通のLAN(ローカル・エリア・ネットワーク)、PAN(パーソナル・エリア・ネットワーク)、CAN(キャンパス・エリア・ネットワーク)、MAN(メトロポリタン・エリア・ネットワーク)、WAN(ワイド・エリア・ネットワーク)、無線LAN、セルラ・ネットワーク、バーチャルLAN等上に置くこともできる。クライアント・デバイス204は、クライアント・ワークステーション、サーバ、コンピュータ、携帯型電子デバイス、もしくは、セット-トップ・ボックス、デジタル・レシーバ、デジタル・テレビ等のネットワークを介して通信を行うように構成されたエンターテイメント・システム、または他の電子デバイスとすることができる。たとえば、携帯型電子デバイスには、携帯電話、携帯型ゲーム・システム、携帯型コンピューティング・デバイス等が含まれることがあるが、これらに限定されない。クライアント・デバイス204は、ファイアウォール、ルータ、または他のパケット交換デバイスを介してインターネットにアクセスすることができる。
【0019】
図示の実施形態では、ソース205は、発行者サーバまたは発行者コンテンツ・リポジトリであることがある。ソース205は、メディア・コンテンツの作成者または分配者であることもある。たとえば、ストリーム化されるべきメディア・コンテンツがテレビ番組の放送である場合、ソース205は、テレビのサーバ、またはABC(登録商標)チャンネルやMTV(登録商標)チャンネル等のケーブル・ネットワーク・チャンネルであることがある。発行者は、インターネットを介してメディア・コンテンツをエンコーダ220に転送することができるが、エンコーダ220は、メディア・コンテンツを受け取って処理し、このメディア・コンテンツの(1つまたは複数の)コンテンツ・ファイルをオリジン・コンテンツ・サーバ210内に格納するように構成することができる。一実施形態では、コンテンツ・サーバ210が、メディア・コンテンツをクライアント・デバイス204に配信するが、このクライアント・デバイス204は、自体上で動作するメディア・プレイヤ上でこのコンテンツを再生するように構成される。コンテンツ・サーバ210は、メディア・コンテンツをストリーミングすることにより、これをクライアント・デバイス204に配信する。後により詳細に説明するように、更なる実施形態では、クライアント・サーバ204が、メディア・コンテンツの様々な部分を、複数の位置から同時にまたは一斉に受け取るように構成される。
【0020】
コンテンツ・サーバ210で格納されたメディア・コンテンツは、他のウェブ・サーバに対して、あるいはCDN240のプロキシ・キャッシュ・サーバに対して複製することができる。複製は、コンテンツ・サーバ210から計画的に押し進められることにより、または、コンテンツ・サーバ210の外のウェブ・サーバ、キャッシュ・サーバもしくはプロキシ・サーバがクライアント・デバイス204のためにコンテンツを求めることにより発生することがある。たとえば、クライアント・デバイス204は、複数のウェブ・サーバ、エッジ・キャッシュ、またはプロキシ・キャッシュ・サーバのうちのいずれかからコンテンツを要求し受け取ることができる。図示の実施形態では、ウェブ・サーバ、プロキシ・キャッシュ、エッジ・キャッシュおよびコンテンツ・サーバ210をCDN240の階層で編成して、メディア・コンテンツをクライアント・デバイス204に配信している。CDNは、コンテンツを配信するために透過的に協働する、インターネット中でネットワーク化された複数のコンピュータのシステムであり、たとえば、1つまたは複数のオリジン・コンテンツ・サーバ、ウェブ・サーバ、キャッシュ・サーバ、エッジ・サーバ等を含むことがある。通常、CDNは、たとえば、クライアント・デバイスがエッジ・キャッシュからデータを要求するような階層に構成され、エッジ・キャッシュが要求されたデータを含んでいない場合、その要求は、次には親キャッシュといった具合に、オリジン・コンテンツ・サーバに至るまで送られていく。CDNは、メディア・コンテンツを配信するために、相互接続されたコンピュータ・ネットワークまたはノードを含むこともある。CDNのいくつかの例には、Akamai Technologies社、Level3 Communications社、またはLimelight Networks社に開発されたCDNがある。あるいは、他の種類のCDNを使用することもできる。他の実施形態では、オリジン・コンテンツ・サーバ210は、本開示内容の恩恵を受ける当業者には理解されるはずの他の構成を使用することにより、メディア・コンテンツをクライアント・デバイス204に配信することができる。
【0021】
一実施形態では、発行者が、ソース205から分配するべきオリジナルのコンテンツ・ファイル内にメディア・コンテンツを格納する。コンテンツ・ファイルは、テレビ放送、スポーツ・イベント、映画、音楽、コンサート等に相当する映像および/または音声に相当するデータを含むことがある。オリジナルのコンテンツ・ファイルは、圧縮されていない映像および音声、あるいは圧縮されていない映像または音声を含むことがある。あるいは、コンテンツ・ファイルは、標準的な符号化スキームまたは独自開発の符号化スキームを使用した圧縮済コンテンツ(例、映像および/または音声)を含むことがある。ソース205からのオリジナルのコンテンツ・ファイルは、デジタル形式でもよく、たとえば約5Mbps以上といった高ビット・レートのメディア・コンテンツを含むことができる。
【0022】
図示の実施形態では、エンコーダ220が、たとえば、オリジナルのコンテンツ・ファイル、ライブ・イベント放送の直接供給からの信号、ライブでのテレビ・イベント放送のストリーム等を受け取ることにより、ソース205からオリジナルのメディア・コンテンツ231を受け取る。エンコーダ220は、1つもしくは複数のサーバ・コンピュータ、ゲートウェイまたは他のコンピューティング・デバイスを含む1つまたは複数のマシンに実装することができる。一実施形態では、エンコーダ220は、オリジナルのメディア・コンテンツ231を、1つまたは複数のコンテンツ・ファイルとして発行システム(図示せず)(例、発行者のサーバまたは発行者のコンテンツ・リポジトリ)から受け取る。あるいは、エンコーダ220は、キャプチャ(capture)時のオリジナルのメディア・コンテンツ231を受け取る。たとえば、エンコーダ220は、被キャプチャ・ブロードキャスト(captured broadcast)等のライブ・テレビ放送の直接供給をストリーム形式または信号形式で受け取ることができる。オリジナルのメディア・コンテンツ231は、たとえば、カナダ、オンタリオのDigital Rapids社から入手可能なDRC-2600キャプチャ・カード等、テレビ・キャプチャおよび/またはビデオ・キャプチャ向けに構成されたキャプチャ・カードでキャプチャすることができる。あるいは、音声および映像のキャプチャが可能な任意のキャプチャ・カードを本発明では利用することができる。キャプチャ・カードは、エンコーダと同一のサーバ上に置くことも、別のサーバ上に置くこともできる。オリジナルのメディア・コンテンツ231は、電波、ケーブル、および/もしくは衛星を介して同時にブロードキャストされる型のブロードキャスト等の被キャプチャ・ブロードキャスト、または、ライブ・イベントのスケジュールに従って特定の時点で再生されるように予定されたプレレコ型(pre-recorded)のブロードキャストであることがある。エンコーダ220は、DivX(登録商標)コーデック、Windows Media Video9(登録商標)シリーズ・コーデック、Sorenson Video(登録商標)3映像コーデック、On2 Technologies(登録商標)社のTrueMotion VP7コーデック、MPEG-4映像コーデック、H.263映像コーデック、RealVideo10コーデック、OGG Vorbis、MP3等の符号化スキームを利用することができる。あるいは、カスタマイズした符号化スキームを利用することもできる。
【0023】
他の実施形態では、エンコーダ220は、たとえば2秒間のチャンク等、映像および音声のうちの固定時間幅の部分(本明細書では「メディア・コンテンツの一部分」と称する)としてオリジナルのビデオ・コンテンツ231を受け取る。この2秒間のチャンクは、生音声(raw audio)および生映像(raw video)を含むことがある。あるいは、この2秒間のチャンクは、符号化された音声および生映像であることもある。このような場合、エンコーダ220は、メディア・コンテンツを展開する。他の実施形態では、エンコーダ220は、オリジナルのメディア・コンテンツ221を複数の生ストリームレットとして受け取るが、これら生ストリームレットはそれぞれ、メディア・コンテンツの固定時間部分(例、生音声および映像を含んだ複数の2秒間生ストリームレット)を含んでいる。本明細書で使用するように、用語「生ストリームレット」は、圧縮されていないストリームレット、または、著しくクオリティーを失うことなくサイズを実質的に縮減させるために軽く圧縮されたストリームレットのことを指す。軽く圧縮した生ストリームレットは、より急速に送信することが可能である。他の実施形態では、エンコーダ220は、オリジナルのメディア・コンテンツ231をストリームまたは信号として受け取り、生ストリームレット等、メディア・コンテンツの複数の固定時間部分にセグメント化する。
【0024】
図示の実施形態では、エンコーダ220は、スプリッタ222、固定フレーム音声エンコーダ224、音声フレーム・バッファ225、固定時間映像エンコーダ226、映像フレーム・バッファ227、音声スプリッティング・マルチプレクサ228を有する。スプリッタ222は、オリジナルのメディア・コンテンツ231を、たとえば音声および映像の連続したストリームとして受け取り、これを生音声233および生映像235にスプリットする。一実施形態では、固定フレーム音声エンコーダ224は音声コーデックである。一実施形態では、スプリッタ222が、音声および映像の連続したストリームを音声および映像の複数の2秒間チャンクにスプリットする。コーデック(コンプレッサ-デコンプレッサまたはコーダ-デコーダとも称する)とは、デジタル・データ・ストリームまたはデジタル・データ信号を符号化することおよび/または復号することの可能なデバイスまたはコンピュータ・プログラムである。一実施形態では、固定フレーム音声コーデック224は、エンコーダ220の1つまたは複数のコンピューティング・デバイスに実行されて生音声233を符号化するソフトウェアである。あるいは、固定フレーム音声コーデック224は、生音声233を符号化するのに使用されるハードウェア論理素子であってもよい。具体的には、固定フレーム音声エンコーダ224は、生音声233を受け取り、コーデック適用フレーム・サイズ、たとえば、AAC-LCではサンプル数1024またはHE AACではサンプル数2048に従って、この音声を符号化する。固定フレーム音声エンコーダ224は、符号化済音声フレーム237を音声フレーム・バッファ225に出力する。同様に、固定時間映像エンコーダ226は、生映像235をスプリッタ220から受け取るが、たとえば、2秒毎に60フレーム(30fps(frames per second))といった固定時間幅に従ってこの映像を符号化する。固定時間映像エンコーダ226は、符号化済映像フレーム239を映像フレーム・バッファ227に出力する。一実施形態では、固定時間映像コーデック226は、エンコーダ220の1つまたは複数のコンピューティング・デバイスにより実行されて、生映像235を符号化するソフトウェアである。あるいは、固定時間映像コーデック226は、生映像235を符号化するのに使用されるハードウェア論理素子であってもよい。
【0025】
音声スプリッティング・マルチプレクサ228は、符号化済音声フレーム237および符号化済映像フレーム239を使用して、符号化済メディア・コンテンツ・ファイル232(本明細書では「QSSファイル」と称する)を生成する。上で説明したように、従来のエンコーダは、それぞれが固定された時間幅である映像の一部分および音声の一部分を伴うコンテンツ・ファイルを生成するが、こうしたコンテンツ・ファイルにおいては、音声コーデックに使用されるコーデック適用フレーム・サイズに従って、その部分のサンプル数をフレーム毎のサンプル数で均等に割り切ることができないので、音声の最終フレームが0で埋められる。最終フレームを埋める従来のエンコーダと異なり、音声スプリッティング・マルチプレクサ228は、隙間のない音声フレームを使用して、固定時間の映像部分と、コーデック適用フレーム・サイズを有する隙間のない音声フレームを有する音声部分とを有するコンテンツ・ファイルを生成する。音声スプリッティング・マルチプレクサ228は、コンテンツ・ファイル232を満たすために隙間のない音声フレームを使用するので、従来から行われているようにフレームの最後の数サンプルを0で埋めるのではなく、現在のコンテンツ・ファイル232に隙間のないフレームを加えるために音声の次の部分を符号化する。
【0026】
一実施形態では、音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルに使用されるフレーム数を求めるために、次の部分から使用されるサンプルの量を表すサンプル・オフセットを記録する。音声スプリッティング・マルチプレクサ228は、音声再生における隙間を示すプレゼンテーション・オフセットも記録する。普通なら次のコンテンツ・ファイルの一部分として再生されるはずのサンプルが、現在のコンテンツ・ファイルの一部分になるので、次のコンテンツ・ファイルのプレゼンテーション・オフセットが、音声再生における隙間を示し、これにより、現在および次のコンテンツ・ファイルの音声部分が、連続したストリームとしてデコーダに提供される。本質的には、音声再生中、コンテンツ・ファイルの音声部分が復号および再生の前にステージされると、コンテンツ・ファイルの先頭に挿入された隙間は除去することができる。プレゼンテーション・オフセットにより、境界アーチファクトを有する多くの小セグメントではなく、連続したストリームとして音声をデコーダに提供することが可能になる。一実施形態では、映像の任意の一部分を探す際、音声/映像同期を維持するために、その隙間の期間はサイレント音声を再生することができる。
【0027】
一実施形態では、音声スプリッティング・マルチプレクサ228が、固定時間幅(例、2秒間)を有する第1の映像部分(例、60フレーム)と、バッファリングされた隙間のない音声フレームをいくつか有する第1の音声部分とで満たすことにより第1のコンテンツ・ファイルを生成する。このバッファリングされた音声フレームの期間は、固定時間幅よりも長い。
【0028】
一実施形態では、音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルを満たすのに必要な符号化済音声フレーム237の数を求めることによりコンテンツ・ファイル232を生成する。一実施形態では、フレームの数は、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を、コーデック適用フレーム・サイズで割った数(例、フレーム毎のサンプル)以上の最小の整数である。一実施形態では、この数は、たとえば「ceiling(x)=[x]はx以上の最小の整数」といった、実数を次に大きい整数にマップする天井関数(ceiling function)を使用することにより算出することができる。天井関数の一例を以下の式(1)に示す。
ceil((ストリームレット当たりのサンプル−オフセット・サンプル)/フレーム当たりのサンプル) (1)
あるいは、他の式を使用することもできる。
【0029】
音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルを満たすのに十分な符号化済音声フレーム237が音声フレーム・バッファ225内に存在するかどうかを判定する。十分な符号化済フレームがバッファリングされている場合、音声スプリッティング・マルチプレクサ228は、求めた数のフレームで現在のコンテンツ・ファイルを満たす。十分な符号化済フレームがバッファリングされていない場合、音声スプリッティング・マルチプレクサ228は、十分な符号化済フレームがバッファ225内に格納されるまで待ち、バッファ225内に格納された求めた数の符号化済フレームで現在のコンテンツ・ファイルを満たす。一実施形態では、音声スプリッティング・マルチプレクサ228は、1)バッファリングされたフレームの数をフレーム当たりのサンプルで掛け、2)前のコンテンツ・ファイルからのサンプル・オフセットがあれば、これを掛け算の積に加え、3)この和が現在のコンテンツ・ファイルを満たすのに必要なサンプル数以上であるかどうかを判定することにより、十分な符号化済フレームがバッファリングされているかどうかを判定する。この演算の一例を以下の式(2)に示す。
バッファリングされたフレーム数*フレーム当たりのサンプル+オフセット・サンプル>=ストリームレット当たりのサンプル (2)
【0030】
音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルについて、サンプル・オフセットがあればこれを求める。一実施形態では、音声スプリッティング・マルチプレクサ228は、コーデック適用フレーム・サイズ(すなわち、フレーム当たりのサンプル)を符号化済フレーム数に掛け、ここから、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を引き、前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを足すことによりサンプル・オフセットを求める。この演算の一例を以下の式(3)および(4)に示す。
オフセット・サンプル=送るべきフレーム*フレーム当たりのサンプル−ストリームレット当たりのサンプル−オフセット・サンプル (3)
送るべきフレーム=ceil((ストリームレット当たりのサンプル−オフセット・サンプル)/フレーム当たりのサンプル) (4)
【0031】
他の実施形態では、音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数(例、96000)を算出することにより、コンテンツ・ファイル221を生成する。音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルに必要なフレームの数(例、2秒間部分につき48Kサンプリング・レートの場合93フレーム)を算出し、サンプルの数がフレーム当たりのサンプルで均等に割り切れない場合には、フレームの数を追加する(たとえば、合計で94フレームになる)。このことは実質的に、フレーム数を次に大きな整数に切り上げる。音声スプリッティング・マルチプレクサ228は、この切り上げた数のフレームで現在のコンテンツを満たす。
【0032】
一実施形態では、音声スプリッティング・マルチプレクサ228は、サンプリング・レート(例、48K)に固定時間幅の期間(例、2秒間)を掛けることで、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数(例、96000)を算出することによりコンテンツ・ファイル221を生成する。音声スプリッティング・マルチプレクサ228は、コーデック適用フレーム・サイズ(例、フレーム当たり1024サンプル)でサンプル数を割ることにより、現在のコンテンツ・ファイルに必要なフレームの数を算出する。この除算の余りが0であれば、音声スプリッティング・マルチプレクサ228は、その数のフレームで現在のコンテンツ・ファイルを満たす。しかし、この除算の余りが0より大きければ、音声スプリッティング・マルチプレクサ228は、フレームの数を1だけインクリメントし、このインクリメントした数のフレームで現在のコンテンツ・ファイルを満たす。
【0033】
更なる実施形態では、音声スプリッティング・マルチプレクサ228は、コーデック適用フレーム・サイズをフレームの数に掛けて、現在のコンテンツ・ファイルを満たすのに必要なサンプル数に戻し、サンプル数をサンプリング・レートで割ることで現在のコンテンツ・ファイルの音声の期間を算出(例、ストリームレット期間=ストリームレット当たりのサンプル/サンプリング・レート)することによりコンテンツ・ファイル221を生成する。音声スプリッティング・マルチプレクサ228は、固定時間幅からこの期間を引くことにより、次のコンテンツ・ファイルについてのプレゼンテーション・オフセットを求める。音声スプリッティング・マルチプレクサ228は、フレーム数にコーデック適用フレーム・サイズを掛け、ここから、現在のコンテンツ・ファイルを満たすのに使用されるサンプルの数を引き、前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを足すことにより(例、式(3))、次のコンテンツ・ファイルについてサンプル・オフセットをアップデートする。
【0034】
再度図2を参照すると、一実施形態では、スプリッタ222がオリジナルのメディア・コンテンツ231を生ストリームレットとして受け取る時、スプリッタ222は、第1および第2の生ストリームレットを受け取り、この第1および第2の生ストリームレットの音声および映像をスプリットする。固定時間映像エンコーダ226が、第1および第2の生ストリームレットの映像を符号化し、音声スプリッティング・マルチプレクサ228が、第1の生ストリームレットの符号化された映像を第1のコンテンツ・ファイルに格納し、第2の生ストリームレットの符号化された映像を第2のコンテンツ・ファイルに格納する。固定フレーム音声エンコーダ224は、第1の生ストリームレットの音声を音声フレームの第1の組に符号化し、この第1の組を音声フレーム・バッファ225に格納する。音声スプリッティング・マルチプレクサ228は、第1のコンテンツ・ファイルを満たすのに十分なバッファリングされたフレームが存在するかどうかを判定する。十分でなければ、固定フレーム音声エンコーダ224は、第2の生ストリームレットの音声を音声フレームの第2の組に符号化し、この第2の組を音声フレーム・バッファ225に格納する。第1のコンテンツ・ファイルを満たすだけの十分なバッファリングされたフレームが存在すれば(場合によっては、もう1つの隙間のないフレームがバッファ225に格納されれば)、音声スプリッティング・マルチプレクサ228は、バッファリングされた音声フレームを第1のコンテンツ・ファイルに格納する。エンコーダ220は、メディア・コンテンツが終了するまでこのプロセスを継続する。
【0035】
また、音声スプリッティング・マルチプレクサ228は隙間のない音声フレームを使用するので、図6Aおよび6Bに示すように、1つのコンテンツ・ファイル232内の音声フレームは、映像部分境界と必ずしも整合する必要はない。たとえば、コンテンツ・ファイル232の音声部分の期間が、2.0053秒であり、コンテンツ・ファイル232の映像部分の固定時間幅が、2.00秒であることがある。この例では、コーデック適用フレーム・サイズがフレーム当たり1024サンプルであり、音声のサンプリング・レートが48Kであり、94フレームからなる96256サンプルが、コンテンツ・ファイル232に記憶された音声部分に格納されている。コンテンツ・ファイル232には余分な53ミリ秒(ms)が存在するゆえに、固定時間幅音声符号化スキームを使用する場合には次のコンテンツ・ファイル内にあるはずの53msの期間を有するサンプルが現在のコンテンツ・ファイル232により使用されるので、音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルに53msのプレゼンテーション・オフセットを与える。また、音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルを満たすのに必要な音声フレーム数を求めるためにサンプル・オフセットを記録する。一実施形態では、音声スプリッティング・マルチプレクサ228は、固定時間幅を有する符号化済映像部分のうちの1つで、それぞれのコンテンツ・ファイルを満たす(たとえば、フレーム・レートが30fpsであれば、60映像フレーム当たり2秒間)。音声スプリッティング・マルチプレクサ228は、コンテンツ・ファイルのうちのいくつかを、いくつかのバッファリングされた音声フレームで満たすが、これら音声フレームの期間は、音声スプリッティング・マルチプレクサ228により決まる映像部分境界に音声フレームが整合するかどうかに応じて、固定時間幅よりも大きいこと、固定時間幅よりも小さいこと、または、固定時間幅と等しいことがある。
【0036】
図6Aを参照すると、一実施形態では、音声スプリッティング・マルチプレクサ228は、2秒間からなる固定時間幅に等しい期間の約60の映像フレームを有する第1の映像部分611と、それぞれがフレーム当たり1024のサンプルを有し、合計96256サンプルとなる94の音声フレームを有する第1の音声部分621とで満たすことにより、第1のストリームレット(すなわち、コンテンツ・ファイル)601を生成する。第1の音声部分621の期間は、約2.0053秒である。第1のストリームレット601の音声境界652と映像境界654とが再生について整合しているので、音声スプリッティング・マルチプレクサ228は、第1のストリームレット603の第1の音声部分631のプレゼンテーション・オフセットを0と判定する。
【0037】
音声スプリッティング・マルチプレクサ228は、第2の映像部分612(60フレーム、2秒間)と、94の音声フレームを有する第2の音声部分622とで満たすことにより第2のストリームレット602を生成する。第2の音声部分622の期間は、約2.0053秒である。第1のストリームレット601の第1の音声部分621の期間が約2.0053秒なので、音声スプリッティング・マルチプレクサ228は、第2のストリームレット602の第2の音声部分632のプレゼンテーション・オフセットを約5.3ミリ秒(ms)と判定する。このプレゼンテーション・オフセットは、第1のストリームレット601と第2のストリームレット602との間の音声の隙間を示す。図6Bに示すように、第2のストリームレット602の音声境界652と映像境界654とは、再生について整合していない。このプレゼンテーション・オフセットを使用して、第1および第2のストリームレット601および602の音声部分が、連続したストリームとしてデコーダに提供されるようにステージされることを可能にすることができる。
【0038】
音声スプリッティング・マルチプレクサ228は、第3の映像部分613(60フレーム、2秒間)と、94の音声フレームを有する第3の音声部分623とで満たすことにより第3のストリームレット603を生成する。第3の音声部分623の期間は、約2.0053秒である。第2のストリームレット602の第2の音声部分622の期間が約2.0053秒なので、音声スプリッティング・マルチプレクサ228は、第3のストリームレット603の第3の音声部分633のプレゼンテーション・オフセットを約10.66msと判定する。このプレゼンテーション・オフセットは、第2のストリームレット602と第3のストリームレット603との間の音声の隙間を示す。図6Bに示すように、第3のストリームレット603の音声境界652と映像境界654とは、再生について整合していない。このプレゼンテーション・オフセットを使用して、第2および第3のストリームレット602および603の音声部分が、連続したストリームとしてデコーダに提供されるようにステージされることを可能にすることができる。
【0039】
音声スプリッティング・マルチプレクサ228は、第4の映像部分614(60フレーム、2秒間)と、93の音声フレームを有する第4の音声部分624とで満たすことにより第4のストリームレット604を生成する。第4の音声部分624の期間は、約1.984秒である。第3のストリームレット603の第3の音声部分623の期間が約2.0053秒なので、音声スプリッティング・マルチプレクサ228は、第4のストリームレット604の第4の音声部分634のプレゼンテーション・オフセットを約16msと判定する。このプレゼンテーション・オフセットは、第3のストリームレット603と第4のストリームレット604との間の音声の隙間を示す。図6Bに示すように、第4のストリームレット603の音声境界652と映像境界654とは、再生について整合していない。このプレゼンテーション・オフセットを使用して、第3および第4のストリームレット603および604の音声部分が、連続したストリームとしてデコーダに提供されるようにステージされることを可能にすることができる。しかし、第4のストリームレット604の後、音声境界652と映像境界654とは整合し、このことは、第5のストリームレット(図示せず)が0のプレゼンテーション・オフセットを有することを意味する。図6Aおよび6Bの実施形態では、サンプリング・レートが48kHzであり、固定時間幅が2秒間であり、コーデック適用フレーム・サイズがフレーム当たり1024サンプルであることに留意されたい。
【0040】
上記の実施形態では、3つの第1のストリームレット601〜603の音声部分が、94の音声フレームを有し、第4のストリームレット604の音声部分が、93の音声フレームを有する。この実施形態では、映像が30fpsで符号化される場合、第4のコンテンツ・ファイル601〜604の映像部分のそれぞれは、約60の映像フレームを有する。このパターンは、メディア・コンテンツの終わりに達するまで繰り返される。この実施形態では、各第4のコンテンツ・ファイルの後に、プレゼンテーション・オフセットおよびサンプル・オフセットが0になり、このことは、各第4のコンテンツ・ファイルの後に、音声境界652と映像境界654とが整合することを意味することに留意されたい。
【0041】
図6Bから分かるように、8秒間のメディア・コンテンツの後、映像境界と音声境界とが整合する。よって、境界アーチファクトの頻度を減らし、AACフレーム・サイズを整合させる他の手法の1つは、8秒間を固定時間幅に使用するものになるはずである。しかし、こうした手法には、以下の不利な点がある。1)この手法には、8、16、32秒等のチャンク・サイズの大きな映像が必要である。2)この手法では、特定のフレーム・サイズ、すなわちフレーム当たり1024サンプルに実施が拘束される。フレーム・サイズをたとえば2048等に変更する場合、この手法では、異なるフレーム・サイズを伴う音声コーデックに切り替えねばならず、映像のチャンク期間も変更せねばならない。3)この手法では、音声サンプル・レートが常に48kHzである必要がある。44.1kHz等の他の一般的なサンプル・レートでは、異なる、かつ、場合によってはずっと大きなチャンク・サイズが必要である。あるいは、ソース(source)音声を48kHzにアップ・サンプルしなければならない。しかし、アップ・サンプルすれば、アーチファクトが導入され、音声コーデックの効率が低減されることがある。しかし、本明細書に記載の実施形態では、同一のチャンク期間を維持しながら、チャンク境界アーチファクトを導入することなく、大きなフレーム・サイズ(AAC、AC3等)を伴う音声コーデックを使用することにより符号化を行うことができる。
【0042】
あるいは、他のサンプリング・レート(例、44.1kHz)、固定時間幅(例、0.1〜5.0秒)、映像フレーム・レート(例、24fps、30fps等)、および/またはコーデック適用フレーム・サイズ(例、2048)を使用することもできる。ソース映像が異なれば、異なるフレーム・レートが使用される。米国のほとんどの無線信号は、30fps(実際には、29.97)である。いくつかのHD信号は、60fps(59.94)である。ファイル-ベースのコンテンツのいくつかは24fpsである。一実施形態では、エンコーダ220は、追加のフレームを生成することが必要になるので映像のフレーム・レートを上昇させない。しかし、追加のフレームを生成することは、この追加の負荷ついて大した恩恵をもたらさない。したがって、たとえば、オリジナルのメディア・コンテンツのフレーム・レートが24fpsの場合、エンコーダ220は、30fpsにアップ・サンプルするのではなく24fpsのフレーム・レートを使用する。しかし、いくつかの実施形態では、エンコーダ220は、フレーム・レートをダウン・サンプルすることがある。たとえば、オリジナルのメディア・コンテンツのフレーム・レートが60fpsの場合、エンコーダ220は、30fpsにダウン・サンプルすることがある。60fpsを使用すると、目標とするビット・レートで符号化することが必要なデータの量が2倍になって、クオリティーが損なわれることがあるので、こうしたダウン・サンプルが行われることがある。一実施形態では、エンコーダ220は、ダウン・サンプリング後のまたは受け取られるフレーム・レート(通常は30fpsまたは24fps)を求めると、クオリティー・プロファイルのほとんどについてこのフレーム・レートを使用する。最低クオリティー・プロファイル等のいくつかのクオリティー・プロファイルには、より低いフレーム・レートが使用されることがある。しかし、他の実施形態では、たとえば、携帯電話や計算能力が劣っている等の資源の限られた他のデバイスを対象とするために、エンコーダ220は、異なるクオリティー・プロファイルに対して異なるフレーム・レートを使用することができる。これらのケースでは、より低いフレーム・レートを伴うプロファイルをより多く有することが有益なことがある。
【0043】
これらのパラメータに対して他の値を使用する場合、音声境界652および映像境界654が図6Bに示す実施形態とは異なってくる場合があることに留意されたい。たとえば、サンプリング・レートとして44.1kHz、コーデック適用フレーム・サイズとして1024、固定時間幅として2秒間を使用する場合、第1のコンテンツ・ファイルの音声部分は、87の音声フレームを有することとなり、第2〜第7のコンテンツ・ファイルは、86の音声フレームを有することとなる。このパターンは、メディア・コンテンツ内に残る映像が不十分になるまで繰り返される。この実施形態では、128のコンテンツ・ファイルの後毎に、プレゼンテーション・オフセットおよびサンプル・オフセットが0になり、このことは、略表1-1に示すように、音声境界652と映像境界654とが128番目のコンテンツ・ファイルの後毎に整合することを意味することに留意されたい。
【表1】
上の表中のサンプル・オフセットは、説明を簡単にするために、秒やミリ秒ではなく、サンプル単位で示していることに留意されたい。サンプル・オフセットをプレゼンテーション・オフセットに変換する場合、サンプル・オフセットを44100で割って、秒で表したプレゼンテーション・オフセットを求め、これに1000を掛けて、ミリ秒で表したプレゼンテーション・オフセットを得ることができる。一実施形態では、ミリ秒で表したプレゼンテーション・オフセットが、ストリームレット・ヘッダに記憶されることがある。あるいは、プレゼンテーション・オフセットまたはサンプル・オフセットが、他の単位でストリームレット・ヘッダに記憶されることもある。
【0044】
他の実施形態では、音声スプリッティング・マルチプレクサ228は、固定時間幅を有する符号化済映像フレーム239(例、固定時間幅部分)でそれぞれを埋めることにより複数の符号化済コンテンツ・ファイル232を生成し、これらコンテンツ・ファイル232をいくつかの隙間のない音声フレーム237で満たすが、コンテンツ・ファイル232内で使用されている隙間のない音声フレームを収容するように、音声フレーム237の期間は、固定時間幅より短く、またはこれより長くなっている。たとえば、映像のうち2秒間等の固定時間幅を有する部分と、固定時間幅よりも長い期間を有する隙間のない複数の音声フレームを有する音声部分とで第1のコンテンツ・ファイルを満たすことができる。そのうち、サンプル・オフセットが大きくなって、使用することのできる音声フレームの数が小さくなり、この場合、音声フレームの期間が、固定時間幅より短くなる場合がある。折に触れて、音声の音声境界が、映像の映像境界にマッチすることができる。
【0045】
他の実施形態では、音声スプリッティング・マルチプレクサ228は、映像の第1の部分の映像フレームと、音声の第1の部分からの音声フレームと、第2の部分からの音声フレームとを有する第1のコンテンツ・ファイルを生成することにより、符号化済コンテンツ・ファイル232を生成する。音声スプリッティング・マルチプレクサ228は、映像の第2の部分の映像フレームを有する第2のコンテンツ・ファイルを生成する。音声の場合、音声スプリッティング・マルチプレクサ228は、音声境界が映像境界に載るかどうかを判定する。音声境界が映像境界に載る場合、音声スプリッティング・マルチプレクサ228は、第2の部分の残りの音声フレームで第2のコンテンツ・ファイルを満たす。しかし、音声境界が映像境界に載らない場合、音声スプリッティング・マルチプレクサ228は、メディア・コンテンツの第3の部分の音声フレームを符号化し、第2の部分の残りの音声フレームおよび第3の部分からの音声フレームで第2のコンテンツ・ファイルを満たす。このプロセスは、コンテンツ・ファイルの終わりに達するまで繰り返される。
【0046】
再度図2を参照すると、エンコーダ220は、オリジナルのメディア・コンテンツ231を符号化すると、オリジン・コンテンツ・サーバ210に符号化済メディア・コンテンツ・ファイル232を送り、オリジン・コンテンツ・サーバ210は、ネットワーク接続241を介して、符号化済メディア・コンテンツ232をメディア・プレイヤ200に配信する。メディア・プレイヤ200は、映像の固定時間幅および音声の可変時間幅を有するコンテンツ・ファイルを受け取ると、これらコンテンツ・ファイルのプレゼンテーション・オフセットを使用して、音声を連続したストリームとしてデコーダに提供するようにステージし、これにより、境界アーチファクトにもたらされるポップ雑音またはクリック雑音を除去または低減する。本質的に、音声の再生中、メディア・プレイヤ200は、コンテンツ・ファイルの音声部分が復号および再生の前にステージされると、コンテンツ・ファイルの先頭に挿入された隙間を除去する。他の実施形態では、本明細書に記載する音声スプリッティングを行わず、最終フレームを0で埋める場合は、メディア・プレイヤ200を、音声をデコーダに送る前に最終フレームの埋められたサンプルを除去するように構成することができる。しかし、この手法は、特定の状況では実用的でないことがあり、たとえば、メディア・プレイヤが第3者により提供されるとき、または、復号後の音声フレームのデータへのアクセスが制限されるときである。
【0047】
各メディア・プレイヤ200に1つの線を示しているが、各線241がCDN240への複数のネットワーク接続を表すこともあることに留意されたい。一実施形態では、各メディア・プレイヤ200が、CDN240への複数のTCP(伝送制御プロトコル)接続を確立することがある。他の実施形態では、メディア・コンテンツが、複数のCDN、たとえば、複数のCDNのそれぞれに関連するオリジン・サーバに格納される。CDN240は、帯域幅コストを削減し、コンテンツの全体的使用可能度を増大させることにより、エンド・ユーザ(例、視聴者)に対する性能、スケーラビリティ、費用効果性の改善の目的で使用することができる。CDNは様々なやり方で実現することができ、それらのオペレーションについての詳細は、当業者には理解されるはずである。したがって、それらのオペレーションについての更なる詳細は含めていない。他の実施形態では、ピア・ツー・ピア・ネットワーク等の他の配信技法を使用して、オリジン・サーバからメディア・プレイヤにメディア・コンテンツを配信することができる。
【0048】
上で説明した実施形態では、コンテンツ・ファイル232は、オリジナルのメディア・コンテンツ・ストリーム231のコピーの1つを表す。しかし、他の実施形態では、オリジナルのメディア・コンテンツ231の各部分を符号化して、コンテンツの同一部分の複数の符号化表現とすることができる。これら複数の符号化表現は、様々なクオリティー・プロファイルに従って符号化し、クライアント・デバイス204から独立して要求すること、クライアント・デバイス204により独立して再生することのできる別々のファイルとして格納することができる。これらのファイルはそれぞれ、1つまたは複数のコンテンツ・サーバ210内、CDN240のウェブ・サーバ、プロキシ・キャッシュ、エッジ・キャッシュ上に格納することができ、別々に要求し、クライアント・デバイス204に配信することができる。一実施形態では、エンコーダ220は、たとえば10または13等のいくつかの異なるクオリティー・レベルでオリジナルのコンテンツ・メディア231を同時に符号化する。各クオリティー・レベルをクオリティー・プロファイルまたはプロファイルと称する。たとえば、メディア・コンテンツが1時間の期間を有し、2秒間の期間を有する複数のQSSファイルにセグメント化される場合、メディア・コンテンツの符号化表現毎に1800のQSSファイルが存在する。メディア・コンテンツを異なる10個のクオリティー・プロファイルに従って符号化する場合、このメディア・コンテンツについて18000のQSSファイルが存在する。こうしたクオリティー・プロファイルは、どのようにストリームを符号化するかを示すことがあり、たとえば、画像の幅および高さ(すなわち、画像サイズ)、映像ビット・レート(すなわち、映像を符号化する速度)、音声ビット・レート、音声サンプル・レート(すなわち、キャプチャする際に音声をサンプリングする速度)、音声トラックの数(例、モノ、ステレオ等)、フレーム・レート(例、fps)、ステージング・サイズ等のパラメータを特定することがある。たとえば、複数のメディア・プレイヤ200が、異なるクオリティー・レベルの同一のメディア・コンテンツ232を個別に要求することができる。たとえば、各メディア・プレイヤ200が、メディア・コンテンツ232の同一の部分(例、同一の時間インデックス)を様々なクオリティー・レベルで要求することができる。たとえば、あるメディア・プレイヤが、自体のコンピューティング・デバイスが十分な計算能力および十分なネットワーク帯域幅を有するがゆえに、HDクオリティー映像を有するストリームレットを要求し、他のメディア・プレイヤが、たとえば、自体のコンピューティング・デバイスが十分なネットワーク帯域幅を有することができないがゆえに、クオリティーのより低いストリームレットを要求することがある。一実施形態では、出願日2005年4月28日の米国特許出願公開第2005/0262257号に記載されるように、メディア・プレイヤ200は、メディア・コンテンツの様々なコピー(例、様々なクオリティー・ストリームレット)からそれぞれの部分を要求することにより、部分境界においてクオリティー・レベルをシフトする。あるいは、メディア・プレイヤ200は、本開示内容の恩恵を受ける当業者に理解されるべき他の技法を使用することにより、それらの部分を要求することもできる。
【0049】
エンコーダ220は、メディア・コンテンツの特定の部分にどのクオリティー・プロファイルが利用可能かを特定することもでき、また、どのくらいのメディア・コンテンツが、たとえばQMXファイルを使用することによる配信に使用可能かを特定することができる。QMXファイルは、利用可能なQSSファイルで表されたメディア・コンテンツの現在の期間を示す。QMXファイルは、メディア・コンテンツに対する目次として機能して、どのQSSファイルが配信のために利用可能か、及び、どこからQSSファイルを取り出すことができるかを示すことができる。QMXファイルは、たとえば、CDN240を介してメディア・プレイヤ200に送ることができる。あるいは、メディア・プレイヤ200が、特定のメディア・コンテンツに対して利用可能なクオリティー・プロファイルを要求することもできる。他の実施形態では、CDNのスケーリング能力を使用することによりこの構成のスケール変えを行って、HTTPトラフィックを複数のメディア・プレイヤ200に配信することができる。たとえば、符号化されたメディア・コンテンツを格納するデータ・センタが、このデータ・センタからの符号化されたメディア・コンテンツを要求する複数のメディア・プレイヤにサービスするためにオリジン・コンテンツ・サーバ210からなるクラスタを有することがある。あるいは、本開示内容の恩恵を受ける当業者には理解されるはずの他の構成を使用することもできる。
【0050】
熟考した一実施形態では、メディア・プレイヤ200は、個々のストリームレット・ファイル(例、QSSファイル)を要求することによりメディア・コンテンツのそれぞれの部分を要求する。メディア・プレイヤ200は、メタデータ・ディスクリプタ・ファイル(例、OMXファイル)に従ってQSSファイルを要求する。メディア・プレイヤ200は、たとえば、提供用のメディア・コンテンツをユーザが選択することに応答して、QMXファイルをフェッチし、また、このQMXファイルを読んで、現在の期間を使用することによるメディア・コンテンツの再生の開始をいつにするか、どこにQSSファイルを要求するかを決定する。QMXファイルは、いつ符号化プロセスを開始するか(例、メディア・コンテンツの開始時刻)を示すUTC(協定世界時)インジケータ等のQMXタイムスタンプと、どれくらい多くのメディア・コンテンツが配信に使用可能かを示す現在の期間(current duration)とを含む。たとえば、QMXタイムスタンプは、符号化プロセスが午後6時に開始され(MDT)、メディア・コンテンツの4500個のQSSファイルが配信に使用可能であることを示すことができる。メディア・プレイヤ200は、コンテンツの期間(ライブ再生)が約15分であると判定し、プログラム開始後の15分間またはこれよりやや前のポイントにおけるプログラムの再生に対応するQSSファイルの要求を開始することを決定することができる。一実施形態では、メディア・プレイヤ200は、メディア・コンテンツ内のオフセットにおける対応するストリームレットをフェッチすることにより、メディア・プレイヤ200がコンテンツの再生を開始すべきメディア・コンテンツ内のポイントを求めることができる。エンコーダがQSSファイルの他の組をコンテンツ・サーバ上に格納する毎に(例、メディア・コンテンツの次の2秒間をそれぞれ異なる10のクオリティー・レベルで表す10個のQSSファイルの組)、QMXファイルはアップデートされ、メディア・プレイヤ200でQMXファイルをフェッチして、インターネットを介して更に2秒間が配信に使用可能であることを示すことができる。メディア・プレイヤ200は、アップデートされるQMXファイルについて定期的にチェックすることができる。あるいは、QMXファイルおよび任意のアップデートをメディア・プレイヤ200に送り込んで、メディア・コンテンツがいつインターネット介した配信に使用可能であるのかを示すこともできる。
【0051】
オリジン・コンテンツ・サーバ210は、CDN240内にあるものとして図示しているが、これがCDN240の外側にあり、やはりCDN240に関連することができることに留意されたい。たとえば、1つのエンティティが、ストリームレットを格納するコンテンツ・サーバを所有、動作することができるが、自体のデバイスが1つまたは複数の別々のエンティティにより所有、動作されることのあるCDN240が、ストリームレットを配信する。
【0052】
メディア・コンテンツは、(電子デバイス(すなわち、クライアント・デバイス)上で動作している)メディア・プレイヤ200により処理されると、メディア・プレイヤ200がイベントの視覚および/または音声表現をメディア・プレイヤ200の視聴者に提供することを可能にするデータであることに留意されたい。メディア・プレイヤ200は、メディア・コンテンツを再生する(たとえば、映像を表示し、音声を再生する)ソフトウェアの1つであってもよく、スタンドアロンのソフトウェア・アプリケーション、またはウェブ・ブラウザ・プラグイン等であってもよく、あるいはブラウザ・プラグインと支援ウェブ・ページ・ロジック(supporting web page logic)との組合せ等であってもよい。たとえば、イベントは、スポーツ・イベント等のテレビ放送、生演奏または録画もしくは録音された演奏、生の報道または録画もしくは録音された報道等であってもよい。このコンテキストでのライブ・イベントまたは予定されたテレビ・イベントとは、スケジュールに従って特定の時点で再生されるように予定されたメディア・コンテンツを指す。ライブ・イベントは、その中の重要なイベントのスローモーション・クリップ等(例、リプレイ)の、ライブ・メディア・コンテンツと混合されたプレレコ型のコンテンツを有することもあるが、こうしたコンテンツは、生のテレビ放送の合間に再生される。本明細書に記載の実施形態は、ビデオ・オン・デマンド(VOD)のストリーミングに使用することもできることに留意されたい。
【0053】
図3Aは、エンコーダ220をそれぞれが用いた複数のホスト314を含めた符号化システム320を用いることのできるコンピューティング環境300の他の実施形態を示す概略ブロック図である。一実施形態では、符号化システム320が、マスタ・モジュール322および複数のホスト・コンピューティング・モジュール(以降、「ホスト」)314を含む。図2に関連して説明したように、ホスト314はそれぞれエンコーダ220を用いる。ホスト314は、1つまたは複数のパーソナル・コンピュータ、サーバ等に実装することができる。更なる実施形態では、ホスト314は、たとえば、単一のコンピュータに差し込むカード等の専用のハードウェアであることがある。
【0054】
一実施形態では、マスタ・モジュール(以降、「マスタ」)322は、ストリームレット生成システム301から生のストリームレット312を受け取るように構成されるが、このストリームレット生成システム301は、メディア・コンテンツを発行者310から受け取る受取モジュール302と、メディア・コンテンツを生のストリームレット312にセグメント化するストリームレット・モジュール303とを含む。マスタ・モジュール322は、生ストリームレット312を処理のためにステージする。他の実施形態では、マスタ322は、符号化および/または圧縮されたソース(source)・ストリームレットを受け取り、各ソース・ストリームレットを展開して生ストリームレットを作り出すことができる。本明細書で使用するように、用語「生ストリームレット」は、圧縮されていないストリームレット312、または、著しくクオリティーを失うことなくサイズを実質的に縮減させるために軽く圧縮されたストリームレット312のことを指す。軽く圧縮した生ストリームレットは、より急速により多くのホストへ送信することが可能である。各ホスト314は、マスタ322に結合されており、マスタ322から符号化すべき生ストリームレットを受け取るように構成される。一例では、ホスト314は、同一の時間インデックスおよび同一の固定時間幅ならびに様々なビット・レートを有する複数のストリームレットを生成する。一実施形態では、各ホスト314は、マスタ322から送られる生ストリームレット312から符号化済ストリームレットの組306を生成するように構成され、ただし、組306の符号化済ストリームレットは、メディア・コンテンツの同一部分を、サポートされたビット・レート毎に表す(すなわち、各ストリームレットが、使用可能なクオリティー・プロファイルのうちの1つに従って符号化される)。あるいは、符号化に要する時間を減らすために、各ホスト314を、サポートされたビット・レートのうちの1つで単一の符号化済ストリームレットを作り出すように確保することもできる。
【0055】
符号化が完了すると、ホスト314は、組306をマスタ322に戻し、これにより、符号化システム320は、組306をストリームレット・データベース308に格納することができる。マスタ322は更に、符号化ジョブをホスト314に割り当てるように構成される。一実施形態では、各ホスト314は、符号化ジョブ完了ビッド(bid)(以降、「ビッド」)をマスタ322に提示するように構成される。マスタ322は、ホスト314からのビッドに応じて符号化ジョブを割り当てる。各ホスト314は、複数のコンピューティング変数に応じてビッドを生成するが、これらコンピューティング変数には、現在の符号化ジョブ完了パーセンテージ、平均ジョブ完了時間、プロセッサ速度、物理的メモリ容量等が含まれることがあるが、これらに限定されない。
【0056】
たとえば、ホスト314は、過去のパフォーマンス履歴に基づいて、ホスト314が符号化ジョブを15秒で完了させることができるであろうことを示すビッドを提示することができる。マスタ322は、複数のビッドから最善のビッドを選択し、これに続いて、最善のビッドを伴うホスト314に符号化ジョブを提示するように構成される。したがって、説明している符号化システム320は、各ホスト314が同一のハードウェアを有することが必要でなく、有益なことに、ホスト314の使用可能な計算能力を活用する。あるいは、マスタ322は、早いものから順にホスト314を選択するか、または、特定の符号化ジョブに適したものと考えられる他のアルゴリズムに基づいてホスト314を選択する。
【0057】
1つのストリームレットを符号化するのに要する時間は、ホスト314の計算能力、および、オリジナルのメディア・コンテンツのコンテンツ・ファイルの符号化要件に依存する。符号化要件の例には、2パスまたは複数パス符号化、様々なビット・レートの複数のストリームが含まれことがあるが、これらに限定されない。本発明の利点の1つは、ライブ・コンテンツ・ファイルに2パス符号化を行うことができることである。通常は、2パス符号化を行うためには、従来技術のシステムは、符号化の前にコンテンツ・ファイルが完全になるのを待たなければならない。しかし、ストリームレットは、必要と思われる回数だけ符号化することができる。ストリームレットは、期間の小さな(例、2秒間)密封されたメディア対象なので、初めのストリームレットがキャプチャされると、ライブ・イベントに対して複数パス符号化を開始することができる。
【0058】
一実施形態では、エンコーダ220は、オリジナルのコンテンツ・ファイルを複数のソース・ストリームレットにセグメント化し、たとえば、テレビ番組が終了するのを待つことなく、複数のコピー(例、ストリーム)の2パス符号化を対応する生ストリームレット312毎に行う。よって、ストリームレット生成システム301がオリジナルのコンテンツ・ファイルのキャプチャを開始するすぐ後に、ウェブ・サーバ316は、インターネットを介してストリームレットをストリーミングすることが可能である。発行者310から送信されるライブ・ブロードキャストとコンテンツが使用可能になることとの間の遅延は、ホスト314の計算能力に依存する。
【0059】
図3Bは、一実施形態によるストリームレット312の並行符号化の一実施形態を示す概略ブロック図である。一例では、ストリームレット生成システム301が、オリジナルのコンテンツ・ファイルのキャプチャを開始し、第1のストリームレット312aを生成し、これを符号化システム320に渡す。符号化システム320は、複数のストリームレット304a(304a1、304a2、304a3等は、互いに異なるビット・レートのストリームレット304を表す)からなる第1の組306aを生成するのに、たとえば10秒間かかることがある。符号化システム320に関連して上で説明したように、生のストリームレット312または軽く符号化したストリームレット312を処理するのに要する時間幅を視覚的に示すために、図3Bでは、符号化プロセスを概括的にブロック308として示している。符号化システム320は、2つ以上のストリームレット312を同時に処理することができ、ストリームレット生成モジュール301からストリームレットが到着すると、ストリームレットの処理が開始されることとなる。
【0060】
第1のストリームレット312aを符号化するのに必要な10秒の間に、ストリームレット・モジュール404は、符号化すべき更なる5つの2秒間ストリームレット、ストリームレット312b、312c、312d、312e、312fを生成し、マスタ322は、対応する生ストリームレットを作成し、これをステージする。第1の組306aが使用可能になると、その2秒後に次の組306bが使用可能になり、以降この流れが繰り返される。こうして、オリジナルのコンテンツ・ファイルは、様々なクオリティー・レベルで符号化されてインターネットを介してストリーミングされ、ライブで現れる。本明細書で10秒間の遅延が与えられているのは、例としてのみのことである。符号化システム320の処理能力を増大させるために、複数のホスト314を符号化システム320に加えることができる。高CPU性能システムを加えることにより、あるいは、複数の低性能システムを加えることにより、遅延をほぼ感知できないレベルにまで短くすることができる。
【0061】
ストリームレットに適用されるどんな特定の符号化スキームも完全になるのに、ストリームレット自体の時間幅より長く時間がかかる可能性がある。たとえば、2秒間のストリームレットに対して、クオリティーの極めて高い符号化を終えるのに5秒間かかることがある。あるいは、各ストリームレットについて要する処理時間が、ストリームレットの時間幅よりも小さいこともある。しかし、連続したストリームレットのオフセット並行符号化は、符号化システム320により規則正しい間隔で符号化が行われる(これらのストリームレットが符号化システム320に提示される間隔にマッチする。例えば、2秒)ので、符号化システム320の出力タイミングが、非符号化ストリームレット312のリアルタイムでの提示速度より遅れることはない。
【0062】
ここで図3Aを参照すると、マスタ322およびホスト314は、図示のように、単一のローカル・エリア・ネットワーク内に位置することができ、言い換えると、ホスト314を、マスタ322に物理的に近接させることができる。あるいは、ホスト314は、インターネットまたは他の通信ネットワークを介して、マスタ322から符号化ジョブを受け取ることもできる。たとえば、複数のホストをセットアップするのが困難な遠隔地でのライブでのスポーツ・イベントを考えられたい。この例では、マスタは、ストリームレットのオンラインでの発行前に符号化も軽い符号化も行わない。それゆえに、ホスト314は、それらのストリームレットを取り出し、上で説明したように、これらを複数のビット・レート組306に符号化する。
【0063】
さらに、符号化ジョブを再始動することおよび/またはストリームレットの発行を中断することなく、ホスト314を、符号化システム320に動的に追加するまたは符号化システム320から動的に取り除くことができる。あるホスト314がクラッシュまたは何らかの故障を起こした場合、その符号化ワークは、シンプルに他のホストに再度割り当てられる。
【0064】
一実施形態では、符号化システム320を、特定の再生プラットフォームに特有のストリームレットを作り出すように構成することもできる。たとえば、単一の生ストリームレットについて、単一のホスト314が、パーソナル・コンピュータ再生のための様々なクオリティー・レベル向けのストリームレット、独自の異なるコーデックを有する複数の携帯電話での再生向けのストリームレット、(プログラミング・ガイドのような)ストリームのサムネイル表示のみでの再生時の使用向けの映像専用の小ストリームレット、及びアーカイビングでの使用向けの非常に高クオリティーなストリームレットを作り出すことができる。
【0065】
図示の実施形態では、コンピューティング環境340は、コンテンツ管理システム(CMS)300を含む。CMS340は、たとえばストリームレット・データベース308を使用することにより、符号化済メディア・コンテンツ220を管理し、発行者がタイムライン(本明細書では仮想タイムライン(QVT)と称する)を生成、改変して、メディア・コンテンツ232の再生を計画することを可能にする発行システムである。QVTは、視聴者向けの再生リストを規定し、いつメディア・プレイヤ200がメディア・コンテンツを再生すべきかを示すことのできるメタデータである。たとえば、タイムラインは、メディア・コンテンツ232の開始時刻と、メディア・コンテンツ232の現在の期間(例、メディア・コンテンツのうち配信に使用することのできる部分の量)とを指定して、スケジュールに従ってメディア・イベントを再生することを可能にすることができる。上の例では、エンコーダ220が、ストリーム(例、メディア・コンテンツ232のコピー)についての情報でCMS240をアップデートして、ストリームのうちの特定の部分(例、ストリームレット)がCDN240に関連するオリジン・コンテンツ・サーバ210に送られたことを示す。この実施形態では、CMS340は、エンコーダ220から、たとえば以下の中のいずれかの情報を受け取る。それは、暗号化キー/エンコーダ220の組が符号化済メディア・コンテンツ232の一部分をオリジン・コンテンツ・サーバ210に送ったということを示すアベイラビリティ情報/メディア・コンテンツ232の特定部分に対してどのクオリティー・レベルが利用可能であるかを示す情報/たとえば、コンテンツの放送日、タイトル、女優、男優、開始インデックス、終了インデックス、権利所有発行者データ、暗号化レベル、コンテンツ所要時間、エピソードまたはプログラム名、発行者を含むメタデータ/使用可能なメニュー、サムネイル、サイドバー、広告、早送り、巻戻し、一時停止、再生等のエンド・ユーザのナビゲーション環境に使用可能なツール/フレーム・サイズ、音声チャネル情報、コーデック、サンプル・レート、フレーム・パーサ情報を含めたビット・レート値である。あるいは、エンコーダ220は、上で述べた情報より多くの情報を送ることも、これより少ない情報を送ることもある。
【0066】
図示の実施形態では、コンピューティング環境300は、デジタル権利管理能力をシステムに提供するデジタル権利管理サーバ(DRM)350を含む。DRM350は、エンド・ユーザの認証によりこのエンド・ユーザに暗号化キーを供給するように更に構成される。一実施形態では、DRMサーバ350は、ログイン証明に基づいてユーザを認証するように構成される。当業者には、DRAMサーバ350がエンド・ユーザを認証することのできる異なる様々な方法が理解されるであろうが、こうした方法には、暗号化されたクッキー、ユーザ・プロファイル、地理的位置、ソース・ウェブサイト等が含まれるが、これらに限定されない。
【0067】
他の実施形態では、コンピューティング環境300が、ディレクトリ・サーバ、管理サーバ、メッセージング・サーバ、統計サーバ、ネットワーク・インフラ・オペレータ(例、ISP)のデバイス等の他のデバイスを含むことがある。
【0068】
図4は、コーデック適用フレーム・サイズに従ってメディア・コンテンツの音声を符号化して、このメディア・コンテンツの固定時間映像部分を有するコンテンツ・ファイル間で隙間のない音声フレームをスプリットする方法400の一実施形態の流れ図である。方法400は、ハードウェア(回路、専用論理回路等)、(汎用コンピュータ・システムまたは専用マシン上で実行されるような)ソフトウェア、または、ファームウェア(例、組込みソフトウェア)を含むことのある、あるいは、これらの要素の任意の組合せを含むことのある処理ロジック(processing logic)により実行される。一実施形態では、方法400は、図2および3Aのエンコーダ220により実行される。他の実施形態では、これら方法のオペレーションのいくつかが、図2の固定フレーム音声エンコーダ224および音声スプリッティング・マルチプレクサ228により実行されることもある。
【0069】
図4では、処理ロジックが、サンプル・オフセットを0に初期化することにより開始され(ブロック402)、メディア・コンテンツの音声の生部分を受け取る(ブロック404)。処理ロジックは、固定フレーム音声コーデックを使用することにより、音声の生部分を符号化し(ブロック406)、音声コーデックにより出力される符号化済音声フレームをバッファリングする(ブロック408)。処理ロジックは、ストリームレットを満たすのに十分な音声フレームが存在するかどうかを判定する(ブロック410)。この実施形態では、本明細書で説明するように、各ストリームレットが、期間の固定された映像フレームも含む。ストリームレットを満たすのに十分な音声フレームが存在しない場合、処理ロジックは、ブロック404に戻り、音声の次の生部分を受け取り、この音声の生部分を符号化し、ブロック408においてこれらをバッファリングする。処理ロジックは、ブロック410において、ストリームレットを満たすのに十分な音声フレームがあると判断した場合、音声フレームを音声スプリッティング・マルチプレクサに送り、バッファから送信フレームを除去する(ブロック412)。処理ロジックは、サンプル・オフセットをアップデートし(ブロック414)、メディア・コンテンツが終了かどうかを判定する(ブロック416)。ブロック416においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック404に戻って、音声の他の生部分を受け取る。そうでなければ、本方法は終了する。
【0070】
図2について上で説明したように、処理ロジックは、エンコーダ220のコンポーネントの様々なオペレーションを実行するように構成することができる。たとえば、方法400は、固定フレーム音声エンコーダ224により実行されることもあるが、固定フレーム音声エンコーダ224は、スプリッタ222から生音声233を受け取り、音声フレームを符号化し、符号化済音声フレーム237を音声フレーム・バッファ225内に格納する。この実施形態では、ブロック402〜408のオペレーションは、固定フレーム音声エンコーダ224が実行することができ、ブロック410〜416のオペレーションは、音声スプリッティング・マルチプレクサ228が実行することができる。あるいは、こうしたオペレーションは、エンコーダ220のコンポーネントの他の組合せにより実行することもできる。
【0071】
図5A〜5Cは、固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。方法500、550、570は、ハードウェア(回路、専用論理回路等)、(汎用コンピュータ・システムまたは専用マシン上で実行されるような)ソフトウェア、または、ファームウェア(例、組込みソフトウェア)を含むことのある、あるいは、これらの要素の任意の組合せを含むことのある処理ロジックにより実行される。一実施形態では、方法500、550、570は、図2および3Aのエンコーダ220により実行される。他の実施形態では、方法500が、固定フレーム音声エンコーダ224に実行され、方法550が、固定時間映像エンコーダ226に実行され、方法570が、音声スプリッティング・マルチプレクサ228に実行される。あるいは、方法500、550、570のオペレーションは、エンコーダ220のコンポーネントの他の組合せにより実行することもできる。
【0072】
図5Aでは、方法500の処理ロジックが、音声の生部分を受け取ることにより開始される(ブロック502)。処理ロジックは、コーデック適用フレーム・サイズに従って、音声の生部分を符号化し(ブロック504)、符号化済音声フレームをバッファリングする(ブロック506)。処理ロジックは、メディア・コンテンツが終了かどうかを判定する(ブロック508)。ブロック508においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック502に戻って、音声の他の生部分を受け取る。そうでなければ、本方法は終了する。
【0073】
図5Bでは、方法550の処理ロジックが、映像の生部分を受け取ることにより開始される(ブロック552)。処理ロジックは、フレーム・レートに従って、映像の生部分を符号化し(ブロック554)、符号化済映像フレームをバッファリングする(ブロック556)。処理ロジックは、メディア・コンテンツが終了かどうかを判定する(ブロック558)。ブロック558においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック552に戻って、映像の他の生部分を受け取る。そうでなければ、本方法は終了する。
【0074】
図5Cでは、方法570の処理ロジックが、符号化済音声フレームをバッファから受け取り(ブロック572)、映像フレームをバッファから受け取ることにより開始される(ブロック574)。処理ロジックは、ストリームレットを生成し(ブロック576)、それをオリジン・コンテンツ・サーバに送る(ブロック578)。処理ロジックは、メディア・コンテンツが終了かどうかを判定する(ブロック580)。ブロック580においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック572に戻る。そうでなければ、本方法は終了する。
【0075】
一実施形態では、処理ロジックは、ブロック576で、ストリームレットを満たすのに必要な映像フレームの数、および、ストリームレットを満たすのに必要な音声フレームの数を求める。一実施形態では、ストリームレット毎の映像フレームの数は、固定時間幅に従っておおよそ固定される。たとえば、フレーム・レートが30fpsの場合、2秒間のストリームレットに60フレームが存在する。ただし、実際には、映像は常に正確に30fpsというわけではなく、むしろ29.97fpsであることに留意されたい。よって、いくつかの2秒間ストリームレットは59フレームを有することがあり、いくつかは60フレーム有することがあり、いくつかは61フレームの場合でさえある。ストリームレット内の各フレームは、ストリームレットの開始に対する提供時間を有する。よって、あるストリームレットが30〜32秒を表す場合、そのストリームレット内の初めのフレームは、0msではなく6msの提供時間を有することがある。このフレームは、ストリームの開始から30006msで表示されるはずである。ライブの場合、計算リソースが限られ、エンコーダがライブの流れについていけない場合、エンコーダは、キャッチアップするためにフレームを落とすことがある。したがって、いくつかのストリームレットは映像内に隙間を有することがあり、これが、ストリームレット毎のフレーム数のばらつきのもう1つの原因となる場合がある。あるいは、24fps等、30fps以外の他のフレーム・レートを使用することもできる。ストリームレット毎の音声フレームの数は固定されない。音声フレームの数は、音声スプリッティング・マルチプレクサ228について先に説明したオペレーションで求まる。処理ロジックは、現在のストリームレットを満たすのに十分な隙間のないフレームがバッファ内に格納されているかどうかを判定する。音声フレームが十分にない場合、処理ロジックは、音声の次の部分、たとえば、本明細書で説明するように、音声の隙間のないフレーム1つを次の部分から受け取り、符号化する。いくつかのケースでは、ストリームレット内の音声フレームの期間が、固定時間幅よりも大きいことがあり、他のケースでは、音声フレームの期間が、固定時間幅よりも小さいことがある。
【0076】
図7は、一実施形態による音声スプリッティング用のコンピュータ・システム700の例示的形態のマシンの図である。コンピュータ・システム700内で、本明細書で議論する音声スプリッティング方法論のうちの1つまたは複数のいずれかをマシンに行わせる命令の組を実行することができる。代替実施形態では、LAN、イントラネット、エクストラネット、またはインターネット内でマシンを他のマシンに接続(例、ネットワーク化)することができる。このマシンは、クライアント-サーバ・ネットワーク環境内でサーバまたはクライアント・マシンの能力内で動作することも、ピア・ツー・ピア(分散型)・ネットワーク環境内でピア・マシンとして動作することもできる。このマシンは、PC、タブレットPC、STB、PDA、携帯電話、ウェブ・アプライアンス、サーバ、ネットワーク・ルータ、スイッチまたはブリッジ、あるいは、マシンがとるべきアクションを指定する(連続した、またはそれ以外の)命令の組を実行することの可能な任意のマシンとすることができる。さらに、単一のマシンのみ図示しているが、音声スプリッティングのオペレーションについて本明細書に記載する上記の方法400、500、550、570等の本明細書で議論する方法論のうちの1つまたは複数のいずれかを行うために、個別にまたは共同して1組の(または複数組の)命令を実行する複数のマシンの任意の集合も、用語「マシン」に含まれるものとする。一実施形態では、コンピュータ・システム700は、上で説明したようにエンコーダ220または符号化システム320に実装することのできる様々なコンポーネントを表す。あるいは、エンコーダ220または符号化システム320が、コンピュータ・システム700内に図示しているものより多くのコンポーネント、またはこれより少ないコンポーネントを含むこともある。
【0077】
この例示的コンピュータ・システム700は、処理デバイス702、メイン・メモリ704(例、ROM(リードオンリ・メモリ)、フラッシュ・メモリ、SDRAM(シンクロナスDRAM)やDRAM(RDRAM)等のDRAM(ダイナミック・ランダム・アクセス・メモリ)等)、スタティック・メモリ706(例、フラッシュ・メモリ、SRAM(スタティック・ランダム・アクセス・メモリ)等)、データ記憶デバイス716を含み、これら要素は、それぞれバス730を介して互いに通信を行っている。
【0078】
処理デバイス702は、マイクロプロセッサや中央処理ユニット等の1つまたは複数の汎用処理デバイスを表す。より具体的には、処理デバイス702は、CISC(複合命令セット・コンピューティング)マイクロプロセッサ、RISC(縮小命令セット・コンピューティング)マイクロプロセッサ、VLIW(超長命令語)マイクロプロセッサ、または、他の命令の組を実装するプロセッサもしくは命令の組の組合せを実装するプロセッサでもよい。処理デバイス702は、ASIC(特定用途向け集積回路)、FPGA(フィールド・プログラマブル・ゲート・アレイ)、DSP(デジタル信号プロセッサ)、ネットワーク・プロセッサ等の1つまたは複数の特別用途処理デバイスであってもよい。処理デバイス702は、本明細書で議論するオペレーションおよびステップを実施するための処理ロジック(例、音声スプリッティング726)を実行するように構成される。
【0079】
コンピュータ・システム700は、ネットワーク・インタフェース・デバイス722を更に含むこともある。コンピュータ・システム700は、映像表示ユニット710(例、液晶ディスプレイ(LCD)または陰極線管(CRT))、アルファニューメリック入力デバイス712(例、キーボード)、カーソル制御デバイス714(例、マウス)、信号生成デバイス720(例、スピーカ)を含むこともある。
【0080】
データ記憶デバイス716は、本明細書に記載する方法論または機能のうちの1つまたは複数を実現する1組または複数の組の命令(例、音声スプリッティング726)が記憶されるコンピュータ可読記憶媒体724を含むことがある。音声スプリッティング726は、コンピュータ・システム700による実行中、メイン・メモリ704および/または処理デバイス702内に完全にまたは少なくとも部分的に含まれるように存在することがあるが、これらメイン・メモリ704および処理デバイス702もまた、コンピュータ可読記憶媒体を構成する。さらに、ネットワーク・インタフェース・デバイス722により、音声スプリッティング726を、ネットワークを介して送ることまたは受け取ることができる。
【0081】
一例示的実施形態では、コンピュータ可読記憶媒体724を単一の媒体として図示しているが、用語「コンピュータ可読媒体」には、1組または複数組の命令を記憶する単一または複数の媒体(例、集中もしくは分散データベース、ならびに/または関連キャッシュおよびサーバ)も含まれることがあるとみなされたい。また、用語「コンピュータ可読記憶媒体」には、マシンによる実行用の命令の組を記憶することが可能で、本実施形態の方法論のうちの1つまたは複数をマシンに実行させる任意の媒体も含まれるものとする。したがって、用語「コンピュータ可読記憶媒体」には、ソリッド・ステート・メモリ、光学式媒体、磁気媒体、または、命令を記憶するための他の種類の媒体が含まれることとするが、これらに限定されない。用語「コンピュータ可読伝送媒体」には、マシンによる実行用の命令の組を送信して、本実施形態の方法論のうちの1つまたは複数をマシンに行わせることの可能な任意の媒体が含まれるものとする。
【0082】
音声スプリッティング・モジュール732、それぞれのコンポーネント、および(たとえば、図2および3Aに関連して)本明細書に記載する他の特徴を、分離したハードウェア・コンポーネントとして実現すること、または、ASICS、FPGA、DSP、これらと同様のデバイス等のハードウェア・コンポーネントの機能内に集積化することができる。さらに、音声スプリッティング・モジュール732は、ハードウェア・デバイス内のファームウェアまたは機能回路として実現することもできる。さらに、音声スプリッティング・モジュール732は、任意の組合せハードウェア・デバイスおよびソフトウェア・コンポーネント内で実現することもできる。
【0083】
説明目的で、上記の記載を特定の実施形態に関連して提供してきた。しかし、上記の例示的議論は、網羅的になることを意図しておらず、開示した厳密な形態に本発明を限定することを意図していない。上記の教示内容に鑑みて、多くの修正形態および変形形態が考えられる。本発明の原理およびその実用的応用例を最もうまく説明するために、上記の実施形態を選択し説明したが、これにより、当業者が本発明と様々な修正形態を伴う様々な実施形態とを、企図される特定の用途に適した形で利用することが可能になる。
【技術分野】
【0001】
本発明の実施形態は、インターネットを介したメディア・コンテンツの配信の分野に関し、より具体的には、境界アーチファクトを導入せずに、メディア・コンテンツの音声を、分離した複数のコンテンツ・ファイルにスプリットすることに関する。
【背景技術】
【0002】
インターネットは、メディア・コンテンツ(例、映像および音声または音声)ならびに他の情報をエンド・ユーザに分配する主要な方法になっている。現在、音楽、映像、ゲーム、他のメディア情報を、コンピュータ、携帯電話、また、実質的にいかなるネットワーク可能デバイスにもダウンロードすることが可能である。人々がメディア・コンテンツを求めてインターネットにアクセスする割合は、急速に伸びている。視聴者体験のクオリティーが、オンラインでの映像視聴の成長のキーとなる障壁である。需要者のテレビ視聴体験および映画視聴体験が、オンライン映像に対する需要者期待をもたらす。
【0003】
ウェブ上で映像をストリーミングする視聴者数は急速に増えており、映像をインターネットで視聴することへの興味および需要は増している。データ・ファイルのストリーミングまたは「メディアのストリーミング」とは、大きな中断なしに本来期待される再生速度でメディアをユーザに提供するのに十分なレートで、連続したメディア・コンテンツを配信する技術を指す。メディア・ファイルのダウンロードされたデータとは違い、ストリーム化されたデータは、それを再生するまでメモリに格納し、次いで、指定時間が経過した後削除することができる。
【0004】
電波、衛星、またはケーブルを介した通常のブロードキャストと比較すると、インターネットを介したメディア・コンテンツのストリーミングには、いくつかの課題がある。メディア・コンテンツの音声の符号化の場面で生じる懸念の1つは、映像および音声を複数の固定時間(fixed-time)部分にセグメント化する際の境界アーチファクトの導入である。従来手法の1つでは、音声が、たとえば2秒間といった対応する映像の固定時間幅に合う固定時間幅を有する複数の部分にセグメント化される。この手法では、音声境界が、常に映像境界に整合する。この従来手法では、たとえばAAC LC(Low Complexity Advanced Audio Coding)を使用することにより、コンテンツ・ファイルごとに各音声部分を符号化するために音声コーデックの新たな符号化セッションが開始される。音声の各部分ごとに新たな符号化セッションを使用することにより、音声コーデックが、波形の開始および終了を0からの遷移として解釈し、これにより、図1に示すような部分境界での符号化部分の再生中のポップ雑音(pop noise)またはクリック雑音(click noise)が引き起こされる。こうしたポップ雑音またはクリック雑音を、境界アーチファクトと称する。また、音声コーデックが、コーデック適用(codec-enforced)フレーム・サイズに従って固定時間幅の音声を符号化する。これによっても、音声コーデックの作り出すサンプル数がコーデック適用フレーム・サイズで等しく割り切れない場合、境界アーチファクトが導入される。
【0005】
図1は、ある従来手法を使用した音声の2部分についての例示的音声波形100を示す図である。音声波形100は、映像の第1、第2の部分間の0からの遷移102を示す。音声コーデックが固定フレーム・サイズ(以降本明細書では、コーデック適用フレーム・サイズと称する)を有する場合、音声コーデックでは、コーデック適用フレーム・サイズに従ったフレーム毎のサンプル数でその部分のサンプル数が等しく割り切れないと、最終フレーム104を0で埋める必要がある。たとえば、サンプリング・レート48kHzを使用する場合、2秒間の音声セグメントに対して96000個のサンプルが生成される。このサンプル数96000をフレーム毎のサンプル数(たとえば、AAC LCの場合のサンプル数は1024、HE AAC(High Efficiency AAC)の場合のサンプル数は2048)で割ると、フレーム数は93.75となる。93.75は整数でないので、音声コーデックは、最終フレーム104を0で埋める。この例では、最終フレームの最後の256個のサンプルに、値0が付与される。値0はサイレント音声を表すが、最終フレームを0で埋めているので、音声の符号化部分の再生中に部分境界でポップ音声またはクリック音声が確認される。0からの遷移102および最終フレーム104に埋め込まれた0により、境界アーチファクトが導入される。境界アーチファクトが導入されると、音声の全体的な質が低減されることがあり、このことは、メディア・コンテンツの再生中のユーザ体験に影響を及ぼす。
【0006】
他の従来手法では、フレーム境界との整合をとるために、音声の中からより期間の長い部分を使用することにより、境界アーチファクトの数を制限しようとする。しかし、使用される音声の期間部分がより大きくなると、音声および映像を別々にまとめる必要がある場合がある。このことは、音声および映像を有するメディア・コンテンツのストリーミングに障害をもたらすことがあり、こうした障害は、たとえば、メディア・コンテンツの再生中に様々なクオリティー・レベルへのシフトを可能にするアダプティブ・ストリーミングの場面のように、同一のメディア・コンテンツが様々なクオリティー・レベルで符号化されるときに特にもたらされる。
【図面の簡単な説明】
【0007】
本発明は、以下の説明、および、本発明の実施形態を図示するのに使用する添付の図面を参照することにより最適に理解することができる。
【図1】ある従来手法を使用した音声の2部分についての例示的音声波形を示す図である。
【図2】本実施形態のエンコーダを用いることのできるコンピューティング環境の一実施形態を示す概略ブロック図である。
【図3A】図2のエンコーダをそれぞれが用いた複数のホストを含めた符号化システムを用いることのできるコンピューティング環境の他の実施形態を示す概略ブロック図である。
【図3B】一実施形態によるストリームレット(streamlet)の並行符号化の一実施形態を示す概略ブロック図である。
【図4】コーデック適用フレーム・サイズに従ってメディア・コンテンツの音声を符号化して、このメディア・コンテンツの固定時間映像部分を有するコンテンツ・ファイル間で隙間のない音声フレームをスプリットする方法の一実施形態の流れ図である。
【図5A】固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。
【図5B】固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。
【図5C】固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。
【図6A】音声スプリッティングの一実施形態による音声部分、映像部分、ストリームレットの図である。
【図6B】音声スプリッティングを使用した音声の4部分についての音声波形の一実施形態を示す図である。
【図7】一実施形態による音声スプリッティング用のコンピュータ・システムの例示的形態のマシンの図である。
【発明を実施するための形態】
【0008】
境界アーチファクトを導入せずに、メディア・コンテンツの音声を、分離したコンテンツ・ファイルにスプリットする方法および装置を説明する。一実施形態では、オペレーションを実行するようにプログラムされたコンピューティング・システムにより行われる方法が、音声および映像を含むメディア・コンテンツを受け取ることと、フレーム・レートに従って映像を符号化することと、コーデック適用フレーム・サイズ(すなわち、固定されたフレーム・サイズ)に従って音声を符号化することと、映像のうち固定時間幅を有する符号化済部分と、音声のうち、コーデック適用フレーム・サイズを有する隙間のない音声フレームを有する符号化済部分とをそれぞれが含んだコンテンツ・ファイルを生成することとを含む。一実施形態では、従来行われているようには、音声フレームの最後を0で埋めることはしない。
【0009】
本発明の実施形態により、音声をストリーミングする改善手法が提供される。メディア・コンテンツの音声の各部分毎に新たな符号化セッションを使用する従来手法と異なり、本明細書に記載する実施形態は、境界アーチファクトを導入することなく、メディア・コンテンツを複数の小部分にセグメント化することを可能にする。本明細書に記載の実施形態では、隙間のない音声フレームを使用することにより、音声がセグメント化される。音声が再生のためにステージ(stage)される際、音声は、境界アーチファクトを有する多数の小セグメントではなく、単一のストリームとしてデコーダに提供される。本明細書に記載の実施形態では、エンコーダが、コーデック・フレーム・サイズ(たとえば、AAC-LCの場合のサンプル数は1024、または、HE AACの場合のサンプル数は2048)、および、コーデックの起動毎にいくつの音声フレームが作られるかを認識する。エンコーダは、符号化されたストリームレット(すなわち、コンテンツ・ファイル)に収めることの可能な数の音声フレームを格納するが、この符号化されたストリームレットは、映像のうち固定時間幅に基づいた部分を有する。最終音声フレームを0で埋めるのではなく、音声の次の部分の隙間のないフレームを符号化し、現在のストリームレットに加える。これにより、普通なら次のストリームレットに書き込まれるはずの少量の音声が、現在のストリームレットに書き込まれる。こうした次のストリームレットには、次いで、音声ストリームが隙間(gap)を示すための時間オフセットが付与され、したがって、音声を再生する際に、連続したストリームとしてデコーダに音声を提供することができる。これと同量の時間が、このストリームレットに対する音声のターゲット期間から差し引かれる。上記次のストリームレットの音声の終わりがフレーム境界に載らない場合、最終フレームを埋めるために、再度次のストリームレットから音声を借りる。このプロセスは、メディア・コンテンツのストリームの最後に達するまで繰り返される。音声が借りられているストリームレットの先頭に挿入された隙間は、このストリームレットの音声部分を復号および再生する前にステージする際に除去することができる。ランダムなストリームレットを得ようとする際には、音声/映像同期を維持するために、隙間の期間にサイレント音声を再生することができる。
【0010】
本明細書に記載した音声スプリッティングの実施形態により、コーデック適用フレーム・サイズの大きい(例、AAC、AC3等)音声コーデックを使用して、映像に対する同一の固定時間幅を維持しながら、境界アーチファクトを導入することなくメディア・コンテンツの音声を符号化することが可能になる。
【0011】
以下の説明では、多数の詳細を言及する。ただし、本開示内容から恩恵を受ける当業者には、こうした具体的詳細なしに本発明の実施形態を実践することができることが明らかであろう。いくつかの例では、本発明の実施形態を不明確にすることを避けるために、周知の構造およびデバイスを詳細に図示するのではなく、ブロック図形式で図示している。
【0012】
以下の詳細な説明のいくつかの部分は、コンピュータ・メモリ内のデータ・ビットへのオペレーションの象徴表現およびアルゴリズムの観点から提供している。こうしたアルゴリズム的な記述および表現は、データ処理技術の当業者が他の当業者に自身の研究の本質を最も効果的に伝えるために使用する手段である。ここでまた一般にアルゴリズムとは、所望の結果をもたらす首尾一貫した一連のステップであると理解される。これらステップは、物理量の物理的操作を必要とするものである。必ずではないが通常、これらの量は、格納すること、転送すること、組み合わせること、比較すること、あるいは操作することの可能な電気信号または磁気信号の形態をとる。一般的な使用法であるということが主な理由であるが、これらの信号を、ビット、値、エレメント、シンボル、キャラクター、ターム(term)、番号等と呼ぶことが都合の良いこともあることが分かっている。
【0013】
ただし、これらの用語および同様の用語は全て、適当な物理量に関連付けられるべきであり、これらの量に適用される都合の良いラベルにすぎないことを覚えておかれたい。以下の議論から明確であるように具体的に記載がない限り、記載全体を通じて、「受け取ること(receiving)」、「符号化すること(encoding)」、「生成すること(generating)」、「スプリットすること(splitting)」、「処理すること(processing)」、「計算すること(computing)」、「算出すること(calculating)」、「決定すること(determining)」、「表示すること(displaying)」等の用語を利用した議論は、コンピュータ・システムのレジスタおよびメモリ内の物理的(例、電子的)量で表されたデータを操作し、コンピュータ・システム・メモリもしくはレジスタまたは他のこうした情報記憶デバイス、情報送信デバイスもしくは情報表示デバイス内で同様に物理的量を用いて表された他のデータに変換するコンピュータ・システムまたは同様の電子コンピューティング・システムの動作および処理を言及することが理解される。
【0014】
本発明の実施形態はまた、本明細書内のオペレーションを実行するための装置に関する。この装置は、必要な目的のために具体的に構築することも、自体の中に記憶されたコンピュータ・プログラムに具体的にプログラムされた汎用コンピュータ・システムを備えることもできる。こうしたコンピュータ・プログラムは、フロッピー・ディスク、光学ディスク、CD-ROM、光磁気ディスクを含めた任意の種類のディスクや、ROM(リード-オンリ・メモリ)、RAM(ランダム・アクセス・メモリ)、EPROM、EEPROM、磁気カードまたは光学カードや、電子的命令を記憶するのに適した任意の種類のメディア等のコンピュータ可読記憶媒体中に記憶することができるが、記憶先はこれらに限定されない。
【0015】
本明細書で使用する「符号化済ストリームレット」という用語は、メディア・コンテンツの一部分の単一の符号化表現を指す。各ストリームレットは、メディアの一部分を含む個別のコンテンツ・ファイルとすることができ、また、独立したメディア対象として封入することができ、これにより、そのストリームレットを個別にキャッシュに入れること、メディア・プレイヤで独立して要求することおよび独立して再生することが可能になる。本明細書では、これらの個別のファイルをOSSファイルとも称する。一実施形態では、ストリームレットは、特化されたメディア・サーバによってではなく、特化されていないサーバによりサーブ(serve)されることのある静的ファイルである。一実施形態では、ストリームレット内のメディア・コンテンツが、所定の長さの再生時間(固定時間幅とも称する)を有することがある。この所定の長さの時間は、たとえば、約0.1〜8.0秒とすることができる。あるいは、他の所定の長さを使用することもできる。ストリームレット内のメディア・コンテンツは、ストリームに含まれるメディア・コンテンツの先頭に関して一意の時間インデックスを有することがある。ファイル名が、時間インデックスの一部分を含むことがある。あるいは、ストリームレットを、時間インデックスではなくファイルのサイズに従って分割することもできる。本明細書で使用する「ストリーム」という用語は、メディア・コンテンツのうち同一の映像クオリティー・プロファイルで符号化されたストリームレットの集合を指すことがあり、たとえば、映像のうち同一の映像ビット・レートで符号化された部分である。ストリームは、オリジナルのメディア・コンテンツのコピーを表す。ストリームレットは別々のファイルとして、コンテンツ・サーバ、ウェブ・サーバ、キャッシュ・サーバ、プロキシ・キャッシュ、または、コンテンツ・デリバリ・ネットワーク(CDN)に見られるようなネットワーク上の他のデバイスのうちの1つまたは複数上に格納することができる。こうした別々のファイル(たとえば、ストリームレット)は、クライアント・デバイスによって、ウェブ・サーバからHTTPを使用して要求されうる。HTTP等の標準プロトコルを使用することにより、ネットワーク管理者が、ファイアウォールを、RTSP(Real Time Streaming Protocol)等の特化した新たなプロトコルについてのネットワーク・トラフィックを認識し通過させるように構成する必要がなくなる。さらに、メディア・プレイヤが要求を開始するので、たとえば、ウェブ・サーバは、ストリーム全体ではなく、要求されたストリームレットを取り出し供給することのみ必要とされる。メディア・プレイヤは、2つ以上のウェブ・サーバからストリームレットを取り出すこともできる。これらのウェブ・サーバは、要求された部分を取り出すための、特化したサーバ側知能を伴わないことがある。他の実施形態では、ストリームレットは、ネットワーク・インフラ・オペレータ(例、ISP)のキャッシュ・サーバまたはCDNの他のコンポーネント上に別々のファイルとして格納される。本実施形態のうちいくつかはストリームレットの使用について説明するが、本明細書に記載の実施形態は、ストリームレットを使用するコンピューティング・システム内での使用に限定されず、インターネットを介してライブ・メディア・コンテンツを配信する他の技法を使用する他のシステム内で実行することもできる。たとえば、他の実施形態では、HTTP範囲の要求を使用することにより要求でき、CDN内でキャッシュに入れることの可能な複数部分に分けられる単一のファイル内にメディア・コンテンツが格納される。
【0016】
2つの一般的タイプのメディア・ストリーミング、すわわち、プッシュ(push)-ベース・ストリーミングおよびプル(pull)-ベース・ストリーミングが存在する。プッシュ技術は、発行者のコンテンツ・サーバ等のサーバが所与のトランザクションについての要求を開始するインターネット-ベースの通信の方法を説明するものである。対照的に、プル技術は、情報の送信の要求がクライアント・デバイスにより開始され、次いで、サーバにより応答されるインターネット-ベースの通信の方法について説明するものである。HTTP要求(例、HTTP GET要求)は、プル技術における要求の1種類である。対照的に、プッシュ-ベースの技術では、通常、専用のサーバが、RTSP等の専用のプロトコルを使用して、クライアント・デバイスにデータを送り込む。あるいは、いくつかのプッシュ-ベースの技術では、HTTPを使用してメディア・コンテンツを配信することがある。プル-ベースの技術では、複数のクライアント・デバイスにメディアを配信するために、CDNを使用することがある。
【0017】
本明細書に記載の様々な実施形態はプル-ベースのモデルを対象としたものであるが、プッシュ-ベースの構成等の他の構成内で、これら実施形態を実行することができることに留意されたい。プッシュ-ベースの構成では、エンコーダによる音声スプリッティングの実施形態を、図2に関連して説明するプル-ベースの構成と同様に実行することができ、符号化されたコンテンツ・ファイルをメディア・サーバ等のコンテンツ・サーバ上に格納して、プッシュ-ベースの技術を使用することにより、このメディア・コンテンツを再生用にクライアント・デバイスに配信することができる。これらの実施形態を使用して、メディア・コンテンツの様々なクオリティー・レベルをもたらすことができ、また、これらの実施形態により、一般にアダプティブ・ストリーミングと称される、様々なクオリティー・レベル間での切替えが可能になることにも留意されたい。プッシュ-ベースのモデルでは、メディア・サーバがどのコンテンツ・ファイルをクライアント・デバイスに送るかを決定し、プル-ベースのモデルでは、クライアント・デバイスがどの(1つまたは複数の)コンテンツ・ファイルをコンテンツ・サーバから要求するかを決定することが違いの1つであることがある。
【0018】
図2は、本実施形態のエンコーダ220を用いることのできるコンピューティング環境200の一実施形態を示す概略ブロック図である。コンピューティング環境200は、ソース205、エンコーダ220、コンテンツ配信ネットワーク240のオリジン(origin)・コンテンツ・サーバ210(メディア・サーバまたはオリジン・サーバとも称する)、それぞれクライアント・デバイス204上で動作する複数のメディア・プレイヤ200を含む。コンテンツ・サーバ210と、エンコーダ220と、クライアント・デバイス204とは、データ通信ネットワークで結合することができる。データ通信ネットワークには、インターネットが含まれることがある。あるいは、コンテンツ・サーバ210、エンコーダ220、クライアント・デバイス204を、共通のLAN(ローカル・エリア・ネットワーク)、PAN(パーソナル・エリア・ネットワーク)、CAN(キャンパス・エリア・ネットワーク)、MAN(メトロポリタン・エリア・ネットワーク)、WAN(ワイド・エリア・ネットワーク)、無線LAN、セルラ・ネットワーク、バーチャルLAN等上に置くこともできる。クライアント・デバイス204は、クライアント・ワークステーション、サーバ、コンピュータ、携帯型電子デバイス、もしくは、セット-トップ・ボックス、デジタル・レシーバ、デジタル・テレビ等のネットワークを介して通信を行うように構成されたエンターテイメント・システム、または他の電子デバイスとすることができる。たとえば、携帯型電子デバイスには、携帯電話、携帯型ゲーム・システム、携帯型コンピューティング・デバイス等が含まれることがあるが、これらに限定されない。クライアント・デバイス204は、ファイアウォール、ルータ、または他のパケット交換デバイスを介してインターネットにアクセスすることができる。
【0019】
図示の実施形態では、ソース205は、発行者サーバまたは発行者コンテンツ・リポジトリであることがある。ソース205は、メディア・コンテンツの作成者または分配者であることもある。たとえば、ストリーム化されるべきメディア・コンテンツがテレビ番組の放送である場合、ソース205は、テレビのサーバ、またはABC(登録商標)チャンネルやMTV(登録商標)チャンネル等のケーブル・ネットワーク・チャンネルであることがある。発行者は、インターネットを介してメディア・コンテンツをエンコーダ220に転送することができるが、エンコーダ220は、メディア・コンテンツを受け取って処理し、このメディア・コンテンツの(1つまたは複数の)コンテンツ・ファイルをオリジン・コンテンツ・サーバ210内に格納するように構成することができる。一実施形態では、コンテンツ・サーバ210が、メディア・コンテンツをクライアント・デバイス204に配信するが、このクライアント・デバイス204は、自体上で動作するメディア・プレイヤ上でこのコンテンツを再生するように構成される。コンテンツ・サーバ210は、メディア・コンテンツをストリーミングすることにより、これをクライアント・デバイス204に配信する。後により詳細に説明するように、更なる実施形態では、クライアント・サーバ204が、メディア・コンテンツの様々な部分を、複数の位置から同時にまたは一斉に受け取るように構成される。
【0020】
コンテンツ・サーバ210で格納されたメディア・コンテンツは、他のウェブ・サーバに対して、あるいはCDN240のプロキシ・キャッシュ・サーバに対して複製することができる。複製は、コンテンツ・サーバ210から計画的に押し進められることにより、または、コンテンツ・サーバ210の外のウェブ・サーバ、キャッシュ・サーバもしくはプロキシ・サーバがクライアント・デバイス204のためにコンテンツを求めることにより発生することがある。たとえば、クライアント・デバイス204は、複数のウェブ・サーバ、エッジ・キャッシュ、またはプロキシ・キャッシュ・サーバのうちのいずれかからコンテンツを要求し受け取ることができる。図示の実施形態では、ウェブ・サーバ、プロキシ・キャッシュ、エッジ・キャッシュおよびコンテンツ・サーバ210をCDN240の階層で編成して、メディア・コンテンツをクライアント・デバイス204に配信している。CDNは、コンテンツを配信するために透過的に協働する、インターネット中でネットワーク化された複数のコンピュータのシステムであり、たとえば、1つまたは複数のオリジン・コンテンツ・サーバ、ウェブ・サーバ、キャッシュ・サーバ、エッジ・サーバ等を含むことがある。通常、CDNは、たとえば、クライアント・デバイスがエッジ・キャッシュからデータを要求するような階層に構成され、エッジ・キャッシュが要求されたデータを含んでいない場合、その要求は、次には親キャッシュといった具合に、オリジン・コンテンツ・サーバに至るまで送られていく。CDNは、メディア・コンテンツを配信するために、相互接続されたコンピュータ・ネットワークまたはノードを含むこともある。CDNのいくつかの例には、Akamai Technologies社、Level3 Communications社、またはLimelight Networks社に開発されたCDNがある。あるいは、他の種類のCDNを使用することもできる。他の実施形態では、オリジン・コンテンツ・サーバ210は、本開示内容の恩恵を受ける当業者には理解されるはずの他の構成を使用することにより、メディア・コンテンツをクライアント・デバイス204に配信することができる。
【0021】
一実施形態では、発行者が、ソース205から分配するべきオリジナルのコンテンツ・ファイル内にメディア・コンテンツを格納する。コンテンツ・ファイルは、テレビ放送、スポーツ・イベント、映画、音楽、コンサート等に相当する映像および/または音声に相当するデータを含むことがある。オリジナルのコンテンツ・ファイルは、圧縮されていない映像および音声、あるいは圧縮されていない映像または音声を含むことがある。あるいは、コンテンツ・ファイルは、標準的な符号化スキームまたは独自開発の符号化スキームを使用した圧縮済コンテンツ(例、映像および/または音声)を含むことがある。ソース205からのオリジナルのコンテンツ・ファイルは、デジタル形式でもよく、たとえば約5Mbps以上といった高ビット・レートのメディア・コンテンツを含むことができる。
【0022】
図示の実施形態では、エンコーダ220が、たとえば、オリジナルのコンテンツ・ファイル、ライブ・イベント放送の直接供給からの信号、ライブでのテレビ・イベント放送のストリーム等を受け取ることにより、ソース205からオリジナルのメディア・コンテンツ231を受け取る。エンコーダ220は、1つもしくは複数のサーバ・コンピュータ、ゲートウェイまたは他のコンピューティング・デバイスを含む1つまたは複数のマシンに実装することができる。一実施形態では、エンコーダ220は、オリジナルのメディア・コンテンツ231を、1つまたは複数のコンテンツ・ファイルとして発行システム(図示せず)(例、発行者のサーバまたは発行者のコンテンツ・リポジトリ)から受け取る。あるいは、エンコーダ220は、キャプチャ(capture)時のオリジナルのメディア・コンテンツ231を受け取る。たとえば、エンコーダ220は、被キャプチャ・ブロードキャスト(captured broadcast)等のライブ・テレビ放送の直接供給をストリーム形式または信号形式で受け取ることができる。オリジナルのメディア・コンテンツ231は、たとえば、カナダ、オンタリオのDigital Rapids社から入手可能なDRC-2600キャプチャ・カード等、テレビ・キャプチャおよび/またはビデオ・キャプチャ向けに構成されたキャプチャ・カードでキャプチャすることができる。あるいは、音声および映像のキャプチャが可能な任意のキャプチャ・カードを本発明では利用することができる。キャプチャ・カードは、エンコーダと同一のサーバ上に置くことも、別のサーバ上に置くこともできる。オリジナルのメディア・コンテンツ231は、電波、ケーブル、および/もしくは衛星を介して同時にブロードキャストされる型のブロードキャスト等の被キャプチャ・ブロードキャスト、または、ライブ・イベントのスケジュールに従って特定の時点で再生されるように予定されたプレレコ型(pre-recorded)のブロードキャストであることがある。エンコーダ220は、DivX(登録商標)コーデック、Windows Media Video9(登録商標)シリーズ・コーデック、Sorenson Video(登録商標)3映像コーデック、On2 Technologies(登録商標)社のTrueMotion VP7コーデック、MPEG-4映像コーデック、H.263映像コーデック、RealVideo10コーデック、OGG Vorbis、MP3等の符号化スキームを利用することができる。あるいは、カスタマイズした符号化スキームを利用することもできる。
【0023】
他の実施形態では、エンコーダ220は、たとえば2秒間のチャンク等、映像および音声のうちの固定時間幅の部分(本明細書では「メディア・コンテンツの一部分」と称する)としてオリジナルのビデオ・コンテンツ231を受け取る。この2秒間のチャンクは、生音声(raw audio)および生映像(raw video)を含むことがある。あるいは、この2秒間のチャンクは、符号化された音声および生映像であることもある。このような場合、エンコーダ220は、メディア・コンテンツを展開する。他の実施形態では、エンコーダ220は、オリジナルのメディア・コンテンツ221を複数の生ストリームレットとして受け取るが、これら生ストリームレットはそれぞれ、メディア・コンテンツの固定時間部分(例、生音声および映像を含んだ複数の2秒間生ストリームレット)を含んでいる。本明細書で使用するように、用語「生ストリームレット」は、圧縮されていないストリームレット、または、著しくクオリティーを失うことなくサイズを実質的に縮減させるために軽く圧縮されたストリームレットのことを指す。軽く圧縮した生ストリームレットは、より急速に送信することが可能である。他の実施形態では、エンコーダ220は、オリジナルのメディア・コンテンツ231をストリームまたは信号として受け取り、生ストリームレット等、メディア・コンテンツの複数の固定時間部分にセグメント化する。
【0024】
図示の実施形態では、エンコーダ220は、スプリッタ222、固定フレーム音声エンコーダ224、音声フレーム・バッファ225、固定時間映像エンコーダ226、映像フレーム・バッファ227、音声スプリッティング・マルチプレクサ228を有する。スプリッタ222は、オリジナルのメディア・コンテンツ231を、たとえば音声および映像の連続したストリームとして受け取り、これを生音声233および生映像235にスプリットする。一実施形態では、固定フレーム音声エンコーダ224は音声コーデックである。一実施形態では、スプリッタ222が、音声および映像の連続したストリームを音声および映像の複数の2秒間チャンクにスプリットする。コーデック(コンプレッサ-デコンプレッサまたはコーダ-デコーダとも称する)とは、デジタル・データ・ストリームまたはデジタル・データ信号を符号化することおよび/または復号することの可能なデバイスまたはコンピュータ・プログラムである。一実施形態では、固定フレーム音声コーデック224は、エンコーダ220の1つまたは複数のコンピューティング・デバイスに実行されて生音声233を符号化するソフトウェアである。あるいは、固定フレーム音声コーデック224は、生音声233を符号化するのに使用されるハードウェア論理素子であってもよい。具体的には、固定フレーム音声エンコーダ224は、生音声233を受け取り、コーデック適用フレーム・サイズ、たとえば、AAC-LCではサンプル数1024またはHE AACではサンプル数2048に従って、この音声を符号化する。固定フレーム音声エンコーダ224は、符号化済音声フレーム237を音声フレーム・バッファ225に出力する。同様に、固定時間映像エンコーダ226は、生映像235をスプリッタ220から受け取るが、たとえば、2秒毎に60フレーム(30fps(frames per second))といった固定時間幅に従ってこの映像を符号化する。固定時間映像エンコーダ226は、符号化済映像フレーム239を映像フレーム・バッファ227に出力する。一実施形態では、固定時間映像コーデック226は、エンコーダ220の1つまたは複数のコンピューティング・デバイスにより実行されて、生映像235を符号化するソフトウェアである。あるいは、固定時間映像コーデック226は、生映像235を符号化するのに使用されるハードウェア論理素子であってもよい。
【0025】
音声スプリッティング・マルチプレクサ228は、符号化済音声フレーム237および符号化済映像フレーム239を使用して、符号化済メディア・コンテンツ・ファイル232(本明細書では「QSSファイル」と称する)を生成する。上で説明したように、従来のエンコーダは、それぞれが固定された時間幅である映像の一部分および音声の一部分を伴うコンテンツ・ファイルを生成するが、こうしたコンテンツ・ファイルにおいては、音声コーデックに使用されるコーデック適用フレーム・サイズに従って、その部分のサンプル数をフレーム毎のサンプル数で均等に割り切ることができないので、音声の最終フレームが0で埋められる。最終フレームを埋める従来のエンコーダと異なり、音声スプリッティング・マルチプレクサ228は、隙間のない音声フレームを使用して、固定時間の映像部分と、コーデック適用フレーム・サイズを有する隙間のない音声フレームを有する音声部分とを有するコンテンツ・ファイルを生成する。音声スプリッティング・マルチプレクサ228は、コンテンツ・ファイル232を満たすために隙間のない音声フレームを使用するので、従来から行われているようにフレームの最後の数サンプルを0で埋めるのではなく、現在のコンテンツ・ファイル232に隙間のないフレームを加えるために音声の次の部分を符号化する。
【0026】
一実施形態では、音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルに使用されるフレーム数を求めるために、次の部分から使用されるサンプルの量を表すサンプル・オフセットを記録する。音声スプリッティング・マルチプレクサ228は、音声再生における隙間を示すプレゼンテーション・オフセットも記録する。普通なら次のコンテンツ・ファイルの一部分として再生されるはずのサンプルが、現在のコンテンツ・ファイルの一部分になるので、次のコンテンツ・ファイルのプレゼンテーション・オフセットが、音声再生における隙間を示し、これにより、現在および次のコンテンツ・ファイルの音声部分が、連続したストリームとしてデコーダに提供される。本質的には、音声再生中、コンテンツ・ファイルの音声部分が復号および再生の前にステージされると、コンテンツ・ファイルの先頭に挿入された隙間は除去することができる。プレゼンテーション・オフセットにより、境界アーチファクトを有する多くの小セグメントではなく、連続したストリームとして音声をデコーダに提供することが可能になる。一実施形態では、映像の任意の一部分を探す際、音声/映像同期を維持するために、その隙間の期間はサイレント音声を再生することができる。
【0027】
一実施形態では、音声スプリッティング・マルチプレクサ228が、固定時間幅(例、2秒間)を有する第1の映像部分(例、60フレーム)と、バッファリングされた隙間のない音声フレームをいくつか有する第1の音声部分とで満たすことにより第1のコンテンツ・ファイルを生成する。このバッファリングされた音声フレームの期間は、固定時間幅よりも長い。
【0028】
一実施形態では、音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルを満たすのに必要な符号化済音声フレーム237の数を求めることによりコンテンツ・ファイル232を生成する。一実施形態では、フレームの数は、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を、コーデック適用フレーム・サイズで割った数(例、フレーム毎のサンプル)以上の最小の整数である。一実施形態では、この数は、たとえば「ceiling(x)=[x]はx以上の最小の整数」といった、実数を次に大きい整数にマップする天井関数(ceiling function)を使用することにより算出することができる。天井関数の一例を以下の式(1)に示す。
ceil((ストリームレット当たりのサンプル−オフセット・サンプル)/フレーム当たりのサンプル) (1)
あるいは、他の式を使用することもできる。
【0029】
音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルを満たすのに十分な符号化済音声フレーム237が音声フレーム・バッファ225内に存在するかどうかを判定する。十分な符号化済フレームがバッファリングされている場合、音声スプリッティング・マルチプレクサ228は、求めた数のフレームで現在のコンテンツ・ファイルを満たす。十分な符号化済フレームがバッファリングされていない場合、音声スプリッティング・マルチプレクサ228は、十分な符号化済フレームがバッファ225内に格納されるまで待ち、バッファ225内に格納された求めた数の符号化済フレームで現在のコンテンツ・ファイルを満たす。一実施形態では、音声スプリッティング・マルチプレクサ228は、1)バッファリングされたフレームの数をフレーム当たりのサンプルで掛け、2)前のコンテンツ・ファイルからのサンプル・オフセットがあれば、これを掛け算の積に加え、3)この和が現在のコンテンツ・ファイルを満たすのに必要なサンプル数以上であるかどうかを判定することにより、十分な符号化済フレームがバッファリングされているかどうかを判定する。この演算の一例を以下の式(2)に示す。
バッファリングされたフレーム数*フレーム当たりのサンプル+オフセット・サンプル>=ストリームレット当たりのサンプル (2)
【0030】
音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルについて、サンプル・オフセットがあればこれを求める。一実施形態では、音声スプリッティング・マルチプレクサ228は、コーデック適用フレーム・サイズ(すなわち、フレーム当たりのサンプル)を符号化済フレーム数に掛け、ここから、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を引き、前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを足すことによりサンプル・オフセットを求める。この演算の一例を以下の式(3)および(4)に示す。
オフセット・サンプル=送るべきフレーム*フレーム当たりのサンプル−ストリームレット当たりのサンプル−オフセット・サンプル (3)
送るべきフレーム=ceil((ストリームレット当たりのサンプル−オフセット・サンプル)/フレーム当たりのサンプル) (4)
【0031】
他の実施形態では、音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数(例、96000)を算出することにより、コンテンツ・ファイル221を生成する。音声スプリッティング・マルチプレクサ228は、現在のコンテンツ・ファイルに必要なフレームの数(例、2秒間部分につき48Kサンプリング・レートの場合93フレーム)を算出し、サンプルの数がフレーム当たりのサンプルで均等に割り切れない場合には、フレームの数を追加する(たとえば、合計で94フレームになる)。このことは実質的に、フレーム数を次に大きな整数に切り上げる。音声スプリッティング・マルチプレクサ228は、この切り上げた数のフレームで現在のコンテンツを満たす。
【0032】
一実施形態では、音声スプリッティング・マルチプレクサ228は、サンプリング・レート(例、48K)に固定時間幅の期間(例、2秒間)を掛けることで、現在のコンテンツ・ファイルを満たすのに必要なサンプルの数(例、96000)を算出することによりコンテンツ・ファイル221を生成する。音声スプリッティング・マルチプレクサ228は、コーデック適用フレーム・サイズ(例、フレーム当たり1024サンプル)でサンプル数を割ることにより、現在のコンテンツ・ファイルに必要なフレームの数を算出する。この除算の余りが0であれば、音声スプリッティング・マルチプレクサ228は、その数のフレームで現在のコンテンツ・ファイルを満たす。しかし、この除算の余りが0より大きければ、音声スプリッティング・マルチプレクサ228は、フレームの数を1だけインクリメントし、このインクリメントした数のフレームで現在のコンテンツ・ファイルを満たす。
【0033】
更なる実施形態では、音声スプリッティング・マルチプレクサ228は、コーデック適用フレーム・サイズをフレームの数に掛けて、現在のコンテンツ・ファイルを満たすのに必要なサンプル数に戻し、サンプル数をサンプリング・レートで割ることで現在のコンテンツ・ファイルの音声の期間を算出(例、ストリームレット期間=ストリームレット当たりのサンプル/サンプリング・レート)することによりコンテンツ・ファイル221を生成する。音声スプリッティング・マルチプレクサ228は、固定時間幅からこの期間を引くことにより、次のコンテンツ・ファイルについてのプレゼンテーション・オフセットを求める。音声スプリッティング・マルチプレクサ228は、フレーム数にコーデック適用フレーム・サイズを掛け、ここから、現在のコンテンツ・ファイルを満たすのに使用されるサンプルの数を引き、前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを足すことにより(例、式(3))、次のコンテンツ・ファイルについてサンプル・オフセットをアップデートする。
【0034】
再度図2を参照すると、一実施形態では、スプリッタ222がオリジナルのメディア・コンテンツ231を生ストリームレットとして受け取る時、スプリッタ222は、第1および第2の生ストリームレットを受け取り、この第1および第2の生ストリームレットの音声および映像をスプリットする。固定時間映像エンコーダ226が、第1および第2の生ストリームレットの映像を符号化し、音声スプリッティング・マルチプレクサ228が、第1の生ストリームレットの符号化された映像を第1のコンテンツ・ファイルに格納し、第2の生ストリームレットの符号化された映像を第2のコンテンツ・ファイルに格納する。固定フレーム音声エンコーダ224は、第1の生ストリームレットの音声を音声フレームの第1の組に符号化し、この第1の組を音声フレーム・バッファ225に格納する。音声スプリッティング・マルチプレクサ228は、第1のコンテンツ・ファイルを満たすのに十分なバッファリングされたフレームが存在するかどうかを判定する。十分でなければ、固定フレーム音声エンコーダ224は、第2の生ストリームレットの音声を音声フレームの第2の組に符号化し、この第2の組を音声フレーム・バッファ225に格納する。第1のコンテンツ・ファイルを満たすだけの十分なバッファリングされたフレームが存在すれば(場合によっては、もう1つの隙間のないフレームがバッファ225に格納されれば)、音声スプリッティング・マルチプレクサ228は、バッファリングされた音声フレームを第1のコンテンツ・ファイルに格納する。エンコーダ220は、メディア・コンテンツが終了するまでこのプロセスを継続する。
【0035】
また、音声スプリッティング・マルチプレクサ228は隙間のない音声フレームを使用するので、図6Aおよび6Bに示すように、1つのコンテンツ・ファイル232内の音声フレームは、映像部分境界と必ずしも整合する必要はない。たとえば、コンテンツ・ファイル232の音声部分の期間が、2.0053秒であり、コンテンツ・ファイル232の映像部分の固定時間幅が、2.00秒であることがある。この例では、コーデック適用フレーム・サイズがフレーム当たり1024サンプルであり、音声のサンプリング・レートが48Kであり、94フレームからなる96256サンプルが、コンテンツ・ファイル232に記憶された音声部分に格納されている。コンテンツ・ファイル232には余分な53ミリ秒(ms)が存在するゆえに、固定時間幅音声符号化スキームを使用する場合には次のコンテンツ・ファイル内にあるはずの53msの期間を有するサンプルが現在のコンテンツ・ファイル232により使用されるので、音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルに53msのプレゼンテーション・オフセットを与える。また、音声スプリッティング・マルチプレクサ228は、次のコンテンツ・ファイルを満たすのに必要な音声フレーム数を求めるためにサンプル・オフセットを記録する。一実施形態では、音声スプリッティング・マルチプレクサ228は、固定時間幅を有する符号化済映像部分のうちの1つで、それぞれのコンテンツ・ファイルを満たす(たとえば、フレーム・レートが30fpsであれば、60映像フレーム当たり2秒間)。音声スプリッティング・マルチプレクサ228は、コンテンツ・ファイルのうちのいくつかを、いくつかのバッファリングされた音声フレームで満たすが、これら音声フレームの期間は、音声スプリッティング・マルチプレクサ228により決まる映像部分境界に音声フレームが整合するかどうかに応じて、固定時間幅よりも大きいこと、固定時間幅よりも小さいこと、または、固定時間幅と等しいことがある。
【0036】
図6Aを参照すると、一実施形態では、音声スプリッティング・マルチプレクサ228は、2秒間からなる固定時間幅に等しい期間の約60の映像フレームを有する第1の映像部分611と、それぞれがフレーム当たり1024のサンプルを有し、合計96256サンプルとなる94の音声フレームを有する第1の音声部分621とで満たすことにより、第1のストリームレット(すなわち、コンテンツ・ファイル)601を生成する。第1の音声部分621の期間は、約2.0053秒である。第1のストリームレット601の音声境界652と映像境界654とが再生について整合しているので、音声スプリッティング・マルチプレクサ228は、第1のストリームレット603の第1の音声部分631のプレゼンテーション・オフセットを0と判定する。
【0037】
音声スプリッティング・マルチプレクサ228は、第2の映像部分612(60フレーム、2秒間)と、94の音声フレームを有する第2の音声部分622とで満たすことにより第2のストリームレット602を生成する。第2の音声部分622の期間は、約2.0053秒である。第1のストリームレット601の第1の音声部分621の期間が約2.0053秒なので、音声スプリッティング・マルチプレクサ228は、第2のストリームレット602の第2の音声部分632のプレゼンテーション・オフセットを約5.3ミリ秒(ms)と判定する。このプレゼンテーション・オフセットは、第1のストリームレット601と第2のストリームレット602との間の音声の隙間を示す。図6Bに示すように、第2のストリームレット602の音声境界652と映像境界654とは、再生について整合していない。このプレゼンテーション・オフセットを使用して、第1および第2のストリームレット601および602の音声部分が、連続したストリームとしてデコーダに提供されるようにステージされることを可能にすることができる。
【0038】
音声スプリッティング・マルチプレクサ228は、第3の映像部分613(60フレーム、2秒間)と、94の音声フレームを有する第3の音声部分623とで満たすことにより第3のストリームレット603を生成する。第3の音声部分623の期間は、約2.0053秒である。第2のストリームレット602の第2の音声部分622の期間が約2.0053秒なので、音声スプリッティング・マルチプレクサ228は、第3のストリームレット603の第3の音声部分633のプレゼンテーション・オフセットを約10.66msと判定する。このプレゼンテーション・オフセットは、第2のストリームレット602と第3のストリームレット603との間の音声の隙間を示す。図6Bに示すように、第3のストリームレット603の音声境界652と映像境界654とは、再生について整合していない。このプレゼンテーション・オフセットを使用して、第2および第3のストリームレット602および603の音声部分が、連続したストリームとしてデコーダに提供されるようにステージされることを可能にすることができる。
【0039】
音声スプリッティング・マルチプレクサ228は、第4の映像部分614(60フレーム、2秒間)と、93の音声フレームを有する第4の音声部分624とで満たすことにより第4のストリームレット604を生成する。第4の音声部分624の期間は、約1.984秒である。第3のストリームレット603の第3の音声部分623の期間が約2.0053秒なので、音声スプリッティング・マルチプレクサ228は、第4のストリームレット604の第4の音声部分634のプレゼンテーション・オフセットを約16msと判定する。このプレゼンテーション・オフセットは、第3のストリームレット603と第4のストリームレット604との間の音声の隙間を示す。図6Bに示すように、第4のストリームレット603の音声境界652と映像境界654とは、再生について整合していない。このプレゼンテーション・オフセットを使用して、第3および第4のストリームレット603および604の音声部分が、連続したストリームとしてデコーダに提供されるようにステージされることを可能にすることができる。しかし、第4のストリームレット604の後、音声境界652と映像境界654とは整合し、このことは、第5のストリームレット(図示せず)が0のプレゼンテーション・オフセットを有することを意味する。図6Aおよび6Bの実施形態では、サンプリング・レートが48kHzであり、固定時間幅が2秒間であり、コーデック適用フレーム・サイズがフレーム当たり1024サンプルであることに留意されたい。
【0040】
上記の実施形態では、3つの第1のストリームレット601〜603の音声部分が、94の音声フレームを有し、第4のストリームレット604の音声部分が、93の音声フレームを有する。この実施形態では、映像が30fpsで符号化される場合、第4のコンテンツ・ファイル601〜604の映像部分のそれぞれは、約60の映像フレームを有する。このパターンは、メディア・コンテンツの終わりに達するまで繰り返される。この実施形態では、各第4のコンテンツ・ファイルの後に、プレゼンテーション・オフセットおよびサンプル・オフセットが0になり、このことは、各第4のコンテンツ・ファイルの後に、音声境界652と映像境界654とが整合することを意味することに留意されたい。
【0041】
図6Bから分かるように、8秒間のメディア・コンテンツの後、映像境界と音声境界とが整合する。よって、境界アーチファクトの頻度を減らし、AACフレーム・サイズを整合させる他の手法の1つは、8秒間を固定時間幅に使用するものになるはずである。しかし、こうした手法には、以下の不利な点がある。1)この手法には、8、16、32秒等のチャンク・サイズの大きな映像が必要である。2)この手法では、特定のフレーム・サイズ、すなわちフレーム当たり1024サンプルに実施が拘束される。フレーム・サイズをたとえば2048等に変更する場合、この手法では、異なるフレーム・サイズを伴う音声コーデックに切り替えねばならず、映像のチャンク期間も変更せねばならない。3)この手法では、音声サンプル・レートが常に48kHzである必要がある。44.1kHz等の他の一般的なサンプル・レートでは、異なる、かつ、場合によってはずっと大きなチャンク・サイズが必要である。あるいは、ソース(source)音声を48kHzにアップ・サンプルしなければならない。しかし、アップ・サンプルすれば、アーチファクトが導入され、音声コーデックの効率が低減されることがある。しかし、本明細書に記載の実施形態では、同一のチャンク期間を維持しながら、チャンク境界アーチファクトを導入することなく、大きなフレーム・サイズ(AAC、AC3等)を伴う音声コーデックを使用することにより符号化を行うことができる。
【0042】
あるいは、他のサンプリング・レート(例、44.1kHz)、固定時間幅(例、0.1〜5.0秒)、映像フレーム・レート(例、24fps、30fps等)、および/またはコーデック適用フレーム・サイズ(例、2048)を使用することもできる。ソース映像が異なれば、異なるフレーム・レートが使用される。米国のほとんどの無線信号は、30fps(実際には、29.97)である。いくつかのHD信号は、60fps(59.94)である。ファイル-ベースのコンテンツのいくつかは24fpsである。一実施形態では、エンコーダ220は、追加のフレームを生成することが必要になるので映像のフレーム・レートを上昇させない。しかし、追加のフレームを生成することは、この追加の負荷ついて大した恩恵をもたらさない。したがって、たとえば、オリジナルのメディア・コンテンツのフレーム・レートが24fpsの場合、エンコーダ220は、30fpsにアップ・サンプルするのではなく24fpsのフレーム・レートを使用する。しかし、いくつかの実施形態では、エンコーダ220は、フレーム・レートをダウン・サンプルすることがある。たとえば、オリジナルのメディア・コンテンツのフレーム・レートが60fpsの場合、エンコーダ220は、30fpsにダウン・サンプルすることがある。60fpsを使用すると、目標とするビット・レートで符号化することが必要なデータの量が2倍になって、クオリティーが損なわれることがあるので、こうしたダウン・サンプルが行われることがある。一実施形態では、エンコーダ220は、ダウン・サンプリング後のまたは受け取られるフレーム・レート(通常は30fpsまたは24fps)を求めると、クオリティー・プロファイルのほとんどについてこのフレーム・レートを使用する。最低クオリティー・プロファイル等のいくつかのクオリティー・プロファイルには、より低いフレーム・レートが使用されることがある。しかし、他の実施形態では、たとえば、携帯電話や計算能力が劣っている等の資源の限られた他のデバイスを対象とするために、エンコーダ220は、異なるクオリティー・プロファイルに対して異なるフレーム・レートを使用することができる。これらのケースでは、より低いフレーム・レートを伴うプロファイルをより多く有することが有益なことがある。
【0043】
これらのパラメータに対して他の値を使用する場合、音声境界652および映像境界654が図6Bに示す実施形態とは異なってくる場合があることに留意されたい。たとえば、サンプリング・レートとして44.1kHz、コーデック適用フレーム・サイズとして1024、固定時間幅として2秒間を使用する場合、第1のコンテンツ・ファイルの音声部分は、87の音声フレームを有することとなり、第2〜第7のコンテンツ・ファイルは、86の音声フレームを有することとなる。このパターンは、メディア・コンテンツ内に残る映像が不十分になるまで繰り返される。この実施形態では、128のコンテンツ・ファイルの後毎に、プレゼンテーション・オフセットおよびサンプル・オフセットが0になり、このことは、略表1-1に示すように、音声境界652と映像境界654とが128番目のコンテンツ・ファイルの後毎に整合することを意味することに留意されたい。
【表1】
上の表中のサンプル・オフセットは、説明を簡単にするために、秒やミリ秒ではなく、サンプル単位で示していることに留意されたい。サンプル・オフセットをプレゼンテーション・オフセットに変換する場合、サンプル・オフセットを44100で割って、秒で表したプレゼンテーション・オフセットを求め、これに1000を掛けて、ミリ秒で表したプレゼンテーション・オフセットを得ることができる。一実施形態では、ミリ秒で表したプレゼンテーション・オフセットが、ストリームレット・ヘッダに記憶されることがある。あるいは、プレゼンテーション・オフセットまたはサンプル・オフセットが、他の単位でストリームレット・ヘッダに記憶されることもある。
【0044】
他の実施形態では、音声スプリッティング・マルチプレクサ228は、固定時間幅を有する符号化済映像フレーム239(例、固定時間幅部分)でそれぞれを埋めることにより複数の符号化済コンテンツ・ファイル232を生成し、これらコンテンツ・ファイル232をいくつかの隙間のない音声フレーム237で満たすが、コンテンツ・ファイル232内で使用されている隙間のない音声フレームを収容するように、音声フレーム237の期間は、固定時間幅より短く、またはこれより長くなっている。たとえば、映像のうち2秒間等の固定時間幅を有する部分と、固定時間幅よりも長い期間を有する隙間のない複数の音声フレームを有する音声部分とで第1のコンテンツ・ファイルを満たすことができる。そのうち、サンプル・オフセットが大きくなって、使用することのできる音声フレームの数が小さくなり、この場合、音声フレームの期間が、固定時間幅より短くなる場合がある。折に触れて、音声の音声境界が、映像の映像境界にマッチすることができる。
【0045】
他の実施形態では、音声スプリッティング・マルチプレクサ228は、映像の第1の部分の映像フレームと、音声の第1の部分からの音声フレームと、第2の部分からの音声フレームとを有する第1のコンテンツ・ファイルを生成することにより、符号化済コンテンツ・ファイル232を生成する。音声スプリッティング・マルチプレクサ228は、映像の第2の部分の映像フレームを有する第2のコンテンツ・ファイルを生成する。音声の場合、音声スプリッティング・マルチプレクサ228は、音声境界が映像境界に載るかどうかを判定する。音声境界が映像境界に載る場合、音声スプリッティング・マルチプレクサ228は、第2の部分の残りの音声フレームで第2のコンテンツ・ファイルを満たす。しかし、音声境界が映像境界に載らない場合、音声スプリッティング・マルチプレクサ228は、メディア・コンテンツの第3の部分の音声フレームを符号化し、第2の部分の残りの音声フレームおよび第3の部分からの音声フレームで第2のコンテンツ・ファイルを満たす。このプロセスは、コンテンツ・ファイルの終わりに達するまで繰り返される。
【0046】
再度図2を参照すると、エンコーダ220は、オリジナルのメディア・コンテンツ231を符号化すると、オリジン・コンテンツ・サーバ210に符号化済メディア・コンテンツ・ファイル232を送り、オリジン・コンテンツ・サーバ210は、ネットワーク接続241を介して、符号化済メディア・コンテンツ232をメディア・プレイヤ200に配信する。メディア・プレイヤ200は、映像の固定時間幅および音声の可変時間幅を有するコンテンツ・ファイルを受け取ると、これらコンテンツ・ファイルのプレゼンテーション・オフセットを使用して、音声を連続したストリームとしてデコーダに提供するようにステージし、これにより、境界アーチファクトにもたらされるポップ雑音またはクリック雑音を除去または低減する。本質的に、音声の再生中、メディア・プレイヤ200は、コンテンツ・ファイルの音声部分が復号および再生の前にステージされると、コンテンツ・ファイルの先頭に挿入された隙間を除去する。他の実施形態では、本明細書に記載する音声スプリッティングを行わず、最終フレームを0で埋める場合は、メディア・プレイヤ200を、音声をデコーダに送る前に最終フレームの埋められたサンプルを除去するように構成することができる。しかし、この手法は、特定の状況では実用的でないことがあり、たとえば、メディア・プレイヤが第3者により提供されるとき、または、復号後の音声フレームのデータへのアクセスが制限されるときである。
【0047】
各メディア・プレイヤ200に1つの線を示しているが、各線241がCDN240への複数のネットワーク接続を表すこともあることに留意されたい。一実施形態では、各メディア・プレイヤ200が、CDN240への複数のTCP(伝送制御プロトコル)接続を確立することがある。他の実施形態では、メディア・コンテンツが、複数のCDN、たとえば、複数のCDNのそれぞれに関連するオリジン・サーバに格納される。CDN240は、帯域幅コストを削減し、コンテンツの全体的使用可能度を増大させることにより、エンド・ユーザ(例、視聴者)に対する性能、スケーラビリティ、費用効果性の改善の目的で使用することができる。CDNは様々なやり方で実現することができ、それらのオペレーションについての詳細は、当業者には理解されるはずである。したがって、それらのオペレーションについての更なる詳細は含めていない。他の実施形態では、ピア・ツー・ピア・ネットワーク等の他の配信技法を使用して、オリジン・サーバからメディア・プレイヤにメディア・コンテンツを配信することができる。
【0048】
上で説明した実施形態では、コンテンツ・ファイル232は、オリジナルのメディア・コンテンツ・ストリーム231のコピーの1つを表す。しかし、他の実施形態では、オリジナルのメディア・コンテンツ231の各部分を符号化して、コンテンツの同一部分の複数の符号化表現とすることができる。これら複数の符号化表現は、様々なクオリティー・プロファイルに従って符号化し、クライアント・デバイス204から独立して要求すること、クライアント・デバイス204により独立して再生することのできる別々のファイルとして格納することができる。これらのファイルはそれぞれ、1つまたは複数のコンテンツ・サーバ210内、CDN240のウェブ・サーバ、プロキシ・キャッシュ、エッジ・キャッシュ上に格納することができ、別々に要求し、クライアント・デバイス204に配信することができる。一実施形態では、エンコーダ220は、たとえば10または13等のいくつかの異なるクオリティー・レベルでオリジナルのコンテンツ・メディア231を同時に符号化する。各クオリティー・レベルをクオリティー・プロファイルまたはプロファイルと称する。たとえば、メディア・コンテンツが1時間の期間を有し、2秒間の期間を有する複数のQSSファイルにセグメント化される場合、メディア・コンテンツの符号化表現毎に1800のQSSファイルが存在する。メディア・コンテンツを異なる10個のクオリティー・プロファイルに従って符号化する場合、このメディア・コンテンツについて18000のQSSファイルが存在する。こうしたクオリティー・プロファイルは、どのようにストリームを符号化するかを示すことがあり、たとえば、画像の幅および高さ(すなわち、画像サイズ)、映像ビット・レート(すなわち、映像を符号化する速度)、音声ビット・レート、音声サンプル・レート(すなわち、キャプチャする際に音声をサンプリングする速度)、音声トラックの数(例、モノ、ステレオ等)、フレーム・レート(例、fps)、ステージング・サイズ等のパラメータを特定することがある。たとえば、複数のメディア・プレイヤ200が、異なるクオリティー・レベルの同一のメディア・コンテンツ232を個別に要求することができる。たとえば、各メディア・プレイヤ200が、メディア・コンテンツ232の同一の部分(例、同一の時間インデックス)を様々なクオリティー・レベルで要求することができる。たとえば、あるメディア・プレイヤが、自体のコンピューティング・デバイスが十分な計算能力および十分なネットワーク帯域幅を有するがゆえに、HDクオリティー映像を有するストリームレットを要求し、他のメディア・プレイヤが、たとえば、自体のコンピューティング・デバイスが十分なネットワーク帯域幅を有することができないがゆえに、クオリティーのより低いストリームレットを要求することがある。一実施形態では、出願日2005年4月28日の米国特許出願公開第2005/0262257号に記載されるように、メディア・プレイヤ200は、メディア・コンテンツの様々なコピー(例、様々なクオリティー・ストリームレット)からそれぞれの部分を要求することにより、部分境界においてクオリティー・レベルをシフトする。あるいは、メディア・プレイヤ200は、本開示内容の恩恵を受ける当業者に理解されるべき他の技法を使用することにより、それらの部分を要求することもできる。
【0049】
エンコーダ220は、メディア・コンテンツの特定の部分にどのクオリティー・プロファイルが利用可能かを特定することもでき、また、どのくらいのメディア・コンテンツが、たとえばQMXファイルを使用することによる配信に使用可能かを特定することができる。QMXファイルは、利用可能なQSSファイルで表されたメディア・コンテンツの現在の期間を示す。QMXファイルは、メディア・コンテンツに対する目次として機能して、どのQSSファイルが配信のために利用可能か、及び、どこからQSSファイルを取り出すことができるかを示すことができる。QMXファイルは、たとえば、CDN240を介してメディア・プレイヤ200に送ることができる。あるいは、メディア・プレイヤ200が、特定のメディア・コンテンツに対して利用可能なクオリティー・プロファイルを要求することもできる。他の実施形態では、CDNのスケーリング能力を使用することによりこの構成のスケール変えを行って、HTTPトラフィックを複数のメディア・プレイヤ200に配信することができる。たとえば、符号化されたメディア・コンテンツを格納するデータ・センタが、このデータ・センタからの符号化されたメディア・コンテンツを要求する複数のメディア・プレイヤにサービスするためにオリジン・コンテンツ・サーバ210からなるクラスタを有することがある。あるいは、本開示内容の恩恵を受ける当業者には理解されるはずの他の構成を使用することもできる。
【0050】
熟考した一実施形態では、メディア・プレイヤ200は、個々のストリームレット・ファイル(例、QSSファイル)を要求することによりメディア・コンテンツのそれぞれの部分を要求する。メディア・プレイヤ200は、メタデータ・ディスクリプタ・ファイル(例、OMXファイル)に従ってQSSファイルを要求する。メディア・プレイヤ200は、たとえば、提供用のメディア・コンテンツをユーザが選択することに応答して、QMXファイルをフェッチし、また、このQMXファイルを読んで、現在の期間を使用することによるメディア・コンテンツの再生の開始をいつにするか、どこにQSSファイルを要求するかを決定する。QMXファイルは、いつ符号化プロセスを開始するか(例、メディア・コンテンツの開始時刻)を示すUTC(協定世界時)インジケータ等のQMXタイムスタンプと、どれくらい多くのメディア・コンテンツが配信に使用可能かを示す現在の期間(current duration)とを含む。たとえば、QMXタイムスタンプは、符号化プロセスが午後6時に開始され(MDT)、メディア・コンテンツの4500個のQSSファイルが配信に使用可能であることを示すことができる。メディア・プレイヤ200は、コンテンツの期間(ライブ再生)が約15分であると判定し、プログラム開始後の15分間またはこれよりやや前のポイントにおけるプログラムの再生に対応するQSSファイルの要求を開始することを決定することができる。一実施形態では、メディア・プレイヤ200は、メディア・コンテンツ内のオフセットにおける対応するストリームレットをフェッチすることにより、メディア・プレイヤ200がコンテンツの再生を開始すべきメディア・コンテンツ内のポイントを求めることができる。エンコーダがQSSファイルの他の組をコンテンツ・サーバ上に格納する毎に(例、メディア・コンテンツの次の2秒間をそれぞれ異なる10のクオリティー・レベルで表す10個のQSSファイルの組)、QMXファイルはアップデートされ、メディア・プレイヤ200でQMXファイルをフェッチして、インターネットを介して更に2秒間が配信に使用可能であることを示すことができる。メディア・プレイヤ200は、アップデートされるQMXファイルについて定期的にチェックすることができる。あるいは、QMXファイルおよび任意のアップデートをメディア・プレイヤ200に送り込んで、メディア・コンテンツがいつインターネット介した配信に使用可能であるのかを示すこともできる。
【0051】
オリジン・コンテンツ・サーバ210は、CDN240内にあるものとして図示しているが、これがCDN240の外側にあり、やはりCDN240に関連することができることに留意されたい。たとえば、1つのエンティティが、ストリームレットを格納するコンテンツ・サーバを所有、動作することができるが、自体のデバイスが1つまたは複数の別々のエンティティにより所有、動作されることのあるCDN240が、ストリームレットを配信する。
【0052】
メディア・コンテンツは、(電子デバイス(すなわち、クライアント・デバイス)上で動作している)メディア・プレイヤ200により処理されると、メディア・プレイヤ200がイベントの視覚および/または音声表現をメディア・プレイヤ200の視聴者に提供することを可能にするデータであることに留意されたい。メディア・プレイヤ200は、メディア・コンテンツを再生する(たとえば、映像を表示し、音声を再生する)ソフトウェアの1つであってもよく、スタンドアロンのソフトウェア・アプリケーション、またはウェブ・ブラウザ・プラグイン等であってもよく、あるいはブラウザ・プラグインと支援ウェブ・ページ・ロジック(supporting web page logic)との組合せ等であってもよい。たとえば、イベントは、スポーツ・イベント等のテレビ放送、生演奏または録画もしくは録音された演奏、生の報道または録画もしくは録音された報道等であってもよい。このコンテキストでのライブ・イベントまたは予定されたテレビ・イベントとは、スケジュールに従って特定の時点で再生されるように予定されたメディア・コンテンツを指す。ライブ・イベントは、その中の重要なイベントのスローモーション・クリップ等(例、リプレイ)の、ライブ・メディア・コンテンツと混合されたプレレコ型のコンテンツを有することもあるが、こうしたコンテンツは、生のテレビ放送の合間に再生される。本明細書に記載の実施形態は、ビデオ・オン・デマンド(VOD)のストリーミングに使用することもできることに留意されたい。
【0053】
図3Aは、エンコーダ220をそれぞれが用いた複数のホスト314を含めた符号化システム320を用いることのできるコンピューティング環境300の他の実施形態を示す概略ブロック図である。一実施形態では、符号化システム320が、マスタ・モジュール322および複数のホスト・コンピューティング・モジュール(以降、「ホスト」)314を含む。図2に関連して説明したように、ホスト314はそれぞれエンコーダ220を用いる。ホスト314は、1つまたは複数のパーソナル・コンピュータ、サーバ等に実装することができる。更なる実施形態では、ホスト314は、たとえば、単一のコンピュータに差し込むカード等の専用のハードウェアであることがある。
【0054】
一実施形態では、マスタ・モジュール(以降、「マスタ」)322は、ストリームレット生成システム301から生のストリームレット312を受け取るように構成されるが、このストリームレット生成システム301は、メディア・コンテンツを発行者310から受け取る受取モジュール302と、メディア・コンテンツを生のストリームレット312にセグメント化するストリームレット・モジュール303とを含む。マスタ・モジュール322は、生ストリームレット312を処理のためにステージする。他の実施形態では、マスタ322は、符号化および/または圧縮されたソース(source)・ストリームレットを受け取り、各ソース・ストリームレットを展開して生ストリームレットを作り出すことができる。本明細書で使用するように、用語「生ストリームレット」は、圧縮されていないストリームレット312、または、著しくクオリティーを失うことなくサイズを実質的に縮減させるために軽く圧縮されたストリームレット312のことを指す。軽く圧縮した生ストリームレットは、より急速により多くのホストへ送信することが可能である。各ホスト314は、マスタ322に結合されており、マスタ322から符号化すべき生ストリームレットを受け取るように構成される。一例では、ホスト314は、同一の時間インデックスおよび同一の固定時間幅ならびに様々なビット・レートを有する複数のストリームレットを生成する。一実施形態では、各ホスト314は、マスタ322から送られる生ストリームレット312から符号化済ストリームレットの組306を生成するように構成され、ただし、組306の符号化済ストリームレットは、メディア・コンテンツの同一部分を、サポートされたビット・レート毎に表す(すなわち、各ストリームレットが、使用可能なクオリティー・プロファイルのうちの1つに従って符号化される)。あるいは、符号化に要する時間を減らすために、各ホスト314を、サポートされたビット・レートのうちの1つで単一の符号化済ストリームレットを作り出すように確保することもできる。
【0055】
符号化が完了すると、ホスト314は、組306をマスタ322に戻し、これにより、符号化システム320は、組306をストリームレット・データベース308に格納することができる。マスタ322は更に、符号化ジョブをホスト314に割り当てるように構成される。一実施形態では、各ホスト314は、符号化ジョブ完了ビッド(bid)(以降、「ビッド」)をマスタ322に提示するように構成される。マスタ322は、ホスト314からのビッドに応じて符号化ジョブを割り当てる。各ホスト314は、複数のコンピューティング変数に応じてビッドを生成するが、これらコンピューティング変数には、現在の符号化ジョブ完了パーセンテージ、平均ジョブ完了時間、プロセッサ速度、物理的メモリ容量等が含まれることがあるが、これらに限定されない。
【0056】
たとえば、ホスト314は、過去のパフォーマンス履歴に基づいて、ホスト314が符号化ジョブを15秒で完了させることができるであろうことを示すビッドを提示することができる。マスタ322は、複数のビッドから最善のビッドを選択し、これに続いて、最善のビッドを伴うホスト314に符号化ジョブを提示するように構成される。したがって、説明している符号化システム320は、各ホスト314が同一のハードウェアを有することが必要でなく、有益なことに、ホスト314の使用可能な計算能力を活用する。あるいは、マスタ322は、早いものから順にホスト314を選択するか、または、特定の符号化ジョブに適したものと考えられる他のアルゴリズムに基づいてホスト314を選択する。
【0057】
1つのストリームレットを符号化するのに要する時間は、ホスト314の計算能力、および、オリジナルのメディア・コンテンツのコンテンツ・ファイルの符号化要件に依存する。符号化要件の例には、2パスまたは複数パス符号化、様々なビット・レートの複数のストリームが含まれことがあるが、これらに限定されない。本発明の利点の1つは、ライブ・コンテンツ・ファイルに2パス符号化を行うことができることである。通常は、2パス符号化を行うためには、従来技術のシステムは、符号化の前にコンテンツ・ファイルが完全になるのを待たなければならない。しかし、ストリームレットは、必要と思われる回数だけ符号化することができる。ストリームレットは、期間の小さな(例、2秒間)密封されたメディア対象なので、初めのストリームレットがキャプチャされると、ライブ・イベントに対して複数パス符号化を開始することができる。
【0058】
一実施形態では、エンコーダ220は、オリジナルのコンテンツ・ファイルを複数のソース・ストリームレットにセグメント化し、たとえば、テレビ番組が終了するのを待つことなく、複数のコピー(例、ストリーム)の2パス符号化を対応する生ストリームレット312毎に行う。よって、ストリームレット生成システム301がオリジナルのコンテンツ・ファイルのキャプチャを開始するすぐ後に、ウェブ・サーバ316は、インターネットを介してストリームレットをストリーミングすることが可能である。発行者310から送信されるライブ・ブロードキャストとコンテンツが使用可能になることとの間の遅延は、ホスト314の計算能力に依存する。
【0059】
図3Bは、一実施形態によるストリームレット312の並行符号化の一実施形態を示す概略ブロック図である。一例では、ストリームレット生成システム301が、オリジナルのコンテンツ・ファイルのキャプチャを開始し、第1のストリームレット312aを生成し、これを符号化システム320に渡す。符号化システム320は、複数のストリームレット304a(304a1、304a2、304a3等は、互いに異なるビット・レートのストリームレット304を表す)からなる第1の組306aを生成するのに、たとえば10秒間かかることがある。符号化システム320に関連して上で説明したように、生のストリームレット312または軽く符号化したストリームレット312を処理するのに要する時間幅を視覚的に示すために、図3Bでは、符号化プロセスを概括的にブロック308として示している。符号化システム320は、2つ以上のストリームレット312を同時に処理することができ、ストリームレット生成モジュール301からストリームレットが到着すると、ストリームレットの処理が開始されることとなる。
【0060】
第1のストリームレット312aを符号化するのに必要な10秒の間に、ストリームレット・モジュール404は、符号化すべき更なる5つの2秒間ストリームレット、ストリームレット312b、312c、312d、312e、312fを生成し、マスタ322は、対応する生ストリームレットを作成し、これをステージする。第1の組306aが使用可能になると、その2秒後に次の組306bが使用可能になり、以降この流れが繰り返される。こうして、オリジナルのコンテンツ・ファイルは、様々なクオリティー・レベルで符号化されてインターネットを介してストリーミングされ、ライブで現れる。本明細書で10秒間の遅延が与えられているのは、例としてのみのことである。符号化システム320の処理能力を増大させるために、複数のホスト314を符号化システム320に加えることができる。高CPU性能システムを加えることにより、あるいは、複数の低性能システムを加えることにより、遅延をほぼ感知できないレベルにまで短くすることができる。
【0061】
ストリームレットに適用されるどんな特定の符号化スキームも完全になるのに、ストリームレット自体の時間幅より長く時間がかかる可能性がある。たとえば、2秒間のストリームレットに対して、クオリティーの極めて高い符号化を終えるのに5秒間かかることがある。あるいは、各ストリームレットについて要する処理時間が、ストリームレットの時間幅よりも小さいこともある。しかし、連続したストリームレットのオフセット並行符号化は、符号化システム320により規則正しい間隔で符号化が行われる(これらのストリームレットが符号化システム320に提示される間隔にマッチする。例えば、2秒)ので、符号化システム320の出力タイミングが、非符号化ストリームレット312のリアルタイムでの提示速度より遅れることはない。
【0062】
ここで図3Aを参照すると、マスタ322およびホスト314は、図示のように、単一のローカル・エリア・ネットワーク内に位置することができ、言い換えると、ホスト314を、マスタ322に物理的に近接させることができる。あるいは、ホスト314は、インターネットまたは他の通信ネットワークを介して、マスタ322から符号化ジョブを受け取ることもできる。たとえば、複数のホストをセットアップするのが困難な遠隔地でのライブでのスポーツ・イベントを考えられたい。この例では、マスタは、ストリームレットのオンラインでの発行前に符号化も軽い符号化も行わない。それゆえに、ホスト314は、それらのストリームレットを取り出し、上で説明したように、これらを複数のビット・レート組306に符号化する。
【0063】
さらに、符号化ジョブを再始動することおよび/またはストリームレットの発行を中断することなく、ホスト314を、符号化システム320に動的に追加するまたは符号化システム320から動的に取り除くことができる。あるホスト314がクラッシュまたは何らかの故障を起こした場合、その符号化ワークは、シンプルに他のホストに再度割り当てられる。
【0064】
一実施形態では、符号化システム320を、特定の再生プラットフォームに特有のストリームレットを作り出すように構成することもできる。たとえば、単一の生ストリームレットについて、単一のホスト314が、パーソナル・コンピュータ再生のための様々なクオリティー・レベル向けのストリームレット、独自の異なるコーデックを有する複数の携帯電話での再生向けのストリームレット、(プログラミング・ガイドのような)ストリームのサムネイル表示のみでの再生時の使用向けの映像専用の小ストリームレット、及びアーカイビングでの使用向けの非常に高クオリティーなストリームレットを作り出すことができる。
【0065】
図示の実施形態では、コンピューティング環境340は、コンテンツ管理システム(CMS)300を含む。CMS340は、たとえばストリームレット・データベース308を使用することにより、符号化済メディア・コンテンツ220を管理し、発行者がタイムライン(本明細書では仮想タイムライン(QVT)と称する)を生成、改変して、メディア・コンテンツ232の再生を計画することを可能にする発行システムである。QVTは、視聴者向けの再生リストを規定し、いつメディア・プレイヤ200がメディア・コンテンツを再生すべきかを示すことのできるメタデータである。たとえば、タイムラインは、メディア・コンテンツ232の開始時刻と、メディア・コンテンツ232の現在の期間(例、メディア・コンテンツのうち配信に使用することのできる部分の量)とを指定して、スケジュールに従ってメディア・イベントを再生することを可能にすることができる。上の例では、エンコーダ220が、ストリーム(例、メディア・コンテンツ232のコピー)についての情報でCMS240をアップデートして、ストリームのうちの特定の部分(例、ストリームレット)がCDN240に関連するオリジン・コンテンツ・サーバ210に送られたことを示す。この実施形態では、CMS340は、エンコーダ220から、たとえば以下の中のいずれかの情報を受け取る。それは、暗号化キー/エンコーダ220の組が符号化済メディア・コンテンツ232の一部分をオリジン・コンテンツ・サーバ210に送ったということを示すアベイラビリティ情報/メディア・コンテンツ232の特定部分に対してどのクオリティー・レベルが利用可能であるかを示す情報/たとえば、コンテンツの放送日、タイトル、女優、男優、開始インデックス、終了インデックス、権利所有発行者データ、暗号化レベル、コンテンツ所要時間、エピソードまたはプログラム名、発行者を含むメタデータ/使用可能なメニュー、サムネイル、サイドバー、広告、早送り、巻戻し、一時停止、再生等のエンド・ユーザのナビゲーション環境に使用可能なツール/フレーム・サイズ、音声チャネル情報、コーデック、サンプル・レート、フレーム・パーサ情報を含めたビット・レート値である。あるいは、エンコーダ220は、上で述べた情報より多くの情報を送ることも、これより少ない情報を送ることもある。
【0066】
図示の実施形態では、コンピューティング環境300は、デジタル権利管理能力をシステムに提供するデジタル権利管理サーバ(DRM)350を含む。DRM350は、エンド・ユーザの認証によりこのエンド・ユーザに暗号化キーを供給するように更に構成される。一実施形態では、DRMサーバ350は、ログイン証明に基づいてユーザを認証するように構成される。当業者には、DRAMサーバ350がエンド・ユーザを認証することのできる異なる様々な方法が理解されるであろうが、こうした方法には、暗号化されたクッキー、ユーザ・プロファイル、地理的位置、ソース・ウェブサイト等が含まれるが、これらに限定されない。
【0067】
他の実施形態では、コンピューティング環境300が、ディレクトリ・サーバ、管理サーバ、メッセージング・サーバ、統計サーバ、ネットワーク・インフラ・オペレータ(例、ISP)のデバイス等の他のデバイスを含むことがある。
【0068】
図4は、コーデック適用フレーム・サイズに従ってメディア・コンテンツの音声を符号化して、このメディア・コンテンツの固定時間映像部分を有するコンテンツ・ファイル間で隙間のない音声フレームをスプリットする方法400の一実施形態の流れ図である。方法400は、ハードウェア(回路、専用論理回路等)、(汎用コンピュータ・システムまたは専用マシン上で実行されるような)ソフトウェア、または、ファームウェア(例、組込みソフトウェア)を含むことのある、あるいは、これらの要素の任意の組合せを含むことのある処理ロジック(processing logic)により実行される。一実施形態では、方法400は、図2および3Aのエンコーダ220により実行される。他の実施形態では、これら方法のオペレーションのいくつかが、図2の固定フレーム音声エンコーダ224および音声スプリッティング・マルチプレクサ228により実行されることもある。
【0069】
図4では、処理ロジックが、サンプル・オフセットを0に初期化することにより開始され(ブロック402)、メディア・コンテンツの音声の生部分を受け取る(ブロック404)。処理ロジックは、固定フレーム音声コーデックを使用することにより、音声の生部分を符号化し(ブロック406)、音声コーデックにより出力される符号化済音声フレームをバッファリングする(ブロック408)。処理ロジックは、ストリームレットを満たすのに十分な音声フレームが存在するかどうかを判定する(ブロック410)。この実施形態では、本明細書で説明するように、各ストリームレットが、期間の固定された映像フレームも含む。ストリームレットを満たすのに十分な音声フレームが存在しない場合、処理ロジックは、ブロック404に戻り、音声の次の生部分を受け取り、この音声の生部分を符号化し、ブロック408においてこれらをバッファリングする。処理ロジックは、ブロック410において、ストリームレットを満たすのに十分な音声フレームがあると判断した場合、音声フレームを音声スプリッティング・マルチプレクサに送り、バッファから送信フレームを除去する(ブロック412)。処理ロジックは、サンプル・オフセットをアップデートし(ブロック414)、メディア・コンテンツが終了かどうかを判定する(ブロック416)。ブロック416においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック404に戻って、音声の他の生部分を受け取る。そうでなければ、本方法は終了する。
【0070】
図2について上で説明したように、処理ロジックは、エンコーダ220のコンポーネントの様々なオペレーションを実行するように構成することができる。たとえば、方法400は、固定フレーム音声エンコーダ224により実行されることもあるが、固定フレーム音声エンコーダ224は、スプリッタ222から生音声233を受け取り、音声フレームを符号化し、符号化済音声フレーム237を音声フレーム・バッファ225内に格納する。この実施形態では、ブロック402〜408のオペレーションは、固定フレーム音声エンコーダ224が実行することができ、ブロック410〜416のオペレーションは、音声スプリッティング・マルチプレクサ228が実行することができる。あるいは、こうしたオペレーションは、エンコーダ220のコンポーネントの他の組合せにより実行することもできる。
【0071】
図5A〜5Cは、固定時間映像部分とコーデック適用フレーム・サイズを有する隙間のない音声フレームとを伴うコンテンツ・ファイルの生成の一実施形態の流れ図である。方法500、550、570は、ハードウェア(回路、専用論理回路等)、(汎用コンピュータ・システムまたは専用マシン上で実行されるような)ソフトウェア、または、ファームウェア(例、組込みソフトウェア)を含むことのある、あるいは、これらの要素の任意の組合せを含むことのある処理ロジックにより実行される。一実施形態では、方法500、550、570は、図2および3Aのエンコーダ220により実行される。他の実施形態では、方法500が、固定フレーム音声エンコーダ224に実行され、方法550が、固定時間映像エンコーダ226に実行され、方法570が、音声スプリッティング・マルチプレクサ228に実行される。あるいは、方法500、550、570のオペレーションは、エンコーダ220のコンポーネントの他の組合せにより実行することもできる。
【0072】
図5Aでは、方法500の処理ロジックが、音声の生部分を受け取ることにより開始される(ブロック502)。処理ロジックは、コーデック適用フレーム・サイズに従って、音声の生部分を符号化し(ブロック504)、符号化済音声フレームをバッファリングする(ブロック506)。処理ロジックは、メディア・コンテンツが終了かどうかを判定する(ブロック508)。ブロック508においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック502に戻って、音声の他の生部分を受け取る。そうでなければ、本方法は終了する。
【0073】
図5Bでは、方法550の処理ロジックが、映像の生部分を受け取ることにより開始される(ブロック552)。処理ロジックは、フレーム・レートに従って、映像の生部分を符号化し(ブロック554)、符号化済映像フレームをバッファリングする(ブロック556)。処理ロジックは、メディア・コンテンツが終了かどうかを判定する(ブロック558)。ブロック558においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック552に戻って、映像の他の生部分を受け取る。そうでなければ、本方法は終了する。
【0074】
図5Cでは、方法570の処理ロジックが、符号化済音声フレームをバッファから受け取り(ブロック572)、映像フレームをバッファから受け取ることにより開始される(ブロック574)。処理ロジックは、ストリームレットを生成し(ブロック576)、それをオリジン・コンテンツ・サーバに送る(ブロック578)。処理ロジックは、メディア・コンテンツが終了かどうかを判定する(ブロック580)。ブロック580においてメディア・コンテンツが終了でなければ、処理ロジックは、ブロック572に戻る。そうでなければ、本方法は終了する。
【0075】
一実施形態では、処理ロジックは、ブロック576で、ストリームレットを満たすのに必要な映像フレームの数、および、ストリームレットを満たすのに必要な音声フレームの数を求める。一実施形態では、ストリームレット毎の映像フレームの数は、固定時間幅に従っておおよそ固定される。たとえば、フレーム・レートが30fpsの場合、2秒間のストリームレットに60フレームが存在する。ただし、実際には、映像は常に正確に30fpsというわけではなく、むしろ29.97fpsであることに留意されたい。よって、いくつかの2秒間ストリームレットは59フレームを有することがあり、いくつかは60フレーム有することがあり、いくつかは61フレームの場合でさえある。ストリームレット内の各フレームは、ストリームレットの開始に対する提供時間を有する。よって、あるストリームレットが30〜32秒を表す場合、そのストリームレット内の初めのフレームは、0msではなく6msの提供時間を有することがある。このフレームは、ストリームの開始から30006msで表示されるはずである。ライブの場合、計算リソースが限られ、エンコーダがライブの流れについていけない場合、エンコーダは、キャッチアップするためにフレームを落とすことがある。したがって、いくつかのストリームレットは映像内に隙間を有することがあり、これが、ストリームレット毎のフレーム数のばらつきのもう1つの原因となる場合がある。あるいは、24fps等、30fps以外の他のフレーム・レートを使用することもできる。ストリームレット毎の音声フレームの数は固定されない。音声フレームの数は、音声スプリッティング・マルチプレクサ228について先に説明したオペレーションで求まる。処理ロジックは、現在のストリームレットを満たすのに十分な隙間のないフレームがバッファ内に格納されているかどうかを判定する。音声フレームが十分にない場合、処理ロジックは、音声の次の部分、たとえば、本明細書で説明するように、音声の隙間のないフレーム1つを次の部分から受け取り、符号化する。いくつかのケースでは、ストリームレット内の音声フレームの期間が、固定時間幅よりも大きいことがあり、他のケースでは、音声フレームの期間が、固定時間幅よりも小さいことがある。
【0076】
図7は、一実施形態による音声スプリッティング用のコンピュータ・システム700の例示的形態のマシンの図である。コンピュータ・システム700内で、本明細書で議論する音声スプリッティング方法論のうちの1つまたは複数のいずれかをマシンに行わせる命令の組を実行することができる。代替実施形態では、LAN、イントラネット、エクストラネット、またはインターネット内でマシンを他のマシンに接続(例、ネットワーク化)することができる。このマシンは、クライアント-サーバ・ネットワーク環境内でサーバまたはクライアント・マシンの能力内で動作することも、ピア・ツー・ピア(分散型)・ネットワーク環境内でピア・マシンとして動作することもできる。このマシンは、PC、タブレットPC、STB、PDA、携帯電話、ウェブ・アプライアンス、サーバ、ネットワーク・ルータ、スイッチまたはブリッジ、あるいは、マシンがとるべきアクションを指定する(連続した、またはそれ以外の)命令の組を実行することの可能な任意のマシンとすることができる。さらに、単一のマシンのみ図示しているが、音声スプリッティングのオペレーションについて本明細書に記載する上記の方法400、500、550、570等の本明細書で議論する方法論のうちの1つまたは複数のいずれかを行うために、個別にまたは共同して1組の(または複数組の)命令を実行する複数のマシンの任意の集合も、用語「マシン」に含まれるものとする。一実施形態では、コンピュータ・システム700は、上で説明したようにエンコーダ220または符号化システム320に実装することのできる様々なコンポーネントを表す。あるいは、エンコーダ220または符号化システム320が、コンピュータ・システム700内に図示しているものより多くのコンポーネント、またはこれより少ないコンポーネントを含むこともある。
【0077】
この例示的コンピュータ・システム700は、処理デバイス702、メイン・メモリ704(例、ROM(リードオンリ・メモリ)、フラッシュ・メモリ、SDRAM(シンクロナスDRAM)やDRAM(RDRAM)等のDRAM(ダイナミック・ランダム・アクセス・メモリ)等)、スタティック・メモリ706(例、フラッシュ・メモリ、SRAM(スタティック・ランダム・アクセス・メモリ)等)、データ記憶デバイス716を含み、これら要素は、それぞれバス730を介して互いに通信を行っている。
【0078】
処理デバイス702は、マイクロプロセッサや中央処理ユニット等の1つまたは複数の汎用処理デバイスを表す。より具体的には、処理デバイス702は、CISC(複合命令セット・コンピューティング)マイクロプロセッサ、RISC(縮小命令セット・コンピューティング)マイクロプロセッサ、VLIW(超長命令語)マイクロプロセッサ、または、他の命令の組を実装するプロセッサもしくは命令の組の組合せを実装するプロセッサでもよい。処理デバイス702は、ASIC(特定用途向け集積回路)、FPGA(フィールド・プログラマブル・ゲート・アレイ)、DSP(デジタル信号プロセッサ)、ネットワーク・プロセッサ等の1つまたは複数の特別用途処理デバイスであってもよい。処理デバイス702は、本明細書で議論するオペレーションおよびステップを実施するための処理ロジック(例、音声スプリッティング726)を実行するように構成される。
【0079】
コンピュータ・システム700は、ネットワーク・インタフェース・デバイス722を更に含むこともある。コンピュータ・システム700は、映像表示ユニット710(例、液晶ディスプレイ(LCD)または陰極線管(CRT))、アルファニューメリック入力デバイス712(例、キーボード)、カーソル制御デバイス714(例、マウス)、信号生成デバイス720(例、スピーカ)を含むこともある。
【0080】
データ記憶デバイス716は、本明細書に記載する方法論または機能のうちの1つまたは複数を実現する1組または複数の組の命令(例、音声スプリッティング726)が記憶されるコンピュータ可読記憶媒体724を含むことがある。音声スプリッティング726は、コンピュータ・システム700による実行中、メイン・メモリ704および/または処理デバイス702内に完全にまたは少なくとも部分的に含まれるように存在することがあるが、これらメイン・メモリ704および処理デバイス702もまた、コンピュータ可読記憶媒体を構成する。さらに、ネットワーク・インタフェース・デバイス722により、音声スプリッティング726を、ネットワークを介して送ることまたは受け取ることができる。
【0081】
一例示的実施形態では、コンピュータ可読記憶媒体724を単一の媒体として図示しているが、用語「コンピュータ可読媒体」には、1組または複数組の命令を記憶する単一または複数の媒体(例、集中もしくは分散データベース、ならびに/または関連キャッシュおよびサーバ)も含まれることがあるとみなされたい。また、用語「コンピュータ可読記憶媒体」には、マシンによる実行用の命令の組を記憶することが可能で、本実施形態の方法論のうちの1つまたは複数をマシンに実行させる任意の媒体も含まれるものとする。したがって、用語「コンピュータ可読記憶媒体」には、ソリッド・ステート・メモリ、光学式媒体、磁気媒体、または、命令を記憶するための他の種類の媒体が含まれることとするが、これらに限定されない。用語「コンピュータ可読伝送媒体」には、マシンによる実行用の命令の組を送信して、本実施形態の方法論のうちの1つまたは複数をマシンに行わせることの可能な任意の媒体が含まれるものとする。
【0082】
音声スプリッティング・モジュール732、それぞれのコンポーネント、および(たとえば、図2および3Aに関連して)本明細書に記載する他の特徴を、分離したハードウェア・コンポーネントとして実現すること、または、ASICS、FPGA、DSP、これらと同様のデバイス等のハードウェア・コンポーネントの機能内に集積化することができる。さらに、音声スプリッティング・モジュール732は、ハードウェア・デバイス内のファームウェアまたは機能回路として実現することもできる。さらに、音声スプリッティング・モジュール732は、任意の組合せハードウェア・デバイスおよびソフトウェア・コンポーネント内で実現することもできる。
【0083】
説明目的で、上記の記載を特定の実施形態に関連して提供してきた。しかし、上記の例示的議論は、網羅的になることを意図しておらず、開示した厳密な形態に本発明を限定することを意図していない。上記の教示内容に鑑みて、多くの修正形態および変形形態が考えられる。本発明の原理およびその実用的応用例を最もうまく説明するために、上記の実施形態を選択し説明したが、これにより、当業者が本発明と様々な修正形態を伴う様々な実施形態とを、企図される特定の用途に適した形で利用することが可能になる。
【特許請求の範囲】
【請求項1】
オペレーションを実行するようにプログラムされたコンピューティング・システムに実行される方法であって、
音声および映像を含むメディア・コンテンツを受け取ることと、
前記映像をフレーム・レートに従って符号化することと、
前記音声を、コーデック適用フレーム・サイズに従って符号化することと、
複数のコンテンツ・ファイルを生成することであって、前記複数のコンテンツ・ファイルのそれぞれが、前記映像のうちで固定時間幅を有する符号化済部分と、前記音声のうちで、前記コーデック適用フレーム・サイズを有する複数の隙間のない音声フレームを有する符号化済部分とを含むことと、
を含む方法。
【請求項2】
前記複数の音声フレームの最後が、0で埋められることがない、
請求項1に記載の方法。
【請求項3】
前記メディア・コンテンツを前記音声および前記映像にスプリットすることを更に含み、
前記映像を符号化することが、前記固定時間幅に従って映像コーデックを使用することにより前記映像を符号化することを含み、
前記音声を符号化することが、前記コーデック適用フレーム・サイズに従って音声コーデックを使用することにより前記音声を符号化することを含む、
請求項1に記載の方法。
【請求項4】
前記音声の符号化済フレームをバッファリングすることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要な符号化済フレーム数を求めることであって、前記フレーム数が、前記複数のファイルのうち前記現在のファイルを満たすのに必要なサンプル数を、前記コーデック適用フレーム・サイズで割った数以上の最小の整数であることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに十分な前記符号化済フレームがバッファリングされたかどうかを判定することと、
前記符号化済フレームが十分にバッファリングされている場合、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
前記符号化済フレームが十分にバッファリングされていない場合、前記音声の追加のフレームをバッファリングし、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを、前記フレーム数のフレームおよび前記追加のフレームで満たすことと、
を更に含む請求項1に記載の方法。
【請求項5】
十分な符号化済フレームがバッファリングされたかどうかを前記判定することが、
バッファリングされたフレームの数と、前記コーデック適用フレーム・サイズとを乗算することと、
前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを、前記乗算の積に加えることと、
その和が、前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイルを満たすのに必要なサンプルの数以上であるかどうかを判定することと、
を含む
請求項4に記載の方法。
【請求項6】
前記複数のコンテンツ・ファイルのうちの次のコンテンツ・ファイルについてサンプル・オフセットがあればこれを求めることを更に含む、
請求項4に記載の方法。
【請求項7】
前記サンプル・オフセットを求めることが、
前記符号化済フレームの数に前記コーデック適用フレーム・サイズを掛け、ここから、前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイルを満たすのに必要なサンプルの数を引き、前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからの前記サンプル・オフセットがあればこれを足すことを含む、
請求項6に記載の方法。
【請求項8】
前記音声の符号化済フレームをバッファリングすることを更に含み、
前記複数のコンテンツ・ファイルを前記生成することが、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を算出することと、
前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルに必要なフレームの数を算出することと、
前記サンプルの数が前記コーデック適用フレーム・サイズで均等に割り切れない場合、前記フレーム数のフレームにフレームを追加することと、
前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
を含む、
請求項1に記載の方法。
【請求項9】
前記音声の符号化済フレームをバッファリングすることを更に含み、
前記複数のコンテンツ・ファイルを前記生成することが、
前記固定時間幅をサンプリング・レートに掛け、これに、前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを足すことにより、前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を算出することと、
前記サンプルの数を、前記コーデック適用フレーム・サイズで割ることにより、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを満たすのに必要なフレームの数を算出することと、
前記除算の余りが0の場合、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
前記除算の余りが0より大きい場合、前記フレーム数を1だけインクリメントし、前記インクリメントしたフレーム数のフレームで前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを満たすことと
を含む、
請求項1に記載の方法。
【請求項10】
前記複数のコンテンツ・ファイルを前記生成することが、
前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを満たすのに必要な前記サンプルの数に戻すために、前記フレームの数と、前記コーデック適用フレーム・サイズとを掛けることと、
前記サンプルの数を前記サンプリング・レートで割ることにより、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルの前記音声の期間を算出することと、
前記固定時間幅から前記期間を引くことにより、前記複数のコンテンツ・ファイルのうちの次のコンテンツ・ファイルについてのプレゼンテーション・オフセットを求めることと、
前記フレームの数に前記コーデック適用フレーム・サイズを掛け、ここから、前記複数のコンテンツ・ファイルのうちの前記第1のコンテンツ・ファイルを満たすのに必要な前記サンプルの数を引き、前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからの前記サンプル・オフセットがあればこれを足すことにより、前記複数のコンテンツ・ファイルのうちの前記次のコンテンツ・ファイルについての前記サンプル・オフセットをアップデートすることと
を更に含む、
請求項9に記載の方法。
【請求項11】
前記受け取ることが、前記メディア・コンテンツを複数の生のストリームレットとして受け取ることを含み、
前記複数の生のストリームレットのそれぞれが、前記メディア・コンテンツのうちで前記固定時間幅を有する部分を含む、
請求項1に記載の方法。
【請求項12】
前記メディア・コンテンツを前記受け取ることが、
前記複数の生のストリームレットのうちの第1の生のストリームレットおよび前記複数の生のストリームレットのうちの第2の生のストリームレットを受け取ることと、
前記第1の生のストリームレットの前記音声および前記映像をスプリットし、前記第2の生のストリームレットの前記音声および前記映像をスプリットすることと、
を含み、
前記映像を前記符号化することが、
前記第1の生のストリームレットの前記映像を符号化することであって、前記第1の生のストリームレットの前記映像が、前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイル内に格納されることと、
前記第2の生のストリームレットの前記映像を符号化することであって、前記第2の生のストリームレットの前記映像が、前記複数のコンテンツ・ファイルのうちの第2のコンテンツ・ファイル内に格納されることと、
を含み、
前記音声を前記符号化することが、
前記第1の生のストリームレットの前記音声を、第1の複数の音声フレームに符号化することと、
前記第1の複数の音声フレームをバッファリングすることと、
前記第1のコンテンツ・ファイルを満たすのに十分なフレームがバッファリングされたかどうかを判定することと、
前記第1のコンテンツ・ファイルを満たすのに十分なフレームがバッファリングされていない場合、前記第2の生のストリームレットの前記音声を、第2の複数の音声フレームに符号化し、前記第2の複数の音声フレームをバッファリングすることと、
前記第1のコンテンツ・ファイルを満たすのに十分なフレームがバッファリングされている場合、前記バッファリングされた音声フレームを前記第1のコンテンツ・ファイル内に格納することと、
を含む、
請求項11に記載の方法。
【請求項13】
前記固定時間幅が約2秒間であり、
前記音声が、1秒間に約48000サンプルでサンプリングされ、
前記コーデック適用フレーム・サイズが、1フレームにつき1024サンプルであり、
前記複数のコンテンツ・ファイルのうちの初めの3つのコンテンツ・ファイルの音声部分がそれぞれ、94の音声フレームを含み、
前記複数のコンテンツ・ファイルのうちの第4のコンテンツ・ファイルの音声部分が、93の音声フレームを含み、
前記第4のコンテンツ・ファイルの映像部分がそれぞれ、約60の映像フレームを含む、
請求項1に記載の方法。
【請求項14】
前記固定時間幅が約2秒間であり、
前記音声が、1秒間に約44100サンプルでサンプリングされ、
前記コーデック適用フレーム・サイズが、1フレームにつき1024サンプルであり、
前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイルの音声部分が、87の音声フレームを含み、前記複数のコンテンツ・ファイルのうちの第2のコンテンツ・ファイルが、86の音声フレームを含む、
請求項1に記載の方法。
【請求項15】
前記コーデック適用フレーム・サイズが、1フレームにつき2048サンプルである、
請求項1に記載の方法。
【請求項16】
映像および音声を含むメディア・コンテンツを受け取る手段と、
前記映像をフレーム・レートに従って符号化する手段と、
前記音声を固定フレーム・サイズに従って符号化する手段と、
前記映像を複数の部分にセグメント化する手段であって、前記映像の各部分が、別々のコンテンツ・ファイル内に格納される手段と、
境界アーチファクトを導入することなく、前記音声を前記別々のコンテンツ・ファイルにスプリットする手段と、
を備える装置。
【請求項17】
前記コンテンツ・ファイルのそれぞれについて、サンプル・オフセットがあればこれを記録する手段と、
前記コンテンツ・ファイルのそれぞれについて、プレゼンテーション・オフセットがあればこれを記録する手段と、
を更に備える請求項16に記載の装置。
【請求項18】
音声および映像を含むメディア・コンテンツを受け取り、前記音声および前記映像をスプリットするためのスプリッタと、
前記スプリッタから前記映像を受け取るように結合され、前記映像をフレーム・レートに従って符号化するための映像エンコーダと、
前記スプリッタから前記音声を受け取るように結合され、前記音声を、コーデック適用フレーム・サイズに従って符号化するための音声エンコーダと、
複数のコンテンツ・ファイルを生成するための音声スプリッティング・マルチプレクサであって、前記複数のコンテンツ・ファイルのそれぞれが、前記映像のうちで固定時間幅を有する符号化済部分と、前記音声のうちで、前記コーデック適用フレーム・サイズを有する複数の隙間のない音声フレームを有する符号化済部分とを含む、音声スプリッティング・マルチプレクサと、
を含むコンピューティング・デバイス
を備える装置。
【請求項19】
前記複数の音声フレームの最後が、0で埋められることがない、
請求項18に記載の装置。
【請求項20】
前記コンピューティング・デバイスが、前記音声の符号化済フレームをバッファリングするための音声フレーム・バッファを更に備える、
請求項18に記載の装置。
【請求項21】
コンピューティング・デバイスに実行されると前記コンピューティング・デバイスにある方法を行わせる命令を格納するコンピュータ可読記憶媒体であって、
前記方法が、
音声および映像を含むメディア・コンテンツを受け取ることと、
前記映像をフレーム・レートに従って符号化することと、
前記音声を、コーデック適用フレーム・サイズに従って符号化することと、
複数のコンテンツ・ファイルを生成することであって、前記複数のコンテンツ・ファイルのそれぞれが、前記映像のうちで固定時間幅を有する符号化済部分と、前記音声のうちで、前記コーデック適用フレーム・サイズを有する複数の隙間のない音声フレームを有する符号化済部分とを含むことと、
を含む、
コンピュータ可読記憶媒体。
【請求項22】
前記方法が、
前記音声の符号化済フレームをバッファリングすることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要な符号化済フレーム数を求めることであって、前記フレーム数が、前記複数のファイルのうちの前記現在のファイルを満たすのに必要なサンプル数を、前記コーデック適用フレーム・サイズで割った数以上の最小の整数であることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに十分な前記符号化済フレームがバッファリングされたかどうかを判定することと、
前記符号化済フレームが十分にバッファリングされている場合、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
前記符号化済フレームが十分にバッファリングされていない場合、前記音声の追加のフレームをバッファリングし、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを、前記フレーム数のフレームおよび前記追加のフレームで満たすことと、
を更に含む、
請求項21に記載のコンピュータ可読記憶媒体。
【請求項1】
オペレーションを実行するようにプログラムされたコンピューティング・システムに実行される方法であって、
音声および映像を含むメディア・コンテンツを受け取ることと、
前記映像をフレーム・レートに従って符号化することと、
前記音声を、コーデック適用フレーム・サイズに従って符号化することと、
複数のコンテンツ・ファイルを生成することであって、前記複数のコンテンツ・ファイルのそれぞれが、前記映像のうちで固定時間幅を有する符号化済部分と、前記音声のうちで、前記コーデック適用フレーム・サイズを有する複数の隙間のない音声フレームを有する符号化済部分とを含むことと、
を含む方法。
【請求項2】
前記複数の音声フレームの最後が、0で埋められることがない、
請求項1に記載の方法。
【請求項3】
前記メディア・コンテンツを前記音声および前記映像にスプリットすることを更に含み、
前記映像を符号化することが、前記固定時間幅に従って映像コーデックを使用することにより前記映像を符号化することを含み、
前記音声を符号化することが、前記コーデック適用フレーム・サイズに従って音声コーデックを使用することにより前記音声を符号化することを含む、
請求項1に記載の方法。
【請求項4】
前記音声の符号化済フレームをバッファリングすることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要な符号化済フレーム数を求めることであって、前記フレーム数が、前記複数のファイルのうち前記現在のファイルを満たすのに必要なサンプル数を、前記コーデック適用フレーム・サイズで割った数以上の最小の整数であることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに十分な前記符号化済フレームがバッファリングされたかどうかを判定することと、
前記符号化済フレームが十分にバッファリングされている場合、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
前記符号化済フレームが十分にバッファリングされていない場合、前記音声の追加のフレームをバッファリングし、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを、前記フレーム数のフレームおよび前記追加のフレームで満たすことと、
を更に含む請求項1に記載の方法。
【請求項5】
十分な符号化済フレームがバッファリングされたかどうかを前記判定することが、
バッファリングされたフレームの数と、前記コーデック適用フレーム・サイズとを乗算することと、
前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを、前記乗算の積に加えることと、
その和が、前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイルを満たすのに必要なサンプルの数以上であるかどうかを判定することと、
を含む
請求項4に記載の方法。
【請求項6】
前記複数のコンテンツ・ファイルのうちの次のコンテンツ・ファイルについてサンプル・オフセットがあればこれを求めることを更に含む、
請求項4に記載の方法。
【請求項7】
前記サンプル・オフセットを求めることが、
前記符号化済フレームの数に前記コーデック適用フレーム・サイズを掛け、ここから、前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイルを満たすのに必要なサンプルの数を引き、前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからの前記サンプル・オフセットがあればこれを足すことを含む、
請求項6に記載の方法。
【請求項8】
前記音声の符号化済フレームをバッファリングすることを更に含み、
前記複数のコンテンツ・ファイルを前記生成することが、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を算出することと、
前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルに必要なフレームの数を算出することと、
前記サンプルの数が前記コーデック適用フレーム・サイズで均等に割り切れない場合、前記フレーム数のフレームにフレームを追加することと、
前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
を含む、
請求項1に記載の方法。
【請求項9】
前記音声の符号化済フレームをバッファリングすることを更に含み、
前記複数のコンテンツ・ファイルを前記生成することが、
前記固定時間幅をサンプリング・レートに掛け、これに、前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからのサンプル・オフセットがあればこれを足すことにより、前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要なサンプルの数を算出することと、
前記サンプルの数を、前記コーデック適用フレーム・サイズで割ることにより、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを満たすのに必要なフレームの数を算出することと、
前記除算の余りが0の場合、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
前記除算の余りが0より大きい場合、前記フレーム数を1だけインクリメントし、前記インクリメントしたフレーム数のフレームで前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを満たすことと
を含む、
請求項1に記載の方法。
【請求項10】
前記複数のコンテンツ・ファイルを前記生成することが、
前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを満たすのに必要な前記サンプルの数に戻すために、前記フレームの数と、前記コーデック適用フレーム・サイズとを掛けることと、
前記サンプルの数を前記サンプリング・レートで割ることにより、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルの前記音声の期間を算出することと、
前記固定時間幅から前記期間を引くことにより、前記複数のコンテンツ・ファイルのうちの次のコンテンツ・ファイルについてのプレゼンテーション・オフセットを求めることと、
前記フレームの数に前記コーデック適用フレーム・サイズを掛け、ここから、前記複数のコンテンツ・ファイルのうちの前記第1のコンテンツ・ファイルを満たすのに必要な前記サンプルの数を引き、前記複数のコンテンツ・ファイルのうちの前のコンテンツ・ファイルからの前記サンプル・オフセットがあればこれを足すことにより、前記複数のコンテンツ・ファイルのうちの前記次のコンテンツ・ファイルについての前記サンプル・オフセットをアップデートすることと
を更に含む、
請求項9に記載の方法。
【請求項11】
前記受け取ることが、前記メディア・コンテンツを複数の生のストリームレットとして受け取ることを含み、
前記複数の生のストリームレットのそれぞれが、前記メディア・コンテンツのうちで前記固定時間幅を有する部分を含む、
請求項1に記載の方法。
【請求項12】
前記メディア・コンテンツを前記受け取ることが、
前記複数の生のストリームレットのうちの第1の生のストリームレットおよび前記複数の生のストリームレットのうちの第2の生のストリームレットを受け取ることと、
前記第1の生のストリームレットの前記音声および前記映像をスプリットし、前記第2の生のストリームレットの前記音声および前記映像をスプリットすることと、
を含み、
前記映像を前記符号化することが、
前記第1の生のストリームレットの前記映像を符号化することであって、前記第1の生のストリームレットの前記映像が、前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイル内に格納されることと、
前記第2の生のストリームレットの前記映像を符号化することであって、前記第2の生のストリームレットの前記映像が、前記複数のコンテンツ・ファイルのうちの第2のコンテンツ・ファイル内に格納されることと、
を含み、
前記音声を前記符号化することが、
前記第1の生のストリームレットの前記音声を、第1の複数の音声フレームに符号化することと、
前記第1の複数の音声フレームをバッファリングすることと、
前記第1のコンテンツ・ファイルを満たすのに十分なフレームがバッファリングされたかどうかを判定することと、
前記第1のコンテンツ・ファイルを満たすのに十分なフレームがバッファリングされていない場合、前記第2の生のストリームレットの前記音声を、第2の複数の音声フレームに符号化し、前記第2の複数の音声フレームをバッファリングすることと、
前記第1のコンテンツ・ファイルを満たすのに十分なフレームがバッファリングされている場合、前記バッファリングされた音声フレームを前記第1のコンテンツ・ファイル内に格納することと、
を含む、
請求項11に記載の方法。
【請求項13】
前記固定時間幅が約2秒間であり、
前記音声が、1秒間に約48000サンプルでサンプリングされ、
前記コーデック適用フレーム・サイズが、1フレームにつき1024サンプルであり、
前記複数のコンテンツ・ファイルのうちの初めの3つのコンテンツ・ファイルの音声部分がそれぞれ、94の音声フレームを含み、
前記複数のコンテンツ・ファイルのうちの第4のコンテンツ・ファイルの音声部分が、93の音声フレームを含み、
前記第4のコンテンツ・ファイルの映像部分がそれぞれ、約60の映像フレームを含む、
請求項1に記載の方法。
【請求項14】
前記固定時間幅が約2秒間であり、
前記音声が、1秒間に約44100サンプルでサンプリングされ、
前記コーデック適用フレーム・サイズが、1フレームにつき1024サンプルであり、
前記複数のコンテンツ・ファイルのうちの第1のコンテンツ・ファイルの音声部分が、87の音声フレームを含み、前記複数のコンテンツ・ファイルのうちの第2のコンテンツ・ファイルが、86の音声フレームを含む、
請求項1に記載の方法。
【請求項15】
前記コーデック適用フレーム・サイズが、1フレームにつき2048サンプルである、
請求項1に記載の方法。
【請求項16】
映像および音声を含むメディア・コンテンツを受け取る手段と、
前記映像をフレーム・レートに従って符号化する手段と、
前記音声を固定フレーム・サイズに従って符号化する手段と、
前記映像を複数の部分にセグメント化する手段であって、前記映像の各部分が、別々のコンテンツ・ファイル内に格納される手段と、
境界アーチファクトを導入することなく、前記音声を前記別々のコンテンツ・ファイルにスプリットする手段と、
を備える装置。
【請求項17】
前記コンテンツ・ファイルのそれぞれについて、サンプル・オフセットがあればこれを記録する手段と、
前記コンテンツ・ファイルのそれぞれについて、プレゼンテーション・オフセットがあればこれを記録する手段と、
を更に備える請求項16に記載の装置。
【請求項18】
音声および映像を含むメディア・コンテンツを受け取り、前記音声および前記映像をスプリットするためのスプリッタと、
前記スプリッタから前記映像を受け取るように結合され、前記映像をフレーム・レートに従って符号化するための映像エンコーダと、
前記スプリッタから前記音声を受け取るように結合され、前記音声を、コーデック適用フレーム・サイズに従って符号化するための音声エンコーダと、
複数のコンテンツ・ファイルを生成するための音声スプリッティング・マルチプレクサであって、前記複数のコンテンツ・ファイルのそれぞれが、前記映像のうちで固定時間幅を有する符号化済部分と、前記音声のうちで、前記コーデック適用フレーム・サイズを有する複数の隙間のない音声フレームを有する符号化済部分とを含む、音声スプリッティング・マルチプレクサと、
を含むコンピューティング・デバイス
を備える装置。
【請求項19】
前記複数の音声フレームの最後が、0で埋められることがない、
請求項18に記載の装置。
【請求項20】
前記コンピューティング・デバイスが、前記音声の符号化済フレームをバッファリングするための音声フレーム・バッファを更に備える、
請求項18に記載の装置。
【請求項21】
コンピューティング・デバイスに実行されると前記コンピューティング・デバイスにある方法を行わせる命令を格納するコンピュータ可読記憶媒体であって、
前記方法が、
音声および映像を含むメディア・コンテンツを受け取ることと、
前記映像をフレーム・レートに従って符号化することと、
前記音声を、コーデック適用フレーム・サイズに従って符号化することと、
複数のコンテンツ・ファイルを生成することであって、前記複数のコンテンツ・ファイルのそれぞれが、前記映像のうちで固定時間幅を有する符号化済部分と、前記音声のうちで、前記コーデック適用フレーム・サイズを有する複数の隙間のない音声フレームを有する符号化済部分とを含むことと、
を含む、
コンピュータ可読記憶媒体。
【請求項22】
前記方法が、
前記音声の符号化済フレームをバッファリングすることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに必要な符号化済フレーム数を求めることであって、前記フレーム数が、前記複数のファイルのうちの前記現在のファイルを満たすのに必要なサンプル数を、前記コーデック適用フレーム・サイズで割った数以上の最小の整数であることと、
前記複数のコンテンツ・ファイルのうちの現在のコンテンツ・ファイルを満たすのに十分な前記符号化済フレームがバッファリングされたかどうかを判定することと、
前記符号化済フレームが十分にバッファリングされている場合、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを前記フレーム数のフレームで満たすことと、
前記符号化済フレームが十分にバッファリングされていない場合、前記音声の追加のフレームをバッファリングし、前記複数のコンテンツ・ファイルのうちの前記現在のコンテンツ・ファイルを、前記フレーム数のフレームおよび前記追加のフレームで満たすことと、
を更に含む、
請求項21に記載のコンピュータ可読記憶媒体。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図5C】
【図6A】
【図6B】
【図7】
【図2】
【図3A】
【図3B】
【図4】
【図5A】
【図5B】
【図5C】
【図6A】
【図6B】
【図7】
【公表番号】特表2013−515401(P2013−515401A)
【公表日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2012−544958(P2012−544958)
【出願日】平成22年12月21日(2010.12.21)
【国際出願番号】PCT/US2010/061658
【国際公開番号】WO2011/084823
【国際公開日】平成23年7月14日(2011.7.14)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
2.EEPROM
【出願人】(511066540)エコスター アドバンスト テクノロジーズ エル.エル.シー. (1)
【氏名又は名称原語表記】EchoStar Advanced Technologies L.L.C.
【住所又は居所原語表記】100 Inverness Terrace East,Englewood,Colorado 80112,United States of America
【Fターム(参考)】
【公表日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願日】平成22年12月21日(2010.12.21)
【国際出願番号】PCT/US2010/061658
【国際公開番号】WO2011/084823
【国際公開日】平成23年7月14日(2011.7.14)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
2.EEPROM
【出願人】(511066540)エコスター アドバンスト テクノロジーズ エル.エル.シー. (1)
【氏名又は名称原語表記】EchoStar Advanced Technologies L.L.C.
【住所又は居所原語表記】100 Inverness Terrace East,Englewood,Colorado 80112,United States of America
【Fターム(参考)】
[ Back to top ]