Microsoft DirectX 8.0 |
ビデオを編集するためには、時間に関する重要な概念をいくつか扱わなければならない。例を示す。
Microsoft® DirectShow® 編集サービス (DES) には、時間やフレーム レートを扱う多数のメソッドがあり、それらの値の意味は状況によって異なる。ここでは、DES で使われるさまざまな時間の計測単位を説明する。以下のセクションが含まれる。
パラメータが時間を表す場合、3 とおりの意味がある。
メディア タイムは、ソース オブジェクトにのみ適用される。各ソース オブジェクトには、メディア開始タイムとメディア終了タイムがある。たとえば、10 秒間のビデオ クリップがあり、クリップの途中の 5 秒間だけを使いたい場合、クリップから最初の 2 秒と最後の 3 秒をトリミングする。このクリップをプロジェクト内で (通常の再生速度で) 20 秒の位置から開始したい場合、開始タイムと終了タイムを次のように指定することになる。
フレーム レートは、メディア ストリームの "速度" であり、毎秒のフレーム数で計測される。時間値の場合と同様に、フレーム レートの意味は状況によって異なる。
再生レート = (メディア終了タイム - メディア開始タイム) / (タイムライン終了タイム - タイムライン開始タイム)
以上の 3 種類のレートは、それぞれ他とは独立している点に注意すること。
プロジェクトをレンダリングするときに、すべての時間は、グループのフレーム レートによって決まる最も近いフレーム境界に丸められる。たとえば、ビデオ グループのフレーム レートが 30 fps であるとする。各フレームはほぼ 33 ミリ秒 (ms) であるとする。ここで、タイムラインに対して 1.68 秒のソース クリップを追加し、このクリップは時間ゼロから始まるとする。このソースは、フレーム境界ちょうどでは終了しないので、DES は終了タイムを 1.6666 秒 (50 フレーム) に丸める。レンダリング後のプロジェクトで 1.68 秒の位置を調べた場合、実際にはソースが終了した後 (51 番目のフレーム) を調べることになる。
ただし、DES はソースの終了タイムを書き換えることはしない。後でグループのフレーム レートを変更するか、ソースをタイムライン内の別の位置に移動した場合には、時間を丸めた結果は異なるものになる。そのため、DES はもとの終了タイムを維持し、必要なときにのみ丸めを行う。詳細については、「IAMTimelineObj::FixTimes」を参照すること。