次の方法で共有


グループコンポジションとトラックの作成

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

[この API はサポートされていないため、今後変更または使用できない可能性があります。]

グループ、コンポジション、トラックは、タイムラインとソース クリップの中間レイヤーです。 これらは、含めることができるオブジェクトの種類によって区別されます。

  • トラックにはソース オブジェクトが含まれています。
  • コンポジションにはトラックやその他のコンポジションが含まれますが、ソース オブジェクトは含まれません。
  • グループは最上位レベルのコンポジションです。 グループにはコンポジションとトラックが含まれますが、コンポジションにはグループを含めることはできません。
  • 仮想トラックは、コンポジションまたはグループ内に存在できる任意のオブジェクトです。 これには、トラックとコンポジションが含まれます。

これらのオブジェクトは、次のインターフェイスを公開します。

インターフェイス 公開者
IAMTimelineTrack tracks
IAMTimelineVirtualTrack トラック、コンポジション
IAMTimelineComp コンポジション、グループ
IAMTimelineGroup グループ

 

これらのインターフェイスには、タイムラインにオブジェクトを追加するためのメソッドが含まれています。

たとえば、次のコードでは、新しいトラックをグループに挿入します。 前の表に示すように、グループは構成の一種と見なされ、トラックは仮想トラックの一種です。そのため、グループにトラックを挿入するには、 IAMTimelineComp インターフェイスのグループに対してクエリを実行し、 IAMTimelineComp::VTrackInsBefore メソッドを呼び出す必要があります。

IAMTimelineGroup    *pGroup;
// Create a new group (not shown). 

IAMTimelineComp     *pComp = NULL;
IAMTimelineObj      *pTrackObj = NULL;

pTL->CreateEmptyNode(&pTrackObj, TIMELINE_MAJOR_TYPE_TRACK);
pGroup->QueryInterface(IID_IAMTimelineComp, (void **)&pComp);
pComp->VTrackInsBefore(pTrackObj, 0);

VTrackInsBefore の 2 番目のパラメーターは、仮想トラックの優先度を指定します。優先度レベルは 0 から始まります。 値 –1 を指定すると、仮想トラックが優先度リストの末尾に挿入されます。 仮想トラックが既にある値を指定すると、その時点からのすべてのものが 1 つの優先度レベルでリストの下に移動します。 仮想トラックの数より大きい優先順位で仮想トラックを挿入しないでください。これは、未定義の動作が発生するためです。

タイムラインからオブジェクトを完全に削除するには、オブジェクトの IAMTimelineObj::RemoveAll を呼び出します。 このメソッドは、 オブジェクトとそのすべての子を削除します。 オブジェクトを削除して、タイムライン内の別の場所に再挿入するには、代わりに IAMTimelineObj::Remove を呼び出します。 RemoveAll とは異なり、このメソッドはオブジェクトの子を削除しません。 タイムラインからすべてを削除するには、IAMTimeline::ClearAllGroups を呼び出します。

タイムラインの構築