建立群組組合和追蹤
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
[此 API 不受支援,未來可能會變更或無法使用。]
群組、組合和曲目是時間軸與來源剪輯之間的中繼層。 它們會依可以包含的物件類型來區別。
- 追蹤包含來源物件。
- 組合包含曲目和其他組合,但不包含來源物件。
- 群組是最上層組合。 群組包含組合和追蹤,但組合不能包含群組。
- 虛擬追蹤是任何可以位於組合或群組內的物件。 這包括曲目和組合。
這些物件會公開下列介面:
介面 | 公開者 |
---|---|
IAMTimelineTrack | 資料軌 |
IAMTimelineVirtualTrack | 曲目、組合 |
IAMTimelineComp | 組合、群組 |
IAMTimelineGroup | 群組 |
這些介面包含將物件新增至時程表的方法。
- IAMTimeline::AddGroup:將群組插入時程表。
- IAMTimelineComp::VTrackInsBefore:將虛擬播放軌插入組合或群組中。
- IAMTimelineTrack::SrcAdd:將來源插入追蹤。
例如,下列程式碼會將新追蹤插入群組中。 如上表所示,群組會被視為一種組合,而追蹤則是一種虛擬播放軌。因此,若要將追蹤插入群組中,您必須查詢其 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。
相關主題