高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1110
QuickTime Media Editing


Q:QuickTime メディアを編集する基本的な手順は理解しているのですが、より細かい点をいくつか明確にしたいと思っています。InsertMediaIntoTrack を使ったときに、すでにトラックにあるメディアには何が起こるのでしょうか? GetTrackMedia を呼び出してトラックからメディアを取得するということが何を意味しているかあまりよくわかりません。この呼び出しはメディアを取り除くのでしょうか? トラックを編集したい場合、メディアを取り除いて、その後再挿入するべきなのでしょうか?

A:「メディア」という言葉について混乱があるのはわかります。メディアという言葉は普通は、オーディオまたはビデオなどを指すのに使われますが、QuickTime API を使用しているときは通常、メディア(media)という言葉を含む GetTrackMedia などの関数では、データ構造体を表します。

メディアデータ構造体には、ビデオフレームやオーディオサンプルなど、実際のサンプルデータへの参照は含まれていますが、サンプルデータそのものは含まれていません。これは、今後 QuickTime で作業を続ける場合は覚えておかなければならない非常に重要な概念です。

GetTrackMedia API を使用するとき、実際には、特定のトラックによって使用されているメディアデータ構造体の場所を探しています。

AddMediaSample などの API を使って、新しいサンプルデータをメディアに追加するときは、サンプルデータは通常、既存のサンプルデータの最後に追加され、そのデータへの参照はメディアデータ構造体の最後に追加されます。

AddMediaSampleReference または AddMediaSampleReferencesan などの API を使って、既存のサンプルデータに参照だけを追加することもできます。これらの参照もメディア構造体の最後に追加されます。

メディアの構造体の中央に参照を追加することはできません。代わりにトラックには編集リストを含めることができます。このトラックの編集リストは、メディアのセグメントの再生順序を指定します。サンプルをトラックの中央に追加するには、サンプルをメディアに追加し、メディアの追加部分を参照するトラックのセグメントを挿入します。

InsertMediaIntoTrack は、メディアデータ構造体をトラックに挿入するのではなく、そのメディアの 1 セグメントを参照するトラックのセグメントを挿入します。この関数を使えば、メディア構造体末尾のセグメントをトラックの中央に挿入できます。この 2 つは独立のものとなります。

メディアを直接編集してはいけません。メディアを参照するトラックに編集リストを編集します。

ムービーを保存するとき、平坦化することができます。 この平坦化処理は、メディアを編集してくれます。 つまり、QuickTime が、データサンプルの順番を表示される順序で保存されるように再構成し、ムービーが同期して再生されるように別々のトラックのデータを交互に配置し、参照されていなデータをメディア構造体から削除します。

元のサンプルデータはこの平坦化の影響を受けません。QuickTime は、参照されたサンプルデータだけを含む新しいファイルを作成します。

QuickTime プログラミングの要約: Editing Movies


[2002 年 1 月 16 日]