フレーム単位(FRAME−ACCURATE)編集の方法およびシステム
方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にし、少なくともいくつかの実施形態では、当該フレームの作業のために圧縮解除する必要があるコンテンツの量を減らすことを可能にする。いくつかの実施形態は、ストリーミング環境に関するビットレート条件が維持されるようにビットレートの整合性が維持されることを保証する。各種実施形態は、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチメディアコンテンツを作成および編集する方法およびシステムに関する。
【背景技術】
【0002】
マルチメディアアプリケーションの中には、ユーザがメディアコンテンツを作成および編集できるものがある。たとえば、マルチメディアコンテンツを収録した複数の異なるファイルを持っているユーザが、それらの複数のファイルから、編集済みコンテンツを収録した1つのファイルを作成することができる。一般に、このようなマルチメディアアプリケーションを用いると、ファイルの特定の部分をトリミングすること、および/または複数のファイルを何らかの様式でステッチングする(継ぎ合わせる)ことができる。また、このようなタイプのアプリケーションでは、編集済みコンテンツにエフェクトやトランジションを付加することもできる。エフェクトは、コンテンツが、元々記録されていた形と異なる表現で再生されるように、コンテンツに小変更をもたらすことができるものである。たとえば、カラーのビデオを白黒のビデオとして再生されるようにするのは、エフェクトの一例である。トランジションは、異なるコンテンツ間での切り替えを行う何らかの手段を構成し、ワイプトランジションはその一例である。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、現在利用できる多くのマルチメディアアプリケーションやシステムには不十分な点がある。具体的には、多くのアプリケーションやシステムが、トリミングをキーフレーム(すなわち、単独でデコード可能なフレーム)でのみ行うよう強制する。
【0004】
一例として、図1を示す。この図は、2つのキーフレーム(K)と多数の中間フレーム(I)を示している。キーフレームは、他のフレームにまったく依存せずにデコードあるいは圧縮解除できるフレームである。これに対し、中間フレームは、他のフレームとの差を表すデータしか含んでいないので、デコードについては他のフレームに依存する。たとえば、ユーザが、マルチメディアコンテンツの編集中に、図1で「所望のトリミングポイント」と示された中間フレームでコンテンツをトリミングすることを望むとする。多くのアプリケーションが、2つの方法のいずれかでこの要望に対処する。第1の方法として、アプリケーションは、そのポイントでのトリミングを許可するか、ファイル全体の圧縮解除を求める。第2の方法として、アプリケーションは、その中間フレームでのトリミングを許可せず、図1に「強制されるトリミングポイント」と示された直前のキーフレームでトリミングを行うことを求める。言うまでもなく、これらの対処法はいずれも望ましいものではない。第1の方法の場合は、ユーザの所望の処理に必ずしも必要でないコンテンツが圧縮解除および再圧縮されることになり、結果として処理に複雑さとオーバーヘッドが加わるからである。まだ、第2の方法の場合は、編集についてのユーザの希望が受け入れられず、ここでの例の場合は、ユーザが望まないコンテンツが含まれることになるからである。
【0005】
次に、ユーザが、異なる2つのファイルの一部分を継ぎ合わせることを望むとする。多くのアプリケーションは、ファイルをステッチングすることは可能であるものの、やみくもにステッチングするだけで、ファイルをどのようにステッチングするかについては無頓着である。つまり、そうしたアプリケーションでは、ステッチングされる各部分のファイル全体が圧縮解除され、やみくもにステッチングされ、再圧縮されるのが普通である。この方法で、不要なコンテンツの圧縮解除に加えて問題になりうることの1つは、2つのファイル部分の継ぎ目において、(一定のビットレートを維持するなどの)ファイルストリーミングのためのビットレート条件が満たされなくなり、そのために、ファイルのストリーミング中にグリッチなどの品質劣化現象が見られる可能性があることである。最終的な出力ファイルを別のユーザにストリーミングすることによって、ネットワーク上でプロジェクトを共有したいと考えるユーザのグループにとって、こうした対処法は望ましいものではない。
【0006】
品質に関しては、各ファイルをまるごと圧縮解除し、デコードされたファイルの一部について作業し、最後に出力ファイルを再エンコードすることは、異なる複数の理由で問題をはらむ可能性がある。第1に、ファイルをまるごとデコードすると、ユーザが作業しない部分も不要にデコードされる。第2に、出力ファイル全体を再エンコードすることは、上述のように、再エンコードに必要な資源と時間に関して非常にコストがかかる。さらに、おそらくはより重要なことに、コンテンツは、デコードと再エンコードが繰り返されるたびに、オリジナルのコンテンツとの類似性が失われていく。これは、品質の劣化につながるおそれがあり、実際つながる。
【課題を解決するための手段】
【0007】
方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にし、少なくともいくつかの実施形態では、当該フレームの作業のために圧縮解除する必要があるコンテンツの量を減らすことを可能にする。いくつかの実施形態は、ストリーミング環境に関するビットレート条件が維持されるようにビットレートの整合性が維持されることを保証する。各種実施形態は、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断する。
【発明を実施するための最良の形態】
【0008】
概要
以下に記載の方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にでき、同時に、それを行うことに付随する処理の複雑さを低減できる。さらに、少なくともいくつかの実施形態において、本システムおよび方法は、ストリーミング環境に関するビットレート条件が維持されるようにビットレートの整合性が維持されることを保証できる。本明細書に記載された方式では、各種方法およびシステムは、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断することを主眼とする。記載の方式により、コンテンツ作成者は、以前よりさらに高い品質のコンテンツを、以前より格段に短い時間で作成することが可能になる。
【0009】
本明細書に記載のシステムおよび方法は、少なくともいくつかの実施形態では、ソースファイルの概念を取り除き、ソースファイルを表現する一連のクリップまたはセグメントをユーザに対して再生できるアプリケーションが作成されることを可能にする。これらのクリップまたはセグメントは、ユーザがアプリケーションでコピーや移動などを行うことによって個々に操作できる。本明細書に記載の、本発明の実施形態は、そのようなタイプのソースファイル表現が可能である。
【0010】
以下に記載の各種実施形態の説明に入る前に、説明で用いる用語とそれに関連付けられた概念を以下に示しておく。用語「ビットレート」は、スループットパラメータであり、たとえば、ネットワーク上でストリーミングできる秒あたりのビット数を意味する。用語「一定ビットレート」は、ほぼ一定、あるいは平均が一定であるビットレートを意味する。たとえば、ストリーミングアプリケーションでは、ストリーミングに用いるネットワーク帯域幅またはビットレートは一定であることが想定されている。「バッファウィンドウ」は、ネットワーク帯域幅が一定であるとして、ストリーミングセッションにおいて遅延のない円滑な再生を保証するために必要な最短プリロール時間を意味する。用語「バッファフルネス(fullness)」は、データに適用される圧縮が所定のバッファウィンドウに対して一定ビットレートであることを保証するために用いられる情報を指す。これについては後でより明らかになるであろう。
【0011】
また、この後の説明では、用語「エンコード(する)」と用語「圧縮(する)」を区別なく用いる。同様に、用語「デコード(する)」と用語「圧縮解除(する)」も区別なく用いる。また、用語「サンプル」は、ファイルの、セグメントに分けることのできる個々の部分(たとえば、個々のフレーム)を指すために用いる。
【0012】
この後の説明では、上に列挙した利点を実現するために利用される各種の手法について、まず説明する。次に、それらの手法を用いることができる例示的なコンポーネントおよびシステムについて説明する。説明する手法は、後で説明する具体的なシステムと異なるコンポーネントおよびシステムとの組み合わせでも、特許を請求する表題案件の趣旨および範囲を逸脱することなく、実装できることを理解されたい。
【0013】
例示的手法
以下、「ファイルをトリミングする」、「ファイルをまとめてステッチングする」、「ファイルをまとめ、トランジションを付けてステッチングする」、「ファイルにエフェクトを適用する」という文脈で、それぞれ独立した見出しを付けて、本発明の手法の実施例を説明する。これらの手法は、上述のように、1つまたは複数のファイルのどの部分が圧縮解除および処理されなければならず、どの部分が圧縮解除されるべきでないかをインテリジェントに判断することを主眼とする。そのために、各種実施形態は、1つまたは複数の操作の対象となる、1つまたは複数のファイルセグメントの少なくとも1つの部分がデコードされなければならない圧縮されたマルチメディアファイルを受け取ることができる。少なくともいくつかの実施形態によれば、それらの操作を実施するために、ファイルセグメントの、デコードされなければならない部分だけがデコードされる。この処理の結果の1つは、操作の実行のためにデコードされる量が、マルチメディアファイルまるごとよりも少ないことである。
【0014】
ファイルをトリミングする
ファイルがトリミングされると、ファイルの一部分が削除される。たとえば、ユーザは、特定のプロジェクトに含めたくないコンテンツを編集で取り除くために、ファイルの開始部分、中間部分、および/または終了部分をトリミングできる。一例を図2に示す。この図は、エンコード済み(圧縮済み)のソースファイルを図式的に表したものである。ある特定のファイルをトリミングする場合、ユーザは、マルチメディアファイルを作成および編集できるソフトウェアアプリケーションと対話するのが一般的である。そのようなアプリケーションの1つがWindows(登録商標)Movie Makerアプリケーションであるが、もちろん他のアプリケーションも利用できる。
【0015】
図2では、ファイルのいくつかの部分が示されており、これらには、直前のキーフレーム200、206、いわゆるマークインポイント202、次のキーフレーム204、およびいわゆるマークアウトポイント208が含まれる。
【0016】
まず、ユーザがファイルの開始部分をトリミングする場合を考える。この場合、ユーザは、ソフトウェアアプリケーションを介してマークインポイントを指定する。このマークインポイントは、それより前のコンテンツが廃棄されるファイル内の位置を定義する。図では、廃棄されるコンテンツを破線で示した。
【0017】
ユーザがマークインポイントを定義すると、本発明による処理により、そのマークインポイントがキーフレームかどうかが判断される。キーフレームであれば、そのキーフレームより前にあるすべてのサンプルを破棄できる。しかし、そのマークインポイントがキーフレームでない場合は、マークインポイントに関連付けられたフレームをデコードするために、その直前のキーフレーム(この場合はキーフレーム200)が検索される。直前のキーフレームが見つかったら、そのキーフレームからマークインポイントにかけて、およびマークインポイントの先までデコードが行われるようにできる。マークインポイントから先では、次のキーフレーム(ここではキーフレーム204)まで、すべてのサンプルがデコードおよび再エンコードされ、そのキーフレームより後では、再エンコードされたフレームが出力ファイルに書き込まれるようにできる。
【0018】
記載の実施形態によれば、マークインポイントに関連付けられたフレームが再エンコードされる場合、そのフレームはキーフレームとして再エンコードされる。また、再エンコードされた、前の中間フレーム(デルタフレーム)(再エンコード後の新しいキーフレーム)に対して生成されるデルタフレームは、新しいキーフレームに対する依存が確立されるように再エンコードされる。以上により、次のキーフレーム204まで処理が完了したら、圧縮されたすべてのサンプルを出力ファイルに直接コピーすることが可能になる。
【0019】
次に、この例を、上述のバッファフルネス情報の文脈で考える。一実施形態によれば、ファイルの各フレームは、そのフレームに関連付けられたバッファフルネス情報を有する。直前のキーフレームと次のキーフレームを識別する解析処理の間に、すべてのサンプルについてバッファフルネス情報が計算される。再エンコードされる必要があるセグメントについては、セグメントを再エンコードするようエンコーダを設定するために、開始バッファフルネス情報および終了バッファフルネス情報が確認され、用いられる。バッファフルネス情報は、課されるであろう一定ビットレート条件に絶対違反しないようにサンプルが圧縮されるよう、エンコーダまたは圧縮器によって用いられる。このことは、当業者であれば自明であろう。したがって、エンコーダは、マークインポイントに関連付けられたフレームで始まるサンプルを圧縮するときに、それらのサンプルが再圧縮時に一定ビットレート条件に違反しないように、圧縮されたサンプルに関連付けられたバッファフルネス情報を処理する。解析処理において、マークインポイントに関連付けられた新しいキーフレームの位置が次のキーフレームに近すぎて、マークインポイントをキーフレームにエンコードできるだけのビットレートが得られない場合は、次のキーフレーム204をどこに配置するかについてインテリジェントな判断が行われるようにできる。以下に記載の実施形態では、この処理および判断は、アナライザコンポーネントによって実行される。
【0020】
一例を示す。極端な例として、マークインポイントがキーフレーム204のすぐ隣にあるとする。これは、新しいキーフレームがキーフレーム204のすぐ隣になることを意味する。当業者であれば自明であるように、キーフレームは大量のビット数を消費するので、一定ビットレート条件が満たされない可能性がある。したがって、ストリーミングにおける出力ファイルの品質を維持するためには、キーフレーム同士を隣り合わせにするのは望ましくない。この状況に対処するために、以下に記載の実施形態によれば、アナライザコンポーネントが、2番目の次のキーフレームを「次の」キーフレームとして用いて、マークインポイントと「次の」キーフレームの間を再エンコードできるだけの適切な量の帯域幅を確保するようにする。次のキーフレーム204とそれに続く中間フレームは、マークインポイントに関連付けられたキーフレームに続くキーフレームの位置を調整するためにデコードおよび再エンコードできる。たとえば、この例では、次のキーフレーム204を、新しいキーフレームに依存する中間フレームとして再エンコードし、その後続の中間フレームの1つをキーフレームとして再エンコードすることによって、一定ビットレート条件を満たすことができる。
【0021】
図3は、一実施形態によるトリミング方法の、コンテンツをファイルの前方でトリミングする工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0022】
工程300で、マークインポイントを定義する。この工程は、ユーザがマルチメディア編集アプリケーション(Windows(登録商標)Movie Makerなど)と対話することによって達成できる。工程302で、マークインポイントがキーフレームかどうかを判断する。キーフレームであれば、工程304で、マークインポイントより前にあるすべてのサンプルを廃棄し、工程305で、マークインポイントからファイル末尾までの圧縮済みサンプルを出力ファイルにコピーする。マークインポイントがキーフレームでない場合は、工程306で、直前のキーフレームを検索し、工程307で、マークインポイントに関連付けられた開始バッファフルネス情報を計算する。工程308で、マークインポイントの後の次のキーフレームを検索し、次のキーフレームの終了バッファフルネス情報を計算する。次に工程310で、直前のキーフレームから次のキーフレームにかけてのサンプル(フレーム)をデコード(圧縮解除)する。工程312で、開始バッファフルネス情報と終了バッファフルネス情報をエンコーダ上で設定し、工程314で、マークインポイントに関連付けられたフレームを新しいキーフレームとして再エンコードする。工程316で、新しいキーフレームの後のフレームから、次のキーフレームの前のフレームまで再エンコードを続け、再エンコードされたフレームを出力ファイルにコピーする。次に工程318で、次のキーフレームからファイル末尾までの圧縮済みサンプルを出力ファイルにコピーする。
【0023】
次に、ユーザがファイルの末尾部分をトリミングする場合を考える。この場合、ユーザは、マークアウトポイント208(図2)を指定する。マークアウトポイントは、それより後のコンテンツが廃棄される位置を定義する。本発明による手法は、ファイルのエンコードに双方向フレーム(Bフレーム)が用いられているかどうかによって、方法が2つある。双方向フレームを用いずにファイルがエンコードされていて、かつ、マークアウトポイントの後に付加すべきコンテンツがない場合は、マークアウトポイントより後のサンプルを単純に廃棄できる。双方向フレームがエンコードに用いられている場合、本方法では、直前のキーフレーム206を検索し、そこからマークアウトポイントまでの圧縮解除を開始する。その後、直前のキーフレーム206から、マークアウトポイントに関連付けられたサンプルまでのサンプルが再圧縮される。これにより、双方向フレームに関連付けられているであろう情報は、ファイルのエンコード済み形式のマークアウトポイントより前に現れるが、ファイルのレンダリング済み形式のマークアウトポイントより後は出力されない。
【0024】
図4は、一実施形態によるトリミング方法の、コンテンツをファイルの末尾からトリミングする工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0025】
工程400で、マークアウトポイントを定義する。この工程は、ユーザがマルチメディア編集アプリケーション(Windows(登録商標)Movie Makerなど)と対話することによって達成できる。工程402で、エンコード処理にBフレームが用いられているかどうかを調べる。エンコード処理にBフレームが用いられていない場合は、工程404で、マークアウトポイントより後にあるすべてのサンプル(フレーム)を廃棄する。一方、エンコード処理にBフレームが用いられた場合は、工程406で、マークアウトポイントの直前のキーフレームを検索し、直前のキーフレームに関連付けられた開始バッファフルネス情報を計算し、工程407で、マークアウトポイントに関連付けられたバッファフルネス情報を計算する。工程408で、直前のキーフレームから、マークアウトポイントに関連付けられたフレームまで(そのフレームを含む)のサンプル(フレーム)をデコードする。次に工程410で、開始バッファフルネス情報と終了バッファフルネス情報をエンコーダ上で設定し、工程412で、直前のキーフレームからマークアウトポイントまでの(マークアウトポイントを含む)サンプルを再エンコードする。これによって、マークアウトポイントより後のすべてのサンプルが廃棄される。
【0026】
ファイルをまとめてステッチングする
ステッチングは、コンテンツの2つのピースを継ぎ合わせる操作を意味する。一般に、ユーザは、2つ以上の異なるファイルを持ち、異なる2つのファイルの部分同士を継ぎ合わせたいと考える。後述の例のように、継ぎ合わせたいファイルの部分同士は、上述のようにトリミングされているものとする。
【0027】
具体的には、図5に示すように、ステッチングしようとする例示的な第1および第2のセグメントを考える。この例では、ファイルのマークインポイント502より前がトリミングされており、マークインポイント502は、この例ではキーフレームを含まない。そのようにトリミングする場合は、直前のキーフレームを検索し(ここではキーフレーム500)、キーフレーム500から、マークインポイント502に関連付けられたフレームにかけてファイルをデコードすることを思い出されたい。この例ではまた、第2のセグメントの末尾が、マークアウトポイント514から上述のようにトリミングされているとする。
【0028】
記載の実施形態によれば、2つのファイルセグメントの処理の実行方法は、2つのファイルセグメントの間の継ぎ目の部分において、上述のものといくぶん異なる。具体的には、次のとおりである。第1のセグメントについては、マークアウトポイントの直前のキーフレーム(ここではキーフレーム504)を検索し、キーフレーム504に関連付けられたバッファフルネス情報を調べる。同様に、第2のセグメントについては、マークインポイント510の直前のキーフレーム(ここではキーフレーム508)を検索し、そこからデコード処理を開始する。さらに、第2のセグメントのマークインポイントの後のキーフレームを検索し、そのキーフレーム(ここではキーフレーム512)に関連付けられたバッファフルネス情報を調べる。
【0029】
記載の実施形態によれば、キーフレーム504からキーフレーム512までのサンプルをデコードする。さらに、所望の一定ビットレートに関連付けられたビットレート条件が満たされるようにするために、キーフレーム504およびキーフレーム512を含むフレームに関連付けられたバッファフルネス情報を圧縮器に供給して、一定ビットレート条件が維持されるようにする。圧縮器は、必要であれば、キーフレームの位置を調整して一定ビットレート条件を維持するように構成されることを思い出されたい。
【0030】
図6は、一実施形態によるステッチング方法の、異なる2つのファイルのコンテンツをステッチングする工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0031】
工程600で、第1および第2のファイルまたはファイルセグメントを継ぎ合わせる継ぎ合わせポイントを定義する。図5の例では、第1のファイルセグメントの継ぎ合わせポイントはマークアウトポイント506に対応し、第2のファイルの継ぎ合わせポイントはマークインポイント510に対応する。工程602で、第1のファイルにおける継ぎ合わせポイントの直前のキーフレームを検索し、そのキーフレームの開始バッファフルネス情報を計算する。図5の例では、直前のキーフレームはキーフレーム504に対応する。工程604で、第2のファイルにおける継ぎ合わせポイントの直前のキーフレームと次のキーフレームとを検索し、次のキーフレームの終了バッファフルネス情報を計算する。図5の例では、直前のキーフレームと次のキーフレームはそれぞれキーフレーム508、512に対応する。工程606で、第1のファイルにおける直前のキーフレーム(すなわち、キーフレーム504)から、第2のファイルにおける次のキーフレーム(すなわち、キーフレーム512)までの(キーフレーム512を含まない)サンプル(フレーム)をデコードする。
【0032】
工程608で、開始バッファフルネス情報と終了バッファフルネス情報をエンコーダ上で設定し、工程610で、第1のファイルにおける継ぎ合わせポイントに関連付けられたフレームを新しいキーフレームとして再エンコードし始める。工程612で、第2のファイルの、新しいキーフレームの後のフレームから次のキーフレームまで再エンコードを続け、それらの再エンコードされたフレームを出力ファイルにコピーする。工程614で、第2のファイルにおける次のキーフレームから第2のファイルの末尾までの圧縮されたサンプルを出力ファイルにコピーする。
【0033】
ファイルをまとめ、トランジションを付けてステッチングする
この例では、異なる2つのファイル部分(セグメント)をステッチングし、それらのファイルセグメントの継ぎ目にトランジションを適用できる。たとえば、図7は、セグメントの継ぎ目にトランジションを適用した異なる2つの(第1および第2の)ファイルセグメントを示す。この例では、圧縮解除および再圧縮に最適な場所を決定する処理を行う。したがって、この例の処理では、第1のセグメントにおけるマークイントランジション開始フレーム702の直前のキーフレーム(ここではキーフレーム700)を検索し、さらに、このフレームに関連付けられた開始バッファフルネス情報を計算する。また、第2のセグメントにおけるマークアウトトランジション終了フレーム710の後の最も近い次のキーフレーム(ここではキーフレーム712)を検索し、そのフレームに関連付けられた終了バッファフルネス情報を計算する。次に、これらのポイントの間にあるすべてのサンプルをデコード(圧縮解除)し、圧縮解除されたサンプルを圧縮器に供給する(これにはキーフレーム700が含まれ、キーフレーム712は含まれない)。第2のセグメントのデコードは、マークイントランジション開始フレーム708より前のキーフレーム706から始まることを理解されたい。
【0034】
図8は、一実施形態による、トランジションを含むステッチング方法の、異なる2つのファイルのコンテンツをステッチングし、そのファイルセグメント間にトランジションを含める工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0035】
工程800で、第1のファイルまたはファイルセグメントが第2のファイルまたはファイルセグメントに移行するトランジションポイントを定義する。図7の例では、第1のファイルセグメントのトランジションポイントはマークインポイント702に対応し、第2のファイルのトランジションポイントはマークアウトポイント710に対応する。工程802で、第1のファイルにおけるトランジションポイントの直前のキーフレームを検索し、そのキーフレームに関連付けられた開始バッファフルネス情報を計算する。図7の例では、直前のキーフレームはキーフレーム700に対応する。工程804で、第2のファイルにおけるトランジションポイントの直前のキーフレームと次のキーフレームとを検索し、次のキーフレームの終了バッファフルネス情報を計算する。図7の例では、直前のキーフレームと次のキーフレームはそれぞれキーフレーム706、712に対応する。工程806で、第1のファイルにおける直前のキーフレーム(すなわち、キーフレーム700)から、第2のファイルにおける次のキーフレーム(すなわち、キーフレーム712)までの(キーフレーム712を含まない)サンプルをデコードする。
【0036】
工程808で、しかるべきデコード済みフレームにトランジションを適用し、工程810で、バッファフルネス情報をエンコーダ上で設定する。工程812で、第1のファイルにおける直前のキーフレームからのフレームを再エンコードする。工程814で、第1のファイルにおける直前のキーフレームの後のフレームから、第2のファイルにおける次のキーフレームまで再エンコードを続け、再エンコードされたフレームを出力ファイルにコピーする。工程816で、第2のファイルにおける次のキーフレームから第2のファイルの末尾までの圧縮されたサンプルを出力ファイルにコピーする。
【0037】
ファイルにエフェクトを適用する
この例では、単一のファイル部分にエフェクトを適用する。例として、図9は、エフェクトが適用された例示的ファイルセグメントを示す。この例では、エフェクトが始まるフレーム(フレーム902)をセグメントのマークインポイントとして扱い、エフェクトが終わるフレーム(フレーム904)をマークアウトポイントとして扱う。したがって、処理では、マークインポイントの直前のキーフレーム(ここではフレーム900)を検索し、この、直前のキーフレームに関連付けられた開始バッファフルネス情報を計算する。さらに、マークアウトポイントの後の次のキーフレーム(ここではフレーム906)を検索し、このフレームに関連付けられた終了バッファフルネス情報を計算する。次に、それらの間のサンプルを圧縮解除し、それらのサンプルを、再圧縮できるように圧縮器に供給する。さらに、それらのキーフレームに関連付けられたバッファフルネス情報を圧縮器に供給する。圧縮器では、それによって、一定ビットレートに関連付けられたビットレート条件を維持するためにキーフレームをどこに配置するかについてインテリジェントな判断を下すことができる。
【0038】
図10は、コンテンツにエフェクトを適用する方法の工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0039】
工程1000では、マークインエフェクト開始ポイントおよびマークアウトエフェクト終了ポイントを定義する。これらはそれぞれ、図9の例のフレーム902および904に対応する。工程1002で、マークインエフェクト開始ポイントの直前のキーフレームを検索し、そのキーフレームに関連付けられた開始バッファフルネス情報を計算する。図9の例では、直前のキーフレームはキーフレーム900に対応する。工程1004で、マークアウトエフェクト終了ポイントの次のキーフレームを検索し、そのフレームに関連付けられた終了バッファフルネス情報を計算する。図9の例では、次のキーフレームはキーフレーム906に対応する。工程1006で、直前のキーフレーム900と次のキーフレーム906の間のサンプルをデコードする。工程1008で、しかるべきフレームにしかるべきエフェクトを適用する。
【0040】
工程1010で、開始バッファフルネス情報および終了バッファフルネス情報をエンコーダ上で設定し、工程1012で、直前のキーフレームから次のキーフレームまでのフレームを再エンコードし、再エンコードされたフレームを出力ファイルにコピーする。工程1014で、第2のファイルにおける次のキーフレームから第2のファイルの末尾までの圧縮されたサンプルを出力ファイルにコピーする。
【0041】
これらの手法を実行するための例示的システム
図11は、上述の手法を実装するように構成されたソフトウェアコンポーネントの高レベル図である。このソフトウェアコンポーネントは、コンピュータ可読媒体に組み込まれたパブリッシャコンピュータ1100の形をとり、そのコンピュータ可読媒体はコンピュータシステムに組み込まれている。図示および記載の実施形態では、パブリッシャコンポーネント1100は、アナライザ1102を含み、メディアプロジェクトを記述するためのタイムラインオブジェクト1108を構成する。パブリッシャコンポーネント1100は、アナライザ1102を通して、しかるべきタイムラインオブジェクト1108を作成するための情報を準備し、そのタイムラインオブジェクト1108は、上述の処理がすべて実行された後にしかるべきトポロジ1106を作成する。さらに、アナライザ1102が準備した情報をパブリッシャコンポーネント1100が用いて、上述のようにサンプルを圧縮する圧縮器1104を構成する。
【0042】
パブリッシャコンポーネント1100を用いた例示的システムを図12に示す。このシステムでは、ユーザが編集アプリケーション1200(Windows(登録商標) Movie Makerなど)を用いてマルチメディアムービーを作成、編集、および共有できる。運用時には、アプリケーション1200は、ユーザのプロジェクトを記述または表現する、タイムラインオブジェクトと呼ばれるもの1202を作成する。タイムラインオブジェクト1202は、各種メディアソース(すなわち、ファイルやファイルの部分)をどのように並べるかを効果的に記述する。このアプリケーションは、最終出力コレクション(destination collection)1204も定義する。最終出力コレクションは、最終出力を効果的に記述し、出力の構成設定(圧縮器1104で用いる圧縮設定など)が記述された出力プロファイルを提供する。
【0043】
例として、ユーザが作成したオブジェクトを表現するタイムラインオブジェクトの可視表現を図13に示す。この例では、タイムラインオブジェクトは、2つのファイル「ファイル1」および「ファイル2」を含む。ユーザのプロファイルは、3つのセグメント(セグメント1、セグメント2、およびセグメント3)に分かれている。セグメント1は、ファイル1の一部を含み、セグメント2は、ユーザがファイル1とファイル2の間に付加したトランジション(SMPTEワイプなど)を含み、セグメント3は、ファイル3の一部を含む。
【0044】
アプリケーション1200がタイムラインオブジェクト1202および最終出力コレクション1204を定義すると、この情報が、後述の処理のためにパブリッシャコンポーネントに供給される。一実施形態では、パブリッシャコンポーネントは、最終出力コレクション1204をチェックして、すぐ後に述べる操作をサポートするエンコードに関連付けられた圧縮設定が最終出力コレクションに含まれているかどうかを確認する。たとえば、Windows(登録商標)Media Video 9(WMV9)には上述の操作をサポートするエンコーダが含まれている。最終出力コレクションが上述の操作をサポートしていない場合は、タイムライン1202と最終出力コレクションを処理のために単純にメディアエンジン1206に渡すことができる。メディアエンジン1206は、ユーザのプロジェクトを処理およびレンダリングするように構成される。例示的なメディアエンジンが、参照により本明細書に組み込まれる米国特許出願第10/730735号明細書に開示されている。
【0045】
説明目的のため、最終出力コレクションは、圧縮設定が、上述の操作をサポートするエンコーダを示すことを示しているものとする。この場合、パブリッシャコンポーネント1100は、タイムラインオブジェクト1202および最終出力コレクション1204を解析のためにアナライザ1102に渡す。
【0046】
図示および記載した実施形態では、2ステップ(2フェーズ)で処理を行う。第1の処理ステップは、ユーザが定義したタイムラインをアナライザが処理および解析する解析ステップである。第2の処理ステップは、データが出力ファイルに書き込まれるときに行われる。
【0047】
解析ステップ
上の例では、ユーザがファイル1とファイル2の間にトランジションを挿入している。上述のように、トランジションの開始はマークインポイントで定義され、終了はマークアウトポイントで定義される。「ファイルをまとめ、トランジションを付けてステッチングする」の項に記載したように、この解析では、アナライザは、ファイル1におけるトランジションの先頭の直前のキーフレームを検索する。さらにアナライザは、ファイル2におけるトランジションの末尾の後の、次のキーフレームを検索する。これにより、アナライザは、これら2つのポイントの間で圧縮解除および再圧縮が必要になることを認識する。さらに、解析の一環として、アナライザ1102は、これらの範囲について開始バッファフルネス情報および終了バッファフルネス情報を計算する。記載の実施形態によれば、アナライザが計算できるバッファフルネスパラメータは、その範囲のビット数、その範囲のサンプル数、(グローバルタイムラインにおける)開始時刻、ファイル1におけるマークインポイントの直前のキーフレームに関連付けられた開始バッファフルネス情報、(グローバルタイムラインにおける)終了時刻、およびファイル2におけるマークアウトポイントの次のキーフレームに関連付けられた終了バッファフルネス情報を含むことができるが、これらに限定されない。
【0048】
アナライザは、この解析から、3つのセグメントを有する図13のタイムラインオブジェクトが、プロジェクト部分がインテリジェントに処理されるのであれば、適切な状態にならないことを確認できる。逆に、アナライザの解析によって新たに出てくるのは、図14に示す、5つのセグメントを有する新しいタイムラインオブジェクトである。
【0049】
したがって、アナライザ1102は、ユーザが定義したタイムラインオブジェクト1202(図12)を取得および処理して、ユーザのプロジェクトをより正確に表現する第2の新しいタイムラインオブジェクトを導出でき、それによってインテリジェントな圧縮解除および再圧縮の適用が可能になる。
【0050】
図示および記載の実施形態では、新しい(第2の)タイムラインオブジェクトが導出されると、その新しいタイムラインオブジェクトの部分的トポロジを導出できる。部分的トポロジは、異なるファイルにあるデータサンプルをどのように処理し、どのコンポーネントにどのセグメントを処理させるかを記述または定義するために用いられる。一例として、図14に概略的に示した部分的トポロジを考える。
【0051】
この例では、図14の新しいタイムラインオブジェクトから、パブリッシャコンポーネント1100は、部分的トポロジを導出し、セグメント1については、ソースファイル1を圧縮形式で出力ファイルに直接供給できることを確認できる。セグメント2については、パブリッシャコンポーネント1100は、ファイル1を、圧縮解除器を介して出力ファイルに供給されるよう定義する。ファイル1とファイル2の間のトランジションと一致するセグメント3については、パブリッシャコンポーネントは、ファイル1および2を、ワイプエフェクトの形で合成コンポーネントに供給されてから出力ファイルに供給されるよう定義する。セグメント4については、パブリッシャコンポーネントは、ファイル2を、圧縮解除器を介して出力ファイルに供給されるよう定義する。最後にセグメント5については、パブリッシャコンポーネント1100は、ファイル2を、圧縮形式で出力ファイルに直接コピーされるよう定義する。
【0052】
上述の部分的トポロジが与えられると、トポロジローダと呼ばれるコンポーネントが、この部分的トポロジを取得し、これよりフルトポロジを生成する。例示的なトポロジローダが、参照により本明細書に組み込まれる米国特許出願第10/796505号明細書に開示されている。図示および記載の実施形態によれば、再圧縮が必要なこれらのセグメントについて、トポロジローダは、適切な圧縮器をトポロジに挿入する。したがって、ここでの例では、トポロジローダは、セグメント2および4については、デコーダの後に圧縮器を挿入する。セグメント3については、トポロジローダは、ワイプコンポーネントの後に圧縮器を挿入する。
【0053】
処理におけるこの時点では、ユーザのプロジェクトの完全な(フル)トポロジが定義されていて、圧縮解除および処理されなければならない個々のファイルのそれらの部分だけが実際に圧縮解除および処理されるように、インテリジェントなデコードおよびエンコードが実施される。具体的に、上述の例では、セグメント1および5はユーザがさわらないので、これらのセグメントは圧縮解除不要である。
【0054】
データ書き込みステップ
パブリッシャコンポーネント1100は、上述のように新しいタイムライン1108(図12)と部分的トポロジおよびフルトポロジ1106とを作成した後、アナライザの解析結果と新しいタイムラインとを用いて、圧縮器1104を構成し、出力ファイルへの圧縮データの書き込みを実際に開始する。
【0055】
ユーザによる選択が可能な圧縮プロファイル
上述のシステムおよび方法の有利点の1つとして、ユーザは、圧縮プロファイルを選択して、ファイルの圧縮(エンコード)にそれらの圧縮プロファイルが用いられるようにできる。ユーザが圧縮プロファイルを選択しない場合、ファイルの圧縮は別の圧縮プロファイルに従って行われる。この選択は、たとえば、アプリケーション1200(図12)のようなアプリケーションで行うことができる。
【0056】
一例を示す。ユーザが、ステッチングしたいファイルまたはファイルセグメントを多数持っていて、各ファイルまたはファイルセグメントにまったく同じ圧縮が適用されているとは限らない可能性があるとする。たとえば、ファイル1は、ビットレート100Kbpsの320×240に圧縮されていて、ファイル2は、ビットレート1Mbpsの640×480に圧縮されていて、ファイル3は、ビットレート200Kbpsの320×240に圧縮されている可能性があるとする。ユーザがこれらのファイルをステッチングし、中程度の品質でプロジェクトを圧縮しようとすれば、ユーザは、ファイル3(すなわち、200kbpsの320×240)に関連付けられた圧縮パラメータを選択できる。ファイル2およびファイル1に適用された圧縮はこれらのパラメータと完全には一致しないので、それらのファイルには何らかの特殊な処理を適用することになる。具体的には、それらのファイルをステッチングする際に、ファイル1を圧縮解除して200kbpsに再圧縮してから出力ファイルに書き込むことができる。また、ファイル2は、圧縮解除し、より小さいサイズ(320×240)に変更してから、200Kbpsに再圧縮して出力ファイルに書き込むことができる。ファイル3は、そのまま出力ファイルにコピーすればよい。ユーザがアプリケーションを通して明確に指定した、これらの圧縮パラメータの変更は、少なくともいくつかの実施形態では、パブリッシャコンポーネント1100で処理できる。
【0057】
上記の説明を考慮すれば自明であるように、エンコーダが再エンコード処理時にバッファフルネス情報を用いるのは、ストリーミング環境においてプロジェクトの再生が円滑に行われるように、一定ビットレート条件が維持されるようにするためである。
【0058】
アプリケーションによる選択が可能な圧縮プロファイルおよびインテリジェント操作
いくつかの実施形態では、圧縮解除および再圧縮を行うコンテンツの量についてインテリジェントな判断が行われるように、コンテンツをエンコードする際の圧縮プロファイルをアプリケーション側が自動的に選択できるようなアプリケーションを作成できる。つまり、圧縮プロファイルがそれぞれ異なる多数のファイルセグメントがある場合に、適切に構成されたアプリケーションであれば、ファイルセグメントのコレクションと、そのファイルセグメントに対して実行されるべき操作とを解析でき、圧縮解除および再圧縮されるコンテンツの量を最小化するか、少なくとも低減することを主眼とする圧縮プロファイルを自動的に選択できる。
【0059】
また、圧縮プロファイルの違いに関係なく、またはその違いに加えて、ソースフォーマットと出力フォーマットが必ずしも一致していない可能性がある場合に、メディアを柔軟に処理および調整できるようにアプリケーションを構成できる。つまり、フォーマットの違いによって処理が妨げられてはならない状況が存在する可能性がある。
【0060】
一例を示す。上述の解析の一環として、特定ソースのフォーマットが所望の出力ファイルのフォーマットと一致するかどうかを確認するために解析を行うことができる。フォーマットの違いが明らかになった場合でも、本発明のシステムおよび方法は、そのメディアを処理できる。この例では、フォーマットの違いが生じる状況は、プライベートのデータ、フレームレート、およびビットレートに関係がある可能性がある。
【0061】
プライベートデータに関しては、ソースフォーマットと出力フォーマットとが正確に一致していなくてもよい場合がある。図示および記載の実施形態では、少なくともある程度のデータフォーマット(たとえば、プライベートデータフォーマット)の違いは、上述の本発明による処理の実行を妨げない。これらの違いは、「これらの手法を実行するための例示的システム」の項で説明した処理の際に対処される。
【0062】
フレームレートに関しては、以下のとおりである。ビデオフォーマットは、30フレーム/秒(f/s)を利用するフォーマットもあれば、29.9997f/s(0.03333平均時間/フレーム)を利用するフォーマットもある。これらのフォーマットは本質的には同等なので、上述の処理の際は同じように扱われなければならない。フォーマットの違いがあるものの、それらが本質的に同等であれば、本発明による上述の処理では、それらのフォーマットを実質的に同等なものとして扱わなければならない。
【0063】
ビットレートに関しては、以下のとおりである。最終出力ビットレートがソースビットレートより高い場合でも、本発明による上述の処理を行わなければならない。最終ビットレートが高くてもソースの質は変わらないからである。ただし、逆が真でないことは、当業者であれば理解されよう。したがって、この場合は、フォーマットの違いがソースメディアの品質に影響しないのであれば、本発明による上述の処理を行わなければならない。
【0064】
まとめると、ソースファイルと出力ファイルの間でフォーマットの違いがあっても、それによって処理が妨げられない状況がある。考慮できる検討内容として、違いの大きさ(フレームレートの例と同様)と、メディアの処理が出力の品質にもたらす影響がある。フォーマットが実質的に同等である(フォーマットに有意な違いがない)か、違いがあっても簡単に対処できる場合は、処理を行わなければならない。同様に、フォーマットの違いが出力ファイルの全体の品質に影響しない(品質を有意に劣化させない)場合は、処理を行わなければならない。
【0065】
むすび
上述の各種の方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にし、圧縮解除および再圧縮の処理を受けるコンテンツの量を低減できる。また、各種のシステムおよび方法は、ストリーミング環境に関連付けられたビットレート条件を維持するために、ビットレートの整合性が維持されるようにできる。上述の方式では、各種方法およびシステムは、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断することを主眼とする。記載の方式により、コンテンツ作成者は、以前よりさらに高い品質のコンテンツを、以前より格段に短い時間で作成することが可能になる。
【0066】
構造的特徴および/または手法の工程に固有の文言で本発明について説明してきたが、添付の特許請求項で定義された本発明は、説明した特定の特徴または工程に必ずしも限定されないことを理解されたい。むしろ、それらの特定の特徴および工程は、請求する発明の好ましい実施形態として開示されている。
【図面の簡単な説明】
【0067】
【図1】例示的なキーフレームおよび中間フレームを示すブロック図である。
【図2】一実施形態によるファイルトリミング操作を説明するために用いるファイルの説明図である。
【図3】一実施形態によるファイルトリミング方法の工程を説明するフロー図である。
【図4】一実施形態によるファイルトリミング方法の工程を説明するフロー図である。
【図5】一実施形態によるファイルステッチング操作を説明するために用いるファイルの説明図である。
【図6】一実施形態によるファイルステッチング方法の工程を説明するフロー図である。
【図7】一実施形態によるファイルステッチング/トランジション操作を説明するために用いるファイルの説明図である。
【図8】一実施形態によるファイルステッチング/トランジション方法の工程を説明するフロー図である。
【図9】一実施形態による、エフェクトをファイルの一部分に適用する操作を説明するために用いるファイルの説明図である。
【図10】一実施形態による、エフェクトをファイルの一部分に適用する方法の工程を説明するフロー図である。
【図11】一実施形態によるインテリジェントな圧縮解除および再圧縮を適用できる例示的なコンポーネントのブロック図である。
【図12】図11のコンポーネントを利用できる例示的なシステムのブロック図である。
【図13】一実施形態による、ユーザが作成したプロジェクトを表現するタイムラインオブジェクトの可視表現を示す図である。
【図14】一実施形態による、図13のタイムラインオブジェクトから作成されるタイムラインオブジェクトを図解する図である。
【技術分野】
【0001】
本発明は、マルチメディアコンテンツを作成および編集する方法およびシステムに関する。
【背景技術】
【0002】
マルチメディアアプリケーションの中には、ユーザがメディアコンテンツを作成および編集できるものがある。たとえば、マルチメディアコンテンツを収録した複数の異なるファイルを持っているユーザが、それらの複数のファイルから、編集済みコンテンツを収録した1つのファイルを作成することができる。一般に、このようなマルチメディアアプリケーションを用いると、ファイルの特定の部分をトリミングすること、および/または複数のファイルを何らかの様式でステッチングする(継ぎ合わせる)ことができる。また、このようなタイプのアプリケーションでは、編集済みコンテンツにエフェクトやトランジションを付加することもできる。エフェクトは、コンテンツが、元々記録されていた形と異なる表現で再生されるように、コンテンツに小変更をもたらすことができるものである。たとえば、カラーのビデオを白黒のビデオとして再生されるようにするのは、エフェクトの一例である。トランジションは、異なるコンテンツ間での切り替えを行う何らかの手段を構成し、ワイプトランジションはその一例である。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、現在利用できる多くのマルチメディアアプリケーションやシステムには不十分な点がある。具体的には、多くのアプリケーションやシステムが、トリミングをキーフレーム(すなわち、単独でデコード可能なフレーム)でのみ行うよう強制する。
【0004】
一例として、図1を示す。この図は、2つのキーフレーム(K)と多数の中間フレーム(I)を示している。キーフレームは、他のフレームにまったく依存せずにデコードあるいは圧縮解除できるフレームである。これに対し、中間フレームは、他のフレームとの差を表すデータしか含んでいないので、デコードについては他のフレームに依存する。たとえば、ユーザが、マルチメディアコンテンツの編集中に、図1で「所望のトリミングポイント」と示された中間フレームでコンテンツをトリミングすることを望むとする。多くのアプリケーションが、2つの方法のいずれかでこの要望に対処する。第1の方法として、アプリケーションは、そのポイントでのトリミングを許可するか、ファイル全体の圧縮解除を求める。第2の方法として、アプリケーションは、その中間フレームでのトリミングを許可せず、図1に「強制されるトリミングポイント」と示された直前のキーフレームでトリミングを行うことを求める。言うまでもなく、これらの対処法はいずれも望ましいものではない。第1の方法の場合は、ユーザの所望の処理に必ずしも必要でないコンテンツが圧縮解除および再圧縮されることになり、結果として処理に複雑さとオーバーヘッドが加わるからである。まだ、第2の方法の場合は、編集についてのユーザの希望が受け入れられず、ここでの例の場合は、ユーザが望まないコンテンツが含まれることになるからである。
【0005】
次に、ユーザが、異なる2つのファイルの一部分を継ぎ合わせることを望むとする。多くのアプリケーションは、ファイルをステッチングすることは可能であるものの、やみくもにステッチングするだけで、ファイルをどのようにステッチングするかについては無頓着である。つまり、そうしたアプリケーションでは、ステッチングされる各部分のファイル全体が圧縮解除され、やみくもにステッチングされ、再圧縮されるのが普通である。この方法で、不要なコンテンツの圧縮解除に加えて問題になりうることの1つは、2つのファイル部分の継ぎ目において、(一定のビットレートを維持するなどの)ファイルストリーミングのためのビットレート条件が満たされなくなり、そのために、ファイルのストリーミング中にグリッチなどの品質劣化現象が見られる可能性があることである。最終的な出力ファイルを別のユーザにストリーミングすることによって、ネットワーク上でプロジェクトを共有したいと考えるユーザのグループにとって、こうした対処法は望ましいものではない。
【0006】
品質に関しては、各ファイルをまるごと圧縮解除し、デコードされたファイルの一部について作業し、最後に出力ファイルを再エンコードすることは、異なる複数の理由で問題をはらむ可能性がある。第1に、ファイルをまるごとデコードすると、ユーザが作業しない部分も不要にデコードされる。第2に、出力ファイル全体を再エンコードすることは、上述のように、再エンコードに必要な資源と時間に関して非常にコストがかかる。さらに、おそらくはより重要なことに、コンテンツは、デコードと再エンコードが繰り返されるたびに、オリジナルのコンテンツとの類似性が失われていく。これは、品質の劣化につながるおそれがあり、実際つながる。
【課題を解決するための手段】
【0007】
方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にし、少なくともいくつかの実施形態では、当該フレームの作業のために圧縮解除する必要があるコンテンツの量を減らすことを可能にする。いくつかの実施形態は、ストリーミング環境に関するビットレート条件が維持されるようにビットレートの整合性が維持されることを保証する。各種実施形態は、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断する。
【発明を実施するための最良の形態】
【0008】
概要
以下に記載の方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にでき、同時に、それを行うことに付随する処理の複雑さを低減できる。さらに、少なくともいくつかの実施形態において、本システムおよび方法は、ストリーミング環境に関するビットレート条件が維持されるようにビットレートの整合性が維持されることを保証できる。本明細書に記載された方式では、各種方法およびシステムは、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断することを主眼とする。記載の方式により、コンテンツ作成者は、以前よりさらに高い品質のコンテンツを、以前より格段に短い時間で作成することが可能になる。
【0009】
本明細書に記載のシステムおよび方法は、少なくともいくつかの実施形態では、ソースファイルの概念を取り除き、ソースファイルを表現する一連のクリップまたはセグメントをユーザに対して再生できるアプリケーションが作成されることを可能にする。これらのクリップまたはセグメントは、ユーザがアプリケーションでコピーや移動などを行うことによって個々に操作できる。本明細書に記載の、本発明の実施形態は、そのようなタイプのソースファイル表現が可能である。
【0010】
以下に記載の各種実施形態の説明に入る前に、説明で用いる用語とそれに関連付けられた概念を以下に示しておく。用語「ビットレート」は、スループットパラメータであり、たとえば、ネットワーク上でストリーミングできる秒あたりのビット数を意味する。用語「一定ビットレート」は、ほぼ一定、あるいは平均が一定であるビットレートを意味する。たとえば、ストリーミングアプリケーションでは、ストリーミングに用いるネットワーク帯域幅またはビットレートは一定であることが想定されている。「バッファウィンドウ」は、ネットワーク帯域幅が一定であるとして、ストリーミングセッションにおいて遅延のない円滑な再生を保証するために必要な最短プリロール時間を意味する。用語「バッファフルネス(fullness)」は、データに適用される圧縮が所定のバッファウィンドウに対して一定ビットレートであることを保証するために用いられる情報を指す。これについては後でより明らかになるであろう。
【0011】
また、この後の説明では、用語「エンコード(する)」と用語「圧縮(する)」を区別なく用いる。同様に、用語「デコード(する)」と用語「圧縮解除(する)」も区別なく用いる。また、用語「サンプル」は、ファイルの、セグメントに分けることのできる個々の部分(たとえば、個々のフレーム)を指すために用いる。
【0012】
この後の説明では、上に列挙した利点を実現するために利用される各種の手法について、まず説明する。次に、それらの手法を用いることができる例示的なコンポーネントおよびシステムについて説明する。説明する手法は、後で説明する具体的なシステムと異なるコンポーネントおよびシステムとの組み合わせでも、特許を請求する表題案件の趣旨および範囲を逸脱することなく、実装できることを理解されたい。
【0013】
例示的手法
以下、「ファイルをトリミングする」、「ファイルをまとめてステッチングする」、「ファイルをまとめ、トランジションを付けてステッチングする」、「ファイルにエフェクトを適用する」という文脈で、それぞれ独立した見出しを付けて、本発明の手法の実施例を説明する。これらの手法は、上述のように、1つまたは複数のファイルのどの部分が圧縮解除および処理されなければならず、どの部分が圧縮解除されるべきでないかをインテリジェントに判断することを主眼とする。そのために、各種実施形態は、1つまたは複数の操作の対象となる、1つまたは複数のファイルセグメントの少なくとも1つの部分がデコードされなければならない圧縮されたマルチメディアファイルを受け取ることができる。少なくともいくつかの実施形態によれば、それらの操作を実施するために、ファイルセグメントの、デコードされなければならない部分だけがデコードされる。この処理の結果の1つは、操作の実行のためにデコードされる量が、マルチメディアファイルまるごとよりも少ないことである。
【0014】
ファイルをトリミングする
ファイルがトリミングされると、ファイルの一部分が削除される。たとえば、ユーザは、特定のプロジェクトに含めたくないコンテンツを編集で取り除くために、ファイルの開始部分、中間部分、および/または終了部分をトリミングできる。一例を図2に示す。この図は、エンコード済み(圧縮済み)のソースファイルを図式的に表したものである。ある特定のファイルをトリミングする場合、ユーザは、マルチメディアファイルを作成および編集できるソフトウェアアプリケーションと対話するのが一般的である。そのようなアプリケーションの1つがWindows(登録商標)Movie Makerアプリケーションであるが、もちろん他のアプリケーションも利用できる。
【0015】
図2では、ファイルのいくつかの部分が示されており、これらには、直前のキーフレーム200、206、いわゆるマークインポイント202、次のキーフレーム204、およびいわゆるマークアウトポイント208が含まれる。
【0016】
まず、ユーザがファイルの開始部分をトリミングする場合を考える。この場合、ユーザは、ソフトウェアアプリケーションを介してマークインポイントを指定する。このマークインポイントは、それより前のコンテンツが廃棄されるファイル内の位置を定義する。図では、廃棄されるコンテンツを破線で示した。
【0017】
ユーザがマークインポイントを定義すると、本発明による処理により、そのマークインポイントがキーフレームかどうかが判断される。キーフレームであれば、そのキーフレームより前にあるすべてのサンプルを破棄できる。しかし、そのマークインポイントがキーフレームでない場合は、マークインポイントに関連付けられたフレームをデコードするために、その直前のキーフレーム(この場合はキーフレーム200)が検索される。直前のキーフレームが見つかったら、そのキーフレームからマークインポイントにかけて、およびマークインポイントの先までデコードが行われるようにできる。マークインポイントから先では、次のキーフレーム(ここではキーフレーム204)まで、すべてのサンプルがデコードおよび再エンコードされ、そのキーフレームより後では、再エンコードされたフレームが出力ファイルに書き込まれるようにできる。
【0018】
記載の実施形態によれば、マークインポイントに関連付けられたフレームが再エンコードされる場合、そのフレームはキーフレームとして再エンコードされる。また、再エンコードされた、前の中間フレーム(デルタフレーム)(再エンコード後の新しいキーフレーム)に対して生成されるデルタフレームは、新しいキーフレームに対する依存が確立されるように再エンコードされる。以上により、次のキーフレーム204まで処理が完了したら、圧縮されたすべてのサンプルを出力ファイルに直接コピーすることが可能になる。
【0019】
次に、この例を、上述のバッファフルネス情報の文脈で考える。一実施形態によれば、ファイルの各フレームは、そのフレームに関連付けられたバッファフルネス情報を有する。直前のキーフレームと次のキーフレームを識別する解析処理の間に、すべてのサンプルについてバッファフルネス情報が計算される。再エンコードされる必要があるセグメントについては、セグメントを再エンコードするようエンコーダを設定するために、開始バッファフルネス情報および終了バッファフルネス情報が確認され、用いられる。バッファフルネス情報は、課されるであろう一定ビットレート条件に絶対違反しないようにサンプルが圧縮されるよう、エンコーダまたは圧縮器によって用いられる。このことは、当業者であれば自明であろう。したがって、エンコーダは、マークインポイントに関連付けられたフレームで始まるサンプルを圧縮するときに、それらのサンプルが再圧縮時に一定ビットレート条件に違反しないように、圧縮されたサンプルに関連付けられたバッファフルネス情報を処理する。解析処理において、マークインポイントに関連付けられた新しいキーフレームの位置が次のキーフレームに近すぎて、マークインポイントをキーフレームにエンコードできるだけのビットレートが得られない場合は、次のキーフレーム204をどこに配置するかについてインテリジェントな判断が行われるようにできる。以下に記載の実施形態では、この処理および判断は、アナライザコンポーネントによって実行される。
【0020】
一例を示す。極端な例として、マークインポイントがキーフレーム204のすぐ隣にあるとする。これは、新しいキーフレームがキーフレーム204のすぐ隣になることを意味する。当業者であれば自明であるように、キーフレームは大量のビット数を消費するので、一定ビットレート条件が満たされない可能性がある。したがって、ストリーミングにおける出力ファイルの品質を維持するためには、キーフレーム同士を隣り合わせにするのは望ましくない。この状況に対処するために、以下に記載の実施形態によれば、アナライザコンポーネントが、2番目の次のキーフレームを「次の」キーフレームとして用いて、マークインポイントと「次の」キーフレームの間を再エンコードできるだけの適切な量の帯域幅を確保するようにする。次のキーフレーム204とそれに続く中間フレームは、マークインポイントに関連付けられたキーフレームに続くキーフレームの位置を調整するためにデコードおよび再エンコードできる。たとえば、この例では、次のキーフレーム204を、新しいキーフレームに依存する中間フレームとして再エンコードし、その後続の中間フレームの1つをキーフレームとして再エンコードすることによって、一定ビットレート条件を満たすことができる。
【0021】
図3は、一実施形態によるトリミング方法の、コンテンツをファイルの前方でトリミングする工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0022】
工程300で、マークインポイントを定義する。この工程は、ユーザがマルチメディア編集アプリケーション(Windows(登録商標)Movie Makerなど)と対話することによって達成できる。工程302で、マークインポイントがキーフレームかどうかを判断する。キーフレームであれば、工程304で、マークインポイントより前にあるすべてのサンプルを廃棄し、工程305で、マークインポイントからファイル末尾までの圧縮済みサンプルを出力ファイルにコピーする。マークインポイントがキーフレームでない場合は、工程306で、直前のキーフレームを検索し、工程307で、マークインポイントに関連付けられた開始バッファフルネス情報を計算する。工程308で、マークインポイントの後の次のキーフレームを検索し、次のキーフレームの終了バッファフルネス情報を計算する。次に工程310で、直前のキーフレームから次のキーフレームにかけてのサンプル(フレーム)をデコード(圧縮解除)する。工程312で、開始バッファフルネス情報と終了バッファフルネス情報をエンコーダ上で設定し、工程314で、マークインポイントに関連付けられたフレームを新しいキーフレームとして再エンコードする。工程316で、新しいキーフレームの後のフレームから、次のキーフレームの前のフレームまで再エンコードを続け、再エンコードされたフレームを出力ファイルにコピーする。次に工程318で、次のキーフレームからファイル末尾までの圧縮済みサンプルを出力ファイルにコピーする。
【0023】
次に、ユーザがファイルの末尾部分をトリミングする場合を考える。この場合、ユーザは、マークアウトポイント208(図2)を指定する。マークアウトポイントは、それより後のコンテンツが廃棄される位置を定義する。本発明による手法は、ファイルのエンコードに双方向フレーム(Bフレーム)が用いられているかどうかによって、方法が2つある。双方向フレームを用いずにファイルがエンコードされていて、かつ、マークアウトポイントの後に付加すべきコンテンツがない場合は、マークアウトポイントより後のサンプルを単純に廃棄できる。双方向フレームがエンコードに用いられている場合、本方法では、直前のキーフレーム206を検索し、そこからマークアウトポイントまでの圧縮解除を開始する。その後、直前のキーフレーム206から、マークアウトポイントに関連付けられたサンプルまでのサンプルが再圧縮される。これにより、双方向フレームに関連付けられているであろう情報は、ファイルのエンコード済み形式のマークアウトポイントより前に現れるが、ファイルのレンダリング済み形式のマークアウトポイントより後は出力されない。
【0024】
図4は、一実施形態によるトリミング方法の、コンテンツをファイルの末尾からトリミングする工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0025】
工程400で、マークアウトポイントを定義する。この工程は、ユーザがマルチメディア編集アプリケーション(Windows(登録商標)Movie Makerなど)と対話することによって達成できる。工程402で、エンコード処理にBフレームが用いられているかどうかを調べる。エンコード処理にBフレームが用いられていない場合は、工程404で、マークアウトポイントより後にあるすべてのサンプル(フレーム)を廃棄する。一方、エンコード処理にBフレームが用いられた場合は、工程406で、マークアウトポイントの直前のキーフレームを検索し、直前のキーフレームに関連付けられた開始バッファフルネス情報を計算し、工程407で、マークアウトポイントに関連付けられたバッファフルネス情報を計算する。工程408で、直前のキーフレームから、マークアウトポイントに関連付けられたフレームまで(そのフレームを含む)のサンプル(フレーム)をデコードする。次に工程410で、開始バッファフルネス情報と終了バッファフルネス情報をエンコーダ上で設定し、工程412で、直前のキーフレームからマークアウトポイントまでの(マークアウトポイントを含む)サンプルを再エンコードする。これによって、マークアウトポイントより後のすべてのサンプルが廃棄される。
【0026】
ファイルをまとめてステッチングする
ステッチングは、コンテンツの2つのピースを継ぎ合わせる操作を意味する。一般に、ユーザは、2つ以上の異なるファイルを持ち、異なる2つのファイルの部分同士を継ぎ合わせたいと考える。後述の例のように、継ぎ合わせたいファイルの部分同士は、上述のようにトリミングされているものとする。
【0027】
具体的には、図5に示すように、ステッチングしようとする例示的な第1および第2のセグメントを考える。この例では、ファイルのマークインポイント502より前がトリミングされており、マークインポイント502は、この例ではキーフレームを含まない。そのようにトリミングする場合は、直前のキーフレームを検索し(ここではキーフレーム500)、キーフレーム500から、マークインポイント502に関連付けられたフレームにかけてファイルをデコードすることを思い出されたい。この例ではまた、第2のセグメントの末尾が、マークアウトポイント514から上述のようにトリミングされているとする。
【0028】
記載の実施形態によれば、2つのファイルセグメントの処理の実行方法は、2つのファイルセグメントの間の継ぎ目の部分において、上述のものといくぶん異なる。具体的には、次のとおりである。第1のセグメントについては、マークアウトポイントの直前のキーフレーム(ここではキーフレーム504)を検索し、キーフレーム504に関連付けられたバッファフルネス情報を調べる。同様に、第2のセグメントについては、マークインポイント510の直前のキーフレーム(ここではキーフレーム508)を検索し、そこからデコード処理を開始する。さらに、第2のセグメントのマークインポイントの後のキーフレームを検索し、そのキーフレーム(ここではキーフレーム512)に関連付けられたバッファフルネス情報を調べる。
【0029】
記載の実施形態によれば、キーフレーム504からキーフレーム512までのサンプルをデコードする。さらに、所望の一定ビットレートに関連付けられたビットレート条件が満たされるようにするために、キーフレーム504およびキーフレーム512を含むフレームに関連付けられたバッファフルネス情報を圧縮器に供給して、一定ビットレート条件が維持されるようにする。圧縮器は、必要であれば、キーフレームの位置を調整して一定ビットレート条件を維持するように構成されることを思い出されたい。
【0030】
図6は、一実施形態によるステッチング方法の、異なる2つのファイルのコンテンツをステッチングする工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0031】
工程600で、第1および第2のファイルまたはファイルセグメントを継ぎ合わせる継ぎ合わせポイントを定義する。図5の例では、第1のファイルセグメントの継ぎ合わせポイントはマークアウトポイント506に対応し、第2のファイルの継ぎ合わせポイントはマークインポイント510に対応する。工程602で、第1のファイルにおける継ぎ合わせポイントの直前のキーフレームを検索し、そのキーフレームの開始バッファフルネス情報を計算する。図5の例では、直前のキーフレームはキーフレーム504に対応する。工程604で、第2のファイルにおける継ぎ合わせポイントの直前のキーフレームと次のキーフレームとを検索し、次のキーフレームの終了バッファフルネス情報を計算する。図5の例では、直前のキーフレームと次のキーフレームはそれぞれキーフレーム508、512に対応する。工程606で、第1のファイルにおける直前のキーフレーム(すなわち、キーフレーム504)から、第2のファイルにおける次のキーフレーム(すなわち、キーフレーム512)までの(キーフレーム512を含まない)サンプル(フレーム)をデコードする。
【0032】
工程608で、開始バッファフルネス情報と終了バッファフルネス情報をエンコーダ上で設定し、工程610で、第1のファイルにおける継ぎ合わせポイントに関連付けられたフレームを新しいキーフレームとして再エンコードし始める。工程612で、第2のファイルの、新しいキーフレームの後のフレームから次のキーフレームまで再エンコードを続け、それらの再エンコードされたフレームを出力ファイルにコピーする。工程614で、第2のファイルにおける次のキーフレームから第2のファイルの末尾までの圧縮されたサンプルを出力ファイルにコピーする。
【0033】
ファイルをまとめ、トランジションを付けてステッチングする
この例では、異なる2つのファイル部分(セグメント)をステッチングし、それらのファイルセグメントの継ぎ目にトランジションを適用できる。たとえば、図7は、セグメントの継ぎ目にトランジションを適用した異なる2つの(第1および第2の)ファイルセグメントを示す。この例では、圧縮解除および再圧縮に最適な場所を決定する処理を行う。したがって、この例の処理では、第1のセグメントにおけるマークイントランジション開始フレーム702の直前のキーフレーム(ここではキーフレーム700)を検索し、さらに、このフレームに関連付けられた開始バッファフルネス情報を計算する。また、第2のセグメントにおけるマークアウトトランジション終了フレーム710の後の最も近い次のキーフレーム(ここではキーフレーム712)を検索し、そのフレームに関連付けられた終了バッファフルネス情報を計算する。次に、これらのポイントの間にあるすべてのサンプルをデコード(圧縮解除)し、圧縮解除されたサンプルを圧縮器に供給する(これにはキーフレーム700が含まれ、キーフレーム712は含まれない)。第2のセグメントのデコードは、マークイントランジション開始フレーム708より前のキーフレーム706から始まることを理解されたい。
【0034】
図8は、一実施形態による、トランジションを含むステッチング方法の、異なる2つのファイルのコンテンツをステッチングし、そのファイルセグメント間にトランジションを含める工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0035】
工程800で、第1のファイルまたはファイルセグメントが第2のファイルまたはファイルセグメントに移行するトランジションポイントを定義する。図7の例では、第1のファイルセグメントのトランジションポイントはマークインポイント702に対応し、第2のファイルのトランジションポイントはマークアウトポイント710に対応する。工程802で、第1のファイルにおけるトランジションポイントの直前のキーフレームを検索し、そのキーフレームに関連付けられた開始バッファフルネス情報を計算する。図7の例では、直前のキーフレームはキーフレーム700に対応する。工程804で、第2のファイルにおけるトランジションポイントの直前のキーフレームと次のキーフレームとを検索し、次のキーフレームの終了バッファフルネス情報を計算する。図7の例では、直前のキーフレームと次のキーフレームはそれぞれキーフレーム706、712に対応する。工程806で、第1のファイルにおける直前のキーフレーム(すなわち、キーフレーム700)から、第2のファイルにおける次のキーフレーム(すなわち、キーフレーム712)までの(キーフレーム712を含まない)サンプルをデコードする。
【0036】
工程808で、しかるべきデコード済みフレームにトランジションを適用し、工程810で、バッファフルネス情報をエンコーダ上で設定する。工程812で、第1のファイルにおける直前のキーフレームからのフレームを再エンコードする。工程814で、第1のファイルにおける直前のキーフレームの後のフレームから、第2のファイルにおける次のキーフレームまで再エンコードを続け、再エンコードされたフレームを出力ファイルにコピーする。工程816で、第2のファイルにおける次のキーフレームから第2のファイルの末尾までの圧縮されたサンプルを出力ファイルにコピーする。
【0037】
ファイルにエフェクトを適用する
この例では、単一のファイル部分にエフェクトを適用する。例として、図9は、エフェクトが適用された例示的ファイルセグメントを示す。この例では、エフェクトが始まるフレーム(フレーム902)をセグメントのマークインポイントとして扱い、エフェクトが終わるフレーム(フレーム904)をマークアウトポイントとして扱う。したがって、処理では、マークインポイントの直前のキーフレーム(ここではフレーム900)を検索し、この、直前のキーフレームに関連付けられた開始バッファフルネス情報を計算する。さらに、マークアウトポイントの後の次のキーフレーム(ここではフレーム906)を検索し、このフレームに関連付けられた終了バッファフルネス情報を計算する。次に、それらの間のサンプルを圧縮解除し、それらのサンプルを、再圧縮できるように圧縮器に供給する。さらに、それらのキーフレームに関連付けられたバッファフルネス情報を圧縮器に供給する。圧縮器では、それによって、一定ビットレートに関連付けられたビットレート条件を維持するためにキーフレームをどこに配置するかについてインテリジェントな判断を下すことができる。
【0038】
図10は、コンテンツにエフェクトを適用する方法の工程を説明するフロー図である。本方法は、任意の好適なハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせと一緒に実装できる。いくつかの実施形態では、本方法は、コンピュータ可読媒体に存在するコンピュータ可読命令として実施できる。ただし、一例では、本方法は、以下に記載のシステムのようなシステムを用いて実装できる。
【0039】
工程1000では、マークインエフェクト開始ポイントおよびマークアウトエフェクト終了ポイントを定義する。これらはそれぞれ、図9の例のフレーム902および904に対応する。工程1002で、マークインエフェクト開始ポイントの直前のキーフレームを検索し、そのキーフレームに関連付けられた開始バッファフルネス情報を計算する。図9の例では、直前のキーフレームはキーフレーム900に対応する。工程1004で、マークアウトエフェクト終了ポイントの次のキーフレームを検索し、そのフレームに関連付けられた終了バッファフルネス情報を計算する。図9の例では、次のキーフレームはキーフレーム906に対応する。工程1006で、直前のキーフレーム900と次のキーフレーム906の間のサンプルをデコードする。工程1008で、しかるべきフレームにしかるべきエフェクトを適用する。
【0040】
工程1010で、開始バッファフルネス情報および終了バッファフルネス情報をエンコーダ上で設定し、工程1012で、直前のキーフレームから次のキーフレームまでのフレームを再エンコードし、再エンコードされたフレームを出力ファイルにコピーする。工程1014で、第2のファイルにおける次のキーフレームから第2のファイルの末尾までの圧縮されたサンプルを出力ファイルにコピーする。
【0041】
これらの手法を実行するための例示的システム
図11は、上述の手法を実装するように構成されたソフトウェアコンポーネントの高レベル図である。このソフトウェアコンポーネントは、コンピュータ可読媒体に組み込まれたパブリッシャコンピュータ1100の形をとり、そのコンピュータ可読媒体はコンピュータシステムに組み込まれている。図示および記載の実施形態では、パブリッシャコンポーネント1100は、アナライザ1102を含み、メディアプロジェクトを記述するためのタイムラインオブジェクト1108を構成する。パブリッシャコンポーネント1100は、アナライザ1102を通して、しかるべきタイムラインオブジェクト1108を作成するための情報を準備し、そのタイムラインオブジェクト1108は、上述の処理がすべて実行された後にしかるべきトポロジ1106を作成する。さらに、アナライザ1102が準備した情報をパブリッシャコンポーネント1100が用いて、上述のようにサンプルを圧縮する圧縮器1104を構成する。
【0042】
パブリッシャコンポーネント1100を用いた例示的システムを図12に示す。このシステムでは、ユーザが編集アプリケーション1200(Windows(登録商標) Movie Makerなど)を用いてマルチメディアムービーを作成、編集、および共有できる。運用時には、アプリケーション1200は、ユーザのプロジェクトを記述または表現する、タイムラインオブジェクトと呼ばれるもの1202を作成する。タイムラインオブジェクト1202は、各種メディアソース(すなわち、ファイルやファイルの部分)をどのように並べるかを効果的に記述する。このアプリケーションは、最終出力コレクション(destination collection)1204も定義する。最終出力コレクションは、最終出力を効果的に記述し、出力の構成設定(圧縮器1104で用いる圧縮設定など)が記述された出力プロファイルを提供する。
【0043】
例として、ユーザが作成したオブジェクトを表現するタイムラインオブジェクトの可視表現を図13に示す。この例では、タイムラインオブジェクトは、2つのファイル「ファイル1」および「ファイル2」を含む。ユーザのプロファイルは、3つのセグメント(セグメント1、セグメント2、およびセグメント3)に分かれている。セグメント1は、ファイル1の一部を含み、セグメント2は、ユーザがファイル1とファイル2の間に付加したトランジション(SMPTEワイプなど)を含み、セグメント3は、ファイル3の一部を含む。
【0044】
アプリケーション1200がタイムラインオブジェクト1202および最終出力コレクション1204を定義すると、この情報が、後述の処理のためにパブリッシャコンポーネントに供給される。一実施形態では、パブリッシャコンポーネントは、最終出力コレクション1204をチェックして、すぐ後に述べる操作をサポートするエンコードに関連付けられた圧縮設定が最終出力コレクションに含まれているかどうかを確認する。たとえば、Windows(登録商標)Media Video 9(WMV9)には上述の操作をサポートするエンコーダが含まれている。最終出力コレクションが上述の操作をサポートしていない場合は、タイムライン1202と最終出力コレクションを処理のために単純にメディアエンジン1206に渡すことができる。メディアエンジン1206は、ユーザのプロジェクトを処理およびレンダリングするように構成される。例示的なメディアエンジンが、参照により本明細書に組み込まれる米国特許出願第10/730735号明細書に開示されている。
【0045】
説明目的のため、最終出力コレクションは、圧縮設定が、上述の操作をサポートするエンコーダを示すことを示しているものとする。この場合、パブリッシャコンポーネント1100は、タイムラインオブジェクト1202および最終出力コレクション1204を解析のためにアナライザ1102に渡す。
【0046】
図示および記載した実施形態では、2ステップ(2フェーズ)で処理を行う。第1の処理ステップは、ユーザが定義したタイムラインをアナライザが処理および解析する解析ステップである。第2の処理ステップは、データが出力ファイルに書き込まれるときに行われる。
【0047】
解析ステップ
上の例では、ユーザがファイル1とファイル2の間にトランジションを挿入している。上述のように、トランジションの開始はマークインポイントで定義され、終了はマークアウトポイントで定義される。「ファイルをまとめ、トランジションを付けてステッチングする」の項に記載したように、この解析では、アナライザは、ファイル1におけるトランジションの先頭の直前のキーフレームを検索する。さらにアナライザは、ファイル2におけるトランジションの末尾の後の、次のキーフレームを検索する。これにより、アナライザは、これら2つのポイントの間で圧縮解除および再圧縮が必要になることを認識する。さらに、解析の一環として、アナライザ1102は、これらの範囲について開始バッファフルネス情報および終了バッファフルネス情報を計算する。記載の実施形態によれば、アナライザが計算できるバッファフルネスパラメータは、その範囲のビット数、その範囲のサンプル数、(グローバルタイムラインにおける)開始時刻、ファイル1におけるマークインポイントの直前のキーフレームに関連付けられた開始バッファフルネス情報、(グローバルタイムラインにおける)終了時刻、およびファイル2におけるマークアウトポイントの次のキーフレームに関連付けられた終了バッファフルネス情報を含むことができるが、これらに限定されない。
【0048】
アナライザは、この解析から、3つのセグメントを有する図13のタイムラインオブジェクトが、プロジェクト部分がインテリジェントに処理されるのであれば、適切な状態にならないことを確認できる。逆に、アナライザの解析によって新たに出てくるのは、図14に示す、5つのセグメントを有する新しいタイムラインオブジェクトである。
【0049】
したがって、アナライザ1102は、ユーザが定義したタイムラインオブジェクト1202(図12)を取得および処理して、ユーザのプロジェクトをより正確に表現する第2の新しいタイムラインオブジェクトを導出でき、それによってインテリジェントな圧縮解除および再圧縮の適用が可能になる。
【0050】
図示および記載の実施形態では、新しい(第2の)タイムラインオブジェクトが導出されると、その新しいタイムラインオブジェクトの部分的トポロジを導出できる。部分的トポロジは、異なるファイルにあるデータサンプルをどのように処理し、どのコンポーネントにどのセグメントを処理させるかを記述または定義するために用いられる。一例として、図14に概略的に示した部分的トポロジを考える。
【0051】
この例では、図14の新しいタイムラインオブジェクトから、パブリッシャコンポーネント1100は、部分的トポロジを導出し、セグメント1については、ソースファイル1を圧縮形式で出力ファイルに直接供給できることを確認できる。セグメント2については、パブリッシャコンポーネント1100は、ファイル1を、圧縮解除器を介して出力ファイルに供給されるよう定義する。ファイル1とファイル2の間のトランジションと一致するセグメント3については、パブリッシャコンポーネントは、ファイル1および2を、ワイプエフェクトの形で合成コンポーネントに供給されてから出力ファイルに供給されるよう定義する。セグメント4については、パブリッシャコンポーネントは、ファイル2を、圧縮解除器を介して出力ファイルに供給されるよう定義する。最後にセグメント5については、パブリッシャコンポーネント1100は、ファイル2を、圧縮形式で出力ファイルに直接コピーされるよう定義する。
【0052】
上述の部分的トポロジが与えられると、トポロジローダと呼ばれるコンポーネントが、この部分的トポロジを取得し、これよりフルトポロジを生成する。例示的なトポロジローダが、参照により本明細書に組み込まれる米国特許出願第10/796505号明細書に開示されている。図示および記載の実施形態によれば、再圧縮が必要なこれらのセグメントについて、トポロジローダは、適切な圧縮器をトポロジに挿入する。したがって、ここでの例では、トポロジローダは、セグメント2および4については、デコーダの後に圧縮器を挿入する。セグメント3については、トポロジローダは、ワイプコンポーネントの後に圧縮器を挿入する。
【0053】
処理におけるこの時点では、ユーザのプロジェクトの完全な(フル)トポロジが定義されていて、圧縮解除および処理されなければならない個々のファイルのそれらの部分だけが実際に圧縮解除および処理されるように、インテリジェントなデコードおよびエンコードが実施される。具体的に、上述の例では、セグメント1および5はユーザがさわらないので、これらのセグメントは圧縮解除不要である。
【0054】
データ書き込みステップ
パブリッシャコンポーネント1100は、上述のように新しいタイムライン1108(図12)と部分的トポロジおよびフルトポロジ1106とを作成した後、アナライザの解析結果と新しいタイムラインとを用いて、圧縮器1104を構成し、出力ファイルへの圧縮データの書き込みを実際に開始する。
【0055】
ユーザによる選択が可能な圧縮プロファイル
上述のシステムおよび方法の有利点の1つとして、ユーザは、圧縮プロファイルを選択して、ファイルの圧縮(エンコード)にそれらの圧縮プロファイルが用いられるようにできる。ユーザが圧縮プロファイルを選択しない場合、ファイルの圧縮は別の圧縮プロファイルに従って行われる。この選択は、たとえば、アプリケーション1200(図12)のようなアプリケーションで行うことができる。
【0056】
一例を示す。ユーザが、ステッチングしたいファイルまたはファイルセグメントを多数持っていて、各ファイルまたはファイルセグメントにまったく同じ圧縮が適用されているとは限らない可能性があるとする。たとえば、ファイル1は、ビットレート100Kbpsの320×240に圧縮されていて、ファイル2は、ビットレート1Mbpsの640×480に圧縮されていて、ファイル3は、ビットレート200Kbpsの320×240に圧縮されている可能性があるとする。ユーザがこれらのファイルをステッチングし、中程度の品質でプロジェクトを圧縮しようとすれば、ユーザは、ファイル3(すなわち、200kbpsの320×240)に関連付けられた圧縮パラメータを選択できる。ファイル2およびファイル1に適用された圧縮はこれらのパラメータと完全には一致しないので、それらのファイルには何らかの特殊な処理を適用することになる。具体的には、それらのファイルをステッチングする際に、ファイル1を圧縮解除して200kbpsに再圧縮してから出力ファイルに書き込むことができる。また、ファイル2は、圧縮解除し、より小さいサイズ(320×240)に変更してから、200Kbpsに再圧縮して出力ファイルに書き込むことができる。ファイル3は、そのまま出力ファイルにコピーすればよい。ユーザがアプリケーションを通して明確に指定した、これらの圧縮パラメータの変更は、少なくともいくつかの実施形態では、パブリッシャコンポーネント1100で処理できる。
【0057】
上記の説明を考慮すれば自明であるように、エンコーダが再エンコード処理時にバッファフルネス情報を用いるのは、ストリーミング環境においてプロジェクトの再生が円滑に行われるように、一定ビットレート条件が維持されるようにするためである。
【0058】
アプリケーションによる選択が可能な圧縮プロファイルおよびインテリジェント操作
いくつかの実施形態では、圧縮解除および再圧縮を行うコンテンツの量についてインテリジェントな判断が行われるように、コンテンツをエンコードする際の圧縮プロファイルをアプリケーション側が自動的に選択できるようなアプリケーションを作成できる。つまり、圧縮プロファイルがそれぞれ異なる多数のファイルセグメントがある場合に、適切に構成されたアプリケーションであれば、ファイルセグメントのコレクションと、そのファイルセグメントに対して実行されるべき操作とを解析でき、圧縮解除および再圧縮されるコンテンツの量を最小化するか、少なくとも低減することを主眼とする圧縮プロファイルを自動的に選択できる。
【0059】
また、圧縮プロファイルの違いに関係なく、またはその違いに加えて、ソースフォーマットと出力フォーマットが必ずしも一致していない可能性がある場合に、メディアを柔軟に処理および調整できるようにアプリケーションを構成できる。つまり、フォーマットの違いによって処理が妨げられてはならない状況が存在する可能性がある。
【0060】
一例を示す。上述の解析の一環として、特定ソースのフォーマットが所望の出力ファイルのフォーマットと一致するかどうかを確認するために解析を行うことができる。フォーマットの違いが明らかになった場合でも、本発明のシステムおよび方法は、そのメディアを処理できる。この例では、フォーマットの違いが生じる状況は、プライベートのデータ、フレームレート、およびビットレートに関係がある可能性がある。
【0061】
プライベートデータに関しては、ソースフォーマットと出力フォーマットとが正確に一致していなくてもよい場合がある。図示および記載の実施形態では、少なくともある程度のデータフォーマット(たとえば、プライベートデータフォーマット)の違いは、上述の本発明による処理の実行を妨げない。これらの違いは、「これらの手法を実行するための例示的システム」の項で説明した処理の際に対処される。
【0062】
フレームレートに関しては、以下のとおりである。ビデオフォーマットは、30フレーム/秒(f/s)を利用するフォーマットもあれば、29.9997f/s(0.03333平均時間/フレーム)を利用するフォーマットもある。これらのフォーマットは本質的には同等なので、上述の処理の際は同じように扱われなければならない。フォーマットの違いがあるものの、それらが本質的に同等であれば、本発明による上述の処理では、それらのフォーマットを実質的に同等なものとして扱わなければならない。
【0063】
ビットレートに関しては、以下のとおりである。最終出力ビットレートがソースビットレートより高い場合でも、本発明による上述の処理を行わなければならない。最終ビットレートが高くてもソースの質は変わらないからである。ただし、逆が真でないことは、当業者であれば理解されよう。したがって、この場合は、フォーマットの違いがソースメディアの品質に影響しないのであれば、本発明による上述の処理を行わなければならない。
【0064】
まとめると、ソースファイルと出力ファイルの間でフォーマットの違いがあっても、それによって処理が妨げられない状況がある。考慮できる検討内容として、違いの大きさ(フレームレートの例と同様)と、メディアの処理が出力の品質にもたらす影響がある。フォーマットが実質的に同等である(フォーマットに有意な違いがない)か、違いがあっても簡単に対処できる場合は、処理を行わなければならない。同様に、フォーマットの違いが出力ファイルの全体の品質に影響しない(品質を有意に劣化させない)場合は、処理を行わなければならない。
【0065】
むすび
上述の各種の方法およびシステムは、コンテンツ作成者がフレーム単位編集を行うことを可能にし、圧縮解除および再圧縮の処理を受けるコンテンツの量を低減できる。また、各種のシステムおよび方法は、ストリーミング環境に関連付けられたビットレート条件を維持するために、ビットレートの整合性が維持されるようにできる。上述の方式では、各種方法およびシステムは、どのコンテンツ部分が圧縮解除、処理、および再圧縮されなければならず、どのコンテンツ部分が圧縮解除されるべきでないかをインテリジェントに判断することを主眼とする。記載の方式により、コンテンツ作成者は、以前よりさらに高い品質のコンテンツを、以前より格段に短い時間で作成することが可能になる。
【0066】
構造的特徴および/または手法の工程に固有の文言で本発明について説明してきたが、添付の特許請求項で定義された本発明は、説明した特定の特徴または工程に必ずしも限定されないことを理解されたい。むしろ、それらの特定の特徴および工程は、請求する発明の好ましい実施形態として開示されている。
【図面の簡単な説明】
【0067】
【図1】例示的なキーフレームおよび中間フレームを示すブロック図である。
【図2】一実施形態によるファイルトリミング操作を説明するために用いるファイルの説明図である。
【図3】一実施形態によるファイルトリミング方法の工程を説明するフロー図である。
【図4】一実施形態によるファイルトリミング方法の工程を説明するフロー図である。
【図5】一実施形態によるファイルステッチング操作を説明するために用いるファイルの説明図である。
【図6】一実施形態によるファイルステッチング方法の工程を説明するフロー図である。
【図7】一実施形態によるファイルステッチング/トランジション操作を説明するために用いるファイルの説明図である。
【図8】一実施形態によるファイルステッチング/トランジション方法の工程を説明するフロー図である。
【図9】一実施形態による、エフェクトをファイルの一部分に適用する操作を説明するために用いるファイルの説明図である。
【図10】一実施形態による、エフェクトをファイルの一部分に適用する方法の工程を説明するフロー図である。
【図11】一実施形態によるインテリジェントな圧縮解除および再圧縮を適用できる例示的なコンポーネントのブロック図である。
【図12】図11のコンポーネントを利用できる例示的なシステムのブロック図である。
【図13】一実施形態による、ユーザが作成したプロジェクトを表現するタイムラインオブジェクトの可視表現を示す図である。
【図14】一実施形態による、図13のタイムラインオブジェクトから作成されるタイムラインオブジェクトを図解する図である。
【特許請求の範囲】
【請求項1】
廃棄されるファイルコンテンツを指定するマークインポイントをファイルに対して定義することと、
前記マークインポイントの、少なくとも直前および次の、単独でのデコードが可能なフレームを検索することと、
前記直前のキーフレームから前記次のキーフレームまでのフレームをデコードすることと、
前記マークインポイントに関連付けられたフレームを新しいキーフレームとして再エンコードすることと、
前記次の、単独でのデコードが可能なフレームまでの残りのフレームを再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項2】
単独でのデコードが可能な直前のフレームを検索する前記操作は、前記マークインポイントに関連付けられたフレームが、単独でのデコードが可能なフレームでない場合のみ実行されることを特徴とする請求項1に記載の方法。
【請求項3】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項1に記載の方法。
【請求項4】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項1に記載の方法。
【請求項5】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
1つまたは複数のプロセッサによって実行されたときに請求項1に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項7】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項1に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項8】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項7に記載のコンピュータシステム。
【請求項9】
廃棄されるファイルコンテンツを指定するマークアウトポイントをファイルに対して定義することと、
前記ファイルコンテンツのエンコードに双方向フレームが用いられているかどうかを調べることと、
前記ファイルコンテンツのエンコードに双方向フレームが用いられていない場合には、前記マークアウトポイントより後のフレームを廃棄することと、
前記ファイルコンテンツのエンコードに双方向フレームが用いられている場合には、
前記マークアウトポイントの直前の、単独でのデコードが可能なフレームを検索し、
前記直前の、単独でのデコードが可能なフレームから、前記マークアウトポイントに関連付けられたフレームまでの、前記マークアウトポイントに関連付けられたフレームを含むフレーム群をデコードし、
前記直前の、単独でのデコードが可能なフレームから、前記マークアウトポイントに関連付けられた前記フレームまでの、前記マークアウトポイントに関連付けられた前記フレームを含むフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項10】
前記再エンコード後に、前記マークアウトポイントに関連付けられた前記フレームより後のフレームを廃棄することをさらに含むことを特徴とする請求項9に記載の方法。
【請求項11】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項9に記載の方法。
【請求項12】
1つまたは複数のプロセッサによって実行されたときに請求項9に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項13】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項9に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項14】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項13に記載のコンピュータシステム。
【請求項15】
第1および第2のファイルセグメントを継ぎ合わせる継ぎ合わせポイントを定義することと、
前記第1のファイルセグメントにおける前記継ぎ合わせポイントの直前の、単独でのデコードが可能なフレームを検索することと、
前記第2のファイルセグメントにおける前記継ぎ合わせポイントの、少なくとも直前および次の、単独でのデコードが可能なフレームを検索することと、
前記第1のファイルセグメントにおける前記直前の、単独でのデコードが可能なフレームから、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームまでの、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームを含まないフレーム群をデコードすることと、
前記第1のファイルセグメントにおける前記継ぎ合わせポイントに関連付けられたフレームを新しいキーフレームとして再エンコードすることと、
前記新しいキーフレームより後の、少なくとも、前記第2のファイルセグメントにおける前記継ぎ合わせポイントに関連付けられたフレームを含む、前記第2のファイルセグメントにおける前記継ぎ合わせポイントに関連付けられたフレームまでの残りのフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項16】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項15に記載の方法。
【請求項17】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項15に記載の方法。
【請求項18】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項15に記載の方法。
【請求項19】
1つまたは複数のプロセッサによって実行されたときに請求項15に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項20】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項15に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項21】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項20に記載のコンピュータシステム。
【請求項22】
第1のファイルセグメントから第2のファイルセグメントへのトランジションを発生させる場所を定義するトランジションポイントを定義することと、
前記第1のファイルセグメントにおけるトランジションポイントの直前の、単独でのデコードが可能なフレームを検索することと、
前記第2のファイルセグメントにおけるトランジションポイントの、少なくとも直前および次の、単独でのデコードが可能なフレームを検索することと、
前記第1のファイルセグメントにおける前記直前の、単独でのデコードが可能なフレームから、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームまでの、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームを含まないフレーム群をデコードすることと、
少なくともいくつかの前記デコード済みフレームに前記トランジションを適用することと、
前記第1のファイルセグメントにおける前記直前の、単独でのデコードが可能なフレームから、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームまでの、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームを含まないフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項23】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項22に記載の方法。
【請求項24】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項22に記載の方法。
【請求項25】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項22に記載の方法。
【請求項26】
1つまたは複数のプロセッサによって実行されたときに請求項22に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項27】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項22に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項28】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項27に記載のコンピュータシステム。
【請求項29】
エフェクトを適用するファイルセグメントを定義するマークインエフェクト開始ポイントとマークアウトエフェクト終了ポイントとを定義することと、
前記マークインエフェクト開始ポイントの直前の、単独でのデコードが可能なフレームを検索することと、
前記マークアウトエフェクト終了ポイントの次の、単独でのデコードが可能なフレームを検索することと、
前記直前の、単独でのデコードが可能なフレームから、前記次の、単独でのデコードが可能なフレームまでの、前記次の、単独でのデコードが可能なフレームを含まないフレーム群をデコードすることと、
少なくとも1つのデコード済みフレームに前記エフェクトを適用することと、
前記直前の、単独でのデコードが可能なフレームから、少なくとも、前記次の、単独でのデコードが可能なフレームまでのフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項30】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項29に記載の方法。
【請求項31】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項29に記載の方法。
【請求項32】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項29に記載の方法。
【請求項33】
1つまたは複数のプロセッサによって実行されたときに請求項29に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項34】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項29に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項35】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項34に記載のコンピュータシステム。
【請求項36】
1つまたは複数のコンピュータ可読媒体と、
1つまたは複数のコンピュータ可読媒体に組み込まれた1つまたは複数のソフトウェアコンポーネントとを備え、前記1つまたは複数のソフトウェアコンポーネントは、
ユーザのマルチメディアプロジェクトを記述するタイムラインオブジェクトをアプリケーションから受け取り、
前記タイムラインオブジェクトを解析して、前記ユーザのマルチメディアプロジェクトの、デコードされることが必要な部分が明確に定義されるように、前記ユーザのマルチメディアプロジェクトを記述する新しいタイムラインオブジェクトを導出し、
前記ユーザのプロジェクトに関連付けられたファイル部分を処理するために用いられる部分的トポロジを導出し、
前記部分的トポロジから、前記ファイル部分の処理に用いられるフルトポロジを導出するように構成されることを特徴とするシステム。
【請求項37】
前記1つまたは複数のソフトウェアコンポーネントは、少なくとも、圧縮器コンポーネントを前記部分的トポロジの部分に挿入することによって前記フルトポロジを導出するように構成されることを特徴とする請求項36に記載のシステム。
【請求項38】
マルチメディアプロジェクトに関係するユーザ入力を受け取り、前記ユーザ入力から、前記1つまたは複数のソフトウェアコンポーネントに供給できるタイムラインオブジェクトを生成するように構成されたアプリケーションをさらに含むことを特徴とする請求項36に記載のシステム。
【請求項39】
前記1つまたは複数のソフトウェアコンポーネントは、前記ユーザのプロジェクトのフレーム群に関連付けられたバッファフルネス情報を計算し、前記バッファフルネス情報を用いて、前記プロジェクトのデコード済みフレームを再エンコードするために用いられる圧縮器を構成するように構成されることを特徴とする請求項36に記載のシステム。
【請求項40】
前記1つまたは複数のソフトウェアコンポーネントは、少なくとも前記新しいタイムラインオブジェクトに従って圧縮器を構成し、圧縮されたデータが出力ファイルに書き込まれるようにするように構成されることを特徴とする請求項36に記載のシステム。
【請求項41】
前記新しいタイムラインオブジェクトは、
トリミングされるファイルセグメントと、
トリミングおよびステッチングされるファイルセグメントと、
ステッチングされるファイルセグメントと、
少なくとも1つのトランジションが組み込まれるファイルセグメントと、
少なくとも1つのエフェクトが組み込まれるファイルセグメントのうちの1つまたは複数を記述できることを特徴とする請求項36に記載のシステム。
【請求項42】
1つまたは複数のファイルセグメントの少なくとも一部分がデコードされることを必要とする1つまたは複数の操作を受ける1つまたは複数の圧縮済みマルチメディアファイルを受け取ることと、
前記1つまたは複数の操作を実行するために、前記1つまたは複数のファイルセグメントの、デコードされることが必要な部分だけをデコードし、前記デコード操作の実行対象が、少なくとも1つの前記マルチメディアファイルの丸ごとより少ないことと、
前記1つまたは複数のファイルセグメントのデコード済み部分に前記1つまたは複数の操作を実行して、1つまたは複数の最終ファイルセグメントを提供することと、
前記最終ファイルセグメントを再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項43】
前記1つまたは複数の操作は、トリミング操作と、トランジション操作と、エフェクト操作と、これらの組み合わせのうちの1つまたは複数を含むことを特徴とする請求項42に記載の方法。
【請求項44】
前記1つまたは複数のセグメントの表現をユーザに呈示することをさらに含み、前記表現は、ユーザがセグメントを選択し、選択したセグメントに対して操作を行うことを可能にすることを特徴とする請求項42に記載の方法。
【請求項45】
前記再エンコード操作は、前記再エンコード操作に用いる圧縮プロファイルを自動的に選択するように構成されたアプリケーションによって実行されることを特徴とする請求項42に記載の方法。
【請求項46】
前記操作は、前記マルチメディアファイルのうちの1つまたは複数のファイルのフォーマットが、出力ファイルのフォーマットと一致しない場合に実行できることを特徴とする請求項42に記載の方法。
【請求項47】
前記フォーマットが一致しない場合に、前記フォーマットが実質的に同等かどうかを調べ、実質的に同等であれば、少なくとも、前記1つまたは複数の操作を実行することをさらに含むことを特徴とする請求項46に記載の方法。
【請求項48】
前記フォーマットが一致しない場合に、前記1つまたは複数の操作が実行された場合とされない場合とで前記マルチメディアファイルの品質が劣化するかどうかを調べてから、前記1つまたは複数の操作を実行することをさらに含むことを特徴とする請求項46に記載の方法。
【請求項1】
廃棄されるファイルコンテンツを指定するマークインポイントをファイルに対して定義することと、
前記マークインポイントの、少なくとも直前および次の、単独でのデコードが可能なフレームを検索することと、
前記直前のキーフレームから前記次のキーフレームまでのフレームをデコードすることと、
前記マークインポイントに関連付けられたフレームを新しいキーフレームとして再エンコードすることと、
前記次の、単独でのデコードが可能なフレームまでの残りのフレームを再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項2】
単独でのデコードが可能な直前のフレームを検索する前記操作は、前記マークインポイントに関連付けられたフレームが、単独でのデコードが可能なフレームでない場合のみ実行されることを特徴とする請求項1に記載の方法。
【請求項3】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項1に記載の方法。
【請求項4】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項1に記載の方法。
【請求項5】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
1つまたは複数のプロセッサによって実行されたときに請求項1に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項7】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項1に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項8】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項7に記載のコンピュータシステム。
【請求項9】
廃棄されるファイルコンテンツを指定するマークアウトポイントをファイルに対して定義することと、
前記ファイルコンテンツのエンコードに双方向フレームが用いられているかどうかを調べることと、
前記ファイルコンテンツのエンコードに双方向フレームが用いられていない場合には、前記マークアウトポイントより後のフレームを廃棄することと、
前記ファイルコンテンツのエンコードに双方向フレームが用いられている場合には、
前記マークアウトポイントの直前の、単独でのデコードが可能なフレームを検索し、
前記直前の、単独でのデコードが可能なフレームから、前記マークアウトポイントに関連付けられたフレームまでの、前記マークアウトポイントに関連付けられたフレームを含むフレーム群をデコードし、
前記直前の、単独でのデコードが可能なフレームから、前記マークアウトポイントに関連付けられた前記フレームまでの、前記マークアウトポイントに関連付けられた前記フレームを含むフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項10】
前記再エンコード後に、前記マークアウトポイントに関連付けられた前記フレームより後のフレームを廃棄することをさらに含むことを特徴とする請求項9に記載の方法。
【請求項11】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項9に記載の方法。
【請求項12】
1つまたは複数のプロセッサによって実行されたときに請求項9に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項13】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項9に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項14】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項13に記載のコンピュータシステム。
【請求項15】
第1および第2のファイルセグメントを継ぎ合わせる継ぎ合わせポイントを定義することと、
前記第1のファイルセグメントにおける前記継ぎ合わせポイントの直前の、単独でのデコードが可能なフレームを検索することと、
前記第2のファイルセグメントにおける前記継ぎ合わせポイントの、少なくとも直前および次の、単独でのデコードが可能なフレームを検索することと、
前記第1のファイルセグメントにおける前記直前の、単独でのデコードが可能なフレームから、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームまでの、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームを含まないフレーム群をデコードすることと、
前記第1のファイルセグメントにおける前記継ぎ合わせポイントに関連付けられたフレームを新しいキーフレームとして再エンコードすることと、
前記新しいキーフレームより後の、少なくとも、前記第2のファイルセグメントにおける前記継ぎ合わせポイントに関連付けられたフレームを含む、前記第2のファイルセグメントにおける前記継ぎ合わせポイントに関連付けられたフレームまでの残りのフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項16】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項15に記載の方法。
【請求項17】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項15に記載の方法。
【請求項18】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項15に記載の方法。
【請求項19】
1つまたは複数のプロセッサによって実行されたときに請求項15に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項20】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項15に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項21】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項20に記載のコンピュータシステム。
【請求項22】
第1のファイルセグメントから第2のファイルセグメントへのトランジションを発生させる場所を定義するトランジションポイントを定義することと、
前記第1のファイルセグメントにおけるトランジションポイントの直前の、単独でのデコードが可能なフレームを検索することと、
前記第2のファイルセグメントにおけるトランジションポイントの、少なくとも直前および次の、単独でのデコードが可能なフレームを検索することと、
前記第1のファイルセグメントにおける前記直前の、単独でのデコードが可能なフレームから、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームまでの、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームを含まないフレーム群をデコードすることと、
少なくともいくつかの前記デコード済みフレームに前記トランジションを適用することと、
前記第1のファイルセグメントにおける前記直前の、単独でのデコードが可能なフレームから、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームまでの、前記第2のファイルセグメントにおける前記次の、単独でのデコードが可能なフレームを含まないフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項23】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項22に記載の方法。
【請求項24】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項22に記載の方法。
【請求項25】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項22に記載の方法。
【請求項26】
1つまたは複数のプロセッサによって実行されたときに請求項22に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項27】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項22に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項28】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項27に記載のコンピュータシステム。
【請求項29】
エフェクトを適用するファイルセグメントを定義するマークインエフェクト開始ポイントとマークアウトエフェクト終了ポイントとを定義することと、
前記マークインエフェクト開始ポイントの直前の、単独でのデコードが可能なフレームを検索することと、
前記マークアウトエフェクト終了ポイントの次の、単独でのデコードが可能なフレームを検索することと、
前記直前の、単独でのデコードが可能なフレームから、前記次の、単独でのデコードが可能なフレームまでの、前記次の、単独でのデコードが可能なフレームを含まないフレーム群をデコードすることと、
少なくとも1つのデコード済みフレームに前記エフェクトを適用することと、
前記直前の、単独でのデコードが可能なフレームから、少なくとも、前記次の、単独でのデコードが可能なフレームまでのフレーム群を再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項30】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することとをさらに含むことを特徴とする請求項29に記載の方法。
【請求項31】
デコード済みのフレームに関連付けられたバッファフルネス情報を計算することと、前記再エンコード処理中に一定ビットレート条件に違反しないかどうかを確認することと、違反する場合は前記再エンコード処理を調整することとをさらに含み、前記再エンコード処理を調整する前記操作は、少なくとも1つの、単独でのデコードが可能なフレームの位置を調整することを含むことを特徴とする請求項29に記載の方法。
【請求項32】
ユーザが選択した圧縮パラメータを受け取ることと、前記再エンコード操作中に前記圧縮パラメータを適用することとをさらに含むことを特徴とする請求項29に記載の方法。
【請求項33】
1つまたは複数のプロセッサによって実行されたときに請求項29に記載の方法を実施するコンピュータ可読命令を格納する、1つまたは複数のコンピュータ可読媒体。
【請求項34】
1つまたは複数のコンピュータ可読媒体と、
前記1つまたは複数のコンピュータ可読媒体に組み込まれ、請求項29に記載の方法を実装するように構成された1つまたは複数のソフトウェアコンポーネントとを備えることを特徴とするシステム。
【請求項35】
前記1つまたは複数のコンピュータ可読を組み込むことを特徴とする請求項34に記載のコンピュータシステム。
【請求項36】
1つまたは複数のコンピュータ可読媒体と、
1つまたは複数のコンピュータ可読媒体に組み込まれた1つまたは複数のソフトウェアコンポーネントとを備え、前記1つまたは複数のソフトウェアコンポーネントは、
ユーザのマルチメディアプロジェクトを記述するタイムラインオブジェクトをアプリケーションから受け取り、
前記タイムラインオブジェクトを解析して、前記ユーザのマルチメディアプロジェクトの、デコードされることが必要な部分が明確に定義されるように、前記ユーザのマルチメディアプロジェクトを記述する新しいタイムラインオブジェクトを導出し、
前記ユーザのプロジェクトに関連付けられたファイル部分を処理するために用いられる部分的トポロジを導出し、
前記部分的トポロジから、前記ファイル部分の処理に用いられるフルトポロジを導出するように構成されることを特徴とするシステム。
【請求項37】
前記1つまたは複数のソフトウェアコンポーネントは、少なくとも、圧縮器コンポーネントを前記部分的トポロジの部分に挿入することによって前記フルトポロジを導出するように構成されることを特徴とする請求項36に記載のシステム。
【請求項38】
マルチメディアプロジェクトに関係するユーザ入力を受け取り、前記ユーザ入力から、前記1つまたは複数のソフトウェアコンポーネントに供給できるタイムラインオブジェクトを生成するように構成されたアプリケーションをさらに含むことを特徴とする請求項36に記載のシステム。
【請求項39】
前記1つまたは複数のソフトウェアコンポーネントは、前記ユーザのプロジェクトのフレーム群に関連付けられたバッファフルネス情報を計算し、前記バッファフルネス情報を用いて、前記プロジェクトのデコード済みフレームを再エンコードするために用いられる圧縮器を構成するように構成されることを特徴とする請求項36に記載のシステム。
【請求項40】
前記1つまたは複数のソフトウェアコンポーネントは、少なくとも前記新しいタイムラインオブジェクトに従って圧縮器を構成し、圧縮されたデータが出力ファイルに書き込まれるようにするように構成されることを特徴とする請求項36に記載のシステム。
【請求項41】
前記新しいタイムラインオブジェクトは、
トリミングされるファイルセグメントと、
トリミングおよびステッチングされるファイルセグメントと、
ステッチングされるファイルセグメントと、
少なくとも1つのトランジションが組み込まれるファイルセグメントと、
少なくとも1つのエフェクトが組み込まれるファイルセグメントのうちの1つまたは複数を記述できることを特徴とする請求項36に記載のシステム。
【請求項42】
1つまたは複数のファイルセグメントの少なくとも一部分がデコードされることを必要とする1つまたは複数の操作を受ける1つまたは複数の圧縮済みマルチメディアファイルを受け取ることと、
前記1つまたは複数の操作を実行するために、前記1つまたは複数のファイルセグメントの、デコードされることが必要な部分だけをデコードし、前記デコード操作の実行対象が、少なくとも1つの前記マルチメディアファイルの丸ごとより少ないことと、
前記1つまたは複数のファイルセグメントのデコード済み部分に前記1つまたは複数の操作を実行して、1つまたは複数の最終ファイルセグメントを提供することと、
前記最終ファイルセグメントを再エンコードすることとを含むことを特徴とするコンピュータに実装される方法。
【請求項43】
前記1つまたは複数の操作は、トリミング操作と、トランジション操作と、エフェクト操作と、これらの組み合わせのうちの1つまたは複数を含むことを特徴とする請求項42に記載の方法。
【請求項44】
前記1つまたは複数のセグメントの表現をユーザに呈示することをさらに含み、前記表現は、ユーザがセグメントを選択し、選択したセグメントに対して操作を行うことを可能にすることを特徴とする請求項42に記載の方法。
【請求項45】
前記再エンコード操作は、前記再エンコード操作に用いる圧縮プロファイルを自動的に選択するように構成されたアプリケーションによって実行されることを特徴とする請求項42に記載の方法。
【請求項46】
前記操作は、前記マルチメディアファイルのうちの1つまたは複数のファイルのフォーマットが、出力ファイルのフォーマットと一致しない場合に実行できることを特徴とする請求項42に記載の方法。
【請求項47】
前記フォーマットが一致しない場合に、前記フォーマットが実質的に同等かどうかを調べ、実質的に同等であれば、少なくとも、前記1つまたは複数の操作を実行することをさらに含むことを特徴とする請求項46に記載の方法。
【請求項48】
前記フォーマットが一致しない場合に、前記1つまたは複数の操作が実行された場合とされない場合とで前記マルチメディアファイルの品質が劣化するかどうかを調べてから、前記1つまたは複数の操作を実行することをさらに含むことを特徴とする請求項46に記載の方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公表番号】特表2007−535781(P2007−535781A)
【公表日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願番号】特願2007−510685(P2007−510685)
【出願日】平成16年7月22日(2004.7.22)
【国際出願番号】PCT/US2004/023627
【国際公開番号】WO2005/112450
【国際公開日】平成17年11月24日(2005.11.24)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
【公表日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願日】平成16年7月22日(2004.7.22)
【国際出願番号】PCT/US2004/023627
【国際公開番号】WO2005/112450
【国際公開日】平成17年11月24日(2005.11.24)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】
[ Back to top ]