共用方式為


建立群組組合和追蹤

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

[此 API 不受支援,未來可能會變更或無法使用。]

群組、組合和曲目是時間軸與來源剪輯之間的中繼層。 它們會依可以包含的物件類型來區別。

  • 追蹤包含來源物件。
  • 組合包含曲目和其他組合,但不包含來源物件。
  • 群組是最上層組合。 群組包含組合和追蹤,但組合不能包含群組。
  • 虛擬追蹤是任何可以位於組合或群組內的物件。 這包括曲目和組合。

這些物件會公開下列介面:

介面 公開者
IAMTimelineTrack 資料軌
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的第二個參數會指定虛擬播放軌的優先順序。優先順序層級從零開始。 如果您指定值 –1,則會在優先順序清單結尾插入虛擬追蹤。 如果您指定一個值,其中已經有虛擬播放軌,則從該點開始的所有專案會以一個優先順序層級向下移動清單。 請勿在優先順序大於虛擬播放軌數目的虛擬播放軌插入,因為它會造成未定義的行為。

若要從時間軸永久刪除物件,請在 物件上呼叫 IAMTimelineObj::RemoveAll 。 這個方法會移除 物件及其所有子系。 若要移除物件,以便重新插入時程表中其他位置的物件,請改為呼叫 IAMTimelineObj::Remove 。 不同于 RemoveAll,這個方法不會刪除物件的子系。 若要從時程表中移除所有專案,請呼叫 IAMTimeline::ClearAllGroups

建構時程表